434939575 发表于 2014-7-17 16:46:58

再次请教关于选择处理的问题

请教各位朋友们。我的目的要把右边的图元建立一个包容盒子。但我这样处理,有部分漏了。望各位赐教。谢谢。(defun c:tt ()
(setq ss (ssget '((0 . "LWPOLYLINE"))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;*****************************      
(setq i 0)
(repeat (sslength ss)
    (setq ss0 (ssname ss i)
    i   (1+ i)
    )
    (setq ss0-en (entget ss0))
    (setq ss0-62 (cdr (assoc 62 ss0-en)))
       (setq pt1(cdr (nth 15 ss0-en)));调取pline第1点坐标。
    (setq pt2 (cdr (nth 19 ss0-en)));调取pline第2点坐标。
   
   ;(setqfw (getreal "范围< 300 >"))
   ; (if (= fwnil )
      (setq fw600);"范围
   ; );if
      (setq ang (angle pt1 pt2))
    (setq ang-- (angle pt2 pt1))
    (setq pt1>100 (polar pt1 ang 100)) ;pt1距离100MM位置。
    (setq pt2<100 (polar pt2 ang-- 100)) ;pt2距离100MM位置。
      (setq pt1>100-fw (polar pt1>100 (+ ang (* 0.5 pi))fw))
    (setq pt1>100-fw-- (polar pt1>100 (+ ang (* 1.5 pi))fw))
(setq pt2<100fw (polar pt2<100 (+ ang (* 0.5 pi))fw))
    (setq pt2<100-fw-- (polar pt2<100 (+ ang (* 1.5 pi))fw))
   (setqlst (list pt1>100-fw pt1>100-fw--pt2<100-fw--pt2<100fw))
   (setqss-2(ssget "cP" lst ))
       (command"._pline"   pt1>100-fw pt1>100-fw--pt2<100-fw--pt2<100fw    "c" "" "")
   (command "select" ss "r" ss-2 "")
(setq   xx (ssget "p" ) )
    (setqssxx)
      )    ;repeat

);end

风树 发表于 2014-7-17 19:35:46

帮顶一下                        

xyp1964 发表于 2014-7-17 20:08:54



434939575 发表于 2014-7-17 20:12:12

感谢院长大驾光临。!

434939575 发表于 2014-7-17 20:27:50

本帖最后由 434939575 于 2014-10-17 20:54 编辑

后来自己整了下凑合着用<div class="blockcode"><blockquote>(defun c:ty ()

(setq ss (ssget '((0 . "LINE"))))
(setq i 0)
(while      (   /=(sslength ss) 0)
    (setq ss0 (ssname ss i)
         
    )
    (setq ss0-en (entget ss0))      
    ;(setq ss0-62 (cdr (assoc 62 ss0-en)))
    (setq pt1(cdr (nth 10 ss0-en)))      ;调取pline第1点坐标。
    (setq pt2 (cdr (nth 11 ss0-en)))      ;调取pline第2点坐标。
    ;(setq ss0-62 (cdr (assoc 62 ss0-en)))
   
      (setq fw300);"范围
    (setq ang (angle pt1 pt2))
    (setq ang-- (angle pt2 pt1))
    (setq pt1>100 (polar pt1 ang 100)) ;pt1距离100MM位置。
    (setq pt2<100 (polar pt2 ang-- 100)) ;pt2距离100MM位置。
      (setq pt1>100-fw (polar pt1>100 (+ ang (* 0.5 pi))fw))
    (setq pt1>100-fw-- (polar pt1>100 (+ ang (* 1.5 pi))fw))
(setq pt2<100fw (polar pt2<100 (+ ang (* 0.5 pi))fw))
    (setq pt2<100-fw-- (polar pt2<100 (+ ang (* 1.5 pi))fw))
   (setqlst (list pt1>100-fw pt1>100-fw--pt2<100-fw--pt2<100fw))
   (setqss-2(ssget "cP" lst ))
       (command"._pline"   pt1>100-fw pt1>100-fw--pt2<100-fw--pt2<100fw    "c" "" "")
   (command "select" ss "r" ss-2 "")
(setq   xx (ssget "p" ) )
   (setqssxx)
      )      ;repeat
);end

ZZXXQQ 发表于 2014-7-17 20:36:12

(defun c:tt ()
(command "_.UNDO" "BE")
(setq ss (ssget '((0 . "LWPOLYLINE"))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;*****************************      
(while (> (sslength ss) 0)
    (setq ss0-en (entget (ssname ss 0)))
    (setq pt1 (cdr(nth 15 ss0-en)));调取pline第1点坐标。
    (setq pt2 (cdr(nth 19 ss0-en)));调取pline第2点坐标。
    (setq fw 600);"范围
    (setq ang (angle pt1 pt2))
    (setq ang-- (angle pt2 pt1))
    (setq pt1>100 (polar pt1 ang 100)) ;pt1距离100MM位置。
    (setq pt2<100 (polar pt2 ang-- 100)) ;pt2距离100MM位置。
    (setq pt1>100-fw (polar pt1>100 (+ ang (* 0.5 pi)) fw))
    (setq pt1>100-fw-- (polar pt1>100 (+ ang (* 1.5 pi)) fw))
    (setq pt2<100fw (polar pt2<100 (+ ang (* 0.5 pi))fw))
    (setq pt2<100-fw-- (polar pt2<100 (+ ang (* 1.5 pi))fw))
    (setq lst (list pt1>100-fw pt1>100-fw-- pt2<100-fw-- pt2<100fw pt1>100-fw))
    (command "_.RECTANG" pt1>100-fw pt2<100-fw--)
    (setq ss-2 (ssget "cP" lst))
    (if (> (sslength ss) (sslength ss-2)) (progn
   (command "select" ss "r" ss-2 "")
   (setq ss (ssget "p"))
    )
   (setq ss (ssadd))
    )
) ;while
(command "_.UNDO" "E")
(princ)
) ;end

434939575 发表于 2014-7-17 20:40:02

ZZXXQQ 发表于 2014-7-17 20:36 static/image/common/back.gif


感谢版主出手相助,受教了。
页: [1]
查看完整版本: 再次请教关于选择处理的问题