Symbol names and strings in filter lists can include wild-card patterns.
The following table identifies the wild-card characters recognized by AutoCAD, and what each means in the context of a string:
| Wild-card characters | |
|---|---|
| Character | Definition |
| # (pound) | Matches any single numeric digit |
| @ (at) | Matches any single alphabetic character |
| . (period) | Matches any single nonalphanumeric character |
| * (asterisk) | Matches any character sequence, including an empty one, and it can be used anywhere in the search pattern: at the beginning, middle, or end |
| ? (question mark) | Matches any single character |
| ~ (tilde) | If it is the first character in the pattern, it matches anything except the pattern |
| [...] | Matches any one of the characters enclosed |
| [~...] | Matches any single character not enclosed |
| - (hyphen) | Used inside brackets to specify a range for a single character |
| , (comma) | Separates two patterns |
| ` (reverse quote) | Escapes special characters (reads next character literally) |
Use a single quote (`) to indicate that a character is not a wildcard, but is to be taken literally. For example, to specify that only an anonymous block named “*U2” be included in the selection set, use the following filter arguments:
FilterType(0) = 2 FilterData(0) = "`*U2"
The following code defines the selection criteria as any Mtext in which “The” appears in the text string. This example also demonstrates use of the SelectByPolygon selection method:
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