指定した画層のオブジェクトに対して自動寸法入力するLISP

  • URLをコピーしました!

(defun c:qdla ()

(setq obj (entsel “選択したい画層のオブジェクトを選択: “))
(setq lay (cdr (assoc 8 (entget (car obj)))))

(setq sel
(ssget
(list (cons 8 lay))
)
)

(command-s “._QDIM” sel “”)

)

このコードは、選択した画層の寸法を、単一の寸法スタイルで編集します。

コードの説明

  • (defun c:qdla ()

この行は、関数「qdla」を定義します。関数名は「c:」で始まり、これはAutoCADのカスタムコマンドの命名規則に従っています。

  • ()

この行は、関数の引数を定義します。この関数には引数はありません。

  • **(setq obj (entsel “選択したい画層のオブジェクトを選択: “))

この行は、プロンプト「選択したい画層のオブジェクトを選択:」を表示し、ユーザーがオブジェクトを選択できるようにします。このオブジェクトの画層が、選択した画層になります。

  • **(setq lay (cdr (assoc 8 (entget (car obj)))))

この行は、前の行で選択されたオブジェクトの画層名を取得します。

  • **(setq sel  (ssget     (list (cons 8 lay))  ) )

この行は、選択した画層のすべてのオブジェクトを取得します。

  • **(command-s “._QDIM” sel “”)

この行は、コマンド「._QDIM」を実行し、選択したオブジェクトの寸法を、単一の寸法スタイルで編集します。

コードの実行例

図面に、画層「A」と画層「B」の寸法が1つずつあるとします。このコードを実行し、画層「A」の寸法を編集すると、以下のようになります。

図面を開く

画層「A」のオブジェクトを選択する

コマンドウィンドウに「qdla」と入力してEnterキーを押す

すると、画層「A」の寸法が、単一の寸法スタイルで編集されます。

コードの修正

このコードは、以下の点が改善できます。

  • プロンプト「選択したい画層のオブジェクトを選択:」を、より具体的にするとよいでしょう。たとえば、「選択したい画層の寸法を編集するオブジェクトを選択:」とすると、ユーザーが何をすべきかが明確になります。
  • 選択したオブジェクトの画層名を、ユーザーに確認させてから取得するとよいでしょう。たとえば、次のコードのように修正できます。

コード スニペット

(defun c:qdla ()

(setq obj (entsel "選択したい画層のオブジェクトを選択: "))
(setq lay (cdr (assoc 8 (entget (car obj)))))

(prompt "選択した画層の名前は" lay)

(setq sel
 (ssget  
  (list (cons 8 lay))
 )
)

(command-s "._QDIM" sel "")

)

コードは慎重に使用してください。詳細content_copy

この修正により、ユーザーが間違った画層を選択した場合に、エラーを回避することができます。

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

コメント

コメントする

Contents