小毛草 发表于 2025-1-16 17:55:24

快递关闭块程序,如果是参照块,关闭参照块,如果是普通块关闭普通块

(defun c:ra (/ acadDoc isBlockEditor)
;; 获取当前文档
(setq acadDoc (vla-get-ActiveDocument (vlax-get-acad-object)))

;; 检查是否处于块编辑器模式
(setq isBlockEditor
    (and
      (= (vla-get-ActiveSpace acadDoc) acModelSpace) ; 检查是否在模型空间
      (vlax-property-available-p acadDoc 'IsDynamicBlock) ; 检查是否支持动态块
      (vla-get-IsDynamicBlock acadDoc) ; 检查是否处于动态块编辑模式
    )
)

;; 根据状态执行相应操作
(if isBlockEditor
    (progn
      (command "_bclose" "s" pause) ; 关闭块
      (princ "\n已关闭块。")
    )
    (progn
      (command "_refclose" "s") ; 关闭参照块
      (princ "\n已关闭参照块。")
    )
)
(princ)
)
(defun c:ra (/ acadDoc isBlockEditor)
;; 获取当前文档
(setq acadDoc (vla-get-ActiveDocument (vlax-get-acad-object)))

;; 检查是否处于块编辑器模式
(setq isBlockEditor
    (and
      (= (vla-get-ActiveSpace acadDoc) acModelSpace) ; 检查是否在模型空间
      (vlax-property-available-p acadDoc 'IsDynamicBlock) ; 检查是否支持动态块
      (vla-get-IsDynamicBlock acadDoc) ; 检查是否处于动态块编辑模式
    )
)

;; 根据状态执行相应操作
(if isBlockEditor
    (progn
      (command "_bclose" "s" pause) ; 关闭块
      (princ "\n已关闭块。")
    )
    (progn
      (command "_refclose" "s") ; 关闭参照块
      (princ "\n已关闭参照块。")
    )
)
(princ)
)

moranyuyan 发表于 2025-1-17 01:47:53

谢谢分享

USER2128 发表于 2025-1-17 10:01:18

本帖最后由 USER2128 于 2025-1-17 10:05 编辑

;;; 感觉这个有用,重写了一下程序

;;; 快速关闭块编辑器程序.
(defun c:BC ()
(cond
    ((= 1 (getvar "BLOCKEDITOR"))   ;块编辑器.
   (command "_bclose" "s")
   (princ "\n已关闭块编辑器。")
   )
    ((/= "" (getvar "REFEDITNAME")) ;在位编辑.
   (command "_refclose" "s")
   (princ "\n已关闭在位块编辑器。")
   )
    (t (princ "\n仅用于关闭块编辑器."))
    )
(princ)
)
页: [1]
查看完整版本: 快递关闭块程序,如果是参照块,关闭参照块,如果是普通块关闭普通块