選択した線分をまとめて◯等分分割する方法
回答済み今、私がやっている方法は点で部分削除を使用して中点を選び分割を
線分ごとにやっています。
選択した線分をまとめて分割する方法があれば楽なのですがなにか方法が有りませんか?
0
-
LISPを使って実現する方法を試してみました。分割点の座標値でBREAKで分割する仕様です。
2次元ではうまくいきましたが、3次元ではうまくいきませんでした。
参考までに共有させていただきます。
(準備)以下のコードをコピーして、コマンドラインに流すと、SEPLINEコマンドを利用できるように登録します。(separate lineコマンドという意味)
コマンドの使用方法ですが、- コマンドラインに SEPLINEと入力します。
- 分割したい線分を選択します。
- 分割数を入力します。
(defun c:SepLine (/ ss num i ent start end pt pts)
(setq ss (ssget '((0 . "LINE")))) ; 線分を選択
(setq num (getint "\n分割数を入力してください: ")) ; 分割数を入力
(setq i 0)
(while (< i (sslength ss))
(setq ent (ssname ss i))
(setq start (cdr (assoc 10 (entget ent))))
(setq end (cdr (assoc 11 (entget ent))))
(setq pts (list)) ; 分割点のリストを初期化
(setq j 1)
(repeat (1- num)
(setq pt (polar start (angle start end) (/ (* (distance start end) j) num)))
(setq pts (append pts (list pt))) ; 分割点をリストに追加
(setq j (1+ j))
)
(setq k 0)
(repeat (length pts)
(command "BREAK" ent (nth k pts) (nth k pts)) ; 分割点で線分を分割
(setq ent (entlast)) ; 新しい線分を取得
(setq k (1+ k))
)
(setq i (1+ i))
)
(princ)
)※ちなみに、IJCAD立ち上げごとに、(準備)作業は必要です。STD以上のグレードでは、マクロ登録やコードのファイル(.lsp)をロードさせる方法で、一度設定すれば、(準備)作業なしでSEPLINEコマンドを実行できるようにできます。
不明点などあれば、追加でご質問ください。
0 -
ありがとうございます
私の環境が3Dを使用しているので無理そうですね・・・
参考にさせていただきます。
0
サインインしてコメントを残してください。
コメント
2件のコメント