(defun c:qdb ()
(setq ss1 (entsel “寸法記入するブロック選択: “));ブロック選択
(setq b1 (cdr (assoc 2 (entget (car ss1)))));ブロック名取得
(setq sel
(ssget
(list (cons 2 b1))
)
)
(setq Cnt (sslength sel));選択セットss0にある要素の数
(setq num 0);numに0を入れる
(repeat Cnt
(setq ss1 (ssname sel num));ブロック
;ブロック座標
(setq p1 (cdr (assoc 10 (entget ss1))))
(command-s “._POINT” p1 );
(setq num (1+ num));numに1を足す
);repeat終了
(setq sel (ssget “X” ‘((0 . “POINT”))));点を選択セットに代入
(setq Pt1 (getpoint “\n寸法記入基点:”))
(command-s “._QDIM” sel “” Pt1 )
(command-s “._ERASE” sel “” )
)
このコードは、選択したブロックのすべての寸法を、指定した基点から始めて、単一の寸法スタイルで編集します。
コードの説明
- (defun c:qdb ()
この行は、関数「qdb」を定義します。関数名は「c:」で始まり、これはAutoCADのカスタムコマンドの命名規則に従っています。
- ()
この行は、関数の引数を定義します。この関数には引数はありません。
- **(setq ss1 (entsel “寸法記入するブロック選択: “));ブロック選択
この行は、プロンプト「寸法記入するブロック選択:」を表示し、ユーザーがブロックを選択できるようにします。
- **(setq b1 (cdr (assoc 2 (entget (car ss1)))));ブロック名取得
この行は、前の行で選択されたブロックのブロック名を取得します。
- **(setq sel (ssget (list (cons 2 b1)) ) )
この行は、選択したブロックのすべてのオブジェクトを取得します。
- **(setq Cnt (sslength sel));選択セットss0にある要素の数
この行は、選択セット「sel」にある要素の数を取得します。
- **(setq num 0);numに0を入れる
この行は、変数「num」に0を代入します。
- **(repeat Cnt
この行は、変数「Cnt」の値が0になるまで、次の処理を繰り返します。
- **(setq ss1 (ssname sel num));ブロック
この行は、選択セット「sel」から、変数「num」で指定された要素を取得します。
- **;ブロック座標 (setq p1 (cdr (assoc 10 (entget ss1))))
この行は、前の行で取得したブロックの座標を取得します。
- **(command-s “._POINT” p1 );
この行は、コマンド「._POINT」を実行し、指定した座標に点を作成します。
- **(setq num (1+ num));numに1を足す
この行は、変数「num」に1を加えます。
- **);repeat終了
この行は、repeat処理を終了します。
- **(setq sel (ssget “X” ‘((0 . “POINT”))));点を選択セットに代入
この行は、選択セット「sel」に、タイプが「POINT」のオブジェクトを追加します。
- **(setq Pt1 (getpoint “\n寸法記入基点:”))
この行は、プロンプト「寸法記入基点:」を表示し、ユーザーが寸法記入基点を指定できるようにします。
- **(command-s “._QDIM” sel “” Pt1 )
この行は、コマンド「._QDIM」を実行し、選択セット「sel」のすべての寸法を、指定した基点から始めて、単一の寸法スタイルで編集します。
- **(command-s “._ERASE” sel “” )
この行は、コマンド「._ERASE」を実行し、選択セット「sel」のすべての点を削除します。
コードの実行例
図面に、ブロック「A」とブロック「B」の寸法が1つずつあるとします。このコードを実行し、ブロック「A」の寸法を編集すると、以下のようになります。
図面を開く
ブロック「A」を選択する
コマンドウィンドウに「qdb」と入力してEnterキーを押す
寸法記入基点:
ユーザーが寸法記入基点を指定すると、ブロック「A」のすべての寸法が、指定した基点から始めて、単一の寸法スタイルで編集されます。
コメント