f4800 发表于 2025-11-7 19:30:25

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)


forestgxc 发表于 2025-11-7 21:22:11

ai也是挺无聊的
layiso layerp

qifeifei 发表于 2025-11-7 20:50:36

太感动了 居然是免费的 已copy

qwsss31 发表于 2025-11-7 21:28:21

哈哈哈你们也是太理解AI了可以反正能用就行

tranque 发表于 2025-11-8 13:28:56

forestgxc 发表于 2025-11-7 21:22
ai也是挺无聊的
layiso layerp

我试试这两个,666啊

yaya7827 发表于 2025-11-8 14:26:46

ai总是把简单的事情复杂化显得它聪明

f4800 发表于 2025-11-8 19:58:41

yaya7827 发表于 2025-11-8 14:26
ai总是把简单的事情复杂化显得它聪明

换个思路 为什么不是欧特克开发人员的思路有问题呢? 明明很多功能可以弄个快捷图标、优化说明提供给用户,但是欧特克就是故意隐藏起来 ,非要输入命令让用户去操作。。 非常不理解他们开发的思路,好的功能千方百计隐藏起来不不让用户知道、也让用户找不到。。

amook147 发表于 2025-11-13 13:34:03

本帖最后由 amook147 于 2025-11-13 13:35 编辑

f4800 发表于 2025-11-8 19:58
换个思路 为什么不是欧特克开发人员的思路有问题呢? 明明很多功能可以弄个快捷图标、优化说明提供给用户 ...
其实autocad已经是很笨重的CAD工具了   这方面 远远不如国产的中望浩辰   。。。
autocad现在最大的优势就是盗版满天飞   欧特克放纵盗版 导致   用户依赖性太强了。。。
页: [1]
查看完整版本: ai生成代码 选层保留(孤立图层)