フィレット半径0で線分を繋ぐLISP

  • URLをコピーしました!

バラバラに描いた線分を素早く繋ぎたいときは、フィレット半径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です。

関連記事

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

Contents