フィルタリストは一組みの引数の組み合わせでできています。
最初の引数はフィルタの種類を示します(たとえば、図形の種類)。2 つめの引数は、指定したい値を示します(たとえば、円オブジェクト)。フィルタ タイプは、制限したいフィルタの種類を示す、DXF グループ コードです。一般的なフィルタ タイプのいくつかを、次にまとめます。
| 一般的なフィルタの DXF コード | |
|---|---|
| DXF コード | フィルタ タイプ |
| 0 |
オブジェクト タイプ(文字列) "Line"、"Circle"、"Arc" など |
| 2 |
オブジェクト名(文字列) オブジェクトに付けた名前 |
| 8 |
画層名(文字列) "画層 0" など |
| 60 |
オブジェクトの表示/非表示(整数) 0 =表示、1 =非表示 |
| 62 |
色番号(整数) 0~256 のインデックス値 0 は BYBLOCK を表す。256 は BYLAYER を表す。画層テーブルの色番号で、負の値は、その画層が非表示になっていることを示します。 |
| 67 |
図形がモデル/ペーパー空間のどちらにあるか(整数) 0 または省略時=モデル空間、1=ペーパー空間 |
フィルタ引数は配列として宣言します。フィルタ タイプは整数の配列として、フィルタ値はバリアントの配列として宣言します。それぞれのフィルタ タイプは、フィルタ値とペアになっていなければなりません。次に、例を示します。
FilterType(0) = 0 'Indicates filter refers to an object type FilterData(0) = "Circle" 'Indicates the object type is "Circle"
次のコードはユーザに選択セットに含めるオブジェクトを選択するためのプロンプトを表示します。しかし、円オブジェクトしか選択セットに追加しません。
Sub Ch4_FilterMtext()
Dim sstext As AcadSelectionSet
Dim FilterType(0) As Integer
Dim FilterData(0) As Variant
Set sstext = ThisDrawing.SelectionSets.Add("SS2")
FilterType(0) = 0
FilterData(0) = "Circle"
sstext.SelectOnScreen FilterType, FilterData
End Sub