치수선 색상을 일괄적으로 변경하는 리습을 만들고 싶습니다.
컨텐츠 정보
- 9 조회
- 8 댓글
- 0 추천
- 0 비추천
- 목록
본문
치수선 색상 변경 리습을 챗gpt를 이용해서 짰는데 가운데 치수선 부분의 색상이 변경되질 않고 에러코드를 출력합니다.
이걸 해결할수 있는 방법이 있는지 도움을 요청드립니다.
(defun c:CDC ( / ss dimObj colorCode i)
;; 사용자로부터 변경할 색상 번호 입력
(setq colorCode (getint “n변경할 색상 번호를 입력하세요 (1~255): “))
(if (and colorCode (>= colorCode 1) (<= colorCode 255)) ; 색상 번호 유효성 검사
(progn
;; 사용자에게 치수 객체 선택 요청
(prompt “n색상을 변경할 치수를 선택하세요.”)
(setq ss (ssget ‘((0 . “DIMENSION”)))) ; 치수 객체만 선택
(if ss
(progn
(setq i 0)
(repeat (sslength ss)
(setq dimObj (vlax-ename->vla-object (ssname ss i)))
;; 치수 객체의 색상 오버라이드 설정
(vla-put-color dimObj colorCode) ; 객체 자체 색상 변경
(vla-put-ExtensionLineColor dimObj colorCode) ; 보조선 색상 변경
(vla-put-TextColor dimObj colorCode) ; 문자 색상 변경
;; DimStyleOverride로 치수선 색상 변경
(vla-put-Override dimObj “DIMCLRD” colorCode)
(setq i (1+ i))
)
(princ “n선택한 치수의 색상이 성공적으로 변경되었습니다.”)
)
(princ “n선택된 치수 객체가 없습니다.”)
)
)
(princ “n유효한 색상 번호를 입력하세요 (1~255).”)
)
(princ)
)
해당 코드로 리습을 만들면 에러코드가 뜨는데
객체 선택: ; 오류: no function definition: VLA-PUT-OVERRIDE
이 문구가 뜨면서 중단이 됩니다.
전체 색상을 컬러코드 8번으로 변경하려고 하는데 가운데 치수선만 변경이 되지 않습니다.
관련자료
캐드플러스님의 댓글
(defun c:CDC ( / ss dimObj colorCode def_colorCode i) ;; 사용자로부터 변경할 색상 번호 입력 (if (= nil def_colorCode) (setq def_colorCode 1)) (if (= (setq colorCode (acad_colordlg def_colorCode)) nil) (setq colorCode def_colorCode) (setq def_colorCode colorCode)) (progn ;; 사용자에게 치수 객체 선택 요청 ;(prompt “n색상을 변경할 치수를 선하세요.”) (setq ss (ssget ‘((0 . “DIMENSION”)))) ;;;;;;;;;;;;; ‘ ” 수정할것. (if ss (progn (setq i 0) (repeat (sslength ss) (setq dimObj (vlax-ename->vla-object (ssname ss i))) ;; 치수 객체의 색상 오버라이드 설정 (vla-put-color dimObj colorCode) ; 객체 자체 색상 변경 (vla-put-ExtensionLineColor dimObj colorCode) ; 보조선 색상 변경 (vla-put-TextColor dimObj colorCode) ; 문자 색상 변경 ;; DimStyleOverride로 치수선 색상 변경 ;(vla-put-Override dimObj “DIMCLRD” colorCode) ;;;; vla-put-Overrid ???????????????????? (setq i (1+ i)) ) ;(princ “n선택한 치수의 색상이 성공적으로 변경되었습니다.”) ) ;(princ “n선택된 치수 객체가 없습니다.”) ) ) ;(princ “n유효한 색상 번호를 입력하세요 (1~255).”) ) (princ) )