(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
この修正により、ユーザーが間違った画層を選択した場合に、エラーを回避することができます。
コメント