【入門編】図面内の寸法スタイルを自動設定・管理!AcadDocumentのDimStyle – AutoCAD VBA解析バイブル

スポンサーリンク

AutoCADの自動化の世界へようこそ。

「マクロの記録」ボタンを押しても何も記録されない現実に直面し、途方に暮れていませんか? 大丈夫です。そこが「ただのユーザー」から「エンジニア」へと進化する境界線です。

AutoCAD VBAにおいて、寸法スタイル(DimStyle)の制御は、図面の品質を統制するための「最初にして最大の関門」です。今回は、泥臭い手作業から卒業し、コードで図面を支配するための技術を伝授しましょう。

1. AutoCADのオブジェクト構造を「地図」として理解する

AutoCADの内部は、巨大な階層構造(ツリー)になっています。まずはこの地図を頭に入れてください。

  • Application: AutoCADそのもの。
  • Document: 開いている各図面ファイル。
  • Database: 図面内の全データ(線、円、そして今回の主役「DimStyle」)。

VBAで寸法スタイルをいじるということは、`ThisDrawing`(現在アクティブなDocument)の深い場所にある `DimStyles` というコレクション・ボックスにアクセスする行為です。

2. 寸法スタイルを操作するための「登竜門」コード

まずは、特定の寸法スタイルが存在するか確認し、なければ作成する。この「堅牢な処理」が自動化の第一歩です。

Sub ManageDimStyle()
Dim objDimStyle As AcadDimStyle
Dim styleName As String

styleName = “MyCompany_Standard”

‘ エラーハンドリング:存在確認の定石
On Error Resume Next
Set objDimStyle = ThisDrawing.DimStyles.Item(styleName)
On Error GoTo 0

‘ 存在しなければ作成する
If objDimStyle Is Nothing Then
Set objDimStyle = ThisDrawing.DimStyles.Add(styleName)
MsgBox “新しいスタイルを作成しました:” & styleName
Else
MsgBox “既存のスタイルを使用します:” & styleName
End If

‘ ここでプロパティを設定(後述)
ConfigureDimStyle objDimStyle
End Sub

なぜ `On Error Resume Next` を使うのか?

プログラミング初学者が最も躓くのが「存在しないものを取得しようとして落ちる」エラーです。AutoCADのコレクションは存在しないキーを指定すると容赦なく例外を吐きます。`If objDimStyle Is Nothing` で判定する前に、あえてエラーを無視して「取得を試みる」のが、この世界の作法です。

3. 「設定」という名のプロパティ調整

`AcadDimStyle` オブジェクトには、寸法値の高さや矢印のサイズなどを決めるプロパティが無数にあります。しかし、ここで一つ重要な注意点があります。

「DimStyleオブジェクトを直接いじっても、即座に図面に反映されるとは限らない」ということです。

Sub ConfigureDimStyle(dimStyle As AcadDimStyle)
‘ 寸法値の高さ設定
dimStyle.SetVariable “DIMTXT”, 2.5
‘ 矢印のサイズ設定
dimStyle.SetVariable “DIMASZ”, 2.0
‘ 寸法補助線のオフセット
dimStyle.SetVariable “DIMGAP”, 0.625

‘ 重要:変更を反映させるためにカレントに設定する
ThisDrawing.ActiveDimStyle = dimStyle

‘ 図面内の寸法を更新
ThisDrawing.Regen acActiveViewport
End Sub

極限の知見:`SetVariable` とは?

`DimStyle` プロパティに直接アクセスするよりも、`SetVariable` メソッドを使うのがプロの流儀です。これはAutoCADのシステム変数(DIMTXTなどのコマンドラインでお馴染みの設定)を直接叩く方法で、最も安定して動作します。

4. 現場で陥りやすい「落とし穴」

その1:アクティブでないと反映されない問題

いくらコードで設定を変えても、そのスタイルが「現在使用中(Active)」でなければ、次に引く寸法には反映されません。必ず `ThisDrawing.ActiveDimStyle = …` をセットで行う癖をつけましょう。

その2:オブジェクトのライフサイクル

VBAの変数は、プロシージャが終われば消滅します。しかし、`ThisDrawing.DimStyles` に追加したスタイルは図面ファイルの一部として保存されます。「作成は一度だけ、設定は毎回」という意識が、無駄なエラーを防ぎます。

最後に:エンジニアとしての第一歩

寸法スタイルの自動設定ができるようになれば、次は「画層の自動作成」「ブロックの挿入」「属性値の一括書き換え」と、自動化のフィールドは無限に広がります。

AutoCAD VBAは、単なるマクロ言語ではありません。AutoCADという巨大なCADエンジンを、あなたの意のままに動かすための「操縦桿」です。

ここをクリアしたあなたなら、もう大丈夫。明日の業務から、手作業という名の「非効率」を一つずつ排除していってください。何か詰まったら、いつでも戻ってきてくださいね。あなたのコードが、図面を美しく整えることを願っています。

タイトルとURLをコピーしました