明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 673|回复: 6

[提问] 画完线后回归0层

[复制链接]
发表于 2018-10-6 14:38:15 | 显示全部楼层 |阅读模式
这个文件可以直接在图层里画线,画好后转为0层,但有个问题是画直线的时候习惯性的用ESC来结束,这样的话就不能转到0层了,请大神帮改一下,谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 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

能帮写一下吗?
发表于 2018-10-6 19:56:10 | 显示全部楼层
  1. (defun *error*_mj (msg)
  2.   (if (= (getvar "cmdecho") 1)
  3.     (setvar "cmdecho" 0)
  4.   )
  5.   (if (wcmatch (strcase msg t) "*break,*cancel*,*exit*,*取消*")
  6.     (if (= (getvar "locale") "chs")
  7.       (princ "\n用户按了<esc>强制退出")
  8.       (princ "\nyou cancelled the operation!")
  9.     )
  10.     (princ (strcat "\n" msg))
  11.   )
  12.   (terpri)
  13.   (vla-endundomark                     ; 回退
  14.                    (vla-get-activedocument (vlax-get-acad-object))
  15.   )
  16.   (if (= mj_flag "be")
  17.     (command "zoom" "p")
  18.   )
  19.   (setvar "cmdecho" 1)
  20.   (if os
  21.   (setvar "osmode" os)
  22.   );
  23.   (setq *error* *error*_mj0)
  24.   (princ)
  25. )

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

先谢谢你的帮助,刚试了一下,图层还是切不过来
发表于 2018-10-7 00:27:05 | 显示全部楼层
疯球 发表于 2018-10-6 20:49
先谢谢你的帮助,刚试了一下,图层还是切不过来

  1. (defun c:ttt (/ *error* *error*_MJ *error*_MJ0 p1 p2)
  2. (defun *error*_MJ (msg)
  3.   (if (= (getvar "cmdecho") 1)
  4.     (setvar "cmdecho" 0)
  5.   )
  6.   (if (/= (getvar "CLAYER") "0")
  7.       (setvar "CLAYER" "0")
  8.     )
  9.   (if (wcmatch (strcase msg t) "*break,*cancel*,*exit*,*取消*")
  10.       (if (= (getvar "locale") "chs")
  11.       (princ "\n用户按了<esc>强制退出")
  12.       (princ "\nyou cancelled the operation!")
  13.    
  14.     )
  15.     (princ (strcat "\n" msg))
  16.   )
  17.   (terpri)
  18.   (vla-endundomark                     ; 回退
  19.                    (vla-get-activedocument (vlax-get-acad-object))
  20.   )
  21.   ;|(if (= mj_flag "be")
  22.     (command "zoom" "p")
  23.   )|;
  24.   (setvar "cmdecho" 1)
  25.   (if os
  26.   (setvar "osmode" os)
  27.   );
  28.   (setq *error* *error*_MJ0)
  29.   (princ)
  30. )  
  31.   
  32. (setq *error*_MJ0  *error*
  33.         *error* *error*_MJ
  34.         )
  35. (setq acadObj (vlax-get-acad-object)
  36.       doc (vla-get-ActiveDocument acadObj)
  37.      modelSpace (vla-get-ModelSpace doc)
  38. )  
  39. (if (not (tblsearch "layer" "新建"))
  40.          (command "layer" "m" "新建" "c" "2" "" "")
  41.       )
  42. (setvar "CLAYER" "新建")
  43. (setq p1 (getpoint "\n 选择起点:"))
  44. (while (setq p2 (getpoint p1 "\n 选择下一点:"))(command "line" p1 p2 "")(setq p1 p2))
  45. (setvar "CLAYER" "0")
  46. (setq *error* *error*_MJ0)
  47. )
试试这样?
 楼主| 发表于 2018-10-7 08:05:41 | 显示全部楼层

谢谢,可以用了!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-19 04:32 , Processed in 0.152368 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表