;;Kim_WiringL.lsp
;;Command Name "wl"
;;電気設備用L字配線
;;
;;February 13,2006 Original
;;February 19,2006 Version 0.7
;;April 14,2006 Version 0.8
;;April 18,2006 Version 0.9
;;May 5,2006 Version 1.0
;;Coding by Kim Grossa
;;
;;;;;;midPA(Xma,Yma=Xe,Ys)-----------startP(Xs,Ys)
;;;;;;;;;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|
;;;;;;;;;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|
;;;;;;;;;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|
;;;;;;;;;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|
;;;;;;endP(Xe,Ye)----------------------midPB(Xmb,Ymb=Xs,Ye)
;;
;;*****使用方法
;;コマンドラインで"wl"と入力し、Enter
;;最初の点をクリック
;;最後の点をクリック
;;
;;最後の点の近くをクリック(ポリライン描画方向 横方向をクリック:X軸 縦方向をクリック:Y軸)
;;
;;<ポリラインが描画される>
;;<現在の丸め半径が表示される>
;;この値で良いなら Enter
;;変更する場合は"c"と入力し、Enter,新しい値を入力
;;
(defun C:wl()
;*****現在のエンティティスナップの設定を退避
(setq oldES (getvar "OSMODE"))
;*****シンボル用エンティティスナップを設定
(setvar "OSMODE" 58)
;2(Midpoint) + 8(Point snap) + 16(Quadrant) + 32(Intersection)
;*****始点、終点を取得
(setq startP (getpoint "\n<Start point>:"))
(setq endP (getpoint startP "\n<End point>:"))
;*****始点、終点の座標の計算
(setq Xs (car startP)) ;始点のX座標
(setq Ys (car (cdr startP))) ;始点のY座標
(setq Xe (car endP)) ;終点のX座標
(setq Ye (car (cdr endP))) ;終点のY座標
;****中間点の座標の計算
(setq Yma (car (cdr startP)));中間点AのY座標を求める(=始点のY座標 Ys)
(setq Xma (car endP)) ;中間点AのX座標を求める (=終点のX座標 Xe )
(setq midPA (list Xma Yma)) ;中間点Aのリストを求める
(setq Ymb (car (cdr endP))) ;中間点BのY座標を求める(=終点のY座標 Ye)
(setq Xmb (car startP)) ;中間点BのX座標を求める (=始点のX座標 Xs )
(setq midPB (list Xmb Ymb)) ;中間点Bのリストを求める
;*****エンティティスナップをOff
(setvar "OSMODE" 0)
;*****方向点を取得
(setq directP (getpoint "\n<Direction>:"))
;*****ポリライン描画方向を判定
(setq Xd (car directP)) ;方向点のX座標
(setq Yd (car (cdr directP)));方向点のY座標
(setq DistX (abs (- Xd Xe))) ;X軸方向の距離
(setq DistY (abs (- Yd Ye))) ;Y軸方向の距離
(cond
((> DistX DistY)(setq XYD "x"));X軸方向に描画
((> DistY DistX)(setq XYD "y"));Y軸方向に描画
)
;*****エンティティスナップの設定を復旧
(setvar "OSMODE" oldES)
;*****ポリラインを描く
(cond
((= XYD "x") ;終点から水平方向
(command "POLYLINE" startP midPB endP "");始点、中間点B、終点を通るポリラインを描画
)
((= XYD "y") ;終点から垂直方向
(command "POLYLINE" startP midPA endP "");始点、中間点A、終点を通るポリラインを描画
)
)
;*****ポリラインを選択
(setq mypolyline(entlast))
;*****丸めの半径の入力
(setq Frad (getvar "filletrad"));現在の設定値を取得
(princ "\n(Radius=");現在の設定値を表示
(princ Frad)
(princ "):")
(setq str1(getstring "<Enter to use this radius>/Change:"))
(cond
((= str1 "")
()) ;現在の設定値を使用
((or(= str1 "c")(= str1 "C"))
(setq real1 (getreal"New Radius:"))(setvar "filletrad" real1));設定値の変更
)
;*****ポリラインを丸める
(command "FILLET" "P" mypolyline);ポリラインを丸める
)
;;Command Name "wl"
;;電気設備用L字配線
;;
;;February 13,2006 Original
;;February 19,2006 Version 0.7
;;April 14,2006 Version 0.8
;;April 18,2006 Version 0.9
;;May 5,2006 Version 1.0
;;Coding by Kim Grossa
;;
;;;;;;midPA(Xma,Yma=Xe,Ys)-----------startP(Xs,Ys)
;;;;;;;;;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|
;;;;;;;;;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|
;;;;;;;;;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|
;;;;;;;;;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|
;;;;;;endP(Xe,Ye)----------------------midPB(Xmb,Ymb=Xs,Ye)
;;
;;*****使用方法
;;コマンドラインで"wl"と入力し、Enter
;;最初の点をクリック
;;最後の点をクリック
;;
;;最後の点の近くをクリック(ポリライン描画方向 横方向をクリック:X軸 縦方向をクリック:Y軸)
;;
;;<ポリラインが描画される>
;;<現在の丸め半径が表示される>
;;この値で良いなら Enter
;;変更する場合は"c"と入力し、Enter,新しい値を入力
;;
(defun C:wl()
;*****現在のエンティティスナップの設定を退避
(setq oldES (getvar "OSMODE"))
;*****シンボル用エンティティスナップを設定
(setvar "OSMODE" 58)
;2(Midpoint) + 8(Point snap) + 16(Quadrant) + 32(Intersection)
;*****始点、終点を取得
(setq startP (getpoint "\n<Start point>:"))
(setq endP (getpoint startP "\n<End point>:"))
;*****始点、終点の座標の計算
(setq Xs (car startP)) ;始点のX座標
(setq Ys (car (cdr startP))) ;始点のY座標
(setq Xe (car endP)) ;終点のX座標
(setq Ye (car (cdr endP))) ;終点のY座標
;****中間点の座標の計算
(setq Yma (car (cdr startP)));中間点AのY座標を求める(=始点のY座標 Ys)
(setq Xma (car endP)) ;中間点AのX座標を求める (=終点のX座標 Xe )
(setq midPA (list Xma Yma)) ;中間点Aのリストを求める
(setq Ymb (car (cdr endP))) ;中間点BのY座標を求める(=終点のY座標 Ye)
(setq Xmb (car startP)) ;中間点BのX座標を求める (=始点のX座標 Xs )
(setq midPB (list Xmb Ymb)) ;中間点Bのリストを求める
;*****エンティティスナップをOff
(setvar "OSMODE" 0)
;*****方向点を取得
(setq directP (getpoint "\n<Direction>:"))
;*****ポリライン描画方向を判定
(setq Xd (car directP)) ;方向点のX座標
(setq Yd (car (cdr directP)));方向点のY座標
(setq DistX (abs (- Xd Xe))) ;X軸方向の距離
(setq DistY (abs (- Yd Ye))) ;Y軸方向の距離
(cond
((> DistX DistY)(setq XYD "x"));X軸方向に描画
((> DistY DistX)(setq XYD "y"));Y軸方向に描画
)
;*****エンティティスナップの設定を復旧
(setvar "OSMODE" oldES)
;*****ポリラインを描く
(cond
((= XYD "x") ;終点から水平方向
(command "POLYLINE" startP midPB endP "");始点、中間点B、終点を通るポリラインを描画
)
((= XYD "y") ;終点から垂直方向
(command "POLYLINE" startP midPA endP "");始点、中間点A、終点を通るポリラインを描画
)
)
;*****ポリラインを選択
(setq mypolyline(entlast))
;*****丸めの半径の入力
(setq Frad (getvar "filletrad"));現在の設定値を取得
(princ "\n(Radius=");現在の設定値を表示
(princ Frad)
(princ "):")
(setq str1(getstring "<Enter to use this radius>/Change:"))
(cond
((= str1 "")
()) ;現在の設定値を使用
((or(= str1 "c")(= str1 "C"))
(setq real1 (getreal"New Radius:"))(setvar "filletrad" real1));設定値の変更
)
;*****ポリラインを丸める
(command "FILLET" "P" mypolyline);ポリラインを丸める
)
※コメント投稿者のブログIDはブログ作成者のみに通知されます