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

  • URLをコピーしました!

(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

このコードでは、次の変更を加えました。

  • プロンプトをより具体的にしました。
  • 選択したオブジェクトの線種名を、ユーザーに確認させました。
  • 線種名が空文字列の場合に、エラーメッセージを表示するようにしました。

この修正により、コードの使い勝手が向上し、エラーの発生を防ぐことができます。

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

コメント

コメントする

Contents