CadFrank 发表于 2022-7-5 17:14:32

关闭图纸1。图纸

你好
 
我正在使用AutoCAD 2011。
 
我正试着关闭Drawing1。打开现有图形时显示dwg。
 
我想出了这个代码,但它向我发送了一个错误:
(setq acadobject (vlax-get-Acad-Object))
(setq documentcollection (vla-get-documents acadobject))
(vlax-for <doc> documentcollection   
(if (eq (getvar 'dwgname) "Drawing1.dwg")
   (vla-close (vla-item <doc> "Drawing1.dwg") :vlax-False)
)
)
 
请帮帮我

ReMark 发表于 2022-7-5 17:27:23

为什么不通过STARTUP系统变量完全删除Drawing1呢?
 
启动选项包括:
 
0-显示“选择样板”对话框,或使用“选项”对话框中“文件”选项卡上的默认图形样板文件集。
1-在不打开图形样板文件的情况下启动,并显示“启动”或“创建新图形”对话框。
2-在不打开图形样板文件的情况下启动。如果在应用程序中可用,将显示一个自定义对话框。

CadFrank 发表于 2022-7-5 17:41:26

嗯,我试过了,但它仍然会弹出图纸。出于某种原因的dwg
 
问题是,当我打开一个已经由drawing1创建的图形时。dwg保持打开状态

BlackBox 发表于 2022-7-5 17:46:56

奇怪的是,sysvar不适合您。
 
 
在任何情况下,如果文档是ActiveDocument,则不能对其调用Close()方法,否则会引发“错误:自动化错误”。绘图正忙。。。您可以切换到另一个文档,然后关闭()Drawing1(如果在尝试关闭()Drawing1之前以编程方式完成,则会有一些隐式任务)。
 
对原始代码稍加修改:

(vlax-for doc (vla-get-documents (vlax-get-acad-object))
(if (= (vla-get-name doc) "Drawing1.dwg")
   (vla-close doc :vlax-False)
)
)

 
 
现在,*如果*安装了VBA,您可以将其称为,如本线程中所述:

(command "VBASTMT" (strcat "AutoCAD.Application.Documents.Item(\"Drawing1.dwg\").Close"))

 
 
HTH公司

ronsingh78 发表于 2022-7-5 17:55:27


(vla-close (vla-item (vla-get-documents (vlax-get-acad-object)) "Drawing1.dwg") :vlax-false "Drawing1.dwg")

从其他图形传递lisp代码(不是drawing1.dwg,否则会出现绘图繁忙错误)

CadFrank 发表于 2022-7-5 18:12:05

谢谢大家,
 
我看看能不能理解你的煽动。
 
当做

StevJ 发表于 2022-7-5 18:17:45

我在《阿卡多克》中使用了这个。lsp文件:
史蒂夫
页: [1]
查看完整版本: 关闭图纸1。图纸