疯球 发表于 2018-10-6 14:38:15

画完线后回归0层

这个文件可以直接在图层里画线,画好后转为0层,但有个问题是画直线的时候习惯性的用ESC来结束,这样的话就不能转到0层了,请大神帮改一下,谢谢

Andyhon 发表于 2018-10-6 14:46:40

*error*
A user-definable error-handling function

请搜寻 *error* 的相关讨论

疯球 发表于 2018-10-6 17:11:54

Andyhon 发表于 2018-10-6 14:46
*error*
A user-definable error-handling function



能帮写一下吗?

evayleung 发表于 2018-10-6 19:56:10

(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上面去就可以了。

疯球 发表于 2018-10-6 20:49:28

evayleung 发表于 2018-10-6 19:56
此出错函数来数来自明经的,作者不知道谁了,你拿去改一改用在自己的LSP上面去就可以了。

先谢谢你的帮助,刚试了一下,图层还是切不过来

evayleung 发表于 2018-10-7 00:27:05

疯球 发表于 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)
)试试这样?

疯球 发表于 2018-10-7 08:05:41

evayleung 发表于 2018-10-7 00:27
试试这样?

谢谢,可以用了!!
页: [1]
查看完整版本: 画完线后回归0层