再次请教关于选择处理的问题
请教各位朋友们。我的目的要把右边的图元建立一个包容盒子。但我这样处理,有部分漏了。望各位赐教。谢谢。(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
帮顶一下
感谢院长大驾光临。! 本帖最后由 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 (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
ZZXXQQ 发表于 2014-7-17 20:36 static/image/common/back.gif
感谢版主出手相助,受教了。
页:
[1]