AutoLISP °ÁÂ [6] |
1. ÀÔ¹®(I) - AutoLISPÀÇ ±âº» °³³ä |
6. Dialogue box Á¦¾î À̹øÈ£¿¡¼´Â AutoCAD Release 12ºÎÅÍ Áö¿øµÇ´Â »ç¿ëÀÚ Á¤ÀÇ ´ÙÀ̾ó·Î±× ¹Ú½º¸¦ »ç¿ëÇÏ¿© µµ¸é»ó¿¡ Á¤ÀÇµÈ SYMBOL TABLEÀÇ ¸®½ºÆ®¸¦ º¸¿©ÁÖ°í ¼±ÅÃµÈ SYMBOLÀ» ÂüÁ¶ÇÏ´Â ¿£Æ¼Æ¼¸¦ »èÁ¦Çϰųª SYMBOL Á¤ÀÇ ÀÚü¸¦ »èÁ¦ÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ º¸°Ú´Ù. 6.1 Á¦¾î ÇÁ·Î±×·¥ÀÇ ±âº» ±¸¼º ´ÙÀ̾ó·Î±× ¹Ú½º Á¦¾î ÇÁ·Î±×·¥ÀÇ ±¸¼ºÀ» °£´ÜÈ÷ ¼³¸íÇÏ¸é ´ÙÀ½°ú °°´Ù.
(defun do-edit () <- ÁöÁ¤ÇÑ tileÀÌ ¼±ÅõǾúÀ» ¶§ ¼öÇàµÇ´Â ...... CALL BACK ÇÔ¼öÀÇ Á¤ÀÇ ) (defun do-accept () <- º¸Åë OK ¹öÆ°À» ¼±ÅÃÇÑ °æ¿ì ¼öÇà ...... <- ÇÊ¿äÇÑ ÀÛ¾÷À» ¼öÇàÇÑ´Ù (done_dialog) <- ´ÙÀ̾ó·Î±× ¹Ú½º¸¦ Á¾·á ) (defun main-dialog ( / dcl_id) (setq dcl_id (load_dialog "MAIN")) <- MAIN.DCL ÆÄÀÏÀ» ·ÎµåÇÑ´Ù. ; ÆÄÀϷε忡 ½ÇÆÐÇϸé ÇÁ·Î±×·¥À» Á¾·á (if (not (new_dialog "main_box" dcl_id)) (exit)) (set_tile "main_edit" "0") <- tileÀÇ °ªÀ» ¼³Á¤ ...... <- ¶Ç ´Ù¸¥ set_tile (mode_tile "main_but" 1) <- tileÀÇ »óŸ¦ ¼³Á¤ ...... <- ¶Ç ´Ù¸¥ mode_tile ; tileÀÌ ¼±ÅõǾúÀ» ¶§ ¼öÇàµÇ´Â ÇÔ¼ö Á¤ÀÇ (action_tile "main_edit" "(do-edit)") ; OK ¹öÆ°ÀÌ ¼±ÅÃµÈ °æ¿ì (action_tile "accept" "(do-accept)") ...... <- ¶Ç ´Ù¸¥ action_tile (start_dialog) <- ´ÙÀ̾ó·Î±× ¹Ú½º ½ÇÇà (unload_dialog dcl_id) <- ·ÎµåµÈ ´ÙÀ̾ó·Î±× ¹Ú½º Á¤ÀǸ¦ Á¦°Å ) (defun C:MAIN () ...... (main-dialog) <- MAIN ÇÁ·Î±×·¥³»¿¡¼ ´ÙÀ̾ó·Î±× ¹Ú½º ...... È£Ãâ ÇÔ¼ö¸¦ ¼öÇàÇÑ´Ù. ) À§¿¡¼´Â ¾ÆÁÖ °£´ÜÇÑ ¿¹¸¦ µç °ÍÀ̱ä ÇÏÁö¸¸ ´ëºÎºÐÀÇ °æ¿ì¿¡µµ ÀÌ ÀÌ»ó º¹ÀâÇØÁöÁö´Â ¾Ê´Â´Ù. ±×¸®°í, DCL ÆÄÀÏÀÌ ¿øÇÏ´Â ÇüÅ·Π³ª¿À´Â°¡¸¦ È®ÀÎÇϱâ À§Çؼ´Â ´ÙÀ½°ú °°Àº ¹æ¹ýÀ» ÀÌ¿ëÇØ º¸ÀÚ.
Command: (setq dcl_id (load_dialog "SYMBOL")) 1 <- ´ÙÀ̾ó·Î±× ¹Ú½ºÀÇ ID Command: (if (new_dialog "table_box" dcl_id) (start_dialog)) À§¿Í °°ÀÌ ÇÏ¸é ´ÙÀ̾ó·Î±× ¹Ú½º°¡ ȸé»ó¿¡ ³ªÅ¸³ª¸ç OK³ª CANCEL ¹öÆ°À» ´©¸£¸é Á¾·áµÉ °ÍÀÌ´Ù. ±×¸®°í, ¸¶Áö¸·À¸·Î ´ÙÀ½°ú °°ÀÌ ÇÏ¿© ·ÎµåµÈ ´ÙÀ̾ó·Î±× ¹Ú½º Á¤ÀǸ¦ Á¦°ÅÇÏ¸é µÈ´Ù.
Command: (unload_dialog dcl_id) nil 6.2 ´ÙÀ̾ó·Î±× ¹Ú½ºÀÇ ±¸¼º
´ÙÀ̾ó·Î±× ¹Ú½ºÀÇ ±¸¼ºÀ»
º¸´Ù ½±°Ô ÀÌÇØÇϱâ À§ÇØ ¸ÕÀú ÇÁ·Î±×·¥À» ¼öÇàÇØ º¸¸é¼ ¾Æ·¡
³»¿ëÀ» º¸±â ¹Ù¶õ´Ù.
1) ´ÙÀ̾ó·Î±× ¹Ú½º ÀÚü
6.3 Radio Button Á¦¾î (do-table ÇÔ¼ö ÂüÁ¶) ¶óµð¿À ¹öÆ°Àº ¿©·¯°¡Áö Ç׸ñµé Áß Çϳª¸¸À» ¼±ÅÃÇÒ ¶§ ÁÖ·Î »ç¿ëµÇ¸ç À̹ø ¿¹Á¦¿¡¼´Â »èÁ¦µÉ SYMBOLÀÇ TABLE ÇüŸ¦ ¼±ÅÃÇϱâ À§ÇØ »ç¿ëµÈ´Ù. ¶óµð¿À ¹öÆ°À» ±¸¼ºÇÏ´Â ÇüÅ´ Å׵θ®ÀÇ Á¸Àç¿©ºÎ¿Í ¹è¿¹æÇâ¿¡ µû¶ó ´ÙÀ½°ú °°Àº 4°¡Áö Çü½ÄÀÌ ÀÖÀ¸¸ç Á¦¾îÇÏ´Â ¹æ½ÄÀº µ¿ÀÏÇÏ´Ù.
* radio_column : ¼¼·Î ¹è¿ * radio_row : °¡·Î ¹è¿ * boxed_radio_column : ¼¼·Î ¹è¿, Å׵θ® ¹× Á¦¸ñ * boxed_radio_row : °¡·Î ¹è¿, Å׵θ® ¹× Á¦¸ñ ¸ÕÀú, DCL ÆÄÀÏ¿¡¼ ¶óµð¿À ¹öÆ° ±×·ì Àüü¿Í °¢°¢ÀÇ ¶óµð¿À ¹öÆ° Á¤Àǽÿ¡ Å°¸¦ ºÎ¿©ÇÑ´Ù. ±×·± ´ÙÀ½ Á¦¾î ÇÁ·Î±×·¥¿¡¼´Â ¼±ÅÃµÈ ¹öÆ°ÀÇ Å°¸¦ ¾ò¾î³»¾î ±×¿¡ µû¸¥ 󸮸¦ ¼öÇàÇÏ¸é µÈ´Ù. ¿¹Á¦¿¡¼´Â ¼±ÅÃµÈ ¹öÆ°ÀÇ Å°°ªÀ» ÅëÇØ Àü¿ªº¯¼ö #TABLETYPEÀÇ °ªÀ» ¼³Á¤ÇÑ ÈÄ ±× °ª¿¡ µû¶ó ¸®½ºÆ® ¹Ú½ºÀÇ ³»¿ëÀ» ¹Ù²Ù°í Á¦¸ñ°ú SYMBOL »èÁ¦ ÇÔ¼öµµ º¯°æÇÏ°Ô µÈ´Ù. Å×À̺íÀÇ ÇüÅ¿¡ µû¸¥ Å×À̺íÀÇ À̸§, Á¦¸ñ, ¹öÆ° Å°, ±×¸®°í SYMBOL »èÁ¦ ÇÔ¼ö´Â Àü¿ªº¯¼ö #TABLELIST¿¡ Á¤ÀǵǾî ÀÖÀ¸¸ç #TABLETYPEÀÇ °ªÀ¸·Î NTH ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ¾ò¾î³¾ ¼ö ÀÖ´Ù.
DCL ÆÄÀÏ¿¡¼... table_box : dialog { ...... : boxed_radio_column { <- Å׵θ®°¡ ÀÖ´Â ¼¼·Î ¹è¿ label = "Table Type"; <- ¶óµð¿À ¹öÆ° ±×·ìÀÇ Á¦¸ñ key = "type_but"; <- ¶óµð¿À ¹öÆ° ±×·ìÀÇ Å° : radio_button { <- °¢°¢ÀÇ ¶óµð¿À ¹öÆ° Á¤ÀÇ label = "Block"; <- ¶óµð¿À ¹öÆ°ÀÇ Á¦¸ñ mnemonic = "B"; <- ´ÜÃàÅ° Á¤ÀÇ key = "block_but"; <- ¶óµð¿À ¹öÆ°ÀÇ Å° } ...... <- °è¼ÓÇؼ ¶óµð¿À ¹öÆ°À» Á¤ÀÇ } ...... } Á¦¾î ÇÁ·Î±×·¥¿¡¼... (defun do-table ( / ret pat) ; ¶óµð¿À ¹öÆ° ±×·ì¿¡¼ ¼±ÅÃµÈ ¹öÆ°ÀÇ Å°¸¦ ¾ò¾î³½´Ù. (setq ret (get_tile "type_but")) ; ºí·°À» ¼±ÅÃÇÑ °æ¿ì ¼öÇàµÈ´Ù. (cond ((= ret "block_but") (setq #TABLETYPE 0)) ...... <- Å×À̺í ÇüÅ¿¡ µû¶ó ¼öÇàµÇ´Â ¸í·É ) ...... ; ¼±ÅÃµÈ Å×ÀÌºí¿¡ µû¶ó ´ÙÀ̾ó·Î±× ¹Ú½ºÀÇ Á¦¸ñÀ» ¹Ù²Û´Ù. (set_tile "table_title" ......) ; Ç×»ó ¸¶Áö¸·¿¡ ¼±ÅÃÇß´ø Ç׸ñÀÌ ´ÙÀ½ »ç¿ë½Ã¿¡ ; ÇöÀç ¼±Åà ¹öÆ°À¸·Î ³ªÅ¸³ª°Ô ÇÏ´Â ±â´ÉÀ» ¼öÇà (mode_tile (caddr (nth #TABLETYPE #TABLELIST)) 2) ; ¼±ÅÃµÈ Å×ÀÌºí¿¡ µû¶ó ¸®½ºÆ® ¹Ú½ºÀÇ ³»¿ëÀ» °»½Å (symbol-list "pat_list" ......) ; ¼±ÅÃµÈ Å×ÀÌºí¿¡ µû¶ó SYMBOL »èÁ¦ÇÔ¼ö¸¦ º¯°æ (setq erase-table (eval (cadddr (nth #TABLETYPE #TABLELIST)))) ) ...... ; ´ÙÀ̾ó·Î±× Á¤Àǽÿ¡ ¶óµð¿À ¹öÆ°ÀÇ ¼±ÅÃÀÌ ; º¯°æµÇ¸é ¼öÇàÇÒ CALL BACK ÇÔ¼ö¸¦ Á¤ÀÇ (action_tile "type_but" "(do-table)") ...... 6.4 List Box Á¦¾î ¸®½ºÆ® ¹Ú½º´Â ´ÙÀ̾ó·Î±× ¹Ú½º¸¦ ±¸¼ºÇÏ´Â ¿ä¼Òµé Áß ±²ÀåÈ÷ ó¸®Çϱâ Èûµç °Í Áß¿¡ Çϳª°¡ ¾Æ´Ò±î »ý°¢µÈ´Ù. ¹°·Ð, AutoLISP¿¡¼´Â º°°Ô ¾Æ´ÑÁö ¸ð¸£Áö¸¸ ADS·Î´Â ±²ÀåÈ÷ ±î´Ù·Î¿î °ÍÀÓ¿¡ Ʋ¸²¾ø´Ù. µû¶ó¼, AutoLISPÀ» ÅëÇØ ±× 󸮰úÁ¤À» È®½ÇÈ÷ ÀÌÇØÇÏ´Â °ÍÀÌ ÇÊ¿äÇϸ®¶ó »ý°¢µÈ´Ù. ¾Æ·¡¿¡¼ Áö±Ý ¸¸µé°íÀÚ ÇÏ´Â ¿¹Á¦ ÇÁ·Î±×·¥¿¡ »ç¿ëµÇ´Â ¸®½ºÆ® ¹Ú½ºÀÇ Ã³¸® ¹æ½Ä¿¡ ´ëÇØ ¼³¸íÇϱâ·Î ÇÏ°Ú´Ù. ¿ì¼± µÎ°³ÀÇ Àü¿ªº¯¼ö¸¦ ¼±¾ðÇÏÀÚ. Çϳª´Â ¼±ÅÃµÈ SYMBOLÀÇ À̸§À» ´ãÀ» #SYMBOLNAMEÀÌ°í ¶Ç ´Ù¸¥ Çϳª´Â ¸®½ºÆ® ¹Ú½º¿¡ µé¾î°¥ SYMBOLµéÀÇ À̸§ ¸®½ºÆ®¸¦ ´ãÀ» #LBDATAÀÌ´Ù. ±×·± ´ÙÀ½ ¸®½ºÆ® ¹Ú½º¿¡ µé¾î°¥ ¸®½ºÆ®¸¦ Á¤ÀÇÇÏÀÚ.1) ¸®½ºÆ® ¹Ú½º¿¡ ¸®½ºÆ® Ãß°¡ (symbol-list ÇÔ¼ö ÂüÁ¶) °£´ÜÇÏ°Ô ¸®½ºÆ® ¹Ú½º¿¡ ¾î¶² ¸®½ºÆ®¸¦ ´ã´Â ´Ü°è¸¦ º¸¸é ´ÙÀ½°ú °°´Ù.
(start_list "pat_list") <- ¸®½ºÆ® ¹Ú½º¿¡ ³»¿ëÃß°¡ ÀÛ¾÷À» ½ÃÀÛÇÑ´Ù. (add_list "TEST1") <- ¸®½ºÆ® ¹Ú½º¿¡ "TEST1"À̶ó´Â ³»¿ëÀ» Ãß°¡ ...... <- °è¼ÓÇؼ ¸®½ºÆ® ¹Ú½º¿¡ ³»¿ëÀ» Ãß°¡ (end_list) <- ¸®½ºÆ® ¹Ú½º ó¸® ÀÛ¾÷À» Á¾·áÇÑ´Ù. ÀÌ ÇÁ·Î±×·¥¿¡¼´Â ÇöÀç µµ¸é»ó¿¡ Á¸ÀçÇÏ´Â ÁöÁ¤µÈ ÇüÅÂÀÇ SYMBOL TABLEÀÇ À̸§µéÀ» ´ã°Ô µÇ¹Ç·Î ¸ÕÀú µµ¸é»ó¿¡ Á¸ÀçÇÏ´Â SYMBOL TABLEÀÇ À̸§ Áß ÁÖ¾îÁø ÆÐÅÏ°ú ÀÏÄ¡ÇÏ´Â À̸§À» ã¾Æ¼ add_list·Î Ãß°¡½ÃÅ°°í ÀÌÈÄ¿¡ ¾î¶² ¸®½ºÆ®°¡ ¼±ÅõǾú´Â°¡¸¦ È®ÀÎÇϱâ À§ÇØ Àü¿ªº¯¼ö #LBDATA¿¡µµ Ãß°¡½ÃŲ´Ù. 2) ¼±ÅÃµÈ Ç׸ñ ¾Ë¾Æ³»±â (do-patlist ÇÔ¼ö ÂüÁ¶)
; ¸®½ºÆ® ¹Ú½º»óÀÇ ¼±ÅÃµÈ Ç׸ñÀÇ À妽º ¹øÈ£¸¦ ¾ò¾î³½´Ù. (setq in (get_tile "pat_list")) ; À妽º ¹øÈ£¸¦ ÀÌ¿ëÇÏ¿© Àü¿ªº¯¼ö #LBDATA¸¦ ; ÂüÁ¶ÇÏ¿© ½ÇÁ¦ ¸®½ºÆ® ³»¿ëÀ» ¾ò¾î³½´Ù. (setq in (nth (atoi in) #LBDATA)) ; ÀÓ½ÃÀûÀ¸·Î SELECTION EDIT BOX »ó¿¡ ¼±ÅÃµÈ ³»¿ëÀ» ÁöÁ¤ÇÑ´Ù. (set_tile "sel_edit" in) 3) »ç¿ëÀÚ°¡ Á÷Á¢ SYMBOL ¸íÀ» ÀÔ·ÂÇÏ´Â °æ¿ì (do-select ÇÔ¼ö ÂüÁ¶) SELECTION EDIT BOX¸¦ »ç¿ëÇÏ¿© »ç¿ëÀÚ°¡ Á÷Á¢ SYMBOL ¸íÀ» ÀÔ·ÂÇÏ´Â °æ¿ì¿¡´Â ÀÔ·ÂµÈ SYMBOL ¸íÀÌ ½ÇÁ¦·Î Á¸ÀçÇϴ°¡¸¦ È®ÀÎÇÑ´Ù. ½ÇÁ¦·Î Á¸ÀçÇϸé #SYMBOLNAMEÀ» ÀÔ·ÂµÈ SYMBOL ¸íÀ¸·Î ¼³Á¤ÇÏ°í Á¸ÀçÇÏÁö ¾ÊÀ¸¸é ¿¡·¯¸¦ ¹ß»ý½ÃŲ´Ù. 4) OKÀ϶§ ó¸® (do-accept ÇÔ¼ö ÂüÁ¶) OK ¹öÆ°ÀÌ ¼±ÅõǸé SELECTION EDIT BOXÀÇ ³»¿ëÀ» È®ÀÎÇÑ ÈÄ Á¸ÀçÇÏÁö ¾Ê´Â SYMBOL ¸íÀÎ °æ¿ì´Â ¿¡·¯¸¦ ¹ß»ý½ÃÅ°°í, ÇÁ·Î±×·¥À» °è¼Ó ÁøÇàÇϸç Á¸ÀçÇÏ´Â SYMBOL ¸íÀÎ °æ¿ì¿¡´Â ´ÙÀ̾ó·Î±× ¹Ú½º¸¦ Á¾·áÇÑ´Ù. 6.5 ±×¿ÜÀÇ ±â¹ý 1) ´ÙÀ̾ó·Î±× ¹Ú½ºÀÇ Å¸ÀÌƲÀ» ¹Ù²Ù°í ½ÍÀ» ¶§ ´ÙÀ̾ó·Î±× ¹Ú½ºÀÇ Á¦¸ñÀº DCL ÆÄÀÏ ³»¿¡¼ label·Î ¼³Á¤µÇÁö¸¸ ÀÌ°ÍÀ» ÇÁ·Î±×·¥ ¼öÇàÁß¿¡ ¹Ù²Ù°í ½ÍÀ¸¸é DCL ÆÄÀÏÀÇ dialog Ç׸ñ¿¡ key¸¦ ¼³Á¤ÇØ µÎ°í Á¦¾î ÇÁ·Î±×·¥¿¡¼ °ªÀ» ¹Ù²ãÁÖ¸é µÈ´Ù.
DCL ÆÄÀÏ¿¡¼... table_box : dialog { key = "table_title"; ...... } Á¦¾î ÇÁ·Î±×·¥¿¡¼... ...... (set_tile "table_title" "Layers Defined in this Drawing") ...... ¿¹Á¦ ÇÁ·Î±×·¥¿¡¼´Â ÀÌ¿Í °°Àº ¹æ¹ýÀ¸·Î TABLEÀÇ ÇüÅ¿¡ µû¶ó ´ÙÀ̾ó·Î±× ¹Ú½ºÀÇ Á¦¸ñÀ» ¹Ù²Ù°í ÀÖ´Ù. 2) ´ÙÀ̾ó·Î±× ¹Ú½º»ó¿¡¼ÀÇ ERROR ¹® Ãâ·Â ¹öÆ°À» ok_cancel_err·Î ¼³Á¤Çϸé OK¿Í Cancel µÎ°³ÀÇ ¹öÆ°ÀÌ »ý±â°í ¹ØºÎºÐ¿¡ ÇÑÁÙÁ¤µµÀÇ ºóÄÀÌ »ý±ä´Ù. ÀÌ ºÎºÐÀÌ ¿¡·¯¸Þ½ÃÁö°¡ ½áÁö´Â ºÎºÐÀε¥ ÀÌ ºÎºÐ¿¡ ¸Þ½ÃÁö¸¦ ¾²°í ½ÍÀ» ¶§´Â "error" Å°ÀÇ °ª¿¡ ÇÊ¿äÇÑ ¸Þ½ÃÁö¸¦ ¼³Á¤Çϱ⸸ ÇÏ¸é µÈ´Ù.
DCL ÆÄÀÏ¿¡¼... table_box : dialog { ...... ok_cancel_err; } Á¦¾î ÇÁ·Î±×·¥¿¡¼... ...... (set_title "error" "Invalid LAYER name.") ...... 3) SSGET ÇÔ¼öÀÇ X ¿É¼Ç (erase-entity ÇÔ¼ö ÂüÁ¶) SSGET ÇÔ¼öÀÇ X ¿É¼ÇÀº ÁöÁ¤µÈ Ç׸ñ¿¡ ÇØ´çµÇ´Â ¿£Æ¼Æ¼µéÀ» selection-setÀ¸·Î ¸¸µé¾î ÁÖ´Â ±â´ÉÀ» ÇÑ´Ù. À̶§ ¸¸ÀÏ ÁöÁ¤ÇÑ Ç׸ñ¿¡ ÇØ´çµÇ´Â ¿£Æ¼Æ¼°¡ Çϳªµµ ¾øÀ» °æ¿ì¿¡´Â nilÀ» ¹ÝȯÇÏ°Ô µÈ´Ù. µû¶ó¼, ±×·± °æ¿ì¿¡ ´ëÇÑ Ã³¸® ¹æ¹ýÀÌ ÇÊ¿äÇÏ´Ù.
(if (setq ss (ssget "X" (list (cons 8 ln)))) ; ¼±ÅÃµÈ ¿£Æ¼Æ¼µéÀ» »èÁ¦ÇÑ´Ù. (command "ERASE" ss) ; ÁöÁ¤ÇÑ ·¹À̾ ÂüÁ¶ÇÏ´Â ¿£Æ¼Æ¼°¡ ¾øÀ½À» ¾Ë·ÁÁØ´Ù. (princ "\nUnreferenced LAYER.") ) ±×¸®°í, ¿¹Á¦ ÇÁ·Î±×·¥¿¡¼´Â BLOCK, DIMSTYLE, LAYER, LTYPE, STYLE¿¡ ´ëÇؼ´Â ½ÇÁ¦·Î SYMBOL TABLE ³»¿¡¼ ¿ÏÀüÈ÷ SYMBOLÀ» »èÁ¦ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó À§¿Í °°ÀÌ ±× SYMBOLÀ» ÂüÁ¶ÇÏ´Â ¿£Æ¼Æ¼µé¸¸À» »èÁ¦ÇÑ´Ù. µû¶ó¼, À§ÀÇ ÇÔ¼ö ¼öÇàÀÌÈÄ¿¡ PURGE ÇÔ¼ö¸¦ ¼öÇàÇÏ¿© ÁöÁ¤ Å×À̺íÀ» ¿ÏÀüÈ÷ »èÁ¦Çϱ⠹ٶõ´Ù. |
°ü·Ã ÀÚ·á ![]() ![]() |
Last updated 2002-09-06 by choi@moon-sun.com This page has been accessed : ![]() |