¸®½À °Á - PLINE Á¤Á¡µéÀÇ ¹æÇâ üũ ÇÔ¼ö.
º» °Á´ ¾ÆÅ°¿ÀÇǽº(±èÈñÅÂ)¿¡ ÀÇÇØ ¸¸µé¾î Á³À¸¸ç ¾î¶°ÇÑ À¥À̳ª ÃâÆÇ¹°¿¡ ¾ÆÅ°¿ÀÇǽº(±èÈñÅÂ)ÀÇ µ¿ÀǾøÀÌ ¿Ã¸®´Â °ÍÀ» Çã¶ôÇÏÁö ¾Ê½À´Ï´Ù. |
|
||
|
||
|
||
(defun GetPolyVtx(EntList / VtxList AA X) (setq VtxList '()) (IF (= "LWPOLYLINE" (CDR (ASSOC 0 EntList))) (mapcar '(lambda (x) (if (= 10 (car x)) (setq VtxList (append VtxList (list (cdr x))) ) ) ) EntList) (PROGN (SETQ AA (ENTGET(ENTNEXT (CDR (ASSOC -1 EntList))))) (WHILE (/= "SEQEND" (CDR (ASSOC 0 AA))) (setq VtxList (append VtxList (list (cdr (ASSOC 10 AA))))) (SETQ AA (ENTGET(ENTNEXT (CDR (ASSOC -1 AA))))) ) ));IF VtxList ) (defun pl-l-r-chk (pn poin / plist rtd ang+ ang-) (defun rtd (a)(/ (* a 180.0) pi)) (setq plist (getpolyvtx (entget pn)) ang+ 0 ang- 0) (setq plist (mapcar '(lambda (x) (rtd (angle poin x))) plist)) (mapcar '(lambda (x y) (cond ((and (< 180 (abs (- x y))) (< 180 x) (> 180 y)) (setq ang+ (+ ang+ (- 360 x) y))) ((and (< 180 (abs (- x y))) (> 180 x) (< 180 y)) (setq ang- (+ ang- x (- 360 Y)))) ((< x y) (setq ang+ (+ ang+ (- y x)))) ((> x y) (setq ang- (+ ang- (- x y)))) ) ) plist (cdr (append plist (list (car plist)))) ) (if (< ang+ ang-) "right" "left") )
(defun pl-l-r-chk (pn poin / plist rtd ang+ ang-) ;; ¶óµð¾È°¢µµ °ªÀ» µð±×¸®°¢µµ·Î º¯È¯ÇÏ´Â ÇÔ¼ö´Ù. (defun rtd (a)(/ (* a 180.0) pi)) ;; Á¤Á¡µéÀ» ÃßÃâÇÑ´Ù. (setq plist (getpolyvtx (entget pn)) ang+ 0 ang- 0) ;; pline ³»ºÎÁ¡°ú Á¤Á¡°úÀÇ °¢µµ¸®½ºÆ®¸¦ ¸¸µç´Ù. (setq plist (mapcar '(lambda (x) (rtd (angle poin x))) plist)) ;; °¢µµ°¡ Áõ°¡ÇÏ¸é °¢µµ¸¦ ang+ º¯¼ö¿¡ , °¨¼ÒÇϸé ang- º¯¼ö¿¡ º¯È°¢µµ¸¦ ÇÕÇÑ´Ù. (mapcar '(lambda (x y) (cond ;; °¢µµÀÇ Æ¯¼º»ó µÎ °¢µµ°¡ 0 µµ¸¦ ³¢°í ÀÖÀ»¶§ÀÇ °è»ê¹æ¹ýÀÌ´Ù. ((and (< 180 (abs (- x y))) (< 180 x) (> 180 y)) (setq ang+ (+ ang+ (- 360 x) y))) ((and (< 180 (abs (- x y))) (> 180 x) (< 180 y)) (setq ang- (+ ang- x (- 360 Y)))) ((< x y) (setq ang+ (+ ang+ (- y x)))) ((> x y) (setq ang- (+ ang- (- x y)))) ) ) plist (cdr (append plist (list (car plist)))) ) ;; °è»êµÈ °á°ú¿¡ µû¶ó "right" ¶Ç´Â "left" ¸¦ Ãâ·ÂÇÑ´Ù. (if (< ang+ ang-) "right" "left") )