自贡黄明儒 发表于 2011-6-28 15:32:42

删除爆破后的尺寸

本帖最后由 自贡黄明儒 于 2011-6-28 15:37 编辑

;;;想删除爆破后的尺寸,但一直找不到好的方法,搞一个试试,求助各位有没有好的办法
;;;通只针对实心箭头这一个情况
(defun C:Te (/ E1 E1LIST N P10 P1011 P11 P12 P1P2 SS SS12 SSS X Y)

;;求两点之中点
(defun MJ:MIDPOINT (P1 P2 / X Y)
    (mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) P1 P2)
)

;;求得一点周围两点
(defun grbox1      (pt / H P1 P2)
    ;;copy from eachy
    (setq h(*      (/ (getvar "viewsize") (cadr (getvar "screensize")))
                (getvar "pickbox")
             )
          p1 (mapcar '- pt (list h h 0.))
          p2 (mapcar '+ pt (list h h 0.))
    )
    (list p1 p2)
)

(command "undo" "be")
(command "zoom" "e")
;;实心箭头选择集sss
(setq ss (ssget "X" '((0 . "SOLID"))))
(setq n 0)
(setq sss (ssadd))
(repeat (sslength ss)
    (setq e1 (ssname ss n))
    (setq e1list (entget e1))
    (if      (equal (Li_item 12 e1list) (Li_item 13 e1list))
       (ssadd e1 sss)
    )
    (setq n (1+ n))
)

(setq n 0)
(while (/= (sslength sss) 0)
    (setq e1 (ssname sss n))
    (setq e1list (entget e1))
    (setq p10 (Li_item 10 e1list))
    (setq p11 (Li_item 11 e1list))
    (setq p1011 (MJ:MIDPOINT p10 p11))
    (setq p12 (Li_item 12 e1list))

    ;;ss12箭头尖角处直线e12选择集
    (setq p1p2 (grbox1 p12))
    (setq ss12 (ssget "C" (car p1p2) (cadr p1p2) '((0 . "LINE"))))   
    (command "erase" ss12 "")

    ;;ss12箭头后部中点处直线ss1011选择集
    (setq p1p2 (grbox1 p1011))
    (setq ss12 (ssget "C" (car p1p2) (cadr p1p2) '((0 . "LINE"))))
    (command "erase" ss12 "")

    (setq n (1+ n))
)

(command "erase" sss "")
(command "undo" "e")
(princ)
)
;;;删除爆破后的尺寸

(Defun LI_item (N E) (CDR (Assoc N E)))




Ea 发表于 2011-6-28 16:51:49

研究下实体生成顺序,试试entnext,不过总之不安全。
页: [1]
查看完整版本: 删除爆破后的尺寸