求输入tt,不用选择,直接解锁图层名为 你好123 的图层
求输入tt,不用选择,直接解锁图层名为你好123 的图层本帖最后由 xyp1964 于 2025-2-17 22:34 编辑
(defun c:tt()
(if(tblsearch"layer""你好123")(command"-layer""unlock""你好123"""))
(princ)
)
;; (LaUnlock"你好123")
(defun LaUnlock(la)(if(tblsearch"layer"la)(command"-layer""unlock"la"")))
(defun c:tt (/ layer_ent layer_data old_flags new_flags)
;; 检查图层 "你好123" 是否存在
(if (setq layer_ent (tblobjname "LAYER" "你好123"))
(progn
;; 获取图层属性数据
(setq layer_data (entget layer_ent))
(setq old_flags (cdr (assoc 70 layer_data)));; 提取图层的 70 组码(状态标志)
;; 检查是否已锁定(判断位2是否为1)
(if (logtest old_flags 4);; 4 对应二进制 100(位2)
(progn
;; 清除锁定标志(位2置0)
(setq new_flags (logand old_flags (lognot 4)))
(setq layer_data (subst (cons 70 new_flags) (assoc 70 layer_data) layer_data))
;; 更新图层属性
(entmod layer_data)
(entupd layer_ent)
(princ "\n图层'你好123'已解锁。")
)
;; 如果未锁定,直接提示
(princ "\n图层'你好123'未被锁定。")
)
)
;; 如果图层不存在,提示错误
(princ "\n错误:图层'你好123'不存在。")
)
(princ)
)
deepseek写的,你试试 本帖最后由 Scarlet2001 于 2025-2-17 15:31 编辑
以下是deepseek生成的代码(虽然不知道为啥第一次生成的时候会丢几个括号,当时提示他一下他又能修回来):
(defun c:unlocklayer ()
(setq layername "你好123") ; 设置图层名称
(setq layer (tblsearch "layer" layername)) ; 查找图层
(if layer
(progn
(command "_.layer" "_unlock" layername "") ; 解锁图层
(princ (strcat "\n图层 " layername " 已解锁。")) ; 提示解锁成功
)
(princ (strcat "\n图层 " layername " 未找到。"))) ; 提示图层未找到
(princ) ; 静默退出
) 这个简单的问题,今后可以直接用AI生成代码 自贡黄明儒 发表于 2025-2-17 15:14
这个简单的问题,今后可以直接用AI生成代码
能发个网址吗AI的 1506822004 发表于 2025-2-17 15:26
(defun c:tt (/ layer_ent layer_data old_flags new_flags)
;; 检查图层 "你好123" 是否存在
(if (s ...
被院长的四行代码打的无还手之力! xyp1964 发表于 2025-2-17 16:24
谢谢派大...... wudechao 发表于 2025-2-17 16:41
被院长的四行代码打的无还手之力!
还是院长靠谱..... 还是院长的简洁明了,假如有就解锁
页:
[1]
2