孤立图层 并在取消孤

复制代码
网友答: ai也是挺无聊的
layiso layerp网友答: 太感动了 居然是免费的 已copy网友答: 哈哈哈你们也是太理解AI了可以反正能用就行网友答:
我试试这两个,666啊网友答: ai总是把简单的事情复杂化 显得它聪明网友答:
换个思路 为什么不是欧特克开发人员的思路有问题呢? 明明很多功能可以弄个快捷图标、优化说明提供给用户,但是欧特克就是故意隐藏起来 ,非要输入命令让用户去操作。。 非常不理解他们开发的思路,好的功能千方百计隐藏起来不不让用户知道、也让用户找不到。。网友答: 本帖最后由 amook147 于 2025-11-13 13:35 编辑
其实autocad已经是很笨重的CAD工具了 这方面 远远不如国产的中望 浩辰 。。。
autocad现在最大的优势就是盗版满天飞 欧特克放纵盗版 导致 用户依赖性太强了。。。

- ;; ===================================================================
- ;; 图层孤立命令 (IL) + 自动恢复 (ILR)
- ;; 特性:
- ;; - 运行 IL 后弹出对话框
- ;; - 点击“退出孤立”自动恢复图层
- ;; - 仅需加载此 .lsp 文件(自动创建临时 DCL)
- ;; - 兼容 AutoCAD LT 和完整版
- ;; ===================================================================
- ;; 全局变量
- (setq *GL_ORIGINAL_ON_LAYERS* nil)
- (setq *GL_TEMP_DCL_PATH* (strcat (getvar "TEMPPREFIX") "isolate_temp1.dcl"))
- ;; 命令: IL
- (defun C:IL (/ ss lays ent lyr layer-data dcl_id)
- (prompt "\n选择要孤立的图元 <回车结束>: ")
- (if (not (setq ss (ssget)))
- (princ "\n未选择对象。")
- (progn
- ;; 保存原始开启的图层
- (setq *GL_ORIGINAL_ON_LAYERS* nil)
- (while (setq layer-data (tblnext "LAYER" (null layer-data)))
- (if (= (logand (cdr (assoc 70 layer-data)) 2) 0)
- (setq *GL_ORIGINAL_ON_LAYERS*
- (cons (cdr (assoc 2 layer-data)) *GL_ORIGINAL_ON_LAYERS*)
- )
- )
- )
-
- ;; 收集选中图层
- (setq lays nil)
- (repeat (sslength ss)
- (setq ent (ssname ss 0)
- lyr (cdr (assoc 8 (entget ent)))
- )
- (if (not (member lyr lays))
- (setq lays (cons lyr lays))
- )
- (ssdel ent ss)
- )
-
- ;; 孤立图层
- (command "_.layer" "_off" "*" "_y" "")
- (foreach lyr lays (command "_.layer" "_on" lyr ""))
-
- ;; 创建并加载临时 DCL
- (GL:create-temp-dcl)
- (if (not (findfile *GL_TEMP_DCL_PATH*))
- (princ "\n>> 无法创建临时对话框文件。")
- (progn
- (setq dcl_id (load_dialog *GL_TEMP_DCL_PATH*))
- (if (not (new_dialog "isolate_dialog" dcl_id))
- (princ "\n>> 无法创建对话框。")
- (progn
- (action_tile "exit_btn" "(done_dialog 1)")
- (action_tile "cancel" "(done_dialog 0)")
- (setq user_choice (start_dialog))
- (unload_dialog dcl_id)
- ;; 可选:删除临时文件(保留也可,下次覆盖)
- ;; (vl-file-delete *GL_TEMP_DCL_PATH*)
-
- (if (= user_choice 1)
- (C:ILR)
- (princ "\n>> 孤立模式仍激活,输入 ILR 可手动恢复。")
- )
- )
- )
- )
- )
- )
- )
- (princ)
- )
- ;; 命令: ILR —— 恢复图层
- (defun C:ILR ()
- (if (null *GL_ORIGINAL_ON_LAYERS*)
- (princ "\n>> 无保存的图层状态,无法恢复。")
- (progn
- (command "_.layer" "_off" "*" "_y" "")
- (foreach lyr *GL_ORIGINAL_ON_LAYERS*
- (command "_.layer" "_on" lyr "")
- )
- (setq *GL_ORIGINAL_ON_LAYERS* nil)
- (princ "\n>> 图层状态已恢复。")
- )
- )
- (princ)
- )
- ;; 创建临时 DCL 文件(使用 :paragraph 支持换行)
- (defun GL:create-temp-dcl ()
- (if (findfile *GL_TEMP_DCL_PATH*)
- (vl-file-delete *GL_TEMP_DCL_PATH*)
- )
- (setq fp (open *GL_TEMP_DCL_PATH* "w"))
- (write-line "isolate_dialog : dialog {" fp)
- (write-line " label = \"孤立图层\";" fp)
- (write-line " : text { label = \"图层已孤立\"; }" fp)
- (write-line " : text { label = \"点击'退出孤立'可恢复图层状态\"; }" fp)
- (write-line " : text { label = \"点击'取消'保持当前状态\"; }" fp)
- (write-line " : spacer { height = 2; }" fp) ; 文字与按钮之间多空一点
- (write-line " : button {" fp)
- (write-line " key = \"exit_btn\";" fp)
- (write-line " label = \"退出孤立\";" fp)
- (write-line " width = 16;" fp) ; 加宽按钮
- (write-line " }" fp)
- (write-line " : spacer { height = 1; }" fp) ; 按钮下方留空
- (write-line " : button {" fp)
- (write-line " key = \"cancel\";" fp)
- (write-line " label = \"取消\";" fp)
- (write-line " is_cancel = true;" fp)
- (write-line " width = 16;" fp)
- (write-line " }" fp)
- (write-line " errtile;" fp)
- (write-line "}" fp)
- (close fp)
- )
- (princ "\n[加载成功] 命令: IL (孤立图层), ILR (恢复)")
- (princ)
网友答: ai也是挺无聊的
layiso layerp网友答: 太感动了 居然是免费的 已copy网友答: 哈哈哈你们也是太理解AI了可以反正能用就行网友答:
forestgxc 发表于 2025-11-7 21:22
ai也是挺无聊的
layiso layerp
我试试这两个,666啊网友答: ai总是把简单的事情复杂化 显得它聪明网友答:
yaya7827 发表于 2025-11-8 14:26
ai总是把简单的事情复杂化 显得它聪明
换个思路 为什么不是欧特克开发人员的思路有问题呢? 明明很多功能可以弄个快捷图标、优化说明提供给用户,但是欧特克就是故意隐藏起来 ,非要输入命令让用户去操作。。 非常不理解他们开发的思路,好的功能千方百计隐藏起来不不让用户知道、也让用户找不到。。网友答: 本帖最后由 amook147 于 2025-11-13 13:35 编辑
f4800 发表于 2025-11-8 19:58
换个思路 为什么不是欧特克开发人员的思路有问题呢? 明明很多功能可以弄个快捷图标、优化说明提供给用户 ...
其实autocad已经是很笨重的CAD工具了 这方面 远远不如国产的中望 浩辰 。。。
autocad现在最大的优势就是盗版满天飞 欧特克放纵盗版 导致 用户依赖性太强了。。。