357785513 发表于 2013-7-10 20:44:39

发一个高深的帖子

先点选择一个块名如名为"A"的块,
再点选一个闭合多段线,
这个多段线内名为"A"的块,
就被选择了
怎么弄呀各位高人

ZZXXQQ 发表于 2013-7-10 21:02:02

(

本帖最后由 ZZXXQQ 于 2013-7-10 21:05 编辑

...
(setq ss (ssadd))
(if (and (setq s1 (entsel "\n选择图块A: "))
         (setq ent (entget (car s1)))
         (= (cdr(assoc 2 ent)) "A")
         (setq s2 (entsel "\n选择闭合多段线: "))
         (setq ent2 (entget(car s2)))
         (= (cdr(assoc 0 ent2)) "LWPOLYLINE"))
         (> (rem (cdr(assoc 70 ent2)) 2) 0)) (progn
(ssadd (car s1) ss)
(ssadd (car s2) ss)
(sssetfirst ss ss)
;do some thing
))
...

357785513 发表于 2013-7-10 21:05:03

神人呀,哥,但块名不定为A呀,有可能是B呀,或者其它能行不

357785513 发表于 2013-7-10 21:15:09

程序也有问题,运行不了

357785513 发表于 2013-7-10 21:25:12

还没修改过标题呢,不懂改

Gu_xl 发表于 2013-7-10 21:26:59

(defun c:tt (/ e1 e2 ss)
(if (and
        (setq e1 (car (entsel "\n选择块:")))
        (= "INSERT" (cdr (assoc 0 (setq e1 (entget e1)))))
        (setq e2 (car (entsel "\n选择多段线:")))
        (= "LWPOLYLINE" (cdr (assoc 0 (setq e2 (entget e2)))))
      )
    (progn
      (setq ss
             (ssget "cp"
                  (mapcar '(lambda (p) (trans (cdr p) 0 1))
                          (vl-remove-if '(lambda (x) (/= 10 (car x))) e2)
                  )
                  (list '(0 . "INSERT") (assoc 2 e1))
             )
      )
      (if ss
        (sssetfirst nil ss)
      )
    )
)
(princ)
)

357785513 发表于 2013-7-10 21:32:13

Gu_xl 高人呀,太棒了,

357785513 发表于 2013-7-10 21:37:32

只能说服了哥

shh1980 发表于 2016-5-26 19:19:20

Z 版 和 Gu_xl的程序高,楼主的标题...也很高啊!
页: [1]
查看完整版本: 发一个高深的帖子