View Categories

Koleksiyon Nesnesi Üzerinde Yineleme Yapmak Hakkında (ActiveX)

2 dakika okuma

Bir Koleksiyon nesnesinin belirli bir üyesini seçmek için şunu kullanın: Öğeyöntem.

ÖğeBu yöntem, koleksiyon içindeki öğenin konumunu belirten bir indeks numarası veya öğenin adını temsil eden bir dize şeklinde bir tanımlayıcı gerektirir.

Öğe`method`, bir koleksiyon için varsayılan yöntemdir. Bir koleksiyona atıfta bulunurken bir yöntem adı belirtmezseniz, `Item` varsayılır. Aşağıdaki ifadeler eşdeğerdir:

AutoLISP
( vla - Item layerCollection "ABC" )
VBA (Sadece AutoCAD için)
BuÇizim.Katmanlar.Öğe ( " ABC " ) BuÇizim.Katmanlar ( " ABC " )
Not: Varlık düzenleme yöntemlerini kullanmayın (KopyalaSıralamakAyna(ve benzeri) herhangi bir nesne üzerinde işlem yaparken aynı anda bir koleksiyon üzerinde yineleme yapmak. Her biri içinMekanizma. Koleksiyondaki bir nesneyi düzenlemeye çalışmadan önce yinelemeyi bitirin veya geçici bir dizi oluşturup bunu koleksiyona eşitleyin. Ardından kopyalanan dizide yineleme yaparak düzenlemelerinizi gerçekleştirebilirsiniz.

Katmanlar koleksiyonunda yineleme yapın. #

Aşağıdaki örnek, bir koleksiyon üzerinde yineleme yaparak koleksiyondaki tüm katmanların adlarını görüntüler:

AutoLISP
( 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" )) ) 
    

    ( uyarı mesajı )
VBA (Sadece AutoCAD için)
Sub Ch2_IterateLayer () ' Koleksiyon üzerinde yineleme yap 
    
    Hata durumunda sonraki adıma devam et

    Dim I As Integer
    Dim msg As String
    mesaj = ""
    I = 0'dan ThisDrawing.Layers.count - 1'e kadar
        mesaj = mesaj + BuÇizim.Katmanlar.Öğe(I).Adı + vbCrLf
    Sonraki
    MsgBox msg
Son Alt Yordam

MyLayer adlı katmanı bulun. #

Aşağıdaki örnek, MyLayer adlı katmana atıfta bulunur ve katman mevcut değilse bir mesaj görüntüler:

AutoLISP
( 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)(Uyarı: "' MyLayer ' 
        katmanı mevcut değil.")
    )
)
VBA (Sadece AutoCAD için)
Sub Ch2_FindLayer () ' Item yöntemini kullanarak MyLayer adlı bir katmanı bulun 
    
    Hata durumunda sonraki adıma devam et

    Dim ABCLayer As AcadLayer
    ABCLayer'ı ThisDrawing.Layers("MyLayer") olarak ayarla.
    Eğer Hata <> 0 iseMsgBox " ' MyLayer ' 
        katmanı mevcut değil."
    Sonlandır
Son Alt Yordam

Tarafından desteklenmektedir BetterDocs

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir