BricsCADやAutoCADでモデル空間の図面の一部分を選択し、原点を指定して別ファイルに書き出す方法を紹介します。
また、一連の動作をまとめたLispコードも書いたので紹介します。
エラー処理など無いごく簡易なものですが通常手順だと手数が多いので、とても作業が楽になりました。
▼ 別記事で、モデル空間に書いた複数図面を一括で書き出すコードを書きました。
対象CAD
この記事で 紹介しているLISPコード は、BricsCADとAutoCADが対象です。以下のバージョンで動作確認しました。両者はそれぞれ別のコードなので、ご注意ください。
- BricsCAD V17
- AutoCAD 2022
概要
課題
「モデル空間の図面の一部分を選択して別ファイルに書き出す機能」は、標準のコマンド wblock で実現可能です。しかし、この機能では原点を指定できません。
例えば元図の任意の点を新図(書き出したDWGファイル)の原点(0,0)に合わせたくても、 wblockだけでは、できないんです。
▼例図。左半分が元図。右が新図です。
解決方法
解決方法は、UCS機能で元図の任意の点に原点を移動し、それからwblockを実行すると解決します。
▼例図。左半分が元図。右が新図です。 原点が図面Aの図枠の左下になりました。
動作デモ
手作業の場合
LISPを使わずに手作業で作業した場合の流れは、以下の通りです。
- UCSコマンドを実行。元図の任意の点を指示。
- wblock実行。開いたウィンドウで、ファイル保存先を指示。
- 書き出したい図形を選択する。
- UCSコマンドで、原点をワールド座標に戻す。
- 完了。元図の任意の点が新図の(0,0)へ移動している。
簡易LISP
上記の方法だと手数が多くて時間がかさむので、一連の流れをLISPファイルで書いてみました。
コードは、後述しています。
シンプルなものですが、作業時間を短縮できます。
- 新図のファイル名を入力。(例:1.dwgなら、1と入力)
- 図形の原点をクリックして指示。
- 対象の図形を囲む。
- 完了。元図の任意の点が新図の(0,0)へ移動している。
動作環境
動作確認環境は以下の通りです。
- BricsCAD classic V17
- AutoCAD 2022
- Windows 10 64bit
LISPコード
今回の方法は、若干手数が多くなるので、枚数が多いと面倒だし時間がかさみます。
そこで、簡易なLISPコードを書いてみたので紹介します。動作の様子は前述。
クリック一発で自動展開みたいな凄い機能はありませんが、手作業でコマンドを順次打ち込むよりは楽になりました。
BricsCAD向けコード
▼コードは以下の通りです。Eドライブ直下にファイルを保存する想定です。
私の環境では、フォルダ名に日本語を使うとエラーで動きませんでした。三行目以降のコメントも日本語で入れるとエラーが出てしまいます。
仮にドライブ直下など、英数字の仮置きフォルダを作る必要があるかもしれません。
▼ファイルの選択ウィンドウを立ち上げたい場合は、上記4行目の記述を、以下に変えると実現できます。
(setq loc (getfiled "Select a File loc" "E:\\" "" ""))
AutoCAD向けコード
上記のコードがAutoCADでは動かなかったので、書き直しました。
;;;AutoCAD用;;;
;;;モデル空間の一部を選択、原点を指定して別ファイルに書き出す;;;
;;;コマンド名は、oex;;;
(defun c:oex ()
(setq loc "E:\\") ;set file location
(setq name (getstring "\nEnter a file name: "))
(setq fname (strcat loc name ".dwg"))
(setq origin (getpoint "\nClick a point to set the origin: "))
(setq obj (ssget))
(command-s "._ucs" origin "")
(command-s "._wblock" fname "" origin obj "")
(command-s "._oops")
(command-s "._ucs" "w")
)
▼操作の様子です。(gifアニメ)
LISPコードの使い方
LISPファイルを作る
上記のコードをメモ帳等テキストエディタへコピペして保存します。拡張子はlspです。
例えばtest.lspなど。
LISPファイルをロードする
先ほど作ったlspファイルをロードします。
- BricsCADは、 appload というコマンドでロード画面が立ち上がります。
→別記事に詳細を記載しています。
- AutoCADも、apploadというコマンドで指定できます。
→参考記事
実行
- コマンドプロンプト上で、oexというコマンドを打ち込みます。
- Enter a file nameと聞いてくるので、ファイル名を打ち込みます。
※拡張子は無し。1.dwgなら1と入力します。 - Click a point to set the originと聞いてくるので、新しい原点にしたい点をクリックします。
- あとは、対象となる図形を選択したら、完了です。
ドキュメント
▼LISPの文法やルールは、下記ドキュメントを参照しました。
改造される際は、下記をご覧ください。
関連記事
▼ 別記事で、モデル空間に書いた複数図面を一括で書き出すコードを書きました。