明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1904|回复: 8

如何让某些程序运行后能恢复到指定的捕捉模式?

[复制链接]
发表于 2012-7-31 23:23:47 | 显示全部楼层 |阅读模式
本人在网上(主要是明经社区)搜集了很多工作中能用到的程序,但发现有些程序在运行完了之后就把捕捉模式给清空了,我之前的解决方式是当捕捉被清空时运行一个小程序来恢复:

;----------------------------------------------------------------------------------------------------------------------
; ★ZDBZ 指定对象捕捉模式
;----------------------------------------------------------------------------------------------------------------------
;1=端点,2=中点,4=圆心,16=象限点,32=交点,128=垂足,延伸=4096,
;4279=1+2+4+16+32+128+4096
(defun c:ZDBZ()
  (prompt "\n恢復捕捉模式:")
  (setvar "osmode" 4279)
)


这样的操作多了感觉也很烦人,有没有什么办法能让任何一个程序运行完之后都能将对象捕捉恢复到指定模式?(在每个程序的最后加以上程序感觉不现实,因为程序有点小多,并且也不是所有程序都会将捕捉清空)我的经常加载的程序都是以1.lsp、1.VLX诸如此类命名的(1.lsp、1.VLX里面还包含很多程序)
我想是不是可以编这样的程序:
思路一:自动检测是否运行了1.lsp、1.VLX中的程序,如果用了,在程序结束后对象捕捉模式自动恢复到指定模式
思路二:自动检测CAD命令行是否出现命令,如果出现命令,则在命令启动的程序运行结束后对象捕捉模式自动恢复到指定模式
发表于 2012-8-1 08:18:30 | 显示全部楼层
太简单了吧!!!!
发表于 2012-8-1 08:21:23 | 显示全部楼层
用VBA,写在ENDCOMMAND事件中,判断命令名,如果是就执行你需要的宏。不就出来了!!!
发表于 2012-8-1 08:24:10 | 显示全部楼层
Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
   On Error Resume Next
   If CommandName = "??" Then
      ThisDrawing.SetVariable "osmode", 4279
   End If   
End Sub
 楼主| 发表于 2012-8-1 11:35:38 | 显示全部楼层
lihezhou 发表于 2012-8-1 08:24
Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
   On Error Resume Next
   If Com ...

能不能麻烦弄个成品文件?我不会用啊~~

点评

搜索一下关于错误处理函数 *error* 相关的例子来学习一下!  发表于 2012-8-1 12:09
发表于 2012-8-1 12:49:38 | 显示全部楼层
自定义一个错误处理函数,在函数中恢复你需要的捕捉模式
发表于 2012-8-1 13:09:31 | 显示全部楼层
本帖最后由 革天明 于 2012-8-1 13:13 编辑

程序异常出错和正常结束两种情况:
对于异常出错的自定义一个函数
(defun *myerror* (m)
   (setvar "osmode" 4279)
    (vl-cmdf "APERTURE" 19)                ;对象捕捉鞋框大小,1-50像素之间
    (vl-cmdf "CURSORSIZE" 40)                ;十字光标大小,1-100%之间
    (vl-cmdf "GRIPSIZE" 14)                ;控制夹点大小,1-100%之间
    (vl-cmdf "PICKBOX" 20)                ;控制拾取框大小,
    (vl-cmdf "SAVETIME" 1)                ;自动保存时间是2分钟,默认是10
    (vl-cmdf "POLARANG" 45)                ;设置极轴角增量为45度
    (vl-cmdf "OSMODE" 16383)                ;设置捕捉模式为“全部选择”
    (vl-cmdf "PROXYNOTICE" 0)                ;在创建代理或关闭时不显示通知。
    (setenv "AutoSnapColor" "5")        ;设置自动捕捉标记颜色为蓝色(1-255)
    (setenv "AutoSnapSize" "16")        ;设置自动捕捉标记大小为16(1-20)
    (setq *error* err11)
  )
在程序开头加上(setq        err11        *error*
                                       *error*        *myerror*
  )
在程度结尾再恢复正常的*error* (setq *error* err11)
对于正常结束的程序,直接在后面加上(setvar "osmode" 4279)
发表于 2012-8-12 11:04:03 | 显示全部楼层
有点深奥啊
发表于 2012-8-12 15:14:41 | 显示全部楼层
搜索下caoyin版主的错误处理帖子,说的很明白
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-19 19:30 , Processed in 0.734585 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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