¸®½À °Á - µÎÁ¡ »çÀ̸¦ Áö³ª´Â ¸ðµç ¿ÀºêÁ§Æ®ÀÇ ±³Â÷Á¡ ¸®ÅÏÇÔ¼ö.
º» °Á´ ¾ÆÅ°¿ÀÇǽº(±èÈñÅÂ)¿¡ ÀÇÇØ ¸¸µé¾î Á³À¸¸ç ¾î¶°ÇÑ À¥À̳ª ÃâÆÇ¹°¿¡ ¾ÆÅ°¿ÀÇǽº(±èÈñÅÂ)ÀÇ µ¿ÀǾøÀÌ ¿Ã¸®´Â °ÍÀ» Çã¶ôÇÏÁö ¾Ê½À´Ï´Ù. |
µÎ Á¡°ú µÎÁ¡»çÀÌ¿¡ Á¸ÀçÇÏ´Â ¿ÀºêÁ§Æ®¿ÍÀÇ
±³Â÷Á¡ ¸®½ºÆ®¸¦ ¸®ÅÏÇÏ´Â ÇÔ¼ö ÀÔ´Ï´Ù.
|
||
|
||
(vl-Get-Int-Pt ù¹øÂ° point , µÎ¹øÂ° point) => ±³Â÷Á¡ ¸®½ºÆ® ¸®ÅÏ. ±³Â÷Á¡ÀÌ ¾øÀ¸¸é Nil ¸®ÅÏ. (vl-Get-Int-Pt point1 point2) |
||
(defun kht:list->safearray (lst datatype) (vlax-safearray-fill (vlax-make-safearray (eval datatype) (cons 0 (1- (length lst))) ) lst ) ) (defun vl-Get-Int-Pt (FirstPoint SecondPoint / acadDocument mSpace SSetName SSets SSet reapp ex obj Baseline ) (vl-load-com) (setq acadDocument (vla-get-ActiveDocument (vlax-get-acad-object))) (setq mSpace (vla-get-ModelSpace acadDocument)) (setq SSetName "MySSet") (setq SSets (vla-get-SelectionSets acadDocument)) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-add (list SSets SSetName)) ) (vla-clear (vla-Item SSets SSetName)) ) (setq SSet (vla-Item SSets SSetName)) (setq Baseline (vla-Addline mspace (vlax-3d-point FirstPoint) (vlax-3d-point SecondPoint))) (vla-SelectByPolygon SSet acSelectionSetFence (kht:list->safearray (append FirstPoint SecondPoint) 'vlax-vbdouble) ) (vlax-for obj sset (if (setq ex (kht-intersect (vlax-vla-object->ename BaseLine) (vlax-vla-object->ename obj))) (setq reapp (append reapp ex)) ) ) (vla-delete BaseLine) (setq reapp (vl-sort reapp '(lambda (e1 e2) (< (car e1) (car e2))))) reapp )¼³¸í
;; ÀÌ ÇÔ¼ö´Â ¸®½ºÆ®¸¦ safearray ·Î ÀüȯÇÏ¿© ¸®ÅÏÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù. ;; activex ÇÔ¼ö´Â ¹è¿ ¶Ç´Â vb µ¥ÀÌŸ Çü½Ä¸¸ Àû¿ëµÇ±â ¶§¹®ÀÔ´Ï´Ù. ;; ¸Å°³º¯¼ö datatype Àº vlax-vbvariant , vlax-vbstring , vlax-vbinteger µîÀÌ ¿©·¯ ÇüÀÌ ¿Ã¼ö ÀÖ½À´Ï´Ù. ;; ´ç¿¬È÷ ¸®½ºÆ®´Â datatype Çü°ú ÀÏÄ¡ÇØ¾ß µË´Ï´Ù. (defun kht:list->safearray (lst datatype) (vlax-safearray-fill (vlax-make-safearray (eval datatype) (cons 0 (1- (length lst))) ) lst ) ) (defun vl-Get-Int-Pt (FirstPoint SecondPoint / acadDocument mSpace SSetName SSets SSet reapp ex obj Baseline ) (vl-load-com) (setq acadDocument (vla-get-ActiveDocument (vlax-get-acad-object))) (setq mSpace (vla-get-ModelSpace acadDocument)) (setq SSetName "MySSet") ;; SelectionSet Ä÷º¼ÇÀ» ¾ò´Â´Ù. (setq SSets (vla-get-SelectionSets acadDocument)) ;; SelectionSet "MySSet" À» ÃʱâÈ ÇÑ´Ù. ;; ¸¸¾à "MySSet" ÀÌ Àִµ¥ Ãß°¡ ÇÏ¸é ¿¡·¯°¡ ³ª¹Ç·Î ¿¡·¯¸¦ Àâ¾Æ "MySSet" ¸¦ ºñ¿î´Ù. (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-add (list SSets SSetName)) ) (vla-clear (vla-Item SSets SSetName)) ) ;; SelectionSet "MySSet" À» ¾ò°í. (setq SSet (vla-Item SSets SSetName)) ;; µÎ Æ÷ÀÎÆ®¸¦ ³¡Á¡À¸·Î ÇÏ´Â °¡»óÀÇ ¶óÀÎÀ» ¸¸µç´Ù. (setq Baseline (vla-Addline mspace (vlax-3d-point FirstPoint) (vlax-3d-point SecondPoint))) ;; acSelectionSetFence ·Î½á µÎÁ¡ »çÀÌÀÇ ¿ÀºêÁ§Æ®¸¦ ¼±ÅÃÇÑ´Ù. (vla-SelectByPolygon SSet acSelectionSetFence (kht:list->safearray (append FirstPoint SecondPoint) 'vlax-vbdouble) ;; ¸¸¾à ÀÓÀÇÀÇ °´Ã¼ ¶óµçÁö ÀÓÀÇÀÇ ·¹À̾ °¡Áø °´Ã¼¸¸ ¼±º°ÀûÀ¸·Î ¼±ÅÃÇÏ°í ½Í´Ù¸é. ;; ¹Ù·Î ¿©±â¿¡ SelectionSet fillter ž³¼ÇÀ» ÁÖ¸é µÈ´Ù. ) ;; ¼±ÅÃµÈ °¢°¢ÀÇ ¿ÀºêÁ§Æ®¿Í °¡»óÀÇ ¶óÀÎÀÌ ±³Â÷ÇÑ´Ù¸é kht-intersect ÇÔ¼ö·Î ±³Â÷Á¡À» ¾ò´Â´Ù. (vlax-for obj sset (if (setq ex (kht-intersect (vlax-vla-object->ename BaseLine) (vlax-vla-object->ename obj))) (setq reapp (append reapp ex)) ) ) ;; °¡»óÀÇ ¶óÀÎÀ» »èÁ¦ ÇÑ´Ù. (vla-delete BaseLine) ;; ±³Â÷Á¡µéÀ» x ÁÂÇ¥¸¦ ±âÁØÀ¸·Î ¿À¸§Â÷¼øÀ¸·Î Á¤¿ÇÑ´Ù. (setq reapp (vl-sort reapp '(lambda (e1 e2) (< (car e1) (car e2))))) ;; ±³Â÷Á¡µéÀ» ¸®ÅÏÇÑ´Ù. reapp )