You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LISP实现插入图块并单独设置刚插入实例的可见性状态

动态块实例独立设置可见性的解决方案

核心需求

现有动态块可见性设置方案会修改所有实例,需实现循环插入时单独配置每个新实例的可见性状态,同时替代command+explode的低效操作方式。

可见性状态中英对应

原英文状态与中文翻译对应:

  • "1" → "1"
  • "left 1" → "左侧1"
  • "right 1" → "右侧1"
  • "2" → "2"
  • "left 2" → "左侧2"
  • "right 2" → "右侧2"
  • "3" → "3"

用entmake实现独立设置可见性

实现逻辑

  1. 提取目标动态块的定义数据,定位可见性参数
  2. 通过entmake创建块插入实例,直接为当前实例指定专属可见性值,不修改全局块定义
  3. 无需炸开块,保留动态块的可编辑特性

示例代码

;; 定义修改动态块实例可见性的函数
(defun set-dynblk-visibility (ent visibility-state / blkdef props prop)
  (setq blkdef (entget (cdr (assoc 2 (entget ent)))))
  ;; 遍历块定义的动态属性节点
  (setq props (member '(100 . "AcDbBlockReference") blkdef))
  (setq prop (member '(100 . "AcDbDynamicBlockReferenceProperty") props))
  (while prop
    (if (= (cdr (assoc 300 prop)) "Visibility")
      (progn
        ;; 替换当前实例的可见性状态值
        (setq prop (subst (cons 301 visibility-state) (assoc 301 prop) prop))
        (entmod (append (subseq blkdef 0 (- (length blkdef) (length props))) prop))
      )
    )
    (setq prop (member '(100 . "AcDbDynamicBlockReferenceProperty") (cdr prop)))
  )
)

;; 封装插入+设置可见性的函数
(defun insert-with-visibility (blkname scale rotation pt visibility / new-ent)
  ;; 用entmake创建块插入实例
  (setq new-ent
    (entmake
      (list
        '(0 . "INSERT")
        (cons 2 blkname)
        (cons 10 pt)
        (cons 41 scale)
        (cons 42 scale)
        (cons 43 scale)
        (cons 50 rotation)
        '(100 . "AcDbBlockReference")
        '(70 . 0)
      )
    )
  )
  ;; 为当前实例设置指定可见性
  (set-dynblk-visibility new-ent visibility)
  new-ent
)

;; 循环插入调用示例
(setq blkcb "你的目标块名" scl 1.0 xyzcb '(0 0 0))
;; 插入带"左侧1"可见性的块
(insert-with-visibility blkcb scl 0 xyzcb "左侧1")
;; 插入带"右侧2"可见性的块(偏移位置)
(insert-with-visibility blkcb scl 0 '(10 0 0) "右侧2")
;; 可结合循环逻辑批量生成不同可见性的块实例

方案优势

  • 替代command函数,避免命令行交互的不稳定问题
  • 仅修改当前插入实例的可见性,不会影响其他已存在的块实例
  • 保留动态块结构,无需炸开,后续仍可编辑调整

注意事项

  • 确保目标块是动态块,且包含名为Visibility的可见性参数
  • 传入的可见性状态名称需与块定义中的中文名称完全匹配
  • 若块存在嵌套动态属性,需调整函数的属性遍历逻辑适配

内容的提问来源于stack exchange,提问作者Jesse O'Neill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 16:05:19