首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AutoLisp -每个文档

AutoLisp -每个文档
EN

Stack Overflow用户
提问于 2022-09-09 17:43:47
回答 1查看 16关注 0票数 0

在cad程序中,如何获得每个打开的文档实例的变量?

代码语言:javascript
复制
;; 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-09 17:43:47

不要使用repeat,而是使用vlax-forVlax-for允许将对象变量中的集合单独传递到符号变量中。

代码语言:javascript
复制
;; 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

结果:

代码语言:javascript
复制
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>
nil
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73665792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档