如何将批量将相同圆转换为相同的块
本帖最后由 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)
)
相同圆转块
;; 相同半径圆改块
(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 static/image/common/back.gif
剩下的一点点还是自己研究怎么改吧。。
菜鸟不懂,纯帮顶,还希望出手 分两步走,
1,作圆生成块自定义函数,
2,根据圆直径和圆心,插入对应的块,再删除旧圆 690994 发表于 2014-9-3 10:28 static/image/common/back.gif
分两步走,
1,作圆生成块自定义函数,
2,根据圆直径和圆心,插入对应的块,再删除旧圆
菜鸟悬赏贴,不懂lisp 院长已经弄出来了,需要的xcad里面下载
页:
[1]