dcl1214 发表于 2024-4-13 14:04:04

利用1005扩展祖玛实现类似编组的另一种方法

本帖最后由 dcl1214 于 2024-4-15 09:14 编辑

cad提供编组功能,意思是将很多图元编组,cad同时还提供了另一个功能,类似编组的扩展数据,可以将一堆图元的句柄关联到某一个图元,当用户复制粘贴到其他图纸的时候,cad自动更新关联的句柄,让整组图元的依赖关系保持不变,请测试以下代码:


(setq c      (entmakeX
          (list      (cons 0 "CIRCLE")
                (cons 100 "AcDbEntity")
                (cons 100 "AcDbCircle")
                (cons 10 (list 105 80 0))
                (cons 40 8)
          )
      )
)
(setq jb (cdr (assoc 5 (entget c))))
(regapp "ZXCAD");必须先注册一个app的名字
(entmakeX
(list
    (cons 0 "LINE")
    (cons 100 "AcDbEntity")
    (cons 100 "AcDbLine")
    (cons 10 (list 50 50 0))
    (cons 11 (list 150 50 0))
    (list
      -3
      (list
      "ZXCAD";使用已经注册的app名字
      (cons 1002 "{")
      (CONS
          1000
          "1005的值是圆的句柄值,当用户复制到新图纸的时候cad自动更新1005的值为圆的新句柄"
      )
      (CONS 1000 "111")
      (cons 1005 jb);引用同一个圆的句柄,意思是都跟同一个圆关联起来
      (cons 1002 "}")
      )
    )
)
)
(regapp "秦始皇");必须先注册一个app的名字
(entmakeX
(list
    (cons 0 "LINE")
    (cons 100 "AcDbEntity")
    (cons 100 "AcDbLine")
    (cons 10 (list 50 30 0))
    (cons 11 (list 150 30 0))
    (list
      -3
      (list
      "秦始皇";使用已经注册的app名字
      (cons 1002 "{")
      (CONS
          1000
          "1005的值是圆的句柄值,当用户复制到新图纸的时候cad自动更新1005的值为圆的新句柄"
      )
      (CONS 1000 "SSS")
      (cons 1005 jb);引用同一个圆的句柄,意思是都跟同一个圆关联起来
      (cons 1002 "}")
      )
    )
)
)



magicheno 发表于 2024-4-13 23:40:37

感谢大佬分享

有区别吗 发表于 2024-4-14 15:24:25

试了下确实简单有效.
要是早知道这个就好了.
以前用更复杂的方式实现的.

null. 发表于 2024-4-14 18:29:32

确实,可以保持相同的关系,其实不用转到其他图纸,本图拷贝粘贴,效果一样。
如果是拷贝粘贴形成的效果,编到程序里估计没什么用。程序不能自动实现拷贝粘贴。
而且用组的概念来形容,只能说只是组的一点东西而已,因为组在CAD里已经形成一套工具。可操作性工具。
层也是组的概念,大家用的最多,是相同图元在同一图层的组。
而CAD直接的组,就是不同的图元都能组成一起,大家用得最少。
不同图元组成一起,块就是体现,组是块的一种偏像,解锁开可以直接编辑,又可以锁定。什么情况需要这种操作呢。用处不多,没有一种强迫证的需求,所以LISP程序对于组的编辑示例是很少的。没有需求式的应用,大家用组写LISP的程序不多。
我只在平面图上,用组统计数量,并可以查看平面上,哪些是一组的。方便统计系统图。

chenhuixo 发表于 2024-4-15 08:59:27


感谢大佬分享
页: [1]
查看完整版本: 利用1005扩展祖玛实现类似编组的另一种方法