図面プロパティの取得と編集|AutoCAD VBAマクロの作成方法
AutoCAD VBAで図面のプロパティの取得と編集を行うにはSummaryInfoオブジェクトを利用する必要があります。SummaryInfoオブジェクトはタイトルや表題のようなデフォルトのプロパティだけでなく、カスタムプロパティの追加や取得を行うメソッドも用意されています。本ページではこのSummaryInfoオブジェクトを使って図面プロパティの取得、編集をする方法を解説していきます。
本ページで学べる内容は以下のとおりです。
SummaryInfoオブジェクトについて
図面のプロパティを取得 / 変更する方法
カスタムプロパティを追加する取得方法
カスタムプロパティを取得 / 変更する方法
SummaryInfoオブジェクト
AutoCAD VBAで画層を操作するにはSummaryInfoオブジェクトを使用します。
SummaryInfoオブジェクトはDocumentオブジェクトのプロパティから取得可能です。このときのDocumentオブジェクトが示すドキュメントの図面プロパティを取得することができます。
Dim oDocument As AcadDocument
Dim oSummaryInfo As AcadSummaryInfo
Set oDocument = ThisDrawing 'アクティブ図面 ┐
Set oDocument = AcadApplication.ActiveDocument 'アクティブ図面 ├ どれでも可
Set oDocument = AcadApplication.Documents.Item(0) '1つ目の図面 ┘
Set oSummaryInfo = oDocument.SummaryInfo
プロパティ
図面のプロパティの情報を取得/変更するには、SummaryInfoオブジェクトのプロパティにアクセスする必要があります。下表はSummaryInfoオブジェクトが持つプロパティで、これらの値を取得/変更することで、図面プロパティの値を取得/変更することができます。
| プロパティ名 | 内容 |
| Author | 作成者を取得/設定する |
| Comments | コメントを取得/設定する |
| HyperlinkBase | ハイパーリンクの基点を取得/設定する |
| Keywords | キーワードを取得/設定する |
| LastSavedBy | 最終保存者を取得/設定する |
| RevisionNumber | 改訂番号を取得/設定する |
| Subject | 表題を取得/設定する |
| Title | タイトルを取得/設定する |
図面プロパティの編集
SummaryInfoオブジェクトのプロパティを変更して図面プロパティの設定を行うためには下記のようなコードを記載します。基本的にはプロパティの値を直接変更すれば設定ができますし、値を取得すれば現在の設定を確認することができます。これらプロパティはすべて文字列(String型)です。
Sub SetDrawingProperty()
Dim oSummaryInfo As AcadSummaryInfo
Set oSummaryInfo = ThisDrawing.SummaryInfo
'図面のプロパティの値設定
oSummaryInfo.Title = "タイトル"
oSummaryInfo.Subject = "表題"
oSummaryInfo.Author = "作成者"
oSummaryInfo.Keywords = "キーワード"
oSummaryInfo.Comments = "コメント"
oSummaryInfo.HyperlinkBase = "ハイパーリンクの基点"
oSummaryInfo.LastSavedBy = "最終保存者"
oSummaryInfo.RevisionNumber = "改訂番号"
End Sub
図面カスタムプロパティの編集
カスタムプロパティの追加と削除
図面のカスタムプロパティを追加するにはSummaryInfoオブジェクトのAddCustomInfoメソッド、削除するにはRemoveCustomByIndexメソッドもしくはRemoveCustomByKeyメソッドを使います。
'図面のカスタムプロパティの追加
Call oSummaryInfo.AddCustomInfo("Name", "Value")
'図面のカスタムプロパティの削除
Call oSummaryInfo.RemoveCustomByIndex(0) '1番上のカスタムプロパティ削除
Call oSummaryInfo.RemoveCustomByIndex(oSummaryInfo.NumCustomInfo - 1) '1番下のカスタムプロパティ削除
Call oSummaryInfo.RemoveCustomByKey("Name") '名前が「Name」のカスタムプロパティ削除
AddCustomInfoメソッドは引数に「キー(名前), 値」を順に入力することで指定の値を持ったプロパティを追加することができます。カスタムプロパティ内でキーは重複することができないため、既に存在するキーでプロパティを追加しようとするとエラーが発生するので注意が必要です。
カスタムプロパティをインデックス指定で削除する場合は、RemoveCustomByIndexメソッドの引数にインデックスを入力することで指定のプロパティを削除することができます。インデックスは0始まりのため、1番初めのプロパティを削除する場合は1ではなく0を入力します。またNumCustomInfoメソッドで現在のカスタムプロパティの個数を取得することができるため、ループで一括削除や最新で追加したプロパティの削除を行うことも可能です。
カスタムプロパティをキー(名前)指定で削除する場合は、RemoveCustomByKeyメソッドの引数にキーを入力することで指定のプロパティを削除することができます。
カスタムプロパティの取得
カスタムプロパティを取得するにはGetCustomByIndexメソッドもしくはGetCustomByKeyメソッドのいずれかを使います。名前の通りで取得対象のカスタムプロパティの指定方法が違うだけです。
Dim sKey As String
Dim sValue As String
'インデックスからキーと値を取得
Call oSummaryInfo.GetCustomByIndex(0, sKey, sValue)
'キーから値のみを取得
Call oSummaryInfo.GetCustomByKey("Name", sValue)
プロパティのキーと名前のいずれもを取得したい場合はGetCustomByIndexメソッドを使います。インデックスを指定することで対象のキーと値を同時に取得することができます。メソッドとしての戻り値はなく、引数として入力した文字列型の変数(sKey, sValue)の中身が取得した値に置き換わります。
指定のキーの値を取得したい場合はGetCustomByKeyメソッドを使います。これも上記メソッドと同じで戻り値はなく、引数として入力した文字列型の変数の中身の取得した値が上書きされます。
カスタムプロパティの変更
カスタムプロパティの値を変更するにはSetCustomByIndexメソッドもしくはSetCustomByKeyメソッドを使います。前項の取得のメソッドと同じく設定用のメソッドも2つ用意されています。
Dim sKey As String
Dim sValue As String
'インデックスからキーと値を新たな文字列に設定
sKey = "New Name"
sValue = "New Value"
Call oSummaryInfo.SetCustomByIndex(0, sKey, sValue)
'キーから値を新たな文字列に設定
sValue = "New Value"
Call oSummaryInfo.SetCustomByKey("Name", sValue)
プロパティのキーと名前のいずれもを変更したい場合はSetCustomByIndexメソッドを使います。インデックス指定でキーと値の2つの情報を同時に変更することができます。
指定のキーの値を変更したい場合はSetCustomByKeyメソッドを使います。
まとめ
今回の内容をまとめると以下のとおりです。
図面プロパティの編集はSummaryInfoオブジェクトを使う
SummaryInfoオブジェクトはThisDrawing.SummaryInfoで取得可能
SummaryInfoオブジェクトのプロパティを使うことで図面プロパティの取得と設定が可能
SummaryInfoオブジェクトのメソッドを使うことでカスタムプロパティの取得と設定が可能
本ページでは図面のプロパティ情報を取得/変更する方法についての内容でした。
プロパティの名の通り、SummaryInfoオブジェクトのプロパティからカスタムプロパティ以外の操作はすべてできます。カスタムプロパティについてもメソッドが用意されており、プロパティの追加や値の取得/変更などが可能になっています。
VBAマクロの使い方として、カスタムプロパティに図面を識別できる何らかの情報を追加しておき、処理が終わった後にそのプロパティを削除するというような処理をするというような使い方もできます。









