500w008 发表于 2013-5-6 23:14:11

cie0588 发表于 2013-5-7 16:49:59

本帖最后由 cie0588 于 2013-5-7 16:57 编辑

选择对象的时候提前控制好图层之类的。减少判断
(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
)

500w008 发表于 2013-5-7 17:02:48

wyl605 发表于 2013-5-30 18:58:33

能不能改成筒灯形状一样选择一个,相同图形属性的自动成块呢?。。。。。。。

gufeng 发表于 2013-5-30 23:27:18

真正考验 说和有些夸张了

pzweng 发表于 2013-6-5 15:55:06

gufeng 发表于 2013-5-30 23:27 static/image/common/back.gif
真正考验 说和有些夸张了

只是让人注意罢了

434939575 发表于 2014-7-17 10:12:16

cie0588 发表于 2013-5-7 16:49 static/image/common/back.gif
选择对象的时候提前控制好图层之类的。减少判断

这个好,喜欢。

清风明月名字 发表于 2014-7-17 15:00:34

谢谢2楼主的奉献!

asd19400 发表于 2014-10-11 21:28:40

cie0588 发表于 2013-5-7 16:49 static/image/common/back.gif
选择对象的时候提前控制好图层之类的。减少判断

能否把无名块做成有名块,块名无所谓,其次相同的矩形,块名相同,矩形即使旋转了方向,只要大小不变,块名还是一样的。做组合物大判断比较麻烦,所以搞简单点,闭合的多段线相同,块名就一样的

MENGZE 发表于 2014-11-19 00:49:41

cie0588 发表于 2013-5-7 16:49 static/image/common/back.gif
选择对象的时候提前控制好图层之类的。减少判断

批量选择矩形框去选择圆形成各自独立的块,但矩形里面是多个直线或者其他什么的(多个对象例如填充个方格或者多段线)就没有用了,大师能不能再完善下?
页: [1] 2
查看完整版本: 真正考验-------批量选择矩形框去选择圆形成各自独立的块