バラバラに描いた線分を素早く繋ぎたいときは、フィレット半径0 が便利です。
半径を0にすると角を丸めずに、線分同士を延長・トリムして交点で接続できます。
ただし通常コマンドでは、その都度半径を確認したり指定したりする手間があります。
そこで、半径0を固定で実行できるLISPを用意しておくと効率的です。
選択した線分を順番にフィレット処理できるため、外形線や枠線の整理が素早く行えます。
また、このLISPは処理後も終了せず、そのまま次の範囲を連続で選択して実行できるため、複数箇所の修正を一気に進めることができます。
(defun c:F0 ( / ss n e1 e2 )
(vl-load-com)
(setvar 'cmdecho 0)
(prompt "\n=== FILLET 半径0専用 ===")
(while T
;; フィレット半径を0に固定
(command "._FILLET" "_R" "0")
(prompt "\nフィレットするオブジェクトを囲んで選択してください(Enter / ESCで終了)")
(setq ss (ssget '((0 . "LINE,ARC,LWPOLYLINE"))))
(if (not ss)
(progn
(prompt "\n処理を終了しました。")
(setvar 'cmdecho 1)
(princ)
(exit)
)
)
(setq n 0)
(repeat (1- (sslength ss))
(setq e1 (ssname ss n))
(setq e2 (ssname ss (1+ n)))
(command "._FILLET" e1 e2)
(setq n (1+ n))
)
(prompt "\n次の範囲を選択できます。")
)
)すぐできる設定手順
- コマンド「F0」を入力
- 繋ぎたい線分を囲んで2つ選択
- エンターで半径0で繋げる
仁(じん)画像付きのSTEPは、下で確認できますよ!
Contents
操作手順
STEP


- コマンド「F0」を入力します
STEP


- 繋ぎたい線分を囲んで2つ選択します
※3つ以上の線分を選んだ場合は最初の2つが適用されます
STEP


- エンターを押すと半径0で線分が繋がります
STEP


- 連続して線分を繋げることができます
STEP


- エンターを押すとLISPが終了します
LISP解説
初期設定部分
(vl-load-com)
(setvar 'cmdecho 0)
(prompt "\n=== FILLET 半径0専用 ===")・vl-load-com
→ Visual LISPの機能を有効化(おまじない的なもの)
・cmdecho 0
→ コマンド履歴を非表示にして、画面をスッキリさせる
・prompt
→ コマンドラインにメッセージを表示
メインループ(繰り返し処理)
(while T無限ループ→ ESCかEnterで終了するまで繰り返し実行します。
フィレット半径を固定
(command "._FILLET" "_R" "0")フィレットコマンドを実行して、オプション「 半径(R)」を0に設定しています。
オブジェクト選択
(setq ss (ssget '((0 . "LINE,ARC,LWPOLYLINE"))))線・円弧・ポリラインのみ選択可能にしています。
ブロックなどの要素を囲んでも除外されます。
終了処理
(if (not ss)
(progn
(prompt "\n処理を終了しました。")
(setvar 'cmdecho 1)
(princ)
(exit)
)
)→ EnterまたはESCで選択しなかった場合
→ 処理を終了
・cmdecho 1 に戻すのがポイント
フィレット処理(核心)
(setq n 0)
(repeat (1- (sslength ss))→ 選択した数−1回繰り返す
(setq e1 (ssname ss n))
(setq e2 (ssname ss (1+ n)))
(command "._FILLET" e1 e2)→ 1本目と2本目
→ 2本目と3本目
→ 3本目と4本目…
順番にペアでフィレットしていきます。



選択した順番にフィレットされるので、順番も意識して使いましょう!
まとめ
- フィレット半径を自動で0に設定している
- 選択したオブジェクトを順番にペアで接続
- ループ処理により連続で使用可能
単純な処理ですが、手作業を大幅に減らせる実用的なLISPです。


コメント