画完线后回归0层
这个文件可以直接在图层里画线,画好后转为0层,但有个问题是画直线的时候习惯性的用ESC来结束,这样的话就不能转到0层了,请大神帮改一下,谢谢*error*
A user-definable error-handling function
请搜寻 *error* 的相关讨论 Andyhon 发表于 2018-10-6 14:46
*error*
A user-definable error-handling function
能帮写一下吗? (defun *error*_mj (msg)
(if (= (getvar "cmdecho") 1)
(setvar "cmdecho" 0)
)
(if (wcmatch (strcase msg t) "*break,*cancel*,*exit*,*取消*")
(if (= (getvar "locale") "chs")
(princ "\n用户按了<esc>强制退出")
(princ "\nyou cancelled the operation!")
)
(princ (strcat "\n" msg))
)
(terpri)
(vla-endundomark ; 回退
(vla-get-activedocument (vlax-get-acad-object))
)
(if (= mj_flag "be")
(command "zoom" "p")
)
(setvar "cmdecho" 1)
(if os
(setvar "osmode" os)
);
(setq *error* *error*_mj0)
(princ)
)
此出错函数来数来自明经的,作者不知道谁了,你拿去改一改用在自己的LSP上面去就可以了。
evayleung 发表于 2018-10-6 19:56
此出错函数来数来自明经的,作者不知道谁了,你拿去改一改用在自己的LSP上面去就可以了。
先谢谢你的帮助,刚试了一下,图层还是切不过来 疯球 发表于 2018-10-6 20:49
先谢谢你的帮助,刚试了一下,图层还是切不过来
(defun c:ttt (/ *error* *error*_MJ *error*_MJ0 p1 p2)
(defun *error*_MJ (msg)
(if (= (getvar "cmdecho") 1)
(setvar "cmdecho" 0)
)
(if (/= (getvar "CLAYER") "0")
(setvar "CLAYER" "0")
)
(if (wcmatch (strcase msg t) "*break,*cancel*,*exit*,*取消*")
(if (= (getvar "locale") "chs")
(princ "\n用户按了<esc>强制退出")
(princ "\nyou cancelled the operation!")
)
(princ (strcat "\n" msg))
)
(terpri)
(vla-endundomark ; 回退
(vla-get-activedocument (vlax-get-acad-object))
)
;|(if (= mj_flag "be")
(command "zoom" "p")
)|;
(setvar "cmdecho" 1)
(if os
(setvar "osmode" os)
);
(setq *error* *error*_MJ0)
(princ)
)
(setq *error*_MJ0*error*
*error* *error*_MJ
)
(setq acadObj (vlax-get-acad-object)
doc (vla-get-ActiveDocument acadObj)
modelSpace (vla-get-ModelSpace doc)
)
(if (not (tblsearch "layer" "新建"))
(command "layer" "m" "新建" "c" "2" "" "")
)
(setvar "CLAYER" "新建")
(setq p1 (getpoint "\n 选择起点:"))
(while (setq p2 (getpoint p1 "\n 选择下一点:"))(command "line" p1 p2 "")(setq p1 p2))
(setvar "CLAYER" "0")
(setq *error* *error*_MJ0)
)试试这样?
evayleung 发表于 2018-10-7 00:27
试试这样?
谢谢,可以用了!!
页:
[1]