在cad程序中,如何获得每个打开的文档实例的变量?
;; Gets the application
(setq objApp (vlax-get-acad-object))
;; Object collection of open documents
(setq objDocs (vla-get-documents objApp))
;; Each open document
(setq iCount (vla-get-count objDocs))
(setq iItr1 0)
(repeat iCount ; Also tried foreach
;; This is where I'm stuck
;; ssname works with selection sets, not objects.
(setq objOpenDoc (ssName objDocs iItr1));---; <-Error
(princ "\nDoc : ")(princ objOpenDoc)(terpri); Printing Results
(setq iItr1 (1+ iItr1));--------------------; Next Document
);repeat发布于 2022-09-09 17:43:47
不要使用repeat,而是使用vlax-for。Vlax-for允许将对象变量中的集合单独传递到符号变量中。
;; Gets the application
(setq objApp (vlax-get-acad-object))
;; Object collection of open documents
(setq objDocs (vla-get-documents objApp))
;; Each open document
(vlax-for objOpenDoc objDocs
(princ "\nDoc : ")(princ objOpenDoc)(terpri); Printing Results
);repeat结果:
Command: (progn (setq objApp (vlax-get-acad-object))(setq objDocs (vla-get-documents objApp))(vlax-for objOpenDoc objDocs (princ "\nDoc : ")(princ objOpenDoc)(terpri)))
Doc : #<VLA-OBJECT IAcadDocument 85066cc0>
Doc : #<VLA-OBJECT IAcadDocument 0828b3c0>
Doc : #<VLA-OBJECT IAcadDocument 60e96430>
Doc : #<VLA-OBJECT IAcadDocument 574d6760>
Doc : #<VLA-OBJECT IAcadDocument 86b0e3b0>
Doc : #<VLA-OBJECT IAcadDocument a5964cc0>
Doc : #<VLA-OBJECT IAcadDocument cdf25490>
nilhttps://stackoverflow.com/questions/73665792
复制相似问题