¸®½À °Á - ActiveX¸¦ ÀÌ¿ëÇÑ Xdata ÀÔ·ÂÇÔ¼ö, Xdata ¾ò±âÇÔ¼ö.
º» °Á´ ¾ÆÅ°¿ÀÇǽº(±èÈñÅÂ)¿¡ ÀÇÇØ ¸¸µé¾î Á³À¸¸ç ¾î¶°ÇÑ À¥À̳ª ÃâÆÇ¹°¿¡ ¾ÆÅ°¿ÀÇǽº(±èÈñÅÂ)ÀÇ µ¿ÀǾøÀÌ ¿Ã¸®´Â °ÍÀ» Çã¶ôÇÏÁö ¾Ê½À´Ï´Ù. |
activex ¸¦ ÀÌ¿ëÇÑ xdata
¸¦ ÀÔ·ÂÇϰųª ¾ò´Â ÇÔ¼öÀÔ´Ï´Ù.
|
||
|
||
|
||
(defun kht:GetXData (Obj App / FldLst ValLst Xd_Fld Xd_Val) (vla-GetXData Obj App 'Xd_Fld 'Xd_Val) (if (and Xd_Fld Xd_Val) (setq FldLst (vlax-safearray->list Xd_Fld) ValLst (mapcar 'vlax-variant-value (vlax-safearray->list Xd_Val) ) ) ) (mapcar '(lambda (f v) (cons f v)) FldLst ValLst) ) (defun kht:SetXData (Obj App dat / ex typarr datarr errcat) (if (setq ex (VxGetXData obj app)) (if (assoc (car dat) ex) (setq ex (subst dat (assoc (car dat) ex) ex)) (setq ex (append ex (list dat))) ) (setq ex (list (cons 1001 app) dat)) ) (setq typarr (vlax-make-safearray vlax-vbinteger (cons 0 (1- (length ex))))) (setq datarr (vlax-make-safearray vlax-vbvariant (cons 0 (1- (length ex))))) (and (/= 'VL-CATCH-ALL-APPLY-ERROR (type (setq errcat (vl-catch-all-apply 'vlax-safearray-fill (list typarr (mapcar 'car ex)))))) (/= 'VL-CATCH-ALL-APPLY-ERROR (type (setq errcat (vl-catch-all-apply 'vlax-safearray-fill (list datarr (mapcar 'cdr ex)))))) (/= 'VL-CATCH-ALL-APPLY-ERROR (type (setq errcat (vl-catch-all-apply 'vla-setxdata (list obj typarr datarr))))) ) (if (vl-catch-all-error-p errcat) (princ (strcat "\n Function \"VxSetXData\" error->: " (vl-catch-all-error-message errcat))) ) )
;; object ¿¡¼ xdata ¸¦ ¾ò´Â ÇÔ¼öÀÔ´Ï´Ù. (defun kht:GetXData (Obj App / FldLst ValLst Xd_Fld Xd_Val) ;; object ¿¡¼ ÇØ´ç app ÀÇ xdata ¸¦ Xd_Fld, Xd_Val ·Î ÀúÀåÇÕ´Ï´Ù. (vla-GetXData Obj App 'Xd_Fld 'Xd_Val) ;; xdata °¡ ÀÖ´Ù¸é (if (and Xd_Fld Xd_Val) ;; ¹è¿À» ¸®½ºÆ®·Î º¯È¯ÇÏ¿© (setq FldLst (vlax-safearray->list Xd_Fld) ValLst (mapcar 'vlax-variant-value (vlax-safearray->list Xd_Val) ) ) ) ;; Äڵ庰·Î ¹¾î¼ ¸®ÅÏÇÕ´Ï´Ù. (mapcar '(lambda (f v) (cons f v)) FldLst ValLst) ) ;; xdata ¸¦ object ¿¡ ÀÔ·ÂÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù. (defun kht:SetXData (Obj App dat / ex typarr datarr errcat) ;; VxGetXData ÇÔ¼ö·Î ÇØ´ç object ÀÇ xdata¸¦ ¾ò¾î¼ (if (setq ex (VxGetXData obj app)) ;; ±× xdata ¿¡ ÀÔ·ÂÇÏ·Á´Â data °¡ Á¸ÀçÇϸé (if (assoc (car dat) ex) ;; »õ·Î¿î data·Î ±³Ã¼Çϰí (setq ex (subst dat (assoc (car dat) ex) ex)) ;; ÀÔ·ÂÇÏ·Á´Â data°¡ ¾ø´Ù¸é ±âÁ¸ xdata ¸®½ºÆ®¿¡ Ãß°¡ ÇÕ´Ï´Ù. (setq ex (append ex (list dat))) ) ;; object ¿¡ xdata °¡ ¾ø´Ù¸é »õ·Î¿î xdata ¸®½ºÆ®¸¦ ¸¸µì´Ï´Ù. ;; activex ¿¡¼ appid ´Â 1001 ¿¡ ÇØ´çÇÕ´Ï´Ù. (setq ex (list (cons 1001 app) dat)) ) ;; xdata ¸¦ ÀÔ·ÂÇÒ ¹è¿À» ¼±¾ðÇÕ´Ï´Ù. (setq typarr (vlax-make-safearray vlax-vbinteger (cons 0 (1- (length ex))))) (setq datarr (vlax-make-safearray vlax-vbvariant (cons 0 (1- (length ex))))) ;; ÀϹݸ®½ÀÇÔ¼ö¿¡¼ error °¡ ¹ß»ýÇÏ¸é ±×³É error ¸Þ¼¼Áö¸¦ Ãâ·ÂÇϰí Á¾·áÇÏÁö¸¸ ;; axtivex ÇÔ¼öÁß error °¡ ¹ß»ýÇϸé object °¡ ±×³É »ç¶óÁö´Âµî ¿¹»óÄ¡¸øÇÑ ¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù. ;; À̸¦À§ÇØ vl-catch-all-apply,vl-catch-all-error-message,vl-catch-all-error-p ÇÔ¼ö°¡ ÀÖ½À´Ï´Ù. ;; ÀÚ¼¼ÇÑ »ç¿ë¹ýÀº µµ¿ò¸»À» ÀÌ¿ëÇϼ¼¿ä. ;; (kht:SetXData (vlax-ename->vla-object (car (entsel))) "kht1" '("ABC" . 200)) ;; "ABC" ´Â DXF Äڵ尡 ¾Æ´Ï¹Ç·Î ÀÌ·¸°Ô ÇÏ¸é ¿¡·¯°¡ ¹ß»ýÇϰÚÁÒ. ;; ±×·³ ¿¡·¯¸¦ Àâ¾Æ¼ ¿¡·¯¸Þ¼¼Áö¸¦ Ãâ·ÂÇϰí Á¾·áµË´Ï´Ù. (and (/= 'VL-CATCH-ALL-APPLY-ERROR ;; dxf Äڵ帮½ºÆ®¸¦ º¯¼ö¿¡ ÀúÀå (type (setq errcat (vl-catch-all-apply 'vlax-safearray-fill (list typarr (mapcar 'car ex)))))) (/= 'VL-CATCH-ALL-APPLY-ERROR ;; ÇØ´ç °ª¸®½ºÆ®¸¦ º¯¼ö¿¡ ÀúÀå (type (setq errcat (vl-catch-all-apply 'vlax-safearray-fill (list datarr (mapcar 'cdr ex)))))) (/= 'VL-CATCH-ALL-APPLY-ERROR ;; vla-setxdata ·Î object ¿¡ xdata ÀÔ·Â (type (setq errcat (vl-catch-all-apply 'vla-setxdata (list obj typarr datarr))))) ) ;; ¸¸¾à ¿¡·¯°¡ ¹ß»ýÇÏ¸é ¿¡·¯¸Þ¼¼Áö¸¦ Ãâ·ÂÇϰí Á¾·á... (if (vl-catch-all-error-p errcat) (princ (strcat "\n Function \"VxSetXData\" error->: " (vl-catch-all-error-message errcat))) ) )