(命令“关闭”)请求c
大家好,我有一个例程,它执行QSAVE、SAVE,然后关闭一个图形(代码如下)。但我遇到了一个问题(仅在1张图纸中),最后一个悬而未决的问题是要求确认“真的想放弃对图纸的所有更改吗?”。
只要我有这个习惯(一年多),它就一直很有效,但在这张1号图纸中,它绊倒了。
我将专家系统变量设置为5。
(DEFUN C:qq (/ newname)
(setvar "CMDECHO" 0)
(SETQ EXPERTO (GETVAR "EXPERT"))
(setvar "EXPERT" 0)
(COMMAND "ZOOM" "e")
(COMMAND "UCS" "w")
(SETQ QSDATE (RTOS (GETVAR "CDATE") 2 0))
(SETQ QSTIMEh (SUBSTR (RTOS (GETVAR "CDATE") 2 4) 10 2))
(SETQ QSTIMEm (SUBSTR (RTOS (GETVAR "CDATE") 2 4) 12 2))
(if (zerop (getvar "dwgtitled"))
(command "._qsave" (getstring "\n Enter drawing name: "))
(command "_.qsave")
)
(setvar "filedia" 0)
(vl-mkdir (strcat "D:/_DWGBackup/" QSDATE "/"))
(vl-mkdir (strcat "D:/_DWGBackup/" QSDATE "/Exit/"))
(setq newname
(strcat
"D:/_DWGBackup/" QSDATE "/Exit/"
(vl-filename-base (getvar 'dwgname)) ".dwg"
)
)
(if (findfile (strcat newname))
(command "_.save" newname "_Y")
(command "_.save" newname)
)
(setvar "filedia" 1)
(setvar "EXPERT" EXPERTO)
(COMMAND "CLOSE")
(princ)
)
即使忽略LISP例程,如果执行QSAVE,然后输入“(命令“close”)它仍然会请求确认。而在其他图纸中,我可以在QSAVE后立即关闭而无需确认。
以前有人见过这个吗?
非常感谢您的帮助。 试图记住,但两者之间存在差异。save和save等通常情况下,层关闭了dilouge,因此不需要filedia,也可以使用save和close进行播放,非常确定还有VL close。 嗨,比格尔,
非常感谢您的回复。
在这个阶段,我对修改例程不太在意,我认为只要将(命令“CLOSE”)更改为(命令“CLOSE”“Y”,修复就足够简单了。
我更好奇的是,为什么绘画之间的行为有差异。这套套路很长一段时间都很好,直到今天才在几张不同的图纸上开始发挥作用。我监控了我在这些特定图画中的所有活动,没有任何东西能够解释行为的变化。
再次感谢。 查看sysvar DBMOD,它控制QSAVE确认需求-大卫 嗨,大卫,
是的,这似乎就是原因。每次保存后(在错误的图形中),DBMOD不会重置为零。
关于这件事的原因有什么想法吗?我在谷歌上做了一些快速搜索,但结果不多。
谢谢你的回复。 看看这些是否有帮助
http://www.cadtutor.net/forum/showthread.php?4029-重置DBMOD以避免保存提示
http://forums.autodesk.com/t5/objectarx/reset-dbmod/td-p/324001
http://www.cadforum.cz/cadforum_en/how-to-avoid-save-prompt-after-zooming-or-other-operations-tip8408 数据库被修改了。可能是_u。缩放(E)
对于简单的解决方案,可能:
(defun c:qq ()
(cond ((zerop (getvar "DWGTITLED"))
(setvar "CMDECHO" 1)
(command "_.QSAVE")
(while (> (getvar "CMDACTIVE") 0)
(command pause))
(setvar "CMDECHO" 0))
((> (getvar "DBMOD") 0)
(command "_.QSAVE" "_Yes"))
(T
(command "_.QSAVE")))
(prin1))
HTH-David 大家好,
谢谢你的帮助(很抱歉反应太晚)。
David-我同意解决方法是调整例程以检查DBMOD。
SLW210-感谢链接。
你们知道是什么导致DBMOD在QSAVE后不能重置为零吗?忽略LISP例程(为了参数)。
--------编辑-----------
所以我刚刚做了一些实验来删除对象并测试QSAVE,发现在这个图形中有一些不同的元素可以删除,在QSAVE之后,DBMOD系统变量将重置为零。
例如,假设有3个对象似乎会影响这种行为(项目A、B和C)。我可以删除这些项目中的任何一个,然后清除,然后QSAVE,然后DBMOD将设置为零。我可以删除项目A,将B和C留在图纸>QSAVE>DBMOD=0中。我可以删除项目B,将A和C留在图纸>QSAVE>DBMOD=0中。看起来很奇怪。顺便说一句,审核>清除>审核>清除和/或恢复两者都不能解决损坏问题。 他们能成为团队的一员吗?
它们可能与反应堆有关吗?
他们有xadta吗?
是否存在仅在所有3个实体中引用的层?
我可能会选择变通方法,因为它在任何情况下都应该有效。我的0.02美元-David 嗨,大卫,
其中两个元素是ProSteel对象,另一个是标题栏。
我不确定ProSteel元素到底是什么(就扩展数据等而言),但它们确实有这种类型的东西。标题栏没有扩展数据。图形中没有组。它们也不共享公共层。我对反应堆的情况不太确定,我明天再查。
我将继续工作,它将覆盖所有基础。
页:
[1]
2