大家好!
上周,在其他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添加到现有命令中,而不是重新定义以避免出现意外情况?
我曾计划重新定义一些命令,以确保遵循标准而不影响每个人的工作方式(如打印时的线宽控制),但现在我不再确定这是不是可行的方法。
如果您对上述问题有任何意见/建议/回答,我们将不胜感激!
谢谢
杰夫! |