Collection オブジェクトの特定のメンバーを選択するには、Item メソッドを使用します。
Item メソッドは、識別子として、コレクション内の項目の位置を指定する索引番号または項目の名前を表す文字列を必要とします。
Item メソッドはコレクションの既定のメソッドです。コレクションを参照していてメソッド名を指定していないときは、Item メソッドが割り当てられます。次の式は等価です。
(vla-Item layerCollection "ABC")
ThisDrawing.Layers.Item("ABC") ThisDrawing.Layers("ABC")
次の例は、コレクションを反復して、コレクション内のすべての画層の名前を表示します。
(vl-load-com) (defun c:Ch2_IterateLayer() (setq acadObj (vlax-get-acad-object) doc (vla-get-ActiveDocument acadObj) layerCollection (vla-get-Layers doc) msg "") (vlax-for item layerCollection (setq msg (strcat msg (vla-get-Name item) "\n")) ) (alert msg) )
Sub Ch2_IterateLayer() ' Iterate through the collection On Error Resume Next Dim I As Integer Dim msg As String msg = "" For I = 0 To ThisDrawing.Layers.count - 1 msg = msg + ThisDrawing.Layers.Item(I).Name + vbCrLf Next MsgBox msg End Sub
次の例は画層名 "MyLayer" を検索し、見つからない場合はメッセ-ジを表示します。
(vl-load-com) (defun c:Ch2_FindLayer() (setq acadObj (vlax-get-acad-object) doc (vla-get-ActiveDocument acadObj) layerCollection (vla-get-Layers doc)) (setq ABCLayer (vl-catch-all-apply 'vla-Item (list layerCollection "MyLayer"))) (if (vl-catch-all-error-p ABCLayer) (alert "The layer 'MyLayer' does not exist.") ) )
Sub Ch2_FindLayer() ' Use the Item method to find a layer named MyLayer On Error Resume Next Dim ABCLayer As AcadLayer Set ABCLayer = ThisDrawing.Layers("MyLayer") If Err <> 0 Then MsgBox "The layer 'MyLayer' does not exist." End If End Sub