(defun c:Test ()
;; Tharwat 15. April. 2013 ;;
(progn (princ “n Select single attributed block :”)
(setq ss (ssget “_+.:S” ‘((0 . “INSERT”) (66 . 1))))
)
(setq n (entnext (ssname ss 0)))
(while (not (eq (cdr (assoc 0 (setq e (entget n)))) “SEQEND” ))
(if (eq (cdr (assoc 0 e)) “ATTRIB”)
(print (cdr (assoc 1 e)))
)
(setq n (entnext n))
)
(princ)
)
===================================================
위 리습은 리습을 실행하고 블록을 선택하면
그 블록의 고급 속성의 값들만 따로 출력해주는 리습입니다.
제가 궁극적으로 만드려고 하는 리습은 이 값들을 현재 엑셀에 띄워져 있는 일정 위치의 값들로 일괄변경 하는 리습인데요.
일단 그러려면 블록들의 속성값을 변수에 저장해야 한다고 생각해서
고급 블록의 속성값을 get해주는 리습을 외국 포럼에서 찾아다니다가 발견한 게 위 리습입니다.
while문으로 속성값들을 걸러서 결과값이 출력되는것까지는 이해했습니다.
이게 while문으로 나온 값들이 print되는것까지는 좋은데
여기서 이 결과값들을 도저히 변수로 넣는 방법을 모르겠습니다..
프로그램쪽 전공도 아니고 리습 제작도 처음 해보느라 맨땅에 헤딩 수준입니다…
일주일동안 포럼찾고 검색 계속 돌리다가(고급 블록, 블록 속성 등등으로 여기서도 검색해봄..)
도저히 모르겠어서 이렇게 올립니다.. 도와주세요.. 어떻게 해야 할까요
setq 함수(도움말 참고)
setq 함수를 어디에 어떻게 쓰면 되는지 알려주십시오.
그리고 변수에 넣을 필요없이 바로 엘셀로 옮겨도 됩니다
질문글에도 이미 썼다시피, “일단은” while문으로 나온 결과값들을 변수에 담고 싶습니다. 다른 것들은 다 되는데 그 부분만 막히는 거라서요.
예를 들자면, 블록의 고급 속성의 속성값이 a b c d e f 이렇게 6개가 있다고 가정했을 때 print를 쓰면 “a” “b” “c” “d” “e” “f” 로 출력이 되는데, print 부분을 setq로 바꾸면 변수 LL에는 “f”만 들어가 있게 됩니다. 저는 변수 LL에 “a b c d e f” 가 들어가게 하고 싶은 거구요.
해결했습니다. 감사합니다.