¿äÁò Àú°¡ ijµå(´ë¾Èijµå°¡ ¸Â°Ú±º¿ä) ¿¡ °üÇÑ °ü½ÉÀÌ ³ô¾ÆÁö°í ÀÖ½À´Ï´Ù.
¿À´ÃÀº ´ë¾È ijµå Áß ÇϳªÀÎ ZWCAD¸¦ pythonÀ¸·Î ÅëÁ¦ÇÏ´Â °ÍÀ» ÇØº¸°Ú½À´Ï´Ù.
ZWCAD´Â ±âº»ÀûÀ¸·Î lisp, vba µîÀÇ °³¹ßȯ°æÀ» Á¦°øÇϰí ÀÖ½À´Ï´Ù.
ÇÏÁö¸¸ pythonÀ¸·Îµµ °¡´ÉÇÏ¸é ´õ ÁÁ°ÚÁÒ? ±×·¡¼ °Ë»öÇØºÃ´Âµ¥ pyzwcad°¡ pypi.org¿¡ µî·ÏµÇ¾î ÀÖ¾ú½À´Ï´Ù. ¿ª½Ã zwcad´Â ½ÃÀå ±Ô¸ð°¡ Å« Áß±¹¿¡¼ °³¹ßÇÏ´Â ¼ÒÇÁÆ®¿þ¾î¶ó¼ ±×·±Áö ´ëÀÀÀÌ ºü¸¥ °Í °°´Ù´Â »ý°¢À» ÇØºÃ½À´Ï´Ù.
¼³Ä¡¹æ¹ý µîÀº 'pythonÀ¸·Î autocadÅëÁ¦Çϱâ'³»¿ë°ú ¸ðµÎ °°½À´Ï´Ù. ´Ù¸¸ pyautocad¸¦ ¼³Ä¡ÇÏ´Â ´ë½Ã pyzwcad¸¦ ¼³Ä¡ÇÏ´Â °Í¸¸ ´Ù¸£°í import¸í·É ÁÙ¸¸ ´Ù¸¨´Ï´Ù.
ÀÏ´Ü pyzwcad¸¦ ¾Æ·¡ÀÇ ¸µÅ©¸¦ ÂüÁ¶Çؼ ¼³Ä¡ÇÕ´Ï´Ù.
https://pypi.org/project/pyzwcad/

¼³Ä¡¹æ¹ýÀº pythonÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Â consoleÀ» ½ÇÇàÇÑ ÈÄ pip install pyzwcad¸¦ ½ÇÇàÇÕ´Ï´Ù.
consoleÀ» ¶ç¿ì´Â ¹æ¹ýÀº À©µµ¿ì¿¡¼´Â cmdâÀ» ¶ç¿ì¸é µË´Ï´Ù. ¹°·Ð pythonÀÌ ±ò·ÁÀÖ¾î¾ß ÇÕ´Ï´Ù.
pyzwcad°¡ ¼³Ä¡µÈ ÈÄ¿¡ ZWCAD¸¦ ½ÇÇàÇÕ´Ï´Ù. ¹°·Ð console°ú ZWCADÀÇ ½ÇÇà ¼ø¼´Â °ü°è°¡ ¾ø½À´Ï´Ù. ZWCAD¸¦ ¸ÕÀú ½ÇÇàÇØµµ °ü°è ¾ø½À´Ï´Ù.
ÀÌÁ¦ test.py¶ó´Â ÆÄÀÏÀ» ¸¸µì´Ï´Ù. ÀÌ ÆÄÀÏÀ» ½ÇÇàÇϸé ZWCAD¿¡ ±×¸²ÀÌ ±×·ÁÁö´Â ¿¹Á¦ÀÔ´Ï´Ù. text editor¸¦ ½ÇÇàÇÏ°í ¾Æ·¡ÀÇ ³»¿ëÀ» ÀÔ·ÂÇÑ ÈÄ test.py¶ó´Â À̸§À¸·Î ÀúÀåÇÕ´Ï´Ù.
ÀÌÁ¦ console¿¡¼ python test.py¸¦ ½ÇÇàÇÕ´Ï´Ù.
±×·¯¸é ZWCAD¿¡ ±×¸²ÀÌ ±×·ÁÁý´Ï´Ù. ±×¸®°í console¿¡µµ ¿©·¯°¡Áö Á¤º¸µéÀÌ Ãâ·ÂµË´Ï´Ù. ÀÌÇÁ·Î±×·¥ÀÌ ¾î¶² ±â´ÉÀ» ÇÏ´Â °ÍÀÎÁö´Â ¼³¸íµå¸®°Ú½À´Ï´Ù.

test.pyÀÇ ³»¿ëÀ» °£·«ÇÏ°Ô ¼³¸íÇÏÀÚ¸é,
from pyzwcad import ZwCAD, APoint
ÀÌ ÁÙÀº ¾Æ±î ¼³Ä¡ÇÑ pyzwcad ÆÑŰÁö¸¦ importÇÏ´Â °ÍÀÔ´Ï´Ù.
acad = ZwCAD()
ÀÌ ÁÙÀº ZWCAD¸¦ acad¶ó´Â À̸§À¸·Î ºÎ¸£°Ú´Ù´Â ¶æÀÔ´Ï´Ù.
ÀÌ ÁÙÀÌ ½ÇÇàµÈ ÈÄ¿¡´Â ZWCAD´Â acad¶ó´Â À̸§À¸·Î ÅëÁ¦°¡ °¡´ÉÇÏ°Ô µË´Ï´Ù.
acad.prompt("Hello, Autocad from Python\n")
ÀÌ ÁÙÀº ZWCAD ¿¡ ¹®ÀÚ¿À» Ãâ·ÂÇÏ´Â ¸í·ÉÀÔ´Ï´Ù.
print acad.doc.Name
ÀÌ ¸í·ÉÀº consoleâ¿¡ ZWCADÀÇ ÆÄÀϸí(doc.Name)À» Ãâ·ÂÇÏ´Â ³»¿ëÀÔ´Ï´Ù.
ZWCADÀÇ Á¤º¸¸¦ pythonÀ¸·Î ºÒ·¯¿Ã ¼ö ÀÖ´Â °ÍÀÌÁÒ.
p1 = APoint(0, 0)
APointÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ p1À̶ó´Â º¯¼ö¸í¿¡ 0,0À̶ó´Â ÁÂÇ¥¸¦ ÇÒ´çÇÕ´Ï´Ù.
for i in range(5):
pythonÀÇ for ¹Ýº¹¹®ÀÔ´Ï´Ù. range(5)´Â 0,1,2,3,4 ¶ó´Â °ªÀ» ¸¸µé¾î¼ i¿¡ ´ëÀÔÇÏ¸é¼ ¼ø¼´ë·Î ¹Ýº¹Ç϶ó´Â ¶æÀÔ´Ï´Ù.
text = acad.model.AddText('Hi %s!' % i, p1, 2.5)
model space¿¡ text¸¦ Ãß°¡ÇÏ´Â ¸í·ÁÀÔ´Ï´Ù.
'Hi %s!'% i --> À̺κÐÀº i¸¦ %s¿¡ ´ëÀÔÇØ¼ Ãâ·ÂÇ϶ó´Â °ÍÀ̱¸¿ä.
p1 --> »ðÀÔÁ¡À» Á¤ÇØÁÖ´Â °ÍÀ̰í
2.5 --> ±ÛÀÚÅ©±âÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î ÅØ½ºÆ®¸¦ ¾µ ¶§ ÇÊ¿äÇÑ Á¤º¸ÀÔ´Ï´Ù.
acad.model.AddLine(p1, p2)
¼±À» ±×¸®´Â ¸í·ÉÀÔ´Ï´Ù. ¸¶Âù°¡Áö·Î acad.modelÀ» ÁöÁ¤ÇØÁÖ°í AddlineÀ» Çß½À´Ï´Ù. p1,p2´Â ½ÃÀÛÁ¡ ³¡Á¡À̰ÚÁÒ.
acad.model.AddCircle(p1, 10)
´ÙÀ½Àº ¿øÀ» ±×¸®´Â ¸í·ÉÀÔ´Ï´Ù. p1ÀÌ ¿øÁ¡ÁÂÇ¥, 10ÀÌ ¿øÀÇ ¹ÝÁö¸§ÀÔ´Ï´Ù.
¿©±â±îÁö°¡ ÅØ½ºÆ®,¶óÀÎ,¿øÀ» ±×¸®´Â ¸í·ÉÀÔ´Ï´Ù.
p1.y += 10
ÀÌ ¹®ÀåÀº ´ÙÀ½ ¼¼Æ®¸¦ ±×¸®±â À§Çؼ yÁÂÇ¥¿¡ 10À» ´õÇØÁÖ´Â ¸í·ÉÀ̱¸¿ä
ÀÌ·¸°Ô ÇØ¼ 5°³ÀÇ ÅØ½ºÆ®, ¶óÀÎ, ¿øÀ» ±×¸®µµ·Ï µÇ¾îÀÖ½À´Ï´Ù.
¿©±â±îÁö°¡ »õ·Î¿î °³Ã¼¸¦ ¸¸µå´Â ¿¹Á¦¿´´Ù¸é
ÀÌ ÀÌÈÄÀÇ ÄÚµå´Â ZWCAD¿¡¼ Á¤º¸¸¦ °¡Á®¿À´Â ¿¹Á¦ÀÔ´Ï´Ù.
ÀÌ¹Ì ¸¸µé¾îÁø ÅØ½ºÆ®ÀÇ À§Ä¡¸¦ ¿À¸¥ÂÊÀ¸·Î 10¸¸Å ¿òÁ÷À̰í
¼±°ú ¿øÀÇ objectÀ̸§À» Ãâ·ÂÇØÁÖ´Â ±â´ÉÀÔ´Ï´Ù.
ÇÑ ÁÙ¾¿ º¸°Ú½À´Ï´Ù.
dp = APoint(10, 0)
¿ì¼± delta pÁï ¿òÁ÷ÀÏ ¾çÀ» ¼³Á¤ÇØÁÝ´Ï´Ù. ¿À¸¥ÂÊÀ¸·Î 10¸¸ÅÀÔ´Ï´Ù.
for text in acad.iter_objects('Text'):
pythonÀÇ for¹®À» ÀÌ¿ëÇØ¼ ¹Ýº¹Çϴµ¥ iter_objects±â´ÉÀ» ÀÌ¿ëÇÕ´Ï´Ù. 'Text'µéÀ» ¸ðµÎ °ñ¶ó³»¼ text¶õ À̸§À¸·Î ºÎ¿©Çؼ Â÷·Ê´ë·Î ¹º°¡ Çϰڴٴ ¶æÀÔ´Ï´Ù. ¹«¾ùÀ» ÇÒ °ÍÀÎÁö´Â ¾Æ·¡¿¡ ³ª¿À°ÚÁÒ?
print('text: %s at: %s' % (text.TextString, text.InsertionPoint))
pythonÀÇ print±â´ÉÀ» ÀÌ¿ëÇÕ´Ï´Ù. %¸¦ ÀÌ¿ëÇØ¼ fortmattingÀ» Çϰí ÀÖ±¸¿ä.
ù¹øÂ° %s¿£ text.TextStringÀ» ³Ö°Ú´Ù´Â °ÍÀ̰í
µÎ¹øÂ° %s¿¡´Â text.InsertionPoint¸¦ ³Ö°Ú´Ù´Â ¶æÀÔ´Ï´Ù.
text¶ó´Â °´Ã¼ÀÇ TextStringÀº text³»¿ë, InsertionPoint´Â »ðÀÔÁ¡À̶ó´Â ¶æÀ̰ÚÁÒ?
ÀÌ ¹®ÀåÀ» ½ÇÇàÇϸé python console¿¡ ÀÌ·¸°Ô Ãâ·ÂÀÌ µË´Ï´Ù.
text: Hi 0! at: (0.0, 0.0, 0.0)
text.InsertionPoint = APoint(text.InsertionPoint) + dp
ÀÌ ¹®ÀåÀº textÀÇ InsertionPoint¸¦ º¯°æÇÏ´Â ¹®ÀåÀÔ´Ï´Ù. Apoint(text.InsertionPoint)¿¡ dp¸¸Å ´õÇϰí ÀÖ½À´Ï´Ù. dp´Â 10,0À̾ú½À´Ï´Ù. ¿À´ÃÂÊÀ¸·Î 10¸¸Å ¿òÁ÷ÀÌ´Â °ÍÀÌÁÒ.
ÀÌ·¸°Ô ÇØ¼ ¸ðµç ¶óÀΰú ¿øÀÇ ÁÂÇ¥¸¦ Ãâ·ÂÇß°í ÅØ½ºÆ®µéÀ» ¿À¸¥ÂÊÀ¸·Î 10¸¸Å À̵¿½ÃÄ×½À´Ï´Ù.
´ÙÀ½ ±â´Éµµ À§ÀÇ ±â´É°ú ºñ½ÁÇÕ´Ï´Ù.
À̹ø¿¡´Â objectµéÀÇ À̸§À» Ãâ·ÂÇØÁÖ´Â ±â´ÉÀÔ´Ï´Ù.
for¹®Àº ¾ÕÀÇ °Í°ú °°Àºµ¥ ¾î¶² objectµéÀ» ¼±ÅÃÇÒ °ÍÀΰ¡¸¸ ´Ù¸¨´Ï´Ù.
for obj in acad.iter_objects(['Circle', 'Line']):
[ ]·Î ¹¾î¼ 'Circle'°ú 'Line'À» ¸ðµÎ ¼±ÅÃÇϵµ·Ï Çß½À´Ï´Ù. ¼±ÅÃµÈ objectµéÀ» obj¶ó´Â º¯¼ö¿¡ ÇÒ´çÇß±¸¿ä.
print(obj.ObjectName)
objÀÇ ObjectNameÀ» print¹®À¸·Î Ãâ·ÂÇß½À´Ï´Ù.
ÀÌ·¸°Ô ÇØ¼ »õ·Î¿î ¶óÀÎ,¿ø,ÅØ½ºÆ®¸¦ »ý¼ºÇϰí,
¸¸µé¾îÁø ojbectµéÀÇ ÁÂÇ¥¸¦ Ãâ·ÂÇϰí, ¿Å±â°í, objectµéÀÇ À̸§À» Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À» ¼³¸íÇØµå·È½À´Ï´Ù.
--- test.py --
from pyzwcad import ZwCAD, APoint
acad = ZwCAD()
acad.prompt("Hello, Autocad from Python\n")
print acad.doc.Name
p1 = APoint(0, 0)
p2 = APoint(50, 25)
for i in range(5):
text = acad.model.AddText('Hi %s!' % i, p1, 2.5)
acad.model.AddLine(p1, p2)
acad.model.AddCircle(p1, 10)
p1.y += 10
dp = APoint(10, 0)
for text in acad.iter_objects('Text'):
print('text: %s at: %s' % (text.TextString, text.InsertionPoint))
text.InsertionPoint = APoint(text.InsertionPoint) + dp
for obj in acad.iter_objects(['Circle', 'Line']):
print(obj.ObjectName)
-- test.py --
|