
- (defun REF (E /)
- (if
- (= (cdr (assoc 0 (entget e))) "INSERT")
-
- (progn
- (setvar "PICKFIRST" 1)
- (sssetfirst NIL (ssadd E))
- (command-s "-refedit" "o" "A" "y")
- )
- )
- )
- ;;
网友答: 这个不太好吧,你这样就少了点击块中块编辑的能力了.

- ;;;name:
- ;;;desc:在位编辑块,或保存图块
- ;;;arg:
- ;;;return:
- ;;;example:
- (defun c:BF-Edit()
- (princ "\n****{惊惊连盒}-BF-Refedit-在位编辑块/在位保存块")
- (if (= (getvar 'blockeditor) 1);打开了块编辑器
- (*cmdf* "_.bclose")
- (if (= (getvar "refeditname") "");显示正在编辑的参照名称
- (*cmdf* "_.refedit");直接点选可以有嵌套层次
- (*cmdf* "_.refclose" "s")
- )
- )
- (princ)
- )
网友答: 没有看懂 但是打卡网友答:
你有种再说一遍 发表于 2025-9-1 11:04
这个不太好吧,你这样就少了点击块中块编辑的能力了.
真不错,我想了半年了也没有实现,得来还是费工夫网友答:
chenlianghuai 发表于 2025-9-1 12:14
真不错,我想了半年了也没有实现,得来还是费工夫
劝大家学C#多了,大家就忘记我的Lisp经验也是十分老练.
压缩命令的参照面板更好玩,需要上C#和用spy++找面板.
https://www.cnblogs.com/JJBox/p/10367110.html网友答: (defun c:red ( / blockedit reft)
(setq blockedit (getvar 'blockeditor)) ; 检查块编辑器状态 (0=关闭, 1=打开)
(setq reft (getvar 'refeditname)) ; 检查参照编辑状态 (空字符串=未编辑)
(cond
((= blockedit 1) ; 条件1: 块编辑器打开
(command "bclose" "s") ; 保存并关闭块编辑器
(command "refedit") ; 启动参照编辑
)
((/= reft "") ; 条件2: 参照编辑已打开
(command "refclose" "s") ; 保存并关闭参照编辑
(command "refedit") ; 重新启动参照编辑
)
(T ; 默认条件: 无编辑状态
(command "refedit") ; 直接启动参照编辑
)
)
(prin1)
)网友答:
你有种再说一遍 发表于 2025-9-1 11:04
这个不太好吧,你这样就少了点击块中块编辑的能力了.
命令: BF-Edit
****{惊惊连盒}-BF-Refedit-在位编辑块/在位保存块参数类型错误: lentityp nil
网友答:
你有种再说一遍 发表于 2025-9-1 11:04
这个不太好吧,你这样就少了点击块中块编辑的能力了.
传参数为块,那就没有必要块中块,因为块已经指明了。
除非传参为点,可以nentselp判断是否有块中块并提示用户选择要编辑的层级。
不过不确定块中块是否能直接在位编辑,毕竟nentselp点到的图元在块定义中并不在当前空间,要在位编辑恐怕还得临时创建副本来编辑。网友答:
kozmosovia 发表于 2025-10-31 16:09
传参数为块,那就没有必要块中块,因为块已经指明了。
除非传参为点,可以nentselp判断是否有块中块并提 ...
可以直接点击块中块的,当时我就是传了ssget然后发现不能块中块,和我过往的习惯不一样,然后改回来直接调用命令了.
然后那时候我甚至还不懂"在位编辑"原理.网友答: 好代码