비밀번호를 잊으셨나요?

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

계정이 있나요? 로그인

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 101136
다음
진행 중
AHN GISEOG
AHN GISEOGLv.0
등록일: 2014-05-082014-05-08T20:20:15+09:00 2014-05-08T20:20:15+09:00카테고리: AutoCAD & CADian

블록을 날짜 이름으로 변경 리습 수정 부탁드립니다.

안녕하세요.
다음은 제가 사용하는 블록명을 자동으로 날짜 시간으로
지정해주는 리습입니다.
현재 블록안에서는 사용이 안되는데 블록 안에서도 사용 할 수있게
수정이 가능 할까요?
부탁 드립니다.

(defun c:bn( / a p1)
(command “layer” “m” “0” “”)
(setq date (rtos (getvar “cdate”) 2 8))
(setq p1 (getpoint “t base point ? :”))
(setq a (ssget))
(command “chprop” a “” “lt” “bylayer” “”)
(setq xxx (strcat date))
(command “copybase” p1 a “”)
(command “block” xxx p1 a “”)
(setq #os (getvar “osmode”))
(setvar “osmode” 0)
(command “insert” xxx p1 1 1 0)
(setvar “osmode” #os)
(princ “nt블록명 : “) (princ xxx)
(princ)
)

  • 0
  • 6 6 답변
  • 119 조회
공유
  • Facebook

    관련 있는 질문들

    • 캐드출력시 pc3모드이 이상현상
    • 객체 전체 간격 조정 할수 있을까요?
    • 블록 안에서 블록을 만들 수 있나요? 과거에는 됐었는데 2023부터 안되나요?
    • 캐드 2023 find 명령어가 너무 느립니다.

    6 답변

    • 작성 순
    • 최신 순
    • 공감 순
    1. aalan
    2. AHN GISEOG Lv.0
      2014-05-11T10:05:07+09:00답변 등록 답변 등록 일시 2014-05-11 10:05 am

      현재 블록 안에 들어가서 일부분을 다른 이름으로
      블록을 생성 하는데 그시점의 날짜와 시간으로 블록명을 지정 하는 것이니
      당연히 같은 이름은 아니지요.
       예를 들면 pasteblock 명령은 블록 안에서 사용 가능 한데 문제는 임의의 블록 이름으로 지정 후에
      그이름을 날짜와시간의 이름으로 rename 하면 될것 같습니다.
      어떻게 리습으로 가능 할까요? 도와 주십시요.

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    3. 캐드플러스 Lv.17
      2014-05-13T16:01:54+09:00답변 등록 답변 등록 일시 2014-05-13 4:01 pm

      현재 블록 안에 들어간다는 말이 블록편집을 이야기 하는것 같은데…
      블록편집 상태에서는 블록생성과 편집이 불가능합니다.
      pasteblock명령도 안됩니다. (pasteclip는 사용가능, Ctrl + V)
      그리고 블록이름을 변경한다고 했는데 블록이름을 변경할수는 없습니다.
      현재 돌아다니는 블록이름 변경 프로그램은 모두
      explode 해서 다시 특정 블록 이름으로 새롭게 만들어 주는 것입니다.

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    4. xcsh Lv.0
      2014-05-14T13:59:29+09:00답변 등록 답변 등록 일시 2014-05-14 1:59 pm

      영원낙원님이 질문 난위도를 높이셧군요.
      직접 코드를 제어하셔서     저에게도 깨닳음을 주셧으면 합니다.

      블록편집기 안에서는 블록생성과 변경에 관련된 command 명령은 막혀 있습니다.
      하지만   lisp으로 만들거나 변경하는것은 가능합니다.

      저는 완전한 코드를 보낼만한 실력이 아니므로
      참조하시도록 블록명을 변경하는 코드만  올려드립니다.

      (defun c:@blk_ren(/ sel_ ent_list blk_name new_name acad_obj act_docu blocks blk_old)
         ;블록을 선택해서 이름을 바꾼다.
         (setq sel_ (entsel “n블록선택:”))
         (setq ent (car sel_))
         (setq ent_list (entget ent))
         (setq blk_name (cdr (assoc 2 ent_list)))

         (setq acad_obj  (vlax-get-acad-object)
               act_docu  (vla-get-ActiveDocument acad_obj)
               blocks    (vla-get-blocks act_docu)
               blk_old   (vla-item blocks blk_name)
         )
         (setq new_name (getstring (strcat “n변경할 블록명<“blk_name”>:”)))
         (vla-put-name blk_old new_name)
      );defun

      여기 고캐드에서도 많은 분들이 해답을 알고 있기에 다른 분들의 댓글을 보고 싶어서 기다렷는데
      부족한 제 댓글을 올리게 되었네요.

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    5. AHN GISEOG Lv.0
      2014-05-15T10:13:01+09:00답변 등록 답변 등록 일시 2014-05-15 10:13 am

      안녕하세요
      댓글 주신분들께 감사드립니다.
      아래는 또다른 블록 생성리습인데요
      이것은 블록안에서도 실행됩니다.
      그러나 블록명이 임의로 지정되지요.
      그 임의로 지정된 블록명을 현재의 날짜와 시간으로 바꿔주면
      블록 안에서도 사용 가능할것 같은데요.

      (defun c:B1( / a p1)
      (COMMAND “LAYER” “M” “0” “”)
      (setq p1 (getpoint “t Base Point ? :”))
      (setq a (ssget))
      (COMMAND “CHPROP” A “” “LT” “BYLAYER” “”)
      (command “Copybase” p1 a “”)
      (command “Erase” “P” “”)
      (setq #os (getvar “osmode”))
      (setvar “osmode” 0)
      (command “Pasteblock” p1)
      (setvar “osmode” #os)
      (princ)
      )

      아래는 다른분의 리습입니다.

      (defun c:ABCN( / block nbn bn)
       (setvar “cmdecho” 0)
       (setq block (tblnext “block” T))
       (while block  
        (if (/= (substr (setq bn (cdr (assoc 2 block))) 1 1) “*”)
         (progn
          (while (tblsearch “block” (setq nbn (rtos (getvar “cdate”) 2 8))))
          (command “rename” “b” bn nbn)
         )
        )
        (setq block (tblnext “block”))
       )
       (princ)
      )

      여기서 rename 을 조합 하면 안될까요?

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    6. AHN GISEOG Lv.0
      2014-05-19T12:01:33+09:00답변 등록 답변 등록 일시 2014-05-19 12:01 pm

      도와 주신분 들께  감사드립니다.
      우선 급한대로  xcsh 님이 올려 주신걸로 제가 약간 수정해서(이게 맞는 건지?)
       아래처럼 쓰기로 했습니다

      (defun c:bkr(/ sel_ ent_list blk_name new_name acad_obj act_docu blocks blk_old)
         ;블록을 선택해서 이름을 바꾼다.
      (setq sel_ (entsel “n블록선택:”))
      (setq ent (car sel_))
      (setq ent_list (entget ent))
      (setq blk_name (cdr (assoc 2 ent_list)))

      (setq acad_obj  (vlax-get-acad-object)
      act_docu  (vla-get-ActiveDocument acad_obj)
      blocks    (vla-get-blocks act_docu)
      blk_old   (vla-item blocks blk_name)
      )
      (setq date (rtos (getvar “cdate”) 2 8))
      (setq new_name (strcat date))
      (vla-put-name blk_old new_name)
      );defun

      다시 정리하면
      1.블록편집기로 들어간다.
      2.리습명령 ‘b1’ 으로 새로운 블록 생성한다.
      3.상기의 리습명령 ‘b1’ 으로 임의의 이름으로 저장된 블록이름을 ‘bkr’ 로 이름을 재지정 한다.
      입니다.

      한번더 질문을 드린다면 리습을 두번 실행 할 수 밖에 없는데
      2번과 3번을 하나의 리습으로 실행 할 수는 없을까요?

      건승하세요.

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    7. xcsh Lv.0
      2014-05-19T12:21:59+09:00답변 등록 답변 등록 일시 2014-05-19 12:21 pm

      잘 하셧습니다.       하지만 블록만드는 것은 안될 것입다.
      지금 된다고 생각하신 방법은 command 문장을 사용해야 하기 때문에 안됩니다.

      이번에 참조하실 코드는 아래와 같습니다. 

       (defun @blk_make( blk_name p0 ss_ / n sel_ min_p max_p min_1 max_1)
         ; 점과 셀렉션으로 블록만들기
         (setq ActDoc (vla-get-activedocument (vlax-get-acad-object)))
         (setq blk_Obj (vla-add (vla-get-Blocks ActDoc) (vlax-3D-point p0) blk_name))
         (setq ss_obj  (mapcar ‘vlax-ename->vla-object
                       (vl-remove-if ‘listp (mapcar ‘cadr (ssnamex ss_ ))) ))
         (vlax-invoke ActDoc ‘CopyObjects ss_obj blk_Obj)
         (vlax-release-object Actdoc)
      );defun
       
      한번 더 결합해 보십시오. 저는 완벽하게 만든것이 아니기 때문에

       하시고 나면 문제점이 무엇인지 설명드리겠습니다.

      • 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