1. (defun REF (E /)
  2.     (if      
  3.              (= (cdr (assoc 0 (entget e))) "INSERT")
  4.         
  5.         (progn
  6.             (setvar "PICKFIRST" 1)
  7.             (sssetfirst NIL (ssadd E))
  8.             (command-s "-refedit" "o" "A" "y")
  9.         )
  10.     )
  11. )
  12. ;;



网友答: 这个不太好吧,你这样就少了点击块中块编辑的能力了.
  1. ;;;name:
  2. ;;;desc:在位编辑块,或保存图块
  3. ;;;arg:
  4. ;;;return:
  5. ;;;example:
  6. (defun c:BF-Edit()
  7.   (princ "\n****{惊惊连盒}-BF-Refedit-在位编辑块/在位保存块")
  8.   (if (= (getvar 'blockeditor) 1);打开了块编辑器
  9.       (*cmdf* "_.bclose")
  10.       (if (= (getvar "refeditname") "");显示正在编辑的参照名称
  11.         (*cmdf* "_.refedit");直接点选可以有嵌套层次
  12.         (*cmdf* "_.refclose" "s")
  13.       )
  14.   )
  15.   (princ)
  16. )




网友答: 没有看懂 但是打卡

网友答:
你有种再说一遍 发表于 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然后发现不能块中块,和我过往的习惯不一样,然后改回来直接调用命令了.
然后那时候我甚至还不懂"在位编辑"原理.

网友答: 好代码
  • 上一篇:[原创]给中望cad做的lsp源码加密工具enc-lsp
  • 下一篇:没有了