メインコンテンツへスキップ
よく検索されるキーワード:

選択した線分をまとめて◯等分分割する方法

回答済み

コメント

2件のコメント

  • めいパパ

    LISPを使って実現する方法を試してみました。分割点の座標値でBREAKで分割する仕様です。

    2次元ではうまくいきましたが、3次元ではうまくいきませんでした。

    参考までに共有させていただきます。



    (準備)以下のコードをコピーして、コマンドラインに流すと、SEPLINEコマンドを利用できるように登録します。(separate lineコマンドという意味)

    コマンドの使用方法ですが、

    1. コマンドラインに SEPLINEと入力します。
    2. 分割したい線分を選択します。
    3. 分割数を入力します。

     

    (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

サインインしてコメントを残してください。

PageTop