4U玩法:
- ; test (setq lst (RlxBlk_GetBlockList (vla-get-ActiveDocument (vlax-get-acad-object))))
- (defun RlxBlk_GetBlockList ( $doc / fn O-Name B-Name A-Team B-Team)
- (if (vlax-property-available-p $doc 'Name) (setq fn (vla-get-name $doc)))
- ;(vlax-dump-object $doc)
- (vlax-for layout (vla-get-layouts $doc)
- (vlax-for object (vla-get-block layout)
- (setq O-Name (vla-get-objectname object))
- (cond
- ((and (eq O-Name "AcDbBlockReference")
- (not (assoc (setq B-Name (vla-get-effectivename object)) B-Team)))
- (if (eq (vla-get-hasattributes object) :vlax-true)
- (setq B-Team (append B-Team (list (cons B-Name (mapcar '(lambda (x) (vla-get-tagstring x))
- (vlax-invoke object 'getattributes))))))
- (setq B-Team (append B-Team (list (cons B-Name (list "No Attributes")))))))
- ((eq O-Name "AcDbAttributeDefinition")
- (setq A-Team (append A-Team (list (vla-get-tagstring object))))))))
- (if B-Team B-Team (if A-team (list (cons fn A-team)) nil))
- )
这是我目前正在做的一个更大的程序的一部分,但它可能有一些用处。这将列出包含任何文档的所有标记名的所有块,因此它也适用于odbx文档
gr.R |