こんにちは。AutoCADの自動化という深淵な世界へようこそ。
「マクロの記録」という安全な場所から一歩踏み出し、自らコードを記述してAutoCADを操る決意をしたあなたを歓迎します。
今日は、多くのエンジニアが「AutoCADは2Dで完結するもの」という固定観念に縛られている中で、あえてその殻を破る「Elevation(標高)プロパティ」を用いた3D構築の極意を伝授しましょう。
—
1. なぜ「Elevation」を理解することが重要なのか
AutoCADには「標高(Elevation)」という概念があります。これは、現在の作図平面がZ軸上のどこにあるかを定義するプロパティです。
初心者の多くは、この値を意識せずに作図し、後から3D回転させて「線が重なっていない!」と嘆きます。しかし、VBAでこの値を動的に制御できれば、平面図からワンクリックで3Dワイヤーフレームを立ち上げることが可能になるのです。
核心となる概念
- AcadDocument.Elevation: 現在の「高さ」を決定するプロパティ。
- 作図の原則: VBAで線分(Line)を描く際、このプロパティがセットされていると、そのZ座標で線が生成されます。
—
2. 実践:平面図から「高さ付き」骨組みを生成する
まずは、現在選択している図形を、指定した高さに複製して3D化するコードを書いてみましょう。このコードは、建築図面やプラント配管の簡易モデル作成において、最も汎用性の高いアプローチです。
Sub Generate3DFrame()
‘ AutoCADのオブジェクトを定義
Dim acadApp As AcadApplication
Dim acadDoc As AcadDocument
Dim lineObj As AcadLine
Dim newObj As AcadEntity
Dim elevationValue As Double
‘ プログラムの高速化のため、エラーハンドリングと画面更新の停止を推奨
On Error Resume Next
Set acadDoc = ThisDrawing
‘ ユーザーから高さを入力させる(簡易的なUI)
elevationValue = CDbl(InputBox(“配置する高さ(Z軸)を入力してください”, “3D化設定”))
‘ 現在のDocumentのElevationプロパティを変更
‘ これにより、以降に作成される図形はすべてこの高さに配置されます
acadDoc.Elevation = elevationValue
‘ 選択セットからオブジェクトをコピーする(今回は簡易的に全図形を対象にする例)
‘ 実務ではフィルタリングを行うのが鉄則です
For Each lineObj In acadDoc.ModelSpace
If TypeOf lineObj Is AcadLine Then
‘ 元の線をコピーして、新しい高さに配置
Set newObj = lineObj.Copy
‘ ここで重要:コピーしたオブジェクトのプロパティを操作
‘ 必要に応じて色を変えると、Z座標の視認性が向上します
newObj.Color = acRed
End If
Next lineObj
‘ 再描画して変更を反映
acadDoc.Regen acActiveViewport
MsgBox “3Dワイヤーフレームの生成が完了しました!”
End Sub
—
3. 初学者が陥りやすい「3つの罠」
このコードを書くとき、多くの人が必ず一度は躓きます。あらかじめ知っておけば、あなたは「脱・初心者」の第一歩を刻めます。
① 「Elevation」はグローバルな設定である
`acadDoc.Elevation = 100` と書くと、その後のすべての作図コマンドに影響します。プログラム終了後に「なぜか線が浮いて描かれる!」と焦らないよう、必ず処理の最後で `acadDoc.Elevation = 0` に戻すのが、プロの作法です。
② モデル空間とペーパー空間の混同
このコードは `ModelSpace` を対象にしていますが、図面によっては `PaperSpace` に作図している場合があります。`ThisDrawing.ModelSpace` と明示的に記述する癖をつけましょう。
③ オブジェクトモデルのライフサイクル
AutoCAD VBAにおいて、オブジェクトはメモリを食います。`For Each` ループの中で安易にオブジェクトを生成しすぎると、メモリリークの原因になります。大量の線を処理する場合は、選択セット(SelectionSet)を使用して、必要なものだけを操作するスタイルに慣れていきましょう。
—
4. 伝説のエンジニアからのアドバイス
AutoCAD自動化の極意は、「手作業の完全な模倣」ではなく「CADの思考回路に合わせた命令」をすることです。
今回紹介した `Elevation` プロパティの制御は、単なる高さ調整ではありません。これは、「図面データに次元という情報を付与する」という設計行為そのものです。
まずはこのコードをコピペして、実際に動かしてみてください。そして、`elevationValue` を変えて、3Dビューで眺めてみる。その瞬間、AutoCADが単なるお絵描きツールから、あなたの最強の設計パートナーへと進化するはずです。
「なぜ動くのか?」を理解したあなたには、次は「どうすればもっと速く、正確に動くか」が見えてくるはずです。その時が来たら、また会いましょう。あなたのエンジニアライフを応援しています。
