选择对象的时候提前控制好图层之类的。减少判断
(defun c:tt (/ ss lst-ename lst-b x y ss-c)
(vl-load-com)
(setvar "CMDECHO" 0)
;;;选择多线段对象
(setq ss (ssget '((0 . "LWPOLYLINE"))))
;;; 定义将选择集转化为对象图元名列表
(defun ss-enamelst (ss)
(vl-remove-if-not
'(lambda (x) (equal (type x) 'ename))
(mapcar 'cadr (ssnamex SS))
)
)
;;;end defun
;;; 将多线段选择集转化为图元名列表
(setq lst-ename (ss-enamelst ss))
;;; 通过 ssget "WP" 将多线段和多线段内部的对象(可以再加上过滤,过滤掉非园)组成一个表
(setq
lst-b
(mapcar '(lambda (x)
(progn
;;; 多线段端点列表内部窗选
(setqss-c (ssget "WP"
(apply
'append
(mapcar '(lambda (y)
(if (eq (car y) 10)
(list (cdr y))
)
)
(entget x)
)
)
)
)
;;;判断选择集是否存在。也可以加入其它的判断
(if (null ss-c)
(list x)
(append (list x) (ss-enamelst ss-c))
)
) ;end progn
) ;end lambda
lst-ename
)
)
;;;生成无名块并删除原有对象
(mapcar '(lambda (x)
(progn
(entmakenonameblock x (cdr (assoc 10 (entget (car x)))))
(mapcar '(lambda(y)
(vl-cmdf "erase" y "")
)
x
)
)
)
lst-b
)
(prin1)
)
;;;; 图元列表生成无名快
(defun entmakenonameblock (lst pt / i name)
(entmake
(list '(0 . "block") '(2 . "*U") '(70 . 1) (cons 10 pt))
)
(mapcar '(lambda (x) (entmake (cdr (entget x)))) lst)
(setq name (entmake '((0 . "ENDBLK"))))
(entmake (list '(0 . "INSERT") (cons 2 name) (cons 10 pt)))
name
)
能不能改成筒灯形状一样选择一个,相同图形属性的自动成块呢?。。。。。。。 真正考验 说和有些夸张了 gufeng 发表于 2013-5-30 23:27 static/image/common/back.gif
真正考验 说和有些夸张了
只是让人注意罢了 cie0588 发表于 2013-5-7 16:49 static/image/common/back.gif
选择对象的时候提前控制好图层之类的。减少判断
这个好,喜欢。 谢谢2楼主的奉献! cie0588 发表于 2013-5-7 16:49 static/image/common/back.gif
选择对象的时候提前控制好图层之类的。减少判断
能否把无名块做成有名块,块名无所谓,其次相同的矩形,块名相同,矩形即使旋转了方向,只要大小不变,块名还是一样的。做组合物大判断比较麻烦,所以搞简单点,闭合的多段线相同,块名就一样的 cie0588 发表于 2013-5-7 16:49 static/image/common/back.gif
选择对象的时候提前控制好图层之类的。减少判断
批量选择矩形框去选择圆形成各自独立的块,但矩形里面是多个直线或者其他什么的(多个对象例如填充个方格或者多段线)就没有用了,大师能不能再完善下?
页:
[1]
2