AutoLISP °ÁÂ [7] |
|||||||||||||||||||||||||||||||||||
1. ÀÔ¹®(I) - AutoLISPÀÇ ±âº» °³³ä |
|||||||||||||||||||||||||||||||||||
7. Ȱ¿ë¿¹Á¦ À̹øÈ£¿¡´Â ¾Õ¼ ¹è¿î ³»¿ëµéÀ» ´Ù½Ã Á¤¸®ÇÏ´Â Àǹ̿¡¼ ¸î°¡Áö ³»¿ëÀ» Á¾ÇÕÇÑ ¿¹Á¦Çϳª¸¦ ¼Ò°³ÇÒ±î ÇÑ´Ù. ´Ü°èÀûÀ¸·Î ¹®Á¦¸¦ ÇØ°áÇØ ³ª°¡¸é¼ µ¿½Ã¿¡ ÀÌÁ¦±îÁö ¹è¿î³»¿ëµéÀ» Á¤¸®ÇØ º¸µµ·Ï ÇϰڴÙ. ÀÌÁ¦ºÎÅÍ ¿Ï¼ºÇذ¥ ÇÁ·Î±×·¥Àº X, Y ºñÀ²ÀÌ ´Ù¸£°Ô INSERTµÈ BLOCKÀ̳ª MINSERTµÈ BLOCKÀ» EXPLODE ÇØÁÖ´Â ±â´ÉÀ» °®°ÔµÈ´Ù. ¸ÕÀú, ±× ±â´ÉÀ» ¾î¶»°Ô ±¸ÇöÇÒ ¼ö ÀÖÀ»Áö¿¡ ´ëÇØ »ý°¢Çغ¸ÀÚ. 7.1 ±âº» ¼³°è
´ÙÀ½°ú °°Àº ¼ø¼·Î ÀÛ¾÷À» ¼¼ºÐÈÇÒ ¼ö ÀÖ´Ù.
±×¸®°í, À̹ø ¿¹Á¦ ÇÁ·Î±×·¥¿¡¼´Â ´ç¿¬È÷ ±âº»ÀûÀÎ EXPLODE ¸í·ÉÀÇ ±â´ÉÀ» ¼öÇàÇϸç, BLOCK Á¤ÀÇ ¿£Æ¼Æ¼µéÁß 3DFACE, INSERT, LINE, POINT, POLYLINE, SOLID, TRACE¿¡ ´ëÇØ¼¸¸ Á¦ÇÑÀûÀ¸·Î »ç¿ëµÉ ¼ö ÀÖ´Ù. °î¼±À» Æ÷ÇÔÇÏ´Â ¿£Æ¼Æ¼µéÀº ¿£Æ¼Æ¼ ÇüŰ¡ ¹Ù²î°Å³ª ¿©·¯°³ÀÇ Á÷¼±±¸°£À¸·Î ºÐ¸®ÇؾßÇÏ´Âµî ¸î°¡Áö ¾î·Á¿òÀÌ ÀÖÀ½À¸·Î ±¸ÇöÇÏÁö ¾Ê°Ú´Ù. ±×·¯³ª, ±¸ÇöÀÌ ÀüÇô ºÒ°¡´ÉÇÑ °ÍÀº ¾Æ´Ï´Ï Á÷Á¢ Á¦ÀÛÇØ º¸±â ¹Ù¶õ´Ù. 7.2 »ó¼¼ ¼³°è 1) ¿£Æ¼Æ¼ Á¾·ù¿¡ µû¸¥ EXPLODE ¼öÇà (ent-explode) ¿ø·¡ EXPLODE ¸í·ÉÀº ¿£Æ¼Æ¼µéÁß DIMENSION, INSERT, POLYLINE¿¡ ´ëÇØ ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ´Ù. µû¶ó¼, DIMENSION, POLYLINE¿¡ ´ëÇØ¼´Â ¿ø·¡ ¸í·ÉÀ» ±×´ë·Î »ç¿ëÇϱâ·Î Çϰí INSERT¿¡ ´ëÇØ¼¸¸ »õ·Î¿î ó¸® °úÁ¤À» ¼öÇàÇϵµ·Ï ÇÑ´Ù. ¿£Æ¼Æ¼ÀÇ ÇüŸ¦ ¾ò´Â ¹æ¹ýÀº ¾Æ·¡ ¿¹¸¦ ÂüÁ¶¹Ù¶ø´Ï´Ù.
Command: LINE From point: 0,0 To point: 2,2 To point: Command: (cdr (assoc 0 (entget (car (entsel))))) Select object: 1,1 "LINE" 2) ºí·°¿¡ ´ëÇÑ EXPLODE ¼öÇà (exp-insert) ºí·°ÀÇ X, Y scale°ú ¿, ÇàÀÇ ¼ö, LAYER À̸§À» ±¸ÇÑ´Ù. ÀÌ °æ¿ì¿¡µµ À§¿Í ¸¶Âù°¡Áö·Î X, Y, scaleÀÌ ¸ðµÎ °°°í, MINSERT µÈ °ÍÀÌ ¾Æ´Ï¸é ¿ø·¡ EXPLODE ¸í·ÉÀ» ±×·¡µµ »ç¿ëÇÏ°Ô µÈ´Ù. ±×·± °æ¿ì°¡ ¾Æ´Ï¸é, ³ª¸ÓÁö Ãß°¡ÀûÀÎ BLOCK¿¡ °üÇÑ Á¤º¸¸¦ ±¸ÇÑ´Ù.
Command: BLOCK Block name (or ?): TEST Insertion base point: 0,0 Select objects: L 1 found Select objects: Command: MINSERT Block name (or ?): TEST Insertion point: 0,0 X scale factor <1>/Corner/XYZ: 2 Y scale factor (default=X): 3 Rotation <0>: 15 Number of rows (---) <1>: 4 Number of columns (|||) <1>: 5 Unit cell or distance between rows (---): 6 Distance between columns (|||): 8 Command: (entget (car (entsel))) Select object: 0,0 ((-1 , <Entity name: 60000044>) (0 . "INSERT") (8 . "0") (2 . "TEST") <= ºí·° À̸§ (10 0.0 0.0 0.0) <= »ðÀÔ À§Ä¡ (41 . 2.0) <= X scale (42 . 3.0) <= Y scale (50 . 0.261799) <= ȸÀü°¢ (43 . 2.0) <= Z scale (70 . 5) <= ¿ÀÇ ¼ö (71 . 4) <= ÇàÀÇ ¼ö (44 . 8.0) <= ¿ °£°Ý (45 . 6.0) <= Çà °£°Ý (210 0.0 0.0 1.0)) Command: (tblsearch "BLOCK" "TEST") ((0 . "BLOCK") (2 . "TEST") <= ºí·° À̸§ (70 . 64) <= ºí·°ÀÌ »ç¿ëÀ̶ó´Â ¶æÀÇ ÇüÅ flag (10 0.0 0.0 0.0) <= »ðÀÔ À§Ä¡ (-2 . <Entity name: 400009e5>)) <= ºí·°ÀÇ ½ÃÀÛ ¿£Æ¼Æ¼ À̸§ 3) ºí·°ÀÇ Á¤º¸¸¦ ÅëÇÑ ¿£Æ¼Æ¼ ºÐ¸® (exp-block) À§¿¡¼ È®ÀÎÇÑ ¹Ù¿Í °°ÀÌ ÇØ´ç BLOCKÀÇ Á¤º¸ÀÇ ³¡¿¡´Â ¿£Æ¼Æ¼ À̸§ÀÌ µé¾îÀִµ¥ À̰ÍÀ» ÀÌ¿ëÇϸé BLOCK ³»¿¡ ¾î¶² ¿£Æ¼Æ¼µéÀÌ Æ÷ÇԵǾîÀִ°¡¸¦ ¾Ë ¼ö ÀÖ´Ù.
Command: (setq en (cdr (assoc -2 (tblsearch "BLOCK" "TEST")))) <Entity name: 400009e5> Command: (entget en) ((-1 . <Entity name: 400009e5>) (0 . "LINE") (8 . "0") (10 0.0 0.0 0.0) (11 2.0 2.0 0.0) (210 0.0 0.0 1.0)) Command: (setq en (entnext en)) nil <= ´õ ÀÌ»ó BLOCK¿¡ Æ÷ÇÔµÈ entity°¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù´Â ¶æ À§ÀÇ °úÁ¤À» ÅëÇØ ¾ò¾î³½ ¿£Æ¼Æ¼ Áß 3DFACE, INSERT, LINE, POINT, POLYLINE, SEQEND, SOLID, TRACE, VERTEX¿¡ ´ëÇØ¼¸¸ »ðÀ﵃ ¶§ÀÇ X, Y scale¿¡ µû¸¥ ÁÂÇ¥º¯È¯ ÀÛ¾÷À» ¼öÇàÇϵµ·Ï ÇϰڴÙ. ±× Áß POLYLINE°ú SEQEND °°ÀÌ ±âÇÏÇÐÀûÀÎ ÀڷḦ °®Áö ¾Ê´Â ¿£Æ¼Æ¼ ÀÚ·á¿Í INSERTÀÇ °æ¿ì¸¦ Á¦¿ÜÇÏ¸é ¸ðµÎ 10, 11, 12, 13 Çʵ常À» »ç¿ëÇÑ´Ù. ¾Æ·¡¸¦ º¸ÀÚ.
À§ÀÇ ÀڷḦ Àß ºÐ¼®ÇØ º¸¸é °¢ ¿£Æ¼Æ¼µéÀ» ó¸®ÇÏ´Â ÇÔ¼ö¸¦ µû·Î µû·Î ÀÛ¼ºÇÒ Çʿ䰡 ¾øÀ½À» ¾Ë ¼ö ÀÖ´Ù. Áï, ÁÂÇ¥Á¡ÀÌ 1, 2, ±×¸®°í 4°³ÀÎ °æ¿ì¿¡ ´ëÇÑ Ã³¸® ÇÔ¼ö¸¸À» ÀÛ¼ºÇÏ¸é µÇ°Ú´Ù. ±×¸®°í, ºÐ¸®ÇÒ ¼ö ¾ø´Â ¿£Æ¼Æ¼°¡ ºí·°³»¿¡ Á¸ÀçÇÏ´Â °æ¿ì¿¡´Â ¿¡·¯¸¦ ¹ß»ý½Ã۰í ÀÛ¾÷À» °è¼Ó ¼öÇàÇÑ ÈÄ ÀϹÝÀûÀÎ EXPLODE ¸í·É¿¡¼Ã³·³ ¿ø·¡ ºí·°À» µµ¸é»ó¿¡¼ ¿ÏÀüÈ÷ »èÁ¦ÇÏÁö ¾Ê°í ±×´ë·Î µÐ´Ù. 4) ¿£Æ¼Æ¼ µ¥ÀÌŸÀÇ ÁÂÇ¥ º¯È¯ (calc-xpoint, subst-point, point?-exp) ¸ÕÀú, scaling, ±× ´ÙÀ½À¸·Î ¾Æ·¡¿¡ ÀÖ´Â ÀÍÈ÷ Àß ¾Ë°í ÀÖÀ» 2Â÷¿ø ȸÀüº¯È¯ °ø½ÄÀ» »ç¿ëÇϰí, ¸¶Áö¸·À¸·Î translationÀ» ÅëÇØ ¿£Æ¼Æ¼ÀÇ ÁÂÇ¥Á¡À» ÁÂÇ¥º¯È¯ÇÏ°Ô µÈ´Ù. À̹ø ¿¹Á¦¿¡¼´Â ÀÌ·¸°Ô ¾òÀº ÁÂÇ¥Á¡À» AutoCAD ¸í·É¿¡ Á÷Á¢»ç¿ëÇØ¼ ¿£Æ¼Æ¼¸¦ Àç»ý¼ºÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÏÁö ¾Ê°í, ENTMAKE ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© º¸´Ù ºü¸£°Ô ¿£Æ¼Æ¼¸¦ »ý¼ºÇÏ¿´´Ù. »ç½Ç, ENTMAKE ÇÔ¼ö¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é ¿£Æ¼Æ¼ÀÇ ¼±Çüųª ·¹ÀÌ¾î ¼³Á¤µîÀ» °¢°¢ ´Ù¸¥ AutoCAD ¸í·ÉÀ» »ç¿ëÇÏ¿© ¼öÇàÇÏ°Ô µÇ¹Ç·Î ÇÁ·Î±×·¥µµ º¹ÀâÇØÁö°Ô µÈ´Ù.
new_x = old_x * cos(ang) - old_y * sin(ang) new_y = old_x * sin(ang) + old_y * cos(ang) ±×¸®°í, BLOCK ¼Ó¿¡ ³»Æ÷µÈ BLOCKÀÇ °æ¿ì¿¡´Â »ðÀÔ À§Ä¡¿Í X, Y scale, Çà, ¿ÀÇ °£°Ý µ¥ÀÌŸ¸¦ º¯È¯ÇÑ ÈÄ BLOCK ÇüÅ ±×´ë·Î »ðÀÔÇÑ´Ù (INSERT-EXP ÇÔ¼ö ÂüÁ¶). 5) »õ·Î »ý¼ºµÈ ¿£Æ¼Æ¼µéÀ» ÇϳªÀÇ selection-setÀ¸·Î ¸¸µç´Ù.(pick-entity) ÀÌ ±â´ÉÀº EXPLODE ÀÌÈÄ¿¡ ºÐ¸®µÈ ¿£Æ¼Æ¼µéÀ» ÇѲ¨¹ø¿¡ Á¶ÀÛÇϱâ À§Çؼ ¶Ç´Â MINSERT µÈ BLOCKÀ» ºÐ¸®½ÃŲ ÈÄ¿¡ ARRAY Çϱâ À§ÇØ »ç¿ëµÈ´Ù. ÀÌ ±â´ÉÀÇ ±¸Çö °úÁ¤À» »ìÆìº¸¸é ¸ÕÀú, ¸ðµç ÀÛ¾÷¿¡ ¿ì¼±Çؼ ÇöÀç °¡Àå ¸¶Áö¸·À¸·Î »ý¼ºµÈ ¿£Æ¼Æ¼ÀÇ À̸§À» º¸°üÇØ µÎ¾ú´Ù°¡ ÇØ´ç ÀÛ¾÷ÀÌ ³¡³ ½ÃÁ¡¿¡¼ ÀúÀåÇØµÐ ¿£Æ¼Æ¼ ÀÌÈÄ·Î »ý¼ºµÈ ¸ðµç ¿£Æ¼Æ¼ÀÇ À̸§À» Á¶»çÇØ¼ Çϳª¾¿ »õ·Î ¸¸µç selection-set¿¡ Ãß°¡ÇÏ°Ô µÈ´Ù. ÀÌ ±â¹ýÀº ´Ù¸¥ ÇÁ·Î±×·¥¿¡¼µµ À¯¿ëÇÏ°Ô ¾²ÀÏ ¼ö ÀÖ´Â ±â¹ýÀ̹ǷΠÀß ÀÍÇôµÎ±â ¹Ù¶õ´Ù.
|
|||||||||||||||||||||||||||||||||||
°ü·Ã ÀÚ·á ![]() |
|||||||||||||||||||||||||||||||||||
Last updated 2002-09-06 by choi@moon-sun.com This page has been accessed : ![]() |