asd19400 发表于 2014-8-31 18:48:36

如何将批量将相同圆转换为相同的块

本帖最后由 asd19400 于 2014-8-31 23:31 编辑

比如有10个圆,4个800mm直径的圆,4个1000直径的圆,2个1200直径的圆,批量框选之后,会形成3个块,800直径的块名都是一样,比如800直径的块名为M800,1000直径的块名为M1000,1200直径的块名为M1200,块的插入点为圆心,块的图层随所选圆的图层。下面为院子的一段代码,但是不通用,必须存在块名为“M6”的块,才能将圆替换为块,而且替换后,以前的圆没有删除,详http://bbs.mjtd.com/thread-93936-1-1.html(defun c:tt (/ ss i s1 pt)
(if (setq ss (ssget '((0 . "CIRCLE"))))
    (progn
      (setq i -1)
      (while (setq s1 (ssname ss (setq i (1+ i))))
      (setq pt (cdr (assoc 10 (entget s1))))
      (command "insert" "M6" (trans pt 0 1) 1 1 0)
      )
    )
)
(princ)
)

xyp1964 发表于 2014-9-3 12:45:14

相同圆转块

xyp1964 发表于 2014-8-31 18:48:37

;; 相同半径圆改块
(defun c:test1683 ()
(xyp-CMDLA0)
(if (setq ss (ssget '((0 . "CIRCLE"))))
    (foreach a (mapcar 'cadr (xyp-SsSort-Dxf ss 40))
      (setq s1 (car a)
          p0 (xyp-DXF 10 s1)
          s2 (xyp-copy s1)
          s3 (xyp-Rand-Block (xyp-list2ss (list s2)) p0)
      )
      (foreach s1 a
        (xyp-copymove s3 p0 (xyp-DXF 10 s1))
      )
      (xyp-erase (list s3 a))
    )
)
(xyp-CMDLA1)
)

ysq101 发表于 2014-8-31 19:57:30

剩下的一点点还是自己研究怎么改吧。。

asd19400 发表于 2014-8-31 20:10:38

ysq101 发表于 2014-8-31 19:57 static/image/common/back.gif
剩下的一点点还是自己研究怎么改吧。。

菜鸟不懂,纯帮顶,还希望出手

690994 发表于 2014-9-3 10:28:36

分两步走,
1,作圆生成块自定义函数,
2,根据圆直径和圆心,插入对应的块,再删除旧圆

asd19400 发表于 2014-9-3 11:28:19

690994 发表于 2014-9-3 10:28 static/image/common/back.gif
分两步走,
1,作圆生成块自定义函数,
2,根据圆直径和圆心,插入对应的块,再删除旧圆

菜鸟悬赏贴,不懂lisp

asd19400 发表于 2014-9-3 14:05:35

院长已经弄出来了,需要的xcad里面下载
页: [1]
查看完整版本: 如何将批量将相同圆转换为相同的块