概要 - 選択セットのフィルタ条件にワイルド カードを使用する(VBA/ActiveX)

フィルタ リストの中のシンボル名や文字列には、ワイルド カードを含めることができます。

次の表では、AutoCAD が認識できるワイルドカード文字と、それぞれの意味を示します。

ワイルド カード文字
文字 説明
# (シャープ記号) 1 つの数字にマッチします
@ (アット記号) 1 つのアルファベット文字にマッチします
. (ピリオド) 1 つの非英数字にマッチします
* (アスタリスク) 空文字列を含む任意の文字シーケンスにマッチし、検索パターンの先頭、中間、末尾のどこにでも使用できます。
? (疑問符) 任意の 1 文字にマッチします
~ (ティルダ) パターンの先頭の文字の場合、パターン以外の任意の文字にマッチします
[...] 囲まれた文字のいずれか 1 文字にマッチします
[~...] 囲まれた文字以外の 1 文字にマッチします
- (ハイフン) 角括弧内で使用され、文字の範囲を指定します
, カンマ 2 つのパターンを区切ります
` (逆クォーテーション) 特殊文字をエスケープします(次の文字を文字どおりに読みます)

シングル クォーテーション(`)をワイルド カードでない文字の前につけると、シングル クォーテーションも文字として扱われます。たとえば、選択セットで名前のないブロック "*U2" を指定するには、次のようにフィルタ引数を指定します。

FilterType(0) = 2
FilterData(0) = "`*U2"

文字の中に特定の単語を含むマルチ テキストを選択する

次のコードは文字の中に "The" が表れるマルチ テキスト(Mtext)を選択条件として定義します。この例は、SelectByPolygon メソッドの使用例でもあります。

Sub Ch4_FilterPolygonWildcard()
  Dim sstext As AcadSelectionSet
  Dim FilterType(1) As Integer
  Dim FilterData(1) As Variant
  Dim pointsArray(0 To 11) As Double
  Dim mode As Integer
  mode = acSelectionSetWindowPolygon
  pointsArray(0) = -12#: pointsArray(1) = -7#: pointsArray(2) = 0
  pointsArray(3) = -12#: pointsArray(4) = 10#: pointsArray(5) = 0
  pointsArray(6) = 10#: pointsArray(7) = 10#: pointsArray(8) = 0
  pointsArray(9) = 10#: pointsArray(10) = -7#: pointsArray(11) = 0
  Set sstext = ThisDrawing.SelectionSets.Add("SS10")

  FilterType(0) = 0
  FilterData(0) = "MTEXT"
  FilterType(1) = 1
  FilterData(1) = "*The*"

  sstext.SelectByPolygon mode, pointsArray, FilterType, FilterData
End Sub