概要 - フィルタ リストを使用して選択セットの基準を定義する(VBA/ActiveX)

フィルタリストは一組みの引数の組み合わせでできています。

最初の引数はフィルタの種類を示します(たとえば、図形の種類)。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"

選択セットに 1 つの条件を指定する

次のコードはユーザに選択セットに含めるオブジェクトを選択するためのプロンプトを表示します。しかし、円オブジェクトしか選択セットに追加しません。

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