ai生成代码 选层保留(孤立图层)
孤立图层 并在取消孤;; ===================================================================
;; 图层孤立命令 (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现在最大的优势就是盗版满天飞 欧特克放纵盗版 导致 用户依赖性太强了。。。
页:
[1]