Jef! 发表于 2022-7-5 23:57:05

取消定义命令-什么exa

大家好!
 
上周,在其他jdiala的帮助下,我重新定义了plot命令(到ACADDOC.LSP中),以在打印之前验证某些图层的线宽。
以下是上述lisp供参考
(command "undefine" "plot")
(defun C:plot (/ laylist lwlist laytbl)
(setq laylist (list "DIM" "MD_Annotation" "MD_Hatching" "MD_Hidden" "MD_Visible")
   lwlist(list 9 -3 5 13 -3)
   laytbl(vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
)
(mapcar
(function
   (lambda (a b)
   (if
       (tblsearch "LAYER" a)
       (vla-put-Lineweight (vla-item laytbl a ) b)
       (princ (strcat "\nLayer " (strcase a) " does not exist")) )))
   laylist
   lwlist
)
(princ "\n")
(initdia)
(command "_.plot")
(princ)
)
 
http://www.cadtutor.net/forum/showthread.php?82687-MD_-(viewbase)-层反应器图
 
Lisp程序就像它应该的那样工作。当我打印PDF文件时,PDF文件名已经存在(但未打开,也不是只读),如果我直接打印CAD询问是否要覆盖该文件,我说是,CAD打印,然后在PDF查看器中打开PDF。(正常行为)。如果我预览,退出预览窗口并从绘图窗口点击“ok”,也会发生同样的情况。但是现在,如果我在打印之前点击预览,在预览窗口中我右键单击,然后从右键单击菜单中选择打印,而不是询问我是否要覆盖它,Autocad不会询问任何问题并取消作业(在“单击以查看打印并发布详细信息”弹出窗口中这样说)。
 
如果我不加载acaddoc,行为就会恢复正常。lsp。
从我的角度来看,我认为lisp运行良好,问题可能来自取消定义原始plot命令。我现在不能停止问我的问题是“如果我未定义的plot命令包含超过(initdia)(命令“_.plot”)?
是否有任何方法可以查看原始命令(在本例中为原始Plot命令)的lisp/code?
是否可以以某种方式重新定义任何命令。。危险的
是否有某种方法可以将lisp添加到现有命令中,而不是重新定义以避免出现意外情况?
我曾计划重新定义一些命令,以确保遵循标准而不影响每个人的工作方式(如打印时的线宽控制),但现在我不再确定这是不是可行的方法。
 
如果您对上述问题有任何意见/建议/回答,我们将不胜感激!
 
谢谢
杰夫!

Jef! 发表于 2022-7-6 00:53:43

大家早上好!
 
我很惊讶,这个帖子没有答案,我想我会再试一次,把它碰一下!=)
在我看来,vue是最有趣的主题之一(重新定义命令),因为它似乎是添加由命令触发的简单事件处理程序以在所述命令启动之前更改默认行为的最简单方法。
我甚至会说(没有尝试过tho),它似乎也是一种非常容易掌握的替代品,可以替代外观更复杂的反应堆。。
 
重新定义命令是您要做的事情吗?避免这样做?你这样做有什么不好的经历吗?有没有办法确切地知道我们正在定义什么?欢迎你来分享你的想法!

Jef! 发表于 2022-7-6 01:17:37

早上好
重新定义打印以验证线宽、打印样式,根据需要还原值,重新定义关闭命令以存储一些未保存的变量(如defaultgizmo、hideprecision)。。。这就是我做的事情,我只是想确保我这样做不会造成问题。。
是否可以以某种方式重新定义任何命令。。危险的
重新定义命令是你经常做的事情吗?避免这样做?你这样做有什么不好的经历吗?有没有办法确切地知道我们正在定义什么?
页: [1]
查看完整版本: 取消定义命令-什么exa