Excel VBA, AutoCAD ActiveX ¸Àº¸±â °ÁÂ(24) |
Entity¼öÁ¤Çϱâ
Áö³¹ø °Á¿¡¼ µµ±¸/ÂüÁ¶¿¡¼ AutoCAD type library¸¦ Ãß°¡ÇØÁÜÀ¸·Î¼ ºñ·Î¼Ò AutoCAD¿Í ExcelVBA°¡ ¿ÏÀüÈ÷ ¿¬°áµÇ¾ú´Ù°í ¼³¸íµå·È´Âµ¥¿ä.
±×·¸´Ù¸é ÀÌ·¸°Ô ÂüÁ¶¸¦ ÇÏ´Â °Í°ú ¾ÈÇÏ´Â °ÍÀÇ Â÷ÀÌ´Â ¾î¶² °ÍÀÌ ÀÖÀ»±î¿ä? ÀÏ´Ü AutoCADÀÇ °³Ã¼¸¦ »ç¿ëÇÏ´õ¶ó°í ¸í½ÃÀûÀ¸·Î »ç¿ëÇϱ⠶§¹®¿¡
¿©·¯ÀÕÁ¡ÀÌ ÀÖ½À´Ï´Ù. ÂüÁ¶¿¡¼ AutoCAD type library¸¦ Ãß°¡ÇÑ ´ÙÀ½¿¡ ¾Æ·¡¿Í °°ÀÌ ÄÚµùÀ» Çغ¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. mspace¶ó°í ÀÔ·ÂÇÑ ´ÙÀ½¿¡
as ÇÏ°í ºóÄÀÏ ÀÔ·ÂÇÒ ¶§ ÀÚµ¿À¸·Î Æ˾÷â Çϳª°¡ ¶å´Ï´Ù.
ÇöÀç ÀÔ·ÂÇÏ°í ÀÖ´Â ºÎºÐ¿¡ µé¾î°¥ ¼ö ÀÖ´Â °ÍµéÀ» ¾Ë·ÁÁִ âÀÔ´Ï´Ù. ÇöÀç´Â º¯¼ö¸¦ ¼±¾ðÇÏ°í ÀÖ°í, as¶ó°í ÀÔ·ÂÇÑ ´ÙÀ½À̱⠶§¹®¿¡ º¯¼öÇüŵéÀÌ
³ª¿É´Ï´Ù. ÀÌâÀº VB¸¦ ÄÚµùÇÏ´Â µ¥ ¸¹Àº µµ¿òÀÌ µÇ´Âµ¥, ±× ¸¹Àº ¼Ó¼º°ú ¸Þ¼µåµéÀ» ´Ù ¿Ü¿ï ¼ö ¾ø±â ¶§¹®¿¡ ÇöÀç ÀÔ·ÂÁßÀÎ ±¸¹®¿¡ °¡´ÉÇÑ º¯¼öÇüÅÂ,
¸Þ¼µå, ¼Ó¼ºµîÀ» ³ª¿ÇØÁÖ°í °ñ¶ó ¾µ ¼ö ÀÖ°Ô ÇØÁִ âÀÔ´Ï´Ù.
¿ÞÂÊ ±×¸²ÀÌ AutoCAD type library¸¦ ÂüÁ¶ÇßÀ» °æ¿ìÀÌ°í ¿À¸¥ÂÊ ±×¸²ÀÌ ÂüÁ¶ÇÏÁö ¾Ê¾ÒÀ» ¶§ÀÔ´Ï´Ù. ¾î¶²°¡¿ä? ÂüÁ¶ÇÑ °æ¿ì¿¡´Â AutoCAD¿Í °ü·ÃµÈ
º¯¼öÇüŵéÀÌ ³ª¿µË´Ï´Ù. ÇÏÁö¸¸ ¿À¸¥ÂÊ ±×¸²Àº ÀϹÝÀûÀÎ VB¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â º¯¼öÇüŵéÀÌ ¶å´Ï´Ù.
¿ì¸®´Â Áö±Ý mspace¶õ À̸§À» °¡Áø º¯¼ö´Â model space°³Ã¼À̶ó°í ¸í½ÃÀûÀ¸·Î ¼±¾ðÇÏ°í ½Í½À´Ï´Ù. ¹°·Ð ¾Õ¼± °Á¿¡¼¿Í °°ÀÌ objec·Î Çصµ µÇÁö¸¸
È®½ÇÈ÷ Çϸé ÀÌÁ¡ÀÌ ¸¹±â ¶§¹®¿¡ ÀÌ·¸°Ô ¸í½ÃÀûÀ¸·Î model space°³Ã¼¶ó´Â °ÍÀ» ¼±¾ðÇÏ´Â °ÍÀÔ´Ï´Ù. ¸ñ·ÏÁß¿¡¼ ¾Æ·¡ ±×¸²°ú °°ÀÌ Acadmodelspace¸¦
ã¾Æ¼ ¼±ÅÃÇØÁÝ´Ï´Ù.
¾î¶²°¡¿ä? ¾ÆÁÖ °£´ÜÇÏÁö¿ä? ÀÌ·¸°Ô ÂüÁ¶¸¦ Çسõ°í »ç¿ëÇÏ¸é ½Ç¼ö¸¦ ÇÒ È®·üµµ ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð acadmodelspace¶ó°í Á÷Á¢ÀÔ·ÂÇصµ µË´Ï´Ù.
°°Àº ¿ä·ÉÀ¸·Î cobj¶ó´Â ÀϹÇÀ¸·Î Acadcircle objectµµ Çϳª ¼±¾ðÇϵµ·Ï ÇÕ´Ï´Ù. ±×·¯¸é ¾Æ·¡¿Í °°ÀÌ µÉ °ÍÀÔ´Ï´Ù.
Sub text()
acad As Object
mspace As AcadModelSpace
cobj As AcadCircle
End Sub
´«¿©°Ü º¸½Ã¸é ¾Æ½Ã°ÚÁö¸¸ type library¿¡ Á¤ÀÇµÈ º¯¼öÇüŵéÀº ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ¸¦ ¼¯¾î°¡¸é¼ Ç¥½ÃµÇ±â ¶§¹®¿¡ ÀбⰡ ½±°í »ç¿ëÀÚ°¡ ŸÀÌÇÎÇÑ°Í°ú
½±°Ô ±¸ºÐÀÌ µË´Ï´Ù. °è¼ÓÇؼ AutoCAD¿Í ¿¬°áÇÏ°í circleÇϳª¸¦ ±×¸®´Â ÄÚµùÀ» ÇÕ´Ï´Ù. ¾Õ°ÁµéÀ» º¸½ÅºÐÀº ¹«³È÷ Çسª½Ã¸®¶ó »ý°¢µË´Ï´Ù.
Sub test()
acad As Object
mspace As AcadModelSpace
Dim cobj As AcadCircle
Dim c(2) As Double
Dim r As Double
c(0) = 0: c(1) = 0: c(2) = 0
r = 10
Set acad = GetObject(, "Autocad.application")
Set mspace = acad.ActiveDocument.ModelSpace
Set cobj = mspace.AddCircle(c, r)
End Sub
¿©±â ±îÁö°¡ modelspaceÀÇ 0,0,0ÁÂÇ¥¿¡ ¹ÝÁö¸§ 10ÀÎ ¿øÀ» Ãß°¡ÇÏ´Â ÄÚµåÀÔ´Ï´Ù. À§Äڵ带 ÀÔ·ÂÇÒ ¶§µµ »óȲ¿¡ µû¶ó popupâÀÌ ¶°¼ ±æÀ» ÀÒÁö ¾Êµµ·Ï
±æÀ» ÀεµÇØÁÝ´Ï´Ù. Set cobj = mspace.¶ó°í Ä¡¸é mspace¿¡ »ç¿ë°¡´ÉÇÑ ¸Þ¼µå,¼Ó¼ºµéÀÌ ³ª¿µË´Ï´Ù. ¾Æ·¡ ±×¸²Ã³·³¿ä.
addcircleÀ» ¼±ÅÃÇÏ°í (¸¦ ÀÔ·ÂÇϸé addcircle¿¡ ÇÊ¿äÇÑ ÀÎÀÚµéÀÇ ¼³¸íÀÌ ³ª¿É´Ï´Ù. ¾Æ·¡±×¸²Ã³·³ Ä£ÀýÇÏ°Ô center¿Í radius°¡ ÇÊ¿äÇÏ´Ù°í ¾Ë·ÁÁÝ´Ï´Ù.
±×¸®°í ÇÑ°³´õ circleÀ» Ãß°¡Çϵµ·Ï ÇÕ´Ï´Ù, µÎ¹øÀç circleÀº À§Ä¡¸¦ 30,0,0À» ¿øÁ¡À¸·Î ÇÏ´Â r=10ÀÎ »¡°£»ö ¿øÀ» ±×·Áº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.
Sub test()
acad As Object
mspace As AcadModelSpace
Dim cobj As AcadCircle
Dim c(2) As Double
Dim r As Double
c(0) = 0: c(1) = 0: c(2) = 0
r = 10
Set acad = GetObject(, "Autocad.application")
Set mspace = acad.ActiveDocument.ModelSpace
Set cobj = mspace.AddCircle(c, r)
c(0) = 30: c(1) = 0: c(2) = 0
r = 10
Set cobj = mspace.AddCircle(c, r)
End Sub
¿©±â±îÁö °¡ ¿øÁ¡ 0,0,0°ú 30,0,0¿¡ r=10ÀÎ ¿øÀ» ±×¸®´Â ÄÚµåÀÔ´Ï´Ù. µÎ¹ø° ±×¸° ¿øÀº »öÀ» »¡°£»öÀ¸·Î ÇÏ°í ½Í´Ù¸é ¾î¶»°Ô ÇÒ±î¿ä? ¹°·Ð ÇöÀçÄ÷¯¸¦
»¡°£»öÀ¸·Î ¹Ù²Ù°í ³´ÙÀ½¿¡ addcircleÀ» ½ÇÇàÇÏ¸é »¡°£»ö ¿øÀÌ ¸¸µé¾îÁöÁö¸¸ ¿©±â¼´Â addcircleÀÌ µ¹·ÁÁØ object¸¦ ¼±ÅÃÇÏ¿© color¼Ó¼ºÀ» ¹Ù²ã¼
»öÀ» ¹Ù²Ù¾îº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.
ÀÏ´Ü cobj´Â AcadCircle object·Î ¼±¾ðµÇ¾îÀֱ⠶§¹®¿¡ »õÁÙÀÇ Ã³À½¿¡ cobj.À» ÀÔ·ÂÇϸé AcadCircle object¿¡ Àû¿ëÇÒ ¼ö ÀÖ´Â ¸Þ¼µå¿Í ¼Ó¼º ¸ñ·ÏµéÀÌ
³ªÅ¸³³´Ï´Ù. ÀÌÁß¿¡¼ »öÀ» ¹Ù²Ù´Â ¼Ó¼ºÀ» ¼±ÅÃÇÏ¸é µÇ°ÚÁö¿ä? cobj.À» ÀÔ·ÂÇßÀ» ¶§ ¾Æ·¡±×¸²°ú °°ÀÌ ¸Þ¼µå¿Í ¼Ó¼ºµéÀÌ ³ªÅ¸³³´Ï´Ù. ÀÌÁß¿¡¼ color¸¦
¼±ÅÃÇÏ°í =À» ÀÔ·ÂÇÏ¸é »öÀ» ¼±ÅÃÇÒ ¼ö ÀÖ´Â ¸ñ·ÏÀÌ ³ªÅ¸³³´Ï´Ù.
±×·¡¼ ¼±ÅÃµÈ °³Ã¼ÀÇ »ö¼Ó¼ºÀ» »¡°£»öÀ¸·Î ¹Ù²Ù´Â ÄÚµåÀÎ cobj.Color = acRed¸¦ Ãß°¡ÇÏ¸é »¡°£»ö ¿ø±×¸®±â°¡ ¿Ï¼ºµÈ °ÍÀÔ´Ï´Ù. VB editor°¡ ÇÁ·Î±×·¥À»
¸¸µå´Â »ç¶÷µéÀÌ ±æÀ» ÀÒ±â ¾Ê°Ô Àß ÀεµÇÏ°í ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. ¿¹ÀüÀÇ µµ½ºÇÁ·Î±×·¥½ÃÀýÇÏ°í´Â ³Ê¹«³ª ´Ù¸¥ ȯ°æÀÌÁö¿ä?
ÀÌ·± ÀÏÀÌ °¡´ÉÇÑ ÀÌÀ¯´Â? ¹°·Ð ?AutoCAD type library¸¦ ÂüÁ¶Ç߱⠶§¹®¿¡ °¡´ÉÇÕ´Ï´Ù. »ç½Ç acRed¶ó´Â °ÍÀº AutoCAD type library¿¡ ¼±¾ðµÇ¾îÀÖ´Â »ó¼öÀÔ´Ï´Ù.
¾Æ¸¶µµ const acRed = 1À̶ó°í ¼±¾ðµÇ¾îÀÖÀ» °ÍÀÔ´Ï´Ù. »ç½Ç acRedÀÇ °ªÀº 1ÀÔ´Ï´Ù. ÇÏÁö¸¸ 1À̶ó°í ¾²´Â °Íº¸´Ù´Â acRed¶ó°í ¾²´Â °ÍÀÌ ÈξÀ ´õ ÀÌÇØÇϱâ
½±½À´Ï´Ù. Á¤¸» acRed°¡ 1À̶ó´Â ¼ý°¡Àϱî¿ä? Å×½ºÆ®¸¦ Çغ¸½Ã¸é µË´Ï´Ù. Á÷Á¢½ÇÇàâ¿¡¼ ?acRed¶ó°í ÀÔ·ÂÇغ¸¼¼¿ä..¾Æ·¡±×¸²°ú °°Àº °á°ú¸¦ º¸¿©ÁÙ °ÍÀÔ´Ï´Ù.
¸¸ÀÏ ¿À¸¥ÂÊ ±×¸²°°ÀÌ ¾Æ¹« º¯È°¡ ¾ø´Ù¸é AutoCAD type library¸¦ ÂüÁ¶ÇÏÁö ¾Ê¾Ò±â ¶§¹®ÀÏ °ÍÀÔ´Ï´Ù.
ÀÌÁ¦ ¿Ö Á¦°¡ "AutoCAD type library¸¦ ÂüÁ¶ÇßÀ» ¶§ ºñ·Î¼Ò Excel°ú AutoCAD°¡ ¿ÏÀüÈ÷ ¿¬°áµÈ °ÍÀ̶ó"¶ó°í À̾߱â ÇÑ ÀÌÀ¯¸¦ Àß ¾Æ½Ã°ÚÁÒ?
±×·³ ³»ÀÏ °è¼ÓÇϵµ·Ï ÇÏ°Ú½À´Ï´Ù.
[ÀÌÀü °ÁÂ]
[´ÙÀ½ °ÁÂ]
|