Java でプログラムによって解析するブロックのリストから、.dwg ファイルにカスタム ブロックを取得します。
2 に答える
コマンド INSERT をオプション ? とともに使用できます。
cd C:\Program Files\Autodesk\AutoCAD 2016
accoreconsole.exe /i "Sample\Database Connectivity\Floor Plan Sample.dwg"
Command: _INSERT
Enter block name or [?]: ?
Enter block(s) to list <*>:
Defined blocks.
"CHAIR7"
"COMPUTER"
"DESK2"
"DESK3"
"DOOR"
"DR-36"
"DR-69P"
"DR-72P"
"FC15X27A"
"FC42X18D"
"FNPHONE"
"IBMAT"
"KEYBOARD"
"NCL-HL"
"RECTANG"
"RMNUM"
"SOFA2"
User Unnamed
Blocks Blocks
17 0
よくわかりませんCore Console
が、ファイル内のすべてのブロックを一覧表示するには、sDWG
を使用する必要がありますLISP
。jtbworldのようなaxBlock
もの。また、LISP コードをいじって、.SCRIPT
編集:
次のコードをコピーして貼り付け、ドライブのルートにNotepad
保存します(たとえば)。axBlock.lsp
C
(defun c:axblocks (/ b bn tl)
(vlax-for b (vla-get-blocks
(vla-get-ActiveDocument (vlax-get-acad-object))
)
(if (= (vla-get-islayout b) :vlax-false)
(setq tl (cons (vla-get-name b) tl))
)
)
(reverse tl)
)
簡単にするために、jtbworld のコードを少し調整しました。
これで、LISP コードの準備が整いました。必要なのは、それを AutoCAD にロードすることだけです。そのためのオプションがいくつかあります。
- AutoCAD で APPLOAD コマンドを使用し、
axBlock.lsp
作成したばかりのものを参照します。 axBlock.lsp
AutoCAD ウィンドウにドラッグします。axBlock.lsp
スクリプト ファイル経由で呼び出します。スクリプトは、拡張子を持つ単純なテキスト ファイルにすぎません*.scr
。そのためには、次のコード行をスクリプト ファイルに含める必要があります。(load "C:\\axBlock.lsp")
上記の 3 つの方法のいずれかを実行した後axBlock
、AutoCAD に入力して を押すとEnter
、既存のブロックのリストが表示されます。
さらに、上記のリストの方法 3 に従えば、ショートカットを作成しaxBlock
てスクリプト ファイル内で呼び出すこともできます。つまり、関数を 1 回でロードして呼び出すことができます。そうしたい場合axBlock
は、スクリプト コードの 2 行目に追加するだけです。余分なSPACE
後に注意してくださいaxBlock