明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8236|回复: 23

求一段小lsp让我设置好捕捉后,永不关掉!

  [复制链接]
发表于 2008-6-1 15:13:00 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2025-7-28 08:29:04 | 显示全部楼层
qsb506 发表于 2008-6-6 12:30
我的方法是先打开捕捉设置窗口,选择你要常用的选项,然后按确定退出,输入命令osmode,记下变量值,在CAD ...

如果需要手动恢复  那不需要这么麻烦啊    加载这个  就行了 需要哪个自行更改   
(defun c:BZ ()
  ;; 1. 设置哪些捕捉需要打开,添加对应位码数,并在OSMODE中把所有位码相加
  (setvar "OSMODE" 695) ; 1(端点) + 2(中点) + 4(圆心) + 16(象限点) + 32(交点) + 128(垂足) + 512(最近点)
  
  ;; 2. 确保对象捕捉开启(清除关闭标志)
  (setvar "OSMODE" (logand (getvar "OSMODE") 16383)) ; 清除16384位(关闭标志)
  
  ;; 3. 开启对象捕捉追踪(F11)
  (setvar "AUTOSNAP" (boole 7 (getvar "AUTOSNAP") 16)) ; 设置追踪位
  
  ;; 4. 验证并显示结果
  (setq finalOsMode (getvar "OSMODE"))
  
  (princ "\n========== 对象捕捉设置 ==========")
  (princ (strcat "\n对象捕捉状态: " (if (zerop (logand finalOsMode 16384)) "开启" "关闭")))
  
  ;; 列出所有启用的捕捉模式
  (setq enabledModes "")
  (if (> (logand finalOsMode 1) 0) (setq enabledModes (strcat enabledModes "端点 ")))
  (if (> (logand finalOsMode 2) 0) (setq enabledModes (strcat enabledModes "中点 ")))
  (if (> (logand finalOsMode 4) 0) (setq enabledModes (strcat enabledModes "圆心 ")))
  (if (> (logand finalOsMode 16) 0) (setq enabledModes (strcat enabledModes "象限点 ")))
  (if (> (logand finalOsMode 32) 0) (setq enabledModes (strcat enabledModes "交点 ")))
  (if (> (logand finalOsMode 128) 0) (setq enabledModes (strcat enabledModes "垂足 ")))
  (if (> (logand finalOsMode 512) 0) (setq enabledModes (strcat enabledModes "最近点 ")))
  (if (= enabledModes "")
    (princ "\n捕捉模式: 无")
    (princ (strcat "\n捕捉模式: " enabledModes)))
  
  (princ (strcat "\n对象捕捉追踪(F11): " (if (zerop (logand (getvar "AUTOSNAP") 16)) "关闭" "开启")))
  (princ "\n==================================")
  
  ;; 5. 如果捕捉模式未设置,提供解决方案
  (if (= enabledModes "")
    (progn
      (princ "\n\n?? 捕捉模式未正确设置!请尝试:")
      (princ "\n1. 手动设置捕捉模式:")
      (princ "\n   (setvar \"OSMODE\" 167)")
      (princ "\n2. 检查CAD版本兼容性")
      (princ "\n3. 联系技术支持")
    )
  )
  
  (princ)
)
回复 支持 反对

使用道具 举报

发表于 2008-6-1 15:28:00 | 显示全部楼层

;;用反应器,但不推荐这样,因为 许多程序在运行时需要关掉 osmode

;;红色部分自行设置

(if (not ltr-ResetOsmode)
  (setq ltr-ResetOsmode (vlr-editor-reactor nil '((:vlr-sysvarchanged . lt-ResetOsmode))))
)
(defun lt-ResetOsmode (a b) (if (/= (getvar "osmode") 15359) (setvar "osmode" 15359)) (princ))

发表于 2008-6-1 21:59:00 | 显示全部楼层

不关捕捉,有些程序运行会出现结果不正确的情况的,还是建议做一个命令,输入该命令自动打开捕捉的好

发表于 2008-6-1 21:59:00 | 显示全部楼层

不关捕捉,有些程序运行会出现结果不正确的情况的,还是建议做一个命令,输入该命令自动打开捕捉的好

 楼主| 发表于 2008-6-2 11:11:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-6-2 12:19:00 | 显示全部楼层
本帖最后由 作者 于 2008-6-2 12:20:26 编辑

反应器检测

:vlr-lispEnded

:vlr-lispCancelled

 楼主| 发表于 2008-6-2 12:28:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2008-6-2 19:58:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-6-6 12:30:00 | 显示全部楼层
我的方法是先打开捕捉设置窗口,选择你要常用的选项,然后按确定退出,输入命令osmode,记下变量值,在CAD安装文件夹下打开Support文件夹,用记事本打开acad2004doc.lsp文件(我用的是2004版的),末尾加上三行代码如下:
(defun c:OOO(  )
(SETVAR "OSMODE" 刚才记下的变量值)
)
保存退出,以后在CAD下如发现捕捉设置被改变了,只要输入ooo就可恢复了。
发表于 2008-6-6 12:53:00 | 显示全部楼层

和楼上的想法差不多,我在捕捉被关闭之后一般都DXC。

;设置对象捕捉模式为:
;端点、中点、圆心、交点、延伸、垂足、插入点
(defun c:dxc ()
  (setvar "osmode" 4327)
  (princ "OK!")
  (PRINC)
)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-12 04:14 , Processed in 0.288999 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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