MicroStation PowerDraftマクロの15回目です。
今回は要素タイプやレイヤを指定してデザインファイルの要素を取得する方法について取り上げます。
まず、例として線分要素を取得するときのコードを以下に示します。
Dim oEE As ElementEnumerator Dim oESC As New ElementScanCriteria Call oESC.ExcludeNonGraphical Call oESC.ExcludeAllTypes '線分要素 Call oESC.IncludeType(msdElementTypeLine) Set oEE = ActiveModelReference.Scan(oESC) Do While oEE.MoveNext ...
まず、ExcludeAllTypesで全ての要素タイプをExcludeして
IncludeType(msdElementTypeLine)でIncludeすることで
線分要素のみを取得することができます。
線分以外の要素を取得したいときは上記のコードの
Call oESC.IncludeType(msdElementTypeLine)
のmsdElementTypeLineを取得したい要素タイプに変更します。
連続線分要素
Call oESC.IncludeType(msdElementTypeLineString)
多角形要素
Call oESC.IncludeType(msdElementTypeShape)
楕円要素
Call oESC.IncludeType(msdElementTypeEllipse)
弧要素
Call oESC.IncludeType(msdElementTypeArc)
セル要素
Call oESC.IncludeType(msdElementTypeCellHeader)
共有セル要素
Call oESC.IncludeType(msdElementTypeSharedCell)
テキスト要素
Call oESC.IncludeType(msdElementTypeText)
複数の要素タイプを指定した場合はor条件として要素を取得します。
次にレイヤを指定して要素を取得する方法についてです。
例として画層 1の要素を取得するコードを以下に示します。
Dim oEE As ElementEnumerator Dim oESC As New ElementScanCriteria Call oESC.ExcludeNonGraphical Call oESC.ExcludeAllLevels Call oESC.IncludeLevel(ActiveDesignFile.Levels.Find("画層 1")) Do While oEE.MoveNext ...
要素タイプを指定して要素を取得するのと同様に全てのLevelをExcludeしてから取得したい画層をIncludeします。
画層以外の指定方法を以下に示します。
線色2を指定
Call oESC.ExcludeAllColors Call oESC.IncludeColor(2)
線幅3を指定
Call oESC.ExcludeAllLineWeights Call oESC.IncludeLineWeight(3)
線種4を指定
Call oESC.ExcludeAllLineStyles Call oESC.IncludeLineStyle(ActiveDesignFile.LineStyles.Find("4"))
Level、Color、LineWeight、LineStyleはそれぞれand条件で検索を行うので上記の指定を一度に行って要素を取得した場合
画層1、線色2、線幅3、線種4の要素を取得することができます。