Simon1976 发表于 2022-7-5 17:03:35

关闭后续图形

我正在创建一个lisp,以将所有后续图形关闭到当前图形。(当前右侧的文件选项卡)下面是我能得到的最接近的,但偶尔我会得到“错误:自动化错误”。绘图很忙。”
 
(defun c:Close-Subsq-dwgs (/ acadx cur docs dwg nds num)
(vl-load-com)
(setq cur (getvar 'dwgname))

   (setq acadx (vlax-get-acad-object)         ;Get AutoCAD ActiveX object
           docs (vla-get-Documents acadx);Get collection of open documents
           nds (1- (vla-get-Count docs))         ;Gets number of open docs
           num 0)

(while (/= (vla-get-name (vla-item docs nds)) cur)
   (setq dwg (vla-item docs nds))
    (if (/= 0 (vlax-variant-value (vla-getvariable dwg "DBMOD")))
      (vla-save dwg)
   )
(vla-close dwg :vlax-False)
(setq num (1+ num)
           nds (1- nds))
)

(princ (strcat "\n " (itoa num) " Drawings closed"))

(princ)
)
 
 
我认为需要:(vla-^c^c dwg)取消vla访问的图形中发生的任何事情,但没有这样的命令。有人知道解决方案吗?

rlx 发表于 2022-7-5 18:57:49

嗨,西蒙,
 
 
认为问题在于从curdwg和vla getname中获得的名称。同时使用while意味着一旦处理的文档是当前dwg,循环就会停止。不管怎样,我通常用这个:
 
 
祝你好运,Rlx组
 
 
ps不保存退出我使用
 
 
2
 
 
已经有几个月没有编码了,所以我可能有点生疏;-)
页: [1]
查看完整版本: 关闭后续图形