흩어진 객체를 그 자리에서 한 덩어리로 — 블록 제자리 붙여넣기 (BED)

작성자

카테고리:

도면 곳곳에 흩어진 객체를, 위치는 한 점도 안 건드리고 하나의 블록으로 묶고 싶을 때가 있다. 캐드에서 블록 제자리 붙여넣기를 하려면 보통 기준점을 어디에 찍을지부터 손이 멎는다. BED는 그 머뭇거림을 통째로 들어낸다. 선택만 하면 좌하단을 기준점으로 잡아, 그 자리에서 즉시 블록으로 변한다.

블록 제자리 붙여넣는 리습, 넣었더니 편하다 편해!

제자리 블록 만들기, 어떤 문제였나

상세 한 세트, 범례 한 묶음, 표제란 부품 몇 개. 이렇게 따로 그려둔 객체들을 하나의 블록으로 묶어 관리하고 싶은 순간이 실무에선 자주 온다. 옮기기도 편하고, 복사도 한 덩어리로 떨어지고, 나중에 손볼 때도 단위가 분명해지니까.

그런데 막상 묶으려고 BLOCK 명령을 부르면 절차가 길다. 이름을 짓고, 기준점을 찍고, 객체를 고르고, 확인을 누른다. 이 중에서 가장 손이 멎는 건 기준점이다. 어디를 찍어야 나중에 다루기 좋을지 매번 고민하게 되고, 오스냅이 켜져 있으면 엉뚱한 끝점에 척 물려서 기준점이 한 칸 어긋나기도 한다.

클립보드로 가는 길도 있다. Ctrl+C로 복사하고 Ctrl+Shift+V로 붙이면 선택한 것이 블록으로 들어온다. 그런데 이건 삽입점을 새로 찍어야 한다. 포토샵이나 일러스트레이터, 스케치업이라면 ‘제자리 붙여넣기(Paste in Place)’로 좌표를 그대로 둔 채 붙는 게 당연한 일인데, 캐드에는 좌표계를 유지하면서 블록으로 묶어 붙여넣는 기능이 기본으로 없다. 제자리로 붙이는 PASTEORIG는 블록으로 안 묶이고, 블록으로 묶는 Ctrl+Shift+V는 제자리로 안 붙는다. ‘제자리’와 ‘블록’이 서로 다른 명령에 흩어져 있어서, 둘을 한꺼번에 해주는 손잡이가 비어 있는 셈이다. 다른 도면에서 가져온 객체라면 그 왕복이 더 길어진다. 묶는 일 자체는 별것 아닌데, 그 별것 아닌 일에 손이 네댓 번 간다.

어떻게 풀었나

BED는 이 절차를 단계가 아니라 한 번으로 접는다. 다른 프로그램에선 당연한 그 ‘제자리 붙여넣기’를, 캐드에서 블록째로 해주는 셈이다.

선택한 객체들의 바운딩 박스를 모두 훑어서 가장 왼쪽 아래 좌표를 찾아낸다. 그 좌하단 점을 기준점으로 삼아 블록을 만들고, 같은 자리에 그대로 다시 꽂는다. 결과적으로 화면상 위치는 그대로인데, 흩어져 있던 객체들이 하나의 블록 단위로 묶여 있다. 기준점을 어디 찍을지 고민할 필요가 없는 건, 좌하단이라는 일관된 규칙으로 자동으로 잡아주기 때문이다.

이름도 직접 짓지 않는다. BED_1, BED_2처럼 번호를 붙이되, 이미 같은 이름이 있으면 빈 번호를 찾을 때까지 올려가며 충돌을 피한다. 블록을 만드는 동안에는 오스냅을 잠시 꺼서(_non) 기준점이 엉뚱한 곳에 물리는 일도 막았다. 객체를 미리 골라두고 BED를 불러도 되고, BED부터 부르고 골라도 된다. 어느 쪽이든 받아준다.

어떻게 달라졌나

기준점을 어디 찍을지 망설이던 자리가 사라졌다. 이름을 짓느라 잠깐 멈추던 자리도 사라졌다. 오스냅 때문에 한 칸 어긋난 블록을 만들고 다시 지우던 일도 없다. 객체를 고르고 BED를 한 번 치면, 그 자리에서 바로 묶음이 완성된다.

업무상 QGIS 쓸 일이 많은데, 이 리습으로 훨씬 편해졌다.

사용 환경

  • ZWCAD 2023 기준으로 개발하고 실전에서 검증했다. AutoCAD 호환은 미검증이다.
  • ActiveX(vl-load-com)를 쓰므로, 일반적인 ZWCAD 환경이면 별도 준비 없이 동작한다.
  • 객체의 바운딩 박스로 기준점을 계산한다. 즉 좌하단은 선택 묶음 전체의 외곽 사각형 기준이다.

어떻게 쓰나

  1. 블록으로 묶을 객체들을 선택한다. (미리 골라두고 명령을 쳐도 되고, 명령부터 쳐도 된다.)
  2. 명령창에 BED 입력.
  3. 선택 묶음이 그 자리에서 BED_n 이름의 블록으로 변환된다. 끝.

리습이 처음이라 불러오는 것부터 막힌다면, 리습 불러오기 4가지 글을 먼저 보고 와도 좋다.

아직 안 되는 것

  • 블록 이름을 직접 지정할 수는 없다. 자동으로 BED_n이 붙는다. 의미 있는 이름이 필요하면 변환 뒤 RENAME으로 바꾸면 된다.
  • 잠긴 레이어에 놓인 객체가 섞여 있으면 블록 생성이 거부될 수 있다. 이 경우 해당 레이어를 풀고 다시 실행한다.
  • 선택 묶음 전체에서 유효한 영역을 계산하지 못하면(예: 바운딩 박스가 잡히지 않는 객체만 골랐을 때) 작업을 취소하고 알린다.
  • 명령 도중 ESC로 빠져나가면 자동 롤백이 작동하는데, 객체 선택을 미처 시작하기 전에 취소하면 드물게 직전 작업 하나가 함께 되돌려질 수 있다. 이 경우 다시 그리면 된다.

받아 가기

쓰다가 막히는 점이나 고쳤으면 하는 동작이 있으면 댓글로 남겨 주세요. 읽고 반영합니다.

짧은 회고

처음엔 클립보드에 기대어 원좌표 붙여넣기로 묶던 도구였다. 그런데 클립보드는 늘 변덕이 있다. 다른 프로그램을 한 번 거치면 비워지고, 가끔은 엉뚱한 게 들어와 있다. 그 의존을 걷어내고 나니, 결국 남는 건 “선택한 걸 그 자리에서 블록으로”라는 한 문장이었다. 도구를 오래 쓰다 보면 기능을 더하는 것보다 기대고 있던 걸 떼어내는 쪽이 더 단단해질 때가 있다. 이번이 그랬다.

객체를 여럿 한꺼번에 다루는 김에, 객체 정렬 (AAD)도 같이 두고 쓰면 손이 한결 가벼워진다.


이 도구는 개인·비영리 목적으로 자유롭게 쓰실 수 있고, 출처(Talkative Archi)를 밝히면 수정도 괜찮습니다. 무단 재배포·상업적 판매는 삼가 주세요. 무보증·본인 책임입니다. 자세히

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

acaddoc (2) APPLOAD (2) AutoLISP (32) QT (16) RRAV (2) SZ (1) TRA (2) TRB (2) ZWCAD (32) 객체 크기 (1) 거리 측정 (1) 건축실무 (4) 노면표시 (1) 단축키 (2) 도곽 (3) 도면 검수 (2) 도면 편집 (2) 리습 (32) 멀티플롯 (2) 블록 (3) 선종 변환 (1) 스케치업 연동 (1) 시편 (6) 에스겔 (10) 워크플로우자동화 (3) 창호도 (2) 창호일람표 (2) 캐드 자동화 (31) 평행선 (2) 폴리라인 (1)