;;일반객체를 카피클립으로 블럭 만들어서 제자리 붙이고 원본은 삭제함-블럭이름 지정가능
(defun c:MB (/ os ent bp blk_nme obn ins rnam byn byn2)
(defun *error* (msg)(princ "error: ")(princ msg)
(setvar "osmode" os) (princ))
(graphscr)(terpri) (setvar "CMDECHO" 0)
(setq os (getvar "osmode"))
(prompt "≫ 블럭으로 만들 객체를 선택을 하세요... ")
(setq ent (ssget ))
(setq bp (getpoint "\n≫ 삽입점 클릭하세요 : "))(terpri)
(command "_copybase" bp ent "" "_pasteblock" bp "erase" ent "")
(setq blk_nme (getstring "\n≫ 블럭이름을 지정하시겠습니까? [Yes/No][Y] : "))
(if (or (= blk_nme "")(= blk_nme "Y") (= blk_nme "y"))
;;블럭 이름 설정
(if (setq ent (entlast))
(progn (setq elist (entget ent))
(setq obn (cdr (assoc 2 elist)))
(setq ins (cdr (assoc 10 elist)))
(setq rname nil)
(while (= rname nil)
(setq rname (getstring t "\n≫ 블럭이름을 입력하세요 : "))
(setq byn (assoc 2 (tblsearch "block" rname)))
(setq byn2 (cdr byn)) ; byn2 블럭이름
(if (= rname byn2)
(progn (setq rname nil)
(prompt "≫ 중복된 이름입니다 -> 다시 입력해 주세요")
) ;progn
);if
) ;while
(if (/= rname "")
(progn (command "explode" ent)
(setvar "osmode" 0)
(command "_.block" rname ins "P" "")
(command "_.insert" rname ins "" "" "")
(setvar "osmode" os)
(princ "≫ 블록이름 : ")(princ "[ ")(princ obn)(princ " ]")(princ " 에서 ")
(princ "[ ")(princ rname)(princ " ]")(princ "(으)로 설정되었습니다.")
);progn
);if
);progn
);if
;;블럭 이름 설정 끝
);if
(setvar "osmode" os)
(princ)
);defun
[출처] 블럭 만들어서 제자리 붙이기(블럭이름 지정) (메카피아닷컴) |작성자 수하
'캐드리습' 카테고리의 다른 글
빠른인쇄 윈도우범위 A4 리습 (0) | 2023.02.14 |
---|---|
레이어 변경 리습 (없으면 만들기) (0) | 2023.02.14 |
선택점 중심에서 장공 그리기 리습 (0) | 2023.02.14 |
블럭 이름 일괄 변경 (날짜,시간 일련번호) 리습 (0) | 2023.02.14 |
블럭 이름 변경 리습 (이름 앞,뒤 첨자 추가) 리습 설명 (0) | 2023.02.14 |