VLA-item (집합객체에서 특정객체를 가져올때)
Signature
RetVal = object.Item(Index)
object : 모든 컬렉션 객체
item(Index) : 조회할 구성원 항목의 컬렉션내의 색인 위치
정수 or 문자열
Retval : object
Item 은 집합객체에서 어떤한 객체를 뽑아낼때 사용합니다.
Lisp 의 ssname 정도로 보시면 이해하기가 편하실거 같습니다.
(물론 item 과 ssname 은 틀리지만.^^ 이해상 요렇게 하면 이해가 쉬울거 같습니다.)
(setq AcDoc (vla-get-activedocument (vlax-get-acad-object)))
(setq LayersObj (vla-get-layers AcDoc))
위와 같이 활성화도면안에서 레이어 객체를 가져옵니다.
그럼 레이어객체의 구성을 한번 볼까요? ^^
명령: (vlax-dump-object LayerSobj t)
; IAcadLayers: 도면에서 전체 도면층의 집합
; 특성 값:
; Application (RO) = #<VLA-OBJECT IAcadApplication 00d74d3c>
; Count (RO) = 109
; Document (RO) = #<VLA-OBJECT IAcadDocument 01e33c78>
; Handle (RO) = "13"
; HasExtensionDictionary (RO) = -1
; ObjectID (RO) = 2128088216
; ObjectName (RO) = "AcDbLayerTable"
; OwnerID (RO) = 0
; 지원되는 메써드:
; Add (1)
; Delete ()
; GenerateUsageData ()
; GetExtensionDictionary ()
; GetXData (3)
; Item (1)
; SetXData (2)
T
해당 레이어객체(집합체)는 Count = 109 ..즉 109개의 레이어의 집합체네여
지원되는 메써드에 item 이 있습니다. 즉 집합체기 때문에 그안에있는 특정 객체를 다시 뽑아올수 있져
명령: (vla-item layersObj 0)
#<VLA-OBJECT IAcadLayer 16e34d84>
명령: (vla-item layersObj 1)
#<VLA-OBJECT IAcadLayer 16e35cd4>
이런식으로 위치를 정해주면 해당 집합체에서 0 첫번째객체 1 두번째 객체..................
로 해당 객체를 가져오게 됩니다.
그럼 해당 객체구성을 보겠습니다.
명령: (setq LAY0 (vla-item layersObj 0))
#<VLA-OBJECT IAcadLayer 16e34d84>
명령: (vlax-dump-object LAY0)
; IAcadLayer: 도면위의 투영 중첩과 유사한 데이터의 논리적 조합
; 특성 값:
; Application (RO) = #<VLA-OBJECT IAcadApplication 00d74d3c>
; Description = ""
; Document (RO) = #<VLA-OBJECT IAcadDocument 01e33c78>
; Freeze = 0
; Handle (RO) = "6"
; HasExtensionDictionary (RO) = -1
; LayerOn = -1
; Linetype = "Continuous"
; Lineweight = -3
; Lock = 0
; Material = "Global"
; Name = "0"
; ObjectID (RO) = 2128088112
; ObjectName (RO) = "AcDbLayerTableRecord"
; OwnerID (RO) = 2128088216
; PlotStyleName = "색상_7"
; Plottable = -1
; TrueColor = #<VLA-OBJECT IAcadAcCmColor 16dee9c0>
; Used (RO) = -1
; ViewportDefault = 0
T
레이어 이름이 0 인 레이어객체에 대한정보군여.^^
그럼 만약 이름을 미리 알고있다면?????
이름으로도 가져올수 있습니다.
(vla-item layersObj "0")
명령: (vlax-dump-object (vla-item layersObj "0"))
; IAcadLayer: 도면위의 투영 중첩과 유사한 데이터의 논리적 조합
; 특성 값:
; Application (RO) = #<VLA-OBJECT IAcadApplication 00d74d3c>
; Description = ""
; Document (RO) = #<VLA-OBJECT IAcadDocument 01e33c78>
; Freeze = 0
; Handle (RO) = "6"
; HasExtensionDictionary (RO) = -1
; LayerOn = -1
; Linetype = "Continuous"
; Lineweight = -3
; Lock = 0
; Material = "Global"
; Name = "0"
; ObjectID (RO) = 2128088112
; ObjectName (RO) = "AcDbLayerTableRecord"
; OwnerID (RO) = 2128088216
; PlotStyleName = "색상_7"
; Plottable = -1
; TrueColor = #<VLA-OBJECT IAcadAcCmColor 16def830>
; Used (RO) = -1
; ViewportDefault = 0
T
출처 : 아키모아 행복한 하루 http://cafe.daum.net/archimore/IP9e/35
'Auto CAD > lisp' 카테고리의 다른 글
VL-list-length (리스트의 갯수 길이를 리턴) (0) | 2019.04.04 |
---|---|
VL-list* (리스트를 만들고 리턴) (0) | 2019.04.04 |
vl-list->string (아스키코드 리스트를 문자로) (0) | 2019.04.04 |
VL-registry-descendents (지정된 레지스트리 키에 대하여 하위키 또는 값) (0) | 2019.04.04 |
VL-string-elt (지정위치 문자 ascii 값으로리턴) (0) | 2019.04.04 |