블록 하나를 다시 그린 적이 있다. 삽입점이 하필 문짝 한가운데 박혀 있어서, 벽에 붙일 때마다 좌표를 눈대중으로 밀어 넣어야 했다. 결국 새로 그리는 게 빠르겠다 싶어서 그렇게 했는데, 그럴 필요가 없었다는 걸 나중에 알았다.

뭐가 문제였나 – 삽입점이 엉뚱한 곳에 박힌 블록
캐드에서 블록의 삽입점(기준점)은 한번 정해지면 그걸로 끝이다. 다시 잡으려면 보통 블록을 통째로 분해했다가, 원하는 자리를 새 기준점으로 다시 정의하고, 다시 블록으로 묶는 수밖에 없다. 문제는 이 블록이 도면 여기저기 수십 개 박혀 있을 때다. 하나 고치자고 전부 분해했다가 다시 묶으면, 그 사이에 걸려 있던 속성이나 축척이 틀어질 위험이 매번 따라온다.
나는 이 과정을 몇 번 반복하다가, 결국 “새로 그리는 게 안전하다”는 결론에 이르렀다. 안전하긴 한데, 그만큼 시간을 버린다는 뜻이기도 했다.
어떻게 해결했나 – 정의를 통째로 옮기고, 인스턴스는 제자리에 붙잡아둔다
BRS는 블록을 분해하지 않는다. 대신 화면에서 새 기준점으로 삼을 지점을 클릭하면, 그 블록의 정의(Definition) 자체를 계산해서 내부 좌표를 옮긴다. 그런데 블록 정의는 도면 안에서 하나뿐이고, 같은 이름의 블록은 전부 이 정의 하나를 같이 쓴다. 그래서 정의를 옮기면 도면에 흩어진 같은 블록 전부가 한꺼번에 밀려나 버린다.
그대로 두면 도면이 엉망이 되니, BRS는 정의를 옮긴 직후 도면 안의 동일한 블록을 전부 찾아 각자의 회전값과 축척을 반영해서 삽입점을 반대로 보정한다. 결과적으로 화면에 보이는 위치는 그대로인데, 기준점만 내가 클릭한 자리로 옮겨진 것처럼 된다. 동적 블록이나 익명 블록도 실제 이름(EffectiveName)을 따로 추출해서 처리하기 때문에 걸리지 않는다.
클릭 한 번으로 끝나는 기준점
이제는 블록을 분해할 일이 없다. 도면에 이미 박혀 있는 블록을 그대로 둔 채로, 원하는 지점을 한 번 클릭하는 걸로 기준점이 다시 잡힌다. 새로 그릴 필요도, 속성이 틀어질까 봐 하나하나 확인할 필요도 없어졌다. 정렬이 안 맞아서 블록을 다시 그리던 시간이, 클릭 한 번으로 줄었다.
비슷한 맥락에서 객체 위치를 손보는 작업이라면 객체 정렬 리습(AAD)도 참고할 만하다. 기준을 다시 잡는다는 점에서 결이 비슷하다.
사용 환경
ZWCAD 2023 기준으로 개발하고 실전 검증까지 마쳤다. AutoCAD 호환 여부는 아직 확인하지 못했다.
어떻게 쓰나
- 원점을 바꿀 블록을 미리 선택해두거나, 아무것도 선택하지 않은 채로
BRS를 입력한다. 후자의 경우 블록을 선택하라는 메시지가 뜬다. - 여러 개를 선택했더라도 BRS는 그중 첫 번째로 잡힌 블록 하나를 기준으로 처리한다.
- 새로운 기준점으로 삼을 지점을 화면에서 클릭한다.
- 도면 안의 동일한 블록 전체가 자동으로 위치 보정되고, 화면이 재생성(regen)된다.
전체 과정은 실행취소(undo) 하나로 묶여 있어서, 마음에 안 들면 Ctrl+Z 한 번으로 되돌릴 수 있다.
아직 안 되는 것
- BRS는 블록 “정의”를 바꾸는 도구다. 그래서 선택한 블록 하나만 조용히 옮기고 싶어도, 같은 이름을 쓰는 도면 안의 다른 인스턴스까지 전부 함께 영향을 받는다. 특정 인스턴스 하나만 따로 바꾸고 싶다면, 먼저 그 블록을 고유한 이름으로 분리해둬야 한다.
- 회전 계산은 평면(XY) 기준으로 이뤄진다. 입면도 블록처럼 평면을 벗어나 삽입된 경우는 아직 검증하지 못했다.
- AutoCAD 호환은 검증 전이다.
받아 가기
짧은 회고
기준점 하나 삐뚤어졌다고 블록을 새로 그리기까지 했던 걸 생각하면, 지금도 조금 민망하다. 정의를 직접 건드리는 도구라 처음 만들 때는 조심스러웠는데, 막상 써보니 걱정했던 것보다 훨씬 얌전하게 동작했다.
이 리습은 개인·비영리 목적으로 자유롭게 쓰실 수 있습니다. 출처(Talkative Archi)를 표기하면 수정도 가능하지만, 무단 재배포나 상업적 판매는 금지이며 무보증·본인 책임 원칙이 적용됩니다. 자세히
답글 남기기