发现捕捉丢失就自动打开设置好捕捉!
本帖最后由 ︶ㄣ与狼共舞 于 2013-3-18 21:32 编辑如题:写个LSP程序,发现捕捉丢失就自动打开设置好捕捉,前提是不要影响正在执行的命令或其他操作!请求大师帮忙!在此谢过了! ︶ㄣ与狼共舞 发表于 2013-11-10 13:16 static/image/common/back.gif
谢谢你的回答!
其实有个帖子也许可以很好解决你这个问题
[转贴]防止捕捉丢失 By free-Lancer
http://bbs.mjtd.com/forum.php?mo ... 7586&fromuid=202795
捕捉丢失是什么意思? Ref:
http://bbs.mjtd.com/thread-92307-1-1.html
http://bbs.mjtd.com/thread-85081-1-1.html
http://bbs.mjtd.com/thread-84523-1-1.html 本帖最后由 1993063 于 2013-3-23 14:22 编辑
(defun c:命令 ( / *Error* usercmd userosm)
(defun *Error* (msg) ; 异常退出处理
(if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*,*EXIT*,")))(princ))
(and usercmd (setvar "CMDECHO" usercmd) userosm (setvar "OSMODE" userosm))
(vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
)
(setq *DOC (vla-get-ActiveDocument (vlax-get-acad-object)))(vla-StartUndoMark *DOC)
(setq usercmd (getvar "CMDECHO") userosm (getvar "OSMODE"))
(setvar "CMDECHO" 0)(setvar "OSMODE" 0)
代码...................................
(*error* nil)
(princ)
) 本帖最后由 ︶ㄣ与狼共舞 于 2013-4-6 10:51 编辑
1993063 发表于 2013-3-24 08:20 static/image/common/back.gif
(defun c:命令 ( / *Error* usercmd userosm)
(defun *Error* (msg) ; 异常退出处理
...
非常感谢你的回答,这个不符合我的要求,我的意思是不用输入命令,让这个命令随时发现捕捉异常关闭(F3正常关闭除外,有活动命令执行时除外,)就自动执行并恢复到设置好的捕捉。如有合适程序可面议价格! 本帖最后由 wowan1314 于 2013-4-6 17:01 编辑
估计你还得输入命令。 不然真不知道该怎么弄。
关于丢失捕捉处理:
1、修正要加载的程序,使其在任何情况下都不会丢失捕捉(即对程序进行出错处理)
2、再加个程序,如果发现丢失捕捉,手动按下命令就恢复到想要的捕捉。
3、我还不知道的处理方法?!
最好是第一种。这样永绝后患。 就算有你说的那样,估计对CAD也是多了一种负担,速度必然有影响。
wowan1314 发表于 2013-4-6 16:46 static/image/common/back.gif
估计你还得输入命令。 不然真不知道该怎么弄。
关于丢失捕捉处理:
1、修正要加载的程序,使其在任何情 ...
谢谢了! 如果只是捕捉,就算你平时开得再多,哪怕一个个的去点好象也点不了多少下
还有要完全防止它丢失除了没必要之外,也不现实,虽然我们自己写程序时可以考虑种种办法,对数据有效性检查减少程序中断的可能性,通过出错处理恢复系统变量等等。但是对于加载别人打好包的程序基本上前边的方法都行不通了,比如有一个版本的南方CASS软件,在运行一个命令时(具体是哪上忘了,汗),它就把捕捉给清空了,虽然最后它恢复了,但我们用那个命令时是需要捕捉的,类似这种情况除了自己把它打开进行设置外,我真不知道有什么好招,当然也有人说过自定义透明命令可以界入。
最后一点其实还是最先说的,真没必要为这个纠结。当然如果是想研究怎么在别人的程序运行中让自己的程序去干涉它来实现恢复捕捉等那是不一样的。 llsheng_73 发表于 2013-11-10 01:40 static/image/common/back.gif
如果只是捕捉,就算你平时开得再多,哪怕一个个的去点好象也点不了多少下
还有要完全防止它丢失 ...
谢谢你的回答!
页:
[1]
2