(defun c:qdlt ()
(setq obj (entsel “選択したい線種のオブジェクトを選択: “))
(setq lt (cdr (assoc 6 (entget (car obj)))))
(setq sel
(ssget
(list (cons 6 lt))
)
)
(command-s “._QDIM” sel “”)
)
このコードは、選択した線種の寸法を、単一の寸法スタイルで編集します。
コードの説明
- (defun c:qdlt ()
この行は、関数「qdlt」を定義します。関数名は「c:」で始まり、これはAutoCADのカスタムコマンドの命名規則に従っています。
- ()
この行は、関数の引数を定義します。この関数には引数はありません。
- **(setq obj (entsel “選択したい線種のオブジェクトを選択: “))
この行は、プロンプト「選択したい線種のオブジェクトを選択:」を表示し、ユーザーがオブジェクトを選択できるようにします。このオブジェクトの線種が、選択した線種になります。
- **(setq lt (cdr (assoc 6 (entget (car obj)))))
この行は、前の行で選択されたオブジェクトの線種名を取得します。
- **(setq sel (ssget (list (cons 6 lt)) ) )
この行は、選択した線種のすべてのオブジェクトを取得します。
- **(command-s “._QDIM” sel “”)
この行は、コマンド「._QDIM」を実行し、選択したオブジェクトの寸法を、単一の寸法スタイルで編集します。
コードの実行例
図面に、線種「SOLID」と線種「DASHED」の寸法が1つずつあるとします。このコードを実行し、線種「SOLID」の寸法を編集すると、以下のようになります。
図面を開く
線種「SOLID」のオブジェクトを選択する
コマンドウィンドウに「qdlt」と入力してEnterキーを押す
すると、線種「SOLID」の寸法が、単一の寸法スタイルで編集されます。
コードの修正
このコードは、以下の点が改善できます。
- プロンプト「選択したい線種のオブジェクトを選択:」を、より具体的にするとよいでしょう。たとえば、「選択したい線種の寸法を編集するオブジェクトを選択:」とすると、ユーザーが何をすべきかが明確になります。
- 選択したオブジェクトの線種名を、ユーザーに確認させてから取得するとよいでしょう。たとえば、次のコードのように修正できます。
コード スニペット
(defun c:qdlt ()
(setq obj (entsel "選択したい線種のオブジェクトを選択: "))
(setq lt (cdr (assoc 6 (entget (car obj)))))
(prompt "選択した線種の名前は" lt)
(setq sel
(ssget
(list (cons 6 lt))
)
)
(command-s "._QDIM" sel "")
)
コードは慎重に使用してください。詳細content_copy
この修正により、ユーザーが間違った線種を選択した場合に、エラーを回避することができます。
コードの改善後の説明
改善後のコードは、以下のとおりです。
コード スニペット
(defun c:qdlt ()
(setq obj (entsel "選択したい線種のオブジェクトを選択: "))
(setq lt (cdr (assoc 6 (entget (car obj)))))
(prompt "選択した線種の名前は" lt)
(setq sel
(ssget
(list (cons 6 lt))
)
)
(if (= (length lt) 0)
(princ "選択したオブジェクトの線種が見つかりません。")
(command-s "._QDIM" sel "")
)
)
コードは慎重に使用してください。詳細content_copy
このコードでは、次の変更を加えました。
- プロンプトをより具体的にしました。
- 選択したオブジェクトの線種名を、ユーザーに確認させました。
- 線種名が空文字列の場合に、エラーメッセージを表示するようにしました。
この修正により、コードの使い勝手が向上し、エラーの発生を防ぐことができます。
コメント