AutoLISP °ÁÂ [1] |
1. ÀÔ¹®(I) - AutoLISPÀÇ ±âº» °³³ä |
AutoCAD¸¦ »ç¿ëÇÏ¸é¼ °¡Àå ¸ÕÀú ´À³¢´Â ºÒÆíÇÔÀº ¿ÀÈ÷·Á ±â´ÉÀÌ ³Ê¹« ¸¹´Ù´Â °ÍÀÌ ¾Æ´Ò±î »ý°¢µÈ´Ù. óÀ½ ½ÃÀÛÇÏ´Â ÀÔÀå¿¡¼´Â ¹°·ÐÀÌ°Å´Ï¿Í ÀÚÁÖ »ç¿ëÇÏ´Â ÀÔÀå¿¡¼´Â ´õ¿í ´õ Çϸ®¶ó º»´Ù. º°·Î »ç¿ëÇÏÁöµµ ¾Ê´Â ¼±ÅûçÇ×À̳ª ±â´Éµé ¶§¹®¿¡ ¸¹Àº ½Ã°£À» º¸³»¾ß ÇÑ´Ù¸é ±×°Í¸¸Å ºñÈ¿À²ÀûÀÎ ÀÏÀÌ ¶Ç Àְڴ°¡? ±×·¸´Ù°í Çؼ ÇÁ·Î±×·¥À» ÀÚ±â ÁÁÀ» ´ë·Î ¶â¾î °íÄ¥ ¼öµµ ¾ø´Â ÀÔÀåÀÌ°í º¸¸é ±×·± ºÎ´çÇÔÀ» ±×³É ³Ñ±æ ¼ö ¹Û¿¡ ¾ø´Â Áöµµ ¸ð¸£°Ú´Ù. ±×·¡¼ÀÎÁö, customizingÀÌ´Ï optimizingÀÌ´Ï ÇÏ´Â ¿ì¸®¸»·Î ¿Å±â±â¿¡µµ ¾î·Á¿î ÀÌ»óÇÑ ¿ë¾î¸¦ »ç¿ëÇؼ ÇÁ·Î±×·¥À» °³¼±ÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÏ°í ÀÖÀ½À» ÀÚ¶ûÇÏ´Â Áöµµ ¸ð¸£°Ú´Ù. ¾Æ¹«Æ° ÀÌ·± ±â´ÉÀ» ´Ù¾çÇÏ°Ô °¡Áø ÇÁ·Î±×·¥Àϼö·Ï Æí¸®ÇÑ°Ç »ç½ÇÀÌ´Ù. ¹°·Ð ¾î´À ¶§´Â ±×·± ±â´ÉÀÌ ¸¹Àº °Íµµ °øºÎÇÒ °ÍÀÌ ¸¹¾Æ¼ ºÎ´ãÀÌ µÈ´Ù. AutoCAD¿¡¼µµ ¿©·¯°¡Áö ¹æ½ÄÀ¸·Î À̸¦ Áö¿øÇÏ°í ÀÖÀ¸¸ç ¾Æ¹«·¡µµ °¡Àå Àû±ØÀûÀ̶ó°í ¸»ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº API(Application Programming Interface)¸¦ »ç¿ëÇؼ »ç¿ëÀÚ°¡ Á÷Á¢ ÇÊ¿äÇÑ ±â´ÉÀ» ÇÁ·Î±×·¡¹ÖÇÏ´Â °ÍÀ̸®¶ó. Ãʱ⿡´Â LISP¸¸ÀÌ Áö¿øµÇ¾úÀ¸¸ç ÇöÀç´Â Cµµ Áö¿øÇÑ´Ù. ¼º´ÉÁÁÀº C¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ½¿¡µµ ºÒ±¸ÇÏ°í LISPÀ» »ç¿ëÇÏ´Â ÀÌÀ¯´Â ¾Æ¸¶µµ LISPÀº ÀÎÅÍÇÁ¸®ÅÍ(interpreter)¹æ½ÄÀÇ ¾ð¾î¶ó¼ ±× ÇÁ·Î±×·¥ÀÌ ÀÛ¼ºµÈ platform¿¡ »ó°ü¾øÀÌ ¼öÇàÀÌ °¡´ÉÇÏÁö¸¸ C´Â ÄÄÆÄÀÏ·¯(compiler)¹æ½ÄÀÇ ¾ð¾î¶ó¼ ±× ÇÁ·Î±×·¥ÀÌ ÄÄÆÄÀÏµÈ platform¿¡¼¸¸ ¼öÇà°¡´ÉÇϱ⠶§¹®ÀÏ °ÍÀÌ´Ù. Áï, LISPÀ¸·Î µÈ °ÍÀº DOS³ª UNIX ȤÀº PC³ª Mac¿¡ »ó°ü¾øÀÌ ¼öÇàÀÌ °¡´ÉÇÏ´Ù. LISPÀº ´Ù¼Ò ¹è¿ì±â ±î´Ù·Î¿î ¸éÀÌ ÀÖ±ä ÇÏÁö¸¸ ±²ÀåÈ÷ ½¬¿î ¾ð¾îÀÌ¸ç »ç¿ëÇϱ⵵ ¸Å¿ì Æí¸®ÇÏ´Ù. ±×·¡¼, À̹ø °Á¿¡¼´Â ¸ðµç ´Ü°èÀÇ AutoCAD »ç¿ëÀÚµéÀ» ´ë»óÀ¸·Î Çؼ °¡±ÞÀû ±âÃÊÀûÀÎ °ÍºÎÅÍ ¾î·Á¿î °Í±îÁö ¸ðµç ³»¿ëÀ» ´Ù·ç·Á°í ³ë·ÂÇÒ °ÍÀÌ´Ù. Ãʺ¸ÀÚÀÇ °æ¿ì¿¡´Â Áö±ÝÀº ¾î·Æ´õ¶óµµ °Á°¡ ³¡³¯ ¶§Âë¿¡´Â ¸ðµç °ÍÀ» ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ³»¿ë Àü°³¸¦ Çسª°¥±î ÇÕ´Ï´Ù. ±×¸®°í, AutoLISPÀ¸·Î ÇÁ·Î±×·¡¹ÖÀ» ÀÌ°ÍÀú°Í Çسª°¡´Ùº¸¸é AutoCADÀÇ ¾î·Á¿î ±â´ÉµéÀ» ÀÌÇØÇÏ´Â µ¥µµ ¸¹Àº µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù. ±×·³, ±× ù¹ø° À̾߱⸦ ½ÃÀÛÇØ º¸°Ú½À´Ï´Ù. 1. AutoLISPÀÇ ±âº» °³³ä 1.1 AutoLISPÀ̶õ? AutoLISPÀº AutoCADÀÇ ÀÀ¿ë ÇÁ·Î±×·¥ °³¹ß ¾ð¾îÀ̸ç ÀΰøÁö´ÉÇü ½Ã½ºÅÛ, ƯÈ÷ Àü¹®°¡ ½Ã½ºÅÛ(expert system)ÀÇ ¿¬±¸¿Í °³¹ß¿¡ ÁÖ·Î »ç¿ëµÇ´Â LISP(List Processor) ¾ð¾îÀÇ ¹æ¾ð(dialect)ÁßÀÇ Çϳª¶ó°í º¼ ¼ö ÀÖ´Ù. ¿ª»ç°¡ ¿À·¡µÈ LISPÀº ²Ï³ª ¹æ¾ðÀÌ ¸¹Àº Æí¿¡ ¼ÓÇϴµ¥ ±× Áß¿¡¼ AutoLISPÀº David Michael Betz¿¡ ÀÇÇØ °³¹ßµÈ PC¿ëÀÎ XLISP ÀÎÅÍÇÁ¸®Å͸¦ ±â¹ÝÀ¸·Î ¸¸µé¾î Á³´Ù. LISPÀº ±× À̸§ÀÌ ¶æÇÏ´Â ¹Ù´ë·Î ¸®½ºÆ®(list)ÀÇ Ã³¸®¸¦ º¸´Ù ½±°Ô Çϱâ À§ÇØ ¸¸µé¾îÁø ¾ð¾îÀÌ´Ù. µû¶ó¼ ¸®½ºÆ®¿¡ ´ëÇÑ °³³äÀ» »¡¸® ½ÀµæÇÏ´Â °ÍÀÌ AutoLISPÀ» ÀÌÇØÇϴµ¥ »ó´çÇÑ µµ¿òÀÌ µÈ´Ù. ±×¸®°í AutoLISPÀº °Å±â¿¡ µ¡ºÙ¿© ÀÀ¿ë ÇÁ·Î±×·¥ Á¦ÀÛÀÌ ¿ëÀÌÇϵµ·Ï CADÀÇ ±×·¡ÇÈ µ¥ÀÌŸ 󸮸¦ À§ÇÑ ÇÔ¼öµé, ¿¹¸¦ µé¸é ±âÇÏÇÐÀû °è»êÀ» À§ÇÑ ¼öÇÐÇÔ¼ö¿Í entity¿Í selection-set µîÀÇ Ã³¸®¸¦ À§ÇÑ ÇÔ¼öµéÀÌ Æ÷ÇԵǾî ÀÖ´Ù. ±×·³, AutoLISPÀº °ú¿¬ ¾î¶² Á¡¿¡¼ Æí¸®ÇÑ °ÍÀϱî? ¿ì¼±, ¾ÆÁÖ °£´ÜÇÑ °ÍÀÌÁö¸¸, º¹ÀâÇÑ ¸í·É¾î ´Ü°è¸¦ ÁÙÀÏ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. ±×·¯³ª, ÀÌ°ÍÀº ½ºÅ©¸³Æ®(script)³ª ¸Þ´º(menu)¸¦ »ç¿ëÇؼµµ ¾òÀ» ¼ö ÀÖ´Â °á°úÀÌ´Ù. ±×·± ¹Ý¸é¿¡ ¾î¶² Á¶°Ç¿¡ µû¶ó º¯ÈµÇ´Â µµ¸é ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ´Ù´Â Á¡Àº ´Ù¸¥ ¾î¶² °ÍÀ¸·Îµµ Èä³»³¾ ¼ö ¾ø´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¸À» »ç¿ëÇؼ ¾òÀ» ¼ö ÀÖ´Â Æí¸®ÇÔÀ̸®¶ó. À̸¦ ÅëÇØ ¿ì¸®´Â ´Ü¼øÈ÷ AutoCAD¸¸À» »ç¿ëÇßÀ»¶§ º¸´Ù ºü¸¥ ½Ã°£¾È¿¡ º¸´Ù Á¤È®ÇÑ µµ¸éÀ» ¾òÀ» ¼ö ÀÖ´Ù. ¶ÇÇÑ, LISPÀº ¹®¹ýÀÌ °£´ÜÇؼ ÀÎÅÍÇÁ¸®ÅÍ Á¦ÀÛÀÌ ½±°í ±× Å©±â°¡ ÀÛ´Ù. ±×·¡¼ÀÎÁö ¾Æ¿¹ AutoCADÀÇ ¸í·É¾î Çؼ®±â(command interpreter)¿¡ LISP ÀÎÅÍÇÁ¸®ÅÍ°¡ Æ÷ÇԵǾî ÀÖ´Ù. µû¶ó¼, ¸ðµç ¸í·É¾î »ç¿ëÁß¿¡ AutoLISPÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î±×·¡¹ÖÀÌ Èûµé´õ¶óµµ °£´ÜÈ÷ ÇÊ¿äÇÑ ¿¬»êÀ̳ª¸¶ LISPÀ» ÀÌ¿ëÇÏ¿© ÇÒ ¼ö ÀÖÀ¸¸é ¸¹Àº µµ¿òÀÌ µÉ °ÍÀÌ´Ù. ¾Æ·¡¿¡ º¸ÀÎ ¿¹µéÀº ¸ðµÎ AutoCADÀÇ 'Command:' »óÅ¿¡¼ ½ÃÇèÇØ º¼ ¼ö ÀÖÀ¸¸ç Á÷Á¢ ÀÔ·ÂÇØ º¸½Ã±â¸¦ ±ÇÇÑ´Ù. 1.2 LISP°ú List Processing 1) ¼ýÀÚ(number)¿Í ½Éº¼(symbol) LISPÀÇ ±âº» ÀÚ·áÇüÀº ¼ýÀÚ¿Í ½Éº¼ÀÌ´Ù. ¼ýÀÚ´Â Á¤¼ö³ª ½Ç¼ö°ªÀ» °¡Áú ¼ö ÀÖ´Ù. ´ÙÀ½Àº ¼ýÀÚÀÇ ¿¹ÀÌ´Ù. 1 -2 3.0 4.0E-5 ½Éº¼Àº ÀÏ¹Ý ÇÁ·Î±×·¡¹Ö¾ð¾îÀÇ º¯¼ö¿Í ºñ½ÁÇÑ ÇüŸ¦ °¡Áø´Ù. ´ÙÀ½Àº ½Éº¼ÀÇ ¿¹ÀÌ´Ù. auto basic count 2) ¾ÆÅè(atom) LISPÀÇ ÀÚ·á ±¸Á¶¸¦ ±¸¼ºÇÏ´Â °¡Àå ±âº»ÀÌ µÇ´Â °ÍÀ¸·Î ¾ÆÅèÀ̶ó´Â °ÍÀÌ Àִµ¥ ÀÌ°ÍÀº ¼ýÀÚÀ̰ųª ½Éº¼ÀÏ ¼ö ÀÖ´Ù. ±× Áß¿¡¼ ´ÙÀ½ÀÇ µÎ°¡Áö ¾ÆÅèÀº Ưº°ÇÑ ¿ëµµ·Î Á¤ÀǵǾúÀ¸¹Ç·Î »õ·Ó°Ô Á¤ÀÇÇؼ »ç¿ëÇؼ´Â ¾ÈµÈ´Ù. t : ³í¸®ÀûÀÎ Âü(true)À» ¶æÇÑ´Ù. nil : ³í¸®ÀûÀÎ °ÅÁþ(false)°ú ºó¸®½ºÆ®(empty list) ()¸¦ ¶æÇÑ´Ù. µû¶ó¼, nilÀº ¾ÆÅèÀ̱⵵ ÇÏ°í ¸®½ºÆ®À̱⵵ ÇÏ´Ù. 3) ¸®½ºÆ®(list) LISP¿¡¼ ´Ù·ç¾î Áö´Â ¸®½ºÆ®´Â ÁÖ·Î ¸µÅ©µå ¸®½ºÆ®(linked list)¸¦ ÀǹÌÇÑ´Ù. ÀÌ ÀڷᱸÁ¶ÀÇ ÀåÁ¡Àº ÀÚ·áÀÇ »ðÀÔ°ú »èÁ¦°¡ ¿ëÀÌÇÏ´Ù´Â °ÍÀÌ´Ù. LISP¿¡¼´Â ¸®½ºÆ®¸¦ ´ÙÀ½°ú °°ÀÌ Ç¥ÇöÇÏ¸ç ±×°ÍÀ» ´Ù½Ã ¸Þ¸ð¸®»ó¿¡¼ÀÇ Ç¥Çö¹æ½ÄÀ¸·Î ¹Ù²Ù¸é ±×¸² 1°ú °°´Ù. (auto 1 basic 2 count) ¿©±â¼ Æ÷ÀÎÅÍ(pointer)´Â ÄÄÇ»ÅÍ ¸Þ¸ð¸®ÀÇ ¹°¸®ÀûÀÎ ÁÖ¼Ò¸¦ ¶æÇϸç nilÀº ¸®½ºÆ®ÀÇ ³¡À» ¶æÇÑ´Ù. LIST ÇÔ¼ö¸¦ »ç¿ëÇϸé À§¿Í °°Àº ÇüÅÂÀÇ ¸®½ºÆ®¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. Àμö·Î´Â ¾ÆÅèÀ̳ª ¸®½ºÆ®°¡ ¿Ã ¼ö ÀÖ´Ù.
Command: (list 1 2) (1 2) Command: (list 1 (list 2 3)) (1 (2 3)) 4) ÇÔ¼ö(function) ÇÔ¼ö¶õ ƯÁ¤ÀÇ ÇàÀ§¸¦ Çϰųª °è»êÀ» ¼öÇàÇÏ´Â ÇÁ·Î±×·¥ÀÇ ´ÜÀ§À̸ç LISP¿¡¼´Â ¸ðµç °ÍÀÌ ÇÔ¼ö¿¡ ÀÇÇØ ÀÌ·ç¾îÁö±â ¶§¹®¿¡ LISPÀ» ÇÔ¼öÀû ÇÁ·Î±×·¡¹Ö ¾ð¾î(functional programming language)¶ó°íµµ ºÎ¸¥´Ù.
Command: (print (+ 2 3)) 5 5 À§ÀÇ ¿¹¿¡¼ PRINT´Â ¼öÇàµÉ ÇÔ¼öÀÇ À̸§À̸ç (+ 2 3)Àº PRINT ÇÔ¼öÀÇ ½ÇÀμö°¡ µÈ´Ù. ±×¸®°í ¾Õ¿¡ ³ª¿Â 5´Â PRINT ÇÔ¼öÀÇ ¼öÇà°á°úÀÌ¸ç µÚ¿¡ ³ª¿Â 5´Â PRINT ÇÔ¼ö°¡ ¼öÇàµÈ °á°ú°ª(return value)ÀÌ´Ù. ÇÔ¼ö´Â ¼öÇàÀÌ ¿Ï·áµÇ¸é È£ÃâµÈ °÷À¸·Î ¼öÇàÇÑ °á°ú°ªÀ» ¹ÝȯÇØ¾ß ÇÑ´Ù. 5) S-½Ä(symbolic-expression) LISPÀº »ç¿ëÀÚ¿Í ´ëȽÄÀ¸·Î ¿î¿µµÇ´Â ÀÎÅÍÇÁ¸®Å͹æ½ÄÀÇ ¾ð¾îÀ̱⠶§¹®¿¡ ÇϳªÀÇ ÇÁ·Î±×·¥ÀÌ ¼öÇàµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó ÇϳªÀÇ ¹®Àå(statement)ÀÌ ¼öÇàµÈ´Ù. LISP¿¡¼´Â ÇÑ ¹®ÀåÀ» °¡¸£ÄÑ S-½ÄÀ̶ó°í ºÎ¸£¸ç S-½ÄÀº °ýÈ£·Î ¹¿©ÀÖ´Â ¹®ÀåÀ̳ª, ½Éº¼ ¶Ç´Â ¼ýÀÚ¸¦ ¶æÇÑ´Ù. ±×¸®°í ¸ðµç ¸®½ºÆ®´Â S-½ÄÀ¸·Î Ç¥Çö°¡´ÉÇÏ´Ù. (a) nilÀº S-½Ä¿¡¼µµ nilÀÌ´Ù. (b) ¾ÆÅèÀº S-½Ä¿¡¼µµ °°Àº ÇüÅÂÀÌ´Ù. (c) ¸®½ºÆ® (e1 e2 . . . eN)´Â S-½Ä (e1 . (e2 . ( . . . (eN . nil) . . . )))°ú °°´Ù. ±×¸®°í (c)ÀÇ °æ¿ì¿¡ ±× ¹Ý´ëÀÇ °æ¿ì°¡ Ç×»ó ¼º¸³ÇÏÁö´Â ¾Ê´Â´Ù. ´ÙÀ½ÀÇ ¿¹¸¦ º¸ÀÚ. (a) (2 . 3) (b) (2 . (3 . nil)) ±×¸² 2¸¦ º¸¸é (a)ÀÇ °æ¿ì¿¡´Â (b)¿Í´Â ´Þ¸® ¸®½ºÆ®¸¦ Ç¥ÇöÇÏ´ø °Í°ú Ç¥Çö¹æ½ÄÀÌ ´Ù¸§À» ¾Ë ¼ö ÀÖ´Ù. µû¶ó¼ (a)ÀÇ °æ¿ì¿¡´Â S-½ÄÀ¸·Î¸¸ Ç¥Çö°¡´ÉÇϸç (b)ÀÇ °æ¿ì´Â ¸®½ºÆ® (2 3)°ú °°´Ù. CONS ÇÔ¼ö¸¦ »ç¿ëÇϸé S-½ÄÀ» ¸¸µé ¼ö ÀÖÀ¸¸ç À§ÀÇ (b)¿Í °°Àº ¿ø¸®·Î ¸®½ºÆ®µµ ¸¸µé ¼ö ÀÖ´Ù.
Command: (cons 'a 2) (A . 2) Command: (cons 'b '(2 3)) (B 2 3) 6) CAR°ú CDR LISPÀ» °øºÎÇÏ´Ù º¸¸é ±× À̸§¸¸À¸·Î´Â Àǹ̸¦ Á¾Àâ±â°¡ Èûµç ÇÔ¼öµéÀÌ ÀÖ´Ù. Á¦¸ñ¿¡ ÀÖ´Â CAR°ú CDRµµ ±×·± ÇÔ¼öµé Áß¿¡ ¼ÓÇϸ®¶ó »ý°¢µÇ´Âµ¥ ¾Ë°í º¸¸é ¾ÆÁÖ Áß¿äÇÑ Àǹ̸¦ °¡Áö°í ÀÖ´Ù. ÀÌ µÎ ÇÔ¼öÀÇ À¯·¡¸¦ Àá½Ã »ìÆ캸¸é Ãʱ⿡ LISPÀÌ »ç¿ëµÇ´ø ½Ã±â·Î °Å½½·¯ ¿Ã¶ó °©´Ï´Ù. ±× ´ç½Ã LISPÀÌ »ç¿ëµÇ´ø IBM 704 ÄÄÇ»ÅÍ¿¡´Â ¸®½ºÆ®ÀÇ ¸Ó¸®¿Í ²¿¸®ÀÇ Á¤º¸¸¦ º¸°üÇÏ´Â 'Address' ·¹Áö½ºÅÍ¿Í 'Decrement' ·¹Áö½ºÅÍ°¡ ÀÖ¾ú´Âµ¥ ¹Ù·Î ÀÌ µÎ°³ÀÇ ·¹Áö½ºÅÍ À̸§¿¡¼ ³ª¿Â °ÍÀÌ CAR(Contents of the Address Register)°ú CDR(Contents of the Decrement Register) ÇÔ¼öÀÌ´Ù. ÀÌ ÇÔ¼öÀÇ ±â´ÉÀ» »ìÆ캸¸é À§ÀÇ ¼³¸í´ë·Î CARÀº ¸®½ºÆ®ÀÇ Ã¹¹ø° ¿ä¼Ò¸¦ ³ªÅ¸³»°í CDRÀº µÎ¹ø° ¿ä¼ÒºÎÅÍ ±× ÀÌÈÄÀÇ ¸ðµç °ÍÀ» ³ªÅ¸³½´Ù. ´ÙÀ½À» º¸¸é¼ ÀÌÇØÇØ º¸±â ¹Ù¶õ´Ù. ¸®½ºÆ® (e1 e2 . . . eN)´Â ¾Õ¼ ¼³¸íµå¸°´ë·Î ´ÙÀ½°ú °°Àº S-½ÄÀ¸·Î ³ªÅ¸³¾ ¼ö ÀÖ´Ù.
(e1 . (e2 . ( . . . (eN . nil) . . . ))) ¿©±â¼ CARÀº ´ÜÀÏ ¿ä¼Ò e1À» ³ªÅ¸³»°í CDRÀº ¿ä¼Ò e2ºÎÅÍ eN±îÁö¸¦ Æ÷ÇÔÇÏ´Â ¸®½ºÆ®, Áï S-½ÄÀÇ µÎ¹ø° ¿ä¼Ò¸¦ ³ªÅ¸³»°Ô µÈ´Ù. ±×¸®°í ÀÌ µÎ°³ÀÇ ÇÔ¼ö´Â 4´Ü°è±îÁö ¿¬°áÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é
(car (cdr L)) => (cadr L) (¸®½ºÆ®ÀÇ µÎ¹ø° ¿ä¼Ò)
(car (cdr (cdr L))) => (caddr L) (¸®½ºÆ®ÀÇ ¼¼¹ø° ¿ä¼Ò)
Command: (setq a '(1 2 3)) (1 2 3) Command: (car a) 1 Command: (cadr a) 2 Command: (caddr a) 3 À̸¦ ÀÌ¿ëÇÏ¿© ÁÂÇ¥Á¡À» Ç¥ÇöÇÏ´Â ¸®½ºÆ®¿¡¼ X ÁÂÇ¥°ªÀº CAR ÇÔ¼ö·Î Y ÁÂÇ¥°ªÀº CADR ÇÔ¼ö·Î Z ÁÂÇ¥°ªÀº CADDR ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¾òÀ» ¼ö ÀÖ´Ù. ÀÌ ¼¼°³ÀÇ ÇÔ¼ö¸íÀº ÀÚÁÖ »ç¿ëµÇ¹Ç·Î ¿Ü¿ö µÎ±â ¹Ù¶õ´Ù. 7) º¯¼öÀÇ »ç¿ë LISP¿¡¼´Â º¯¼ö¿¡ °ªÀ» ÁöÁ¤(assign)ÇÏ´Â °Í ¶ÇÇÑ ÇÔ¼ö¸¦ ÅëÇØ ÀÌ·ç¾îÁø´Ù. À̶§ »ç¿ëµÇ´Â ÇÔ¼ö°¡ SET°ú SETQÀ̸ç ÀÌ ÇÔ¼öÀÇ Æ¯Â¡Àº ÁöÁ¤ÇÑ º¯¼ö¿¡ °ª»Ó¸¸ ¾Æ´Ï¶ó ½ÄÀÚüµµ ÀúÀåÇÒ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù.
Command: (set 'a 1) <= º¯¼ö a¿¡ 1À» ÀúÀåÇÑ´Ù. 1 Command: (setq a 1) <= º¯¼ö a¿¡ 1À» ÀúÀåÇÑ´Ù. 1 Command: (setq a (+ 2 3)) <= º¯¼ö a¿¡ 2¿Í 3À» ´õÇÑ °ª 5¸¦ ÀúÀåÇÑ´Ù. 5 Command: (setq a '(+ 2 3)) <= º¯¼ö a¿¡ 2¿Í 3À» ´õÇÏ´Â ½ÄÀ» ÀúÀåÇÑ´Ù. (+ 2 3) À§¿Í °°ÀÌ º¯¼ö¿¡ °ªÀ̳ª ½ÄÀ» ¼³Á¤ÇÒ ¼ö ÀÖÀ¸¸ç ±× °ªÀ» AutoCAD»ó¿¡¼ ¾Ë¾Æº¼¶§´Â !¸¦ »ç¿ëÇÑ´Ù.
Command: !a <= º¯¼ö a¿¡ ÀúÀåµÇ¾î ÀÖ´Â °ªÀ» ¾Ë¾Æº»´Ù. (+ 2 3) 8) Àοë(quote)°ú Æò°¡(evaluation) LISP¿¡¼ ½ÄÀ» ó¸®ÇÏ´Â ¹æ½ÄÀº º¸Åë À§ÀÇ µÎ°¡Áö·Î ºÐ·ùÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº ½ÄÀÇ °ªÀ» Æò°¡Çϴ°¡ ÇÏÁö ¾Ê´Â°¡ÀÇ ¹®Á¦Àε¥ À§¿¡¼ ¹ú½á ±× ¿¹¸¦ µé¾ú´Ù. À§ÀÇ ¸¶Áö¸· ¿¹¸¦ º¸¸é '(quote) ¹®ÀÚ¸¦ »ç¿ëÇÑ °ÍÀÌ º¸ÀδÙ. ÀÌ ¹®ÀÚ°¡ º¸Åë QUOTE ÇÔ¼öÀÇ ¾àÀÚ·Î »ç¿ëµÇ´Â ±âÈ£ÀÌ´Ù. ¿¹¸¦ µé¸é 'a´Â (quote a)¿Í µ¿ÀÏÇÏ´Ù. ±×·³, ´Ù½Ã À§ÀÇ ¿¹¸¦ µé¾î µÎ°¡Áö ó¸® ¹æ½ÄÀÇ Â÷À̸¦ º¸ÀÚ.
(setq a (+ 2 3)) <= ¿©±â¼´Â ½ÄÀÇ °è»êÀ» ¼öÇàÇÑ´Ù. (Æò°¡)
(setq a '(+ 2 3)) <= ´Ü¼øÈ÷ ½Ä ÀÚü¸¦ ÀúÀåÇÑ´Ù. (Àοë) ¿©±â¼ Á¤¸®Çغ¸¸é 'ÀÇ ¿ªÇÒÀº LISP EvalutorÀÇ Æò°¡¸¦ ÁßÁö½ÃŲ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. Áï, '°¡ ¾Õ¿¡ ºÙ¾îÀÖ´Â ºÎºÐÀº ±×³É ÀÚü¸¦ ½Éº¼·Î½á ¹Þ¾ÆµéÀÌ°Ô µÈ´Ù. ±×·¡¼ ¾î¶² º¯¼ö¿¡ °ªÀ» ÁöÁ¤ÇÒ ¶§ ¾²´Â °¡Àå Àú±ÞÀÇ Ç¥ÇöÀº SET ÇÔ¼ö¸¦ »ç¿ëÇÏ°í º¯¼ö¸í¾Õ¿¡ '¸¦ ºÙÀÌ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀ» ÇϳªÀÇ ÇÔ¼ö·Î ó¸®ÇÑ °ÍÀÌ SETQ(SET+QUOTE) ÇÔ¼öÀÌ´Ù. ÆíÀÇ»ó SETQ¸¦ ¸¹ÀÌ »ç¿ëÇÑ´Ù. ´ÙÀ½ÀÇ ¿¹¸¦ º¸ÀÚ.
Command: (set 'c 5) <= º¯¼ö c¿¡ 5¸¦ ÀúÀåÇÑ´Ù. 5 Command: (set 'b 'c) <= º¯¼ö b¿¡ º¯¼ö c¸¦ ÁöÁ¤ÇÑ´Ù. (º¯¼ö b´Â º¯¼ö c¿¡ ´ëÇÑ Æ÷ÀÎÅÍ°¡ µÈ´Ù.) C Command: (set b 6) <= º¯¼ö b¿¡ '°¡ ¾øÀ¸¹Ç·Î Æò°¡ÇÑ °á°úÀÎ º¯¼ö c¿¡ 6À» ÀúÀåÇÑ´Ù. 6 Command: !c <= °á°úÀûÀ¸·Î º¯¼ö c¿¡ 6ÀÌ ÀúÀåµÈ´Ù. 6 À§ÀÇ ¿¹¿Í °°ÀÌ SETÀ» »ç¿ëÇÏ¸é º¯¼öÀÇ °£Á¢ÂüÁ¶±â´ÉÀ» »ç¿ëÇÏ¿© ´Ù¸¥ º¯¼öÀÇ °ªÀ» °£Á¢ÀûÀ¸·Î º¯È½Ãų ¼ö ÀÖ´Ù. ±×¸®°í, À§¿Í °°ÀÌ '¸¦ »ç¿ëÇÏ¿© ÇÔ¼ö½Ä ÀÚü¸¦ ÀúÀåÇÑ °æ¿ì¿¡ ±× ÇÔ¼ö½ÄÀÇ °á°ú°ªÀ» ¾Ë°íÀÚ ÇÒ¶§´Â !¸¸À¸·Î´Â ¾ÈµÇ°í ÇÔ¼ö½ÄÀ» Æò°¡ÇÏ´Â ÇÔ¼ö EVAL¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.
Command: (eval a) 5 1.3 AutoCAD¿¡ÀÇ Àû¿ë AutoLISP¿¡¼ ÁÂÇ¥Á¡Àº ¸®½ºÆ®ÀÇ ÇüÅ·Π»ç¿ëµÇ¸ç 3Â÷¿øÀÎ °æ¿ì´Â ¼¼°³ÀÇ ¿ä¼Ò°¡ ÀÖÀ¸¸é µÇ°í 2Â÷¿øÀÎ °æ¿ì´Â µÎ°³ÀÇ ¿ä¼Ò°¡ ÀÖÀ¸¸é µÈ´Ù.
Command: (setq a '(1.0 1.0 0.0)) <= º¯¼ö a¿¡ 1,1,0ÀÇ ÁÂÇ¥Á¡À» ÁöÁ¤ (1.0 1.0 0.0) Command: (setq b '(2.0 2.0 0.0)) <= º¯¼ö b¿¡ 2,2,0ÀÇ ÁÂÇ¥Á¡À» ÁöÁ¤ (2.0 2.0 0.0) À§¿¡¼ ÁÂÇ¥Á¡À» ÀÌ·ç´Â ¸®½ºÆ®¸¦ ¸¸µé±â À§ÇØ QUOTE ÇÔ¼ö¸¦ »ç¿ëÇÏ¿´´Âµ¥ ÀÌ·¯ÇÑ ¹æ½ÄÀº QUOTEÀÇ Æ¯¼º»ó ¸®½ºÆ®ÀÇ ¿ä¼ÒµéÀÌ »ó¼öÀ϶§¸¸ Àû¿ë°¡´ÉÇÏ´Ù. ÀϹÝÀûÀÎ °æ¿ì¿¡´Â ¾Õ¼ ¸»¾¸µå¸° LIST ÇÔ¼ö³ª CONS ÇÔ¼ö, ¶Ç´Â ±×¿ÜÀÇ ÇÔ¼öµéÀ» »ç¿ëÇÏ¿© ¸®½ºÆ®¸¦ ±¸¼ºÇÑ´Ù.
Command: (setq c '(a b)) (A B) <= º¯¼ö c´Â ´Ü¼øÈ÷ a¿Í b¶ó´Â ½Éº¼À» ´ãÀº ¸®½ºÆ®°¡ µÈ´Ù. Command: (setq c (list a b)) ((1.0 1.0 0.0) (2.0 2.0 0.0)) <= º¯¼ö c´Â ¸®½ºÆ® a¿Í b¸¦ Æ÷ÇÔÇÏ´Â ¸®½ºÆ®°¡ µÈ´Ù. ±×·³, ´Ù½Ã ÀÌ °ªµéÀ» AutoCAD¿¡¼ »ç¿ëÇØ º¸ÀÚ.
Command: LINE From point: !a To point: !b To point: À§¿Í °°ÀÌ Çϸé 1,1,0¿¡¼ 2,2,0¿¡ À̸£´Â ¼±À» ±×¸®°Ô µÈ´Ù.
Command: CIRCLE 3P/2P/TTR/<Center point>: !a Diameter/<Radius>: !b À§¿Í °°ÀÌ Çϸé Áß½ÉÁ¡ÀÌ 1,1,0ÀÌ°í 2,2,0À» Áö³ª´Â ¿øÀ» ±×¸®°Ô µÈ´Ù. ¢º TIP : AutoCADÀÇ ½Ã½ºÅÛ º¯¼öÁß¿¡´Â TEXTEVAL¶ó´Â °ÍÀÌ Àִµ¥ ÀÌ °ªÀ» ÀÌ¿ëÇϸé TEXT ¸í·É¾î »ç¿ëÁß¿¡µµ AutoLISPÀ» »ç¿ëÇÒ ¼ö ÀÖ°Ô µµ¿ÍÁØ´Ù. ¸ÕÀú TEXTEVAL °ªÀ» 0À¸·Î ÇÏ°í¼ ´ÙÀ½À» ¼öÇàÇØ º¸ÀÚ.
Command: TEXTEVAL New value for TEXTEVAL <0>: Command: TEXT Justify/Style/<Start point>: !a Height <0.2000>: 1 Rotation angle <0>: Text: (+ 2 3) ÀÌ °æ¿ì¿¡´Â AutoLISPÀ» »ç¿ëÇÒ ¼ö ¾ø¾î AutoLISPÀÇ ½ÄÀÌ ´Ü¼øÈ÷ ±ÛÀÚ·Î Ãâ·ÂµÈ´Ù. À̹ø¿¡´Â TEXTEVAL °ªÀ» 1·Î ÇÏ°í ¸¶Âù°¡Áö·Î ¼öÇàÇØ º¸ÀÚ. ±×·¯¸é (+ 2 3) ´ë½Å 5°¡ Ãâ·ÂµÈ´Ù. ´Ü, ÀÌ ±â´ÉÀº DTEXT ¸í·É¿¡¼´Â »ç¿ëÇÒ ¼ö ¾ø´Ù. ÀÌ»óÀ¸·Î °£´ÜÈ÷ °³³äÀûÀÎ ¼³¸íÀ» ¸¶Ä¡°í ´ÙÀ½È¸ºÎÅÍ´Â ½ÇÁ¦ÀûÀÎ ¹®Á¦¸¦ °°ÀÌ ÇØ°áÇØ °¡¸é¼ ÇÊ¿äÇÑ °³³äÀ» ¼³¸íÇÏ´Â ¹æ½ÄÀ¸·Î ÁøÇàÇÏ°Ú½À´Ï´Ù. ¸®½ºÆ® 1¿¡ ÀÖ´Â ÇÁ·Î±×·¥Àº LISP ÇÁ·Î±×·¥À» ÆíÁý Áï½Ã ÀÚµ¿À¸·Î LOAD ÇØÁÖ´Â ÇÁ·Î±×·¥ÀÌ´Ï À¯¿ëÇÏ°Ô »ç¿ëÇϽñ⠹ٶø´Ï´Ù. ¾ÕÀ¸·Îµµ ¸¹Àº °ü½É ºÎŹµå¸®¸ç °Á ³»¿ëÀ̳ª ±× ¹ÛÀÇ AutoLISP¿¡ °üÇÑ Áú¹® ÀÖÀ¸½Å ºÐÀº ÇÏÀÌÅÚ Ä³µåµ¿È£È¸³ª °³ÀÎ ID·Î ¹®Àǹٶø´Ï´Ù. |
°ü·Ã ÀÚ·á [1] QE.LSP : ÆíÁý Áï½Ã ·Îµù(loading)½ÃÄÑÁÖ´Â ÇÁ·Î±×·¥ |
Last updated 2002-09-06 by choi@moon-sun.com This page has been accessed : times. |