AutoLISP °­ÁÂ [1]


1. ÀÔ¹®(I) - AutoLISPÀÇ ±âº» °³³ä
2. ÀÔ¹®(II) - »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö Á¦ÀÛ
3. ÀÔ¹®(III) - ±× ¹ÛÀÇ ±âº» ±â´Éµé
4. ÀÀ¿ë(I) - Entity¿Í Selection-Set
5. ÀÀ¿ë(II) - Symbol table°ú Device Á¦¾î
6. ÀÀ¿ë(III) - Dialogue box Á¦¾î
7. È°¿ë¿¹Á¦


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)


±×¸² 1. LISTÀÇ ÇÏÀ§ Ç¥Çö

¿©±â¼­ Æ÷ÀÎÅÍ(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. S-½ÄÀÇ ÇÏÀ§ Ç¥Çö

±×¸² 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·Î ¹®Àǹٶø´Ï´Ù.



°ü·Ã ÀÚ·á
disk [1] QE.LSP : ÆíÁý Áï½Ã ·Îµù(loading)½ÃÄÑÁÖ´Â ÇÁ·Î±×·¥

Last updated 2002-09-06 by choi@moon-sun.com
This page has been accessed : Counter times.
Home