오토리습의 리스트를 비쥬얼 리습에서 받으려면 어떻게 해야 하나요?
컨텐츠 정보
- 303 조회
- 2 댓글
- 0 추천
- 0 비추천
-
목록
본문
안녕하세요~
리습 초보가 몇일째 cad to excel 리습을 만들어 보려고 헤딩하고 있습니다.
1단계는 세팅설정
2단계는 세팅값을 토대로 해당 객체의 정보를 읽어와서 리스트로 정렬
3단계는 리스트를 엑셀에 가로방향으로 내보내기 인데요
제가 헤매고 있는 부분은 3단계 부분인데요.
지금 최종 리스트가
((x y z) (a b c) (e f g)) 이렇게 나오게 정리 했는데
이 리스트를 가져와서 엑셀에 뿌리려면 어떻게 해야 될까요?
다른 예제들은 ssget으로 선택이 된 선택세트를 가져오던데
그럼 리습에서
(setq ss1 (ssget)) –> ss1에 선택세트를 저장했을 경우
이 ss1을 비쥬얼 리습에서 받으려면 어떻게 해야 하나요?
힌트라도 주시면 열심히 풀어보겠습니다~~
만들고 있는 리습입니다.~~~
======================================================================
======================================================================
;1. 명령어 지정
(defun c:ee( / )
(setq $osmode (getvar "OSMODE"))
;2. 세팅 or 원점 선택
(setq Setting_S (getstring "nSetting => S, No_Sentting => Enter"))
(if (= Setting_S "s")
;;;;;;;;;setting
(progn
(setq BasePoint_BP (getpoint "nBase Point!!:"))
(if (= BasePoint_BP nil)
;기준점이 없을 경우 오류 메세지를 보낸다.
(progn
(prompt "nError!!!.")
(setvar "OSMODE" $osmode)
(exit)
)
;기준점이 있을 경우 x좌표와 y좌표를 저장한다.
(progn
(setq BP_x (car BasePoint_BP))
(setq BP_y (cadr BasePoint_BP))
)
)
;임의의 Cnr 값과 Xnr값을 정의한다.
(setq Cnr 1)
(setq Xnr 0)
(setq Old_List '())
;Xnr 값이 0이면 아래를 수행하라.
(while (= Xnr 0)
;Cnr번째 왼쪽 모서리 point 저장
(setq Left_CN (getpoint (strcat "nNo." (itoa Cnr) " Click left Coner!!:")))
(if (/= Left_CN nil)
;Left_CN 값이 있을 경우
(progn
(setq Right_CN (getpoint (strcat "nNo." (itoa Cnr) " Click Right Coner!!:")))
(setq Left_CN_x (car Left_CN))
(setq Left_CN_y (cadr Left_CN))
(setq Right_CN_x (car Right_CN))
(setq Right_CN_y (cadr Right_CN))
(setq Obj_Left_CN (list (- Left_CN_x BP_x) (- Left_CN_y BP_y) 0.0))
(setq Obj_Right_CN (list (- Right_CN_x BP_x) (- Right_CN_y BP_y) 0.0))
(setq New_List (list Obj_Left_CN Obj_Right_CN))
(setq Setting_List (append Old_List (list New_List)))
(setq Old_list Setting_List)
(setq Cnr (1+ Cnr))
(setq Left_CN nil)
)
;Left_CN 값이 없을 경우 Xnr 값에 1을 저장한다.
(setq Xnr 1)
)
)
;총 변수 갯수를 저장
(setq Last_Cnr (1- Cnr))
)
;;;;;;;;;Main
(progn
;임의의 값 정의한다.
(setq Group 1)
(setq Group_Text '())
(setq Group_Xnr 0)
;Group_Xnr 값이 0이면 아래를 수행하라.
(while (= Group_Xnr 0)
;Group번째 그룹 기준점 저장
(setq OriginPoint (getpoint (strcat "nGroup." (itoa Group) " Click originpoint:")))
(if (/= OriginPoint nil)
;OriginPoint 값이 있을 경우
(progn
(setq Nnr 1)
(setq Old_Text '())
(setvar "OSMODE" 0)
(command "_ucs" "_o" OriginPoint)
(while (<= Nnr Last_Cnr)
(setq ftr (list (cons 0 "TEXT,MTEXT")))
(setq e_ss (ssget "W" (nth 0 (nth (1- Nnr) Setting_list)) (nth 1 (nth (1- Nnr) Setting_list)) ftr))
(if (= (sslength e_ss) 1)
(progn
(setq e_na (ssname e_ss 0))
(setq e_en (entget e_na))
(setq e_text (cdr (assoc 1 e_en)))
(setq New_Text (append Old_Text (list e_text)))
(setq Old_Text New_Text)
(setq Nnr (1+ Nnr))
)
(progn
(prompt "nError!!!.")
(command "_ucs" "_w")
(setvar "OSMODE" $osmode)
(exit)
)
)
)
(command "_ucs" "_w")
(setvar "OSMODE" $osmode)
(setq Group_New_Text (append Group_Text (list Old_Text)))
(setq Group_Text Group_New_Text)
(setq Group (1+ Group))
(setq OriginPoint nil)
)
;OriginPoint 값이 없을 경우 Group_Xnr 값에 1을 저장한다.
(setq Group_Xnr 1)
)
(princ "n")
(princ Group_Text)
(princ)
)
;총 그룹 갯수를 저장
(setq Last_Group (1- Group))
)
)
(princ)
)
======================================================================
======================================================================
읽어주셔서 감사합니다.. 도움이 필요합니다.