指定したブロックから自動で寸法を入力するLISP

  • URLをコピーしました!

同じ名前のブロックから一括で寸法を入れたいとき、ありますよね?

1つずつ寸法を拾っていく方法では、数が増えるほど時間がかかり、ミスも起きやすくなります。

そこで便利なのが、今回紹介するLISPです。
選択したブロックと同じ名前のものを一括で拾い、ブロックの基点から寸法を引いてくれるLISPを作成しました。

(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 "" )
)
すぐできる設定手順
  • コマンド「QDB」を入力
  • 寸法を引きたいブロックを選択
  • ブロックがある範囲を囲んで選択
  • 寸法を配置する位置をクリック

動作例

仁(じん)

画像付きのSTEPは、下で確認できますよ!

Contents

操作手順

STEP
  • コマンド「QDB」を入力します
  • 寸法を引きたいブロックを選択します
STEP
  • ブロックがある範囲を囲んで選択します

※最初に指定したブロック名と同じブロックのみ選択されます

STEP
  • 寸法を配置する位置をクリックします
  • 寸法が配置されます

※寸法スタイルは、現在のものが反映されます

LISP解説

難しそうですが、全体の流れは以下のようになっています。

  • ブロック名を選択して取得
  • 囲んだ範囲にあるブロックから最初に選択したブロック名と同じものを選択
  • 選択したブロックの基点にPOINT(点)コマンドで点を作成
  • QDIM(クイック寸法)で作成した点に対して寸法を入力
  • 作成した点を削除
(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 "" )
)

ブロック名を選択して取得

2,3行目で変数b1にブロック名を入れています。

囲んだ範囲にあるブロックから最初に選択したブロック名と同じものを選択

6行目で同じブロック名を選択しています。

選択したブロックの基点にPOINT(点)コマンドで点を作成

14,15行目で各ブロックの基点座標を取得し、POINT(点)で点を作成します

QDIM(クイック寸法)で作成した点に対して寸法を入力

20行目で作成した点に対してQDIM(クイック寸法)でまとめて寸法を記入しています

作成した点を削除

21行目の「(command-s “._ERASE” sel “” )」で作成した点を削除して終了です。

凛(りん)

点を作成して、寸法を入れやすくするのがコツです。

まとめ

このLISPを使うことで、ブロックごとの寸法記入を一括で処理できるようになります。

  • ・同じブロックを自動抽出
  • ・基点指定だけで一括寸法
  • ・手作業の拾い作業を削減

単純な仕組みですが、部材数が多い図面ほど効果は大きく、作業時間とミスの両方を減らすことができます。

関連記事

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

コメント

コメントする

Contents