CAD/AutoLisp

[Subroutine] dcl의 창에서 선택받은 목록을 분리해서 리스트로

그냥이 2009. 5. 13. 21:36


;; dcl의 창에서 선택받은 목록을 분리해서 리스트로 돌려줌 : ("0 1 3 99") => (0 1 3 99)
(defun list2lst (str / n lst)
  (setq lst (list (atoi str)))
  (while (setq n (vl-string-position (ascii " ") str))
    (setq str (substr str (+ n 2)))
    (setq lst (append lst (list (atoi str))))
  )
  lst
)
;;사용예 레이어목록을 뿌려주고 여러개선택하여 받은값을 기준으로 선택된 레이어목록을 구성함.
  ......
  (start_list "layer_lst" 3)(mapcar 'add_list la-list)(end_list)
  ......
 ?(action_tile "layer_lst" "(setq select-lst $value)")
  ......
  (setq lst (list2lst select-lst))
  (setq layers (apply 'strcat (mapcar '(lambda (x) (strcat (nth x la-list) ",")) lst)))
  ......

;;///////////////////// dcl file /////////////////
pds_select_layer : dialog {
  label= "Layer Select dialog";
  key= "layer_txt";
  :list_box {
     key= "layer_lst";
     width= 25;
     height= 15;
     multiple_select= true;
  }
  ok_cancel;
}

출처 : http://cafe.daum.net/archimore/GiYt/68