비밀번호를 잊으셨나요?

비밀번호를 잊으셨나요? 비밀번호를 재설정하려면 이메일 주소를 입력해주세요.

계정이 있나요? 로그인

You must login to ask a question.

비밀번호를 잊으셨나요?

아직 계정이 없으신가요? 회원가입 하기

해당 질문을 신고하는 이유를 간단히 입력해주세요.

해당 답변을 신고하는 이유를 간단히 입력해주세요.

해당 유저를 신고하는 이유를 간단히 입력해주세요.

로그인회원가입

고캐드 – 캐드(CAD) 정보의 중심

고캐드 – 캐드(CAD) 정보의 중심 Logo 고캐드 – 캐드(CAD) 정보의 중심 Logo

고캐드 – 캐드(CAD) 정보의 중심 Navigation

  • Q&A
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 커뮤니티
    • 오늘의이슈
    • 자유게시판
    • 익명게시판
    • 건의게시판
  • 자료실
    • 자료요청
    • 일반파일
    • 도면샘플
    • 유틸리티
    • 기타
  • 작품 갤러리
    • 그래픽
    • 캐드도면
    • 3D모델
    • 기타
  • 뉴스&이벤트
    • 공지사항
    • 뉴스
    • 전시/행사
    • 이벤트
    • 기타
검색
질문하기

Mobile menu

닫기
질문하기
  • 홈
  • 카테고리
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 투표
  • 커뮤니티 그룹
  • Q&A
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 커뮤니티
    • 오늘의이슈
    • 자유게시판
    • 익명게시판
    • 건의게시판
  • 자료실
    • 자료요청
    • 일반파일
    • 도면샘플
    • 유틸리티
    • 기타
  • 작품 갤러리
    • 그래픽
    • 캐드도면
    • 3D모델
    • 기타
  • 뉴스&이벤트
    • 공지사항
    • 뉴스
    • 전시/행사
    • 이벤트
    • 기타
홈/ 질문/Q 106688
다음
진행 중
Lv.0
등록일: 2016-05-302016-05-30T14:12:23+09:00 2016-05-30T14:12:23+09:00카테고리: AutoCAD & CADian

블록안의 블록 이름바꾸는 리습 질문요

CB명령어를 쳐서 블록안에 블록을 치면 원본블록은 그대로 있고 그위에 겹쳐서 다른블록이 생성되는데 원본블록이 지워지게끔 가능하게 고수님 수정좀 해주세요


(defun c:cb nil (LM:RenameBlockReference   t))
(defun c:rb nil (LM:RenameBlockReference nil))


(defun LM:RenameBlockReference ( cpy / *error* abc app dbc dbx def doc dxf new old prp src tmp vrs )


    (defun *error* ( msg )
        (if (and (= ‘vla-object (type dbx)) (not (vlax-object-released-p dbx)))
            (vlax-release-object dbx)
        )
        (if (not (wcmatch (strcase msg t) “*break,*cancel*,*exit*”))
            (princ (strcat “nError: ” msg))
        )
        (princ)
    )
   
    (while
        (progn
            (setvar ‘errno 0)
            (setq src (car (entsel (strcat “nSelect block reference to ” (if cpy “copy & ” “”) “rename: “))))
            (cond
                (   (= 7 (getvar ‘errno))
                    (princ “nMissed, try again.”)
                )
                (   (= ‘ename (type src))
                    (setq dxf (entget src))
                    (cond
                        (   (/= “INSERT” (cdr (assoc 0 dxf)))
                            (princ “nPlease select a block reference.”)
                        )
                        (   (= 4 (logand 4 (cdr (assoc 70 (tblsearch “layer” (cdr (assoc 8 dxf)))))))
                            (princ “nSelected block is on a locked layer.”)
                        )
                    )
                )
            )
        )
    )
    (if (= ‘ename (type src))
        (progn
            (setq app (vlax-get-acad-object)
                  doc (vla-get-activedocument app)
                  src (vlax-ename->vla-object src)
                  old (vlax-get-property src (if (vlax-property-available-p src ‘effectivename) ‘effectivename ‘name))
                  tmp 0
            )
            (while (tblsearch “block” (setq def (strcat (vl-string-left-trim “*” old) “_” (itoa (setq tmp (1+ tmp)))))))
            (while
                (and (/= “” (setq new (getstring t (strcat “nSpecify new block name <” def “>: “))))
                    (or (not (snvalid new))
                        (tblsearch “block” new)
                    )
                )
                (princ “nBlock name invalid or already exists.”)
            )
            (if (= “” new)
                (setq new def)
            )
            (setq dbx
                (vl-catch-all-apply ‘vla-getinterfaceobject
                    (list app
                        (if (< (setq vrs (atoi (getvar ‘acadver))) 16)
                            “objectdbx.axdbdocument”
                            (strcat “objectdbx.axdbdocument.” (itoa vrs))
                        )
                    )
                )
            )
            (if (or (null dbx) (vl-catch-all-error-p dbx))
                (princ “nUnable to interface with ObjectDBX.”)
                (progn
                    (setq abc (vla-get-blocks doc)
                          dbc (vla-get-blocks dbx)
                    )
                    (vlax-invoke doc ‘copyobjects (list (vla-item abc old)) dbc)
                    (if (wcmatch old “`**”)
                        (vla-put-name (vla-item dbc (1- (vla-get-count dbc))) new)
                        (vla-put-name (vla-item dbc old) new)
                    )
                    (vlax-invoke dbx ‘copyobjects (list (vla-item dbc new)) abc)
                    (vlax-release-object dbx)
                    (if cpy (setq src (vla-copy src)))
                    (if
                        (and
                            (vlax-property-available-p src ‘isdynamicblock)
                            (= :vlax-true (vla-get-isdynamicblock src))
                        )
                        (progn
                            (setq prp (mapcar ‘vla-get-value (vlax-invoke src ‘getdynamicblockproperties)))
                            (vla-put-name src new)
                            (mapcar
                               ‘(lambda ( a b )
                                    (if (/= “ORIGIN” (strcase (vla-get-propertyname a)))
                                        (vla-put-value a b)
                                    )
                                )
                                (vlax-invoke src ‘getdynamicblockproperties) prp
                            )
                        )
                        (vla-put-name src new)
                    )
                    (if (= :vlax-true (vla-get-isxref (setq def (vla-item (vla-get-blocks doc) new))))
                        (vla-reload def)
                    )
                    (if cpy (sssetfirst nil (ssadd (vlax-vla-object->ename src))))
                )
            )
        )
    )
    (princ)
)


 


;;———————————————————————-;;
;;                             End of File                              ;;
;;———————————————————————-;;

  • 0
  • 5 5 답변
  • 43 조회
공유
  • Facebook

    관련 있는 질문들

    • 선배님들 덕트 엘보 작성 리습좀 봐주세요
    • insert 삽입할때 레이어도 같이 변경가능할까요?
    • 캐드 파일을 PDF로 변환 할 때 문제점 도와주세요 ㅠ
    • 질문오토캐드 라인타입이 너무 많은데 어떻게 정리하나요..

    5 답변

    • 작성 순
    • 최신 순
    • 공감 순
    1. aalan
    2. [Deleted User]
      2016-05-30T14:29:41+09:00답변 등록 답변 등록 일시 2016-05-30 2:29 pm
      (and (/= “” (setq new (getstring t (strcat “nSpecify new block name <” def “>: “))))

      (and (/= “” (setq new (rtos (getvar ‘cdate) 2 8)))  이렇게 바꾸심?

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    3. [Deleted User]
      2016-05-30T14:57:41+09:00답변 등록 답변 등록 일시 2016-05-30 2:57 pm

      뭐하남님 너무 고맙습니다^^ 염치없지만 하나만 더 물어봐도 되겠습니까
      CB명령어로 쳐서 ** (블록안에 블록을)** 치면 원본블록은 그대로 있고 그위에 겹쳐서 다른블록이 생성되는데 원본블록이 지워지게끔 가능하게 고수님 수정좀 해주세요 유일하게 이리습이 블록안에 불록이름을 바꿀수 있더라구요 근데 블록안에 블록이름이 바꿔면서 기존에 있던 원본은 블록이 있더라구요 즉 겹쳐지는데 가능할수 있는지요 부탁좀 드리겠습니다 이런 종루에 블록도면이 너무 많아서 공수가 많이 들어가네요

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    4. [Deleted User]
      2016-05-30T16:25:56+09:00답변 등록 답변 등록 일시 2016-05-30 4:25 pm

      RB명령을 치면 되잖아요!

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    5. [Deleted User]
      2016-05-30T18:05:18+09:00답변 등록 답변 등록 일시 2016-05-30 6:05 pm

      머하남님 죄송합니다 직원들이 설명을 잘못해서 1번을 클릭하면 1번2번 동일 블록이름이 같기 때문에 
      3번처럼 뜹니다 여기서 3번에 M12 이름을 RB나CB로  클릭해서 바꾸면 1번2번 블록이름이 같이 따라 옵니다
      즉 M12 만 개별적으로 바꿀수 없는지요  참고로 1번 2번 3번은 같은 이름입니다 즉 서브 블록만 바꿀수 없는가 해서요.
      파일 참조해서 봐주세요. 부탁드립니다.

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    6. [Deleted User]
      2016-05-30T18:33:38+09:00답변 등록 답변 등록 일시 2016-05-30 6:33 pm

      뭔가 착각하신 것 같은데요. 블록 속 블록이 다를 수가 있나요? 같은 이름의 블록인데 안에 내용물(속성문자가 아닌)이 다를 수가 있나요? abc(블록) 안에 123(블록), abc(블록) 안에 가나다(블록)가 가능한가요?

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter

    Sidebar

    질문하기
    공지사항

    • AI CAD의 미래! 캐디안 2025 1+1 프로모션 안내 2025-05-14

    Adv 234x60

    aalan

    Adv 234x60

    aalan

    Adv 120x600

    aalan

    Explore

    • 홈
    • 카테고리
      • AutoCAD & CADian
      • Inventor & Solidworks
      • Revit & ArchiCAD
      • 자유질문
      • 기타
    • 투표
    • 커뮤니티 그룹
    aalan

    Footer

    Support

    • 회사 및 서비스 소개
    • 자주 묻는 질문
    • 문의하기

    Guide

    • 제휴/협업 안내
    • 광고 서비스 안내

    Policy

    • 서비스 이용약관
    • 개인정보 처리방침
    • 광고성 정보 수신 동의

    Contents

    • 고밍스토리
    • 리습 시리즈

    정소프트 | 사업자등록번호 : 677-40-00198 | 대표 : 정은숙 | 이메일 : gocad.manager@gmail.com
    주소 : 서울특별시 강서구 양천로 400-12, 6층 614,615,617호(등촌동, 더리브골드타워)
    Copyright. 2012-2024 GOCAD All rights reserved