프로그램
캐드 분류

블럭 색상 일괄로 변경해주는 리습인데 봐주세요

컨텐츠 정보

  • 279 조회
  • 4 댓글
  • 0 추천
  • 0 비추천
  • 목록

본문

저는 초보구요… 고캐드 옛날 자료 검색하다가 줏은것이라서 잘알지 못합니다

블럭생상 일괄변경하는 기능이 꼭필요해서 자문을 구합니다

명령어가 CXX 인것같은데 실행이 안되는 상황이구요

원 글에서는 Error: no function definition: VLAX-GET-ACAD-OBJECT 에러나 난다고하여
댓글 답변에 앞이나 끝부분에 (vl-load-com) 추가하여 실행된다고 하여 저도 앞부분에 추가했습니다.

도움부탁드립니다~



(vl-load-com)
(defun c:cxx ( / oDocument change:colorinblock Sset objList ci)
  (setq oDocument (vla-get-activedocument (vlax-get-acad-object)))
  (defun change:colorinblock ( BlockName Color oDocument )
    (vlax-for obj (vla-item (vla-get-blocks oDocument) BlockName)
      (vla-put-color obj Color)
      (if (eq (vla-get-objectname obj) "AcDbBlockReference")
        (progn
          (foreach Att (vlax-invoke obj 'getattributes) (vla-put-color Att Color))
          (change:colorinblock (vla-get-name obj) Color oDocument)
        )
      )
    )
  )
  (vla-startundomark oDocument)


  (and
    (setq ci (getint "n바꿀 색상을 입력하세요 … : "))
    (princ (strcat "n선택한 객체의 색상을" (itoa ci) " 번으로 변경합니다 …"))
    (setq Sset (ssget))
    (setq objList (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex Sset)))))
    (foreach obj objList
      (vla-put-color obj ci)
      (if (eq (vla-get-objectname obj) "AcDbBlockReference")
        (progn
          (foreach Att (vlax-invoke obj 'getattributes) (vla-put-color Att ci))
          (change:colorinblock (vla-get-name obj) ci oDocument)
        )
      )
      (if (eq (cdr (assoc 0 (entget (vlax-vla-object->ename obj)))) "DIMENSION")
        (progn
          (vl-catch-all-apply 'vla-put-textcolor (list obj ci))
          (vl-catch-all-apply 'vla-put-dimensionlinecolor (list obj ci))
          (vl-catch-all-apply 'vla-put-extensionlinecolor (list obj ci))
        )
      )
    )
  )
  (vla-endundomark oDocument)
  (princ)
)

관련자료

댓글 4

순라면진한맛님의 댓글

답변감사합니다!

다른자리에서 시도해보고 캐드 재설치등 방법을 찾아볼게요

수야12님의 댓글

작동 하는데요?? 아무것도 안건들고 그냥 드래그& 드롭했습니다 녹화_2020_05_18_12_13_11_2.gif

여분필드1 여분필드2 여분필드3
전체 7,337 / 1 페이지
번호
제목
이름
알림 0