(defun c:c2p(/ a b lay rad cen pt1 pt2 pt3 pt4)
(setq lay (getvar “clayer”))
(setq a(entsel “n 원 선택 : “))
(setq b (entget (car a)))
(setq cen (cdr (assoc 10 b)))
(command “color” “4” “” “”)
(command “point” cen “” “”)
(command “erase” a “” “”)
(command “color” “bylayer” “” “”)
(princ “n ksj program”)
(princ)
)
이게 기존에 쓰는건데, 원을 점으로 바꾸면서 색상 변경하는 리습인데요.
알아보니 entsel 은 단일객체 선택으로만 되더라구요.
복수객체는 ssget 를 써야된다고 하는데 ssget로 바꿔도 선택이후에 에러가 나면서 진행이 안되네요.
아직 지식이 얕다보니 모르는게 많습니다. 도움 부탁드려요..
공유
(defun C:C2P (/ ss no tn)
(prompt “nCIRCLE (원) 객체만 선택됩니다.”)
(if (setq ss (ssget “:l” ‘((0 . “circle”))))
(progn
(setq no (sslength ss)
tn 0
)
(while (> no tn)
(setq en (entget (ssname ss tn))
cn (cdr (assoc 10 en))
)
(command “color” “4” “point” cn)
(command “color” “bylayer”)
(setq tn (1+ tn))
)
(command “erase” ss “”)
)
)
(princ)
VLA 함수 적용하면 좀 빠르고 명령창이 깔끔하게 될 것입니다.
첨부 파일은 VLA 함수 적용해서 주석 달아놨으니 쉽게 이해 하실것입니다.
즐거운 시간 되세요.
감사합니다. 이제 뜯어보면서 연구해봐야겠네요 ㅎㅎ
좋은 하루되세요!