벽 두께를 확인하려고 DIST를 치고, 첫 점을 찍고, 스냅이 엉뚱한 데 물려서 취소하고 다시 치는 일. 캐드 평행선 거리 측정이라는 건 실무에서 결국 그 반복이었다. 이제는 선 두 개를 선택만 해 두면, 명령을 치기도 전에 명령창에 거리가 떠 있다.

두께 하나 재는 데 세 동작이 들었다
도면을 보다가 “이 벽 얼마짜리지?” 하는 순간은 하루에도 수십 번 온다. 그런데 그 확인 한 번이 결코 한 동작이 아니었다. 명령창에 DIST를 치고, 한쪽 선에 스냅을 물리고, 반대쪽 선에 직교로 다시 물린다. 직교 스냅이 안 잡히면 근처 교점으로 튀고, 그러면 나온 숫자가 실제 두께보다 살짝 크다. 그 숫자를 믿을지 말지 망설이는 시간까지가 사실상 비용이었다.
더 성가신 건 리듬이 끊긴다는 점이었다. 뭔가를 그리다 말고 확인 한 번 하려면 손이 도면에서 명령창으로 갔다가, 다시 도면으로 돌아와 스냅을 두 번 물리고, 그제서야 원래 하던 작업의 맥락을 다시 찾아야 했다. 재는 행위 자체는 3초인데 그 앞뒤로 붙는 게 훨씬 길었다. 그리고 그 3초짜리 일이 하루에 수십 번이면, 그건 이미 3초짜리 일이 아니다.
캐드 평행선 거리 측정을 리액터에 맡겼다
방향을 바꾼 지점은 “명령을 더 짧게 만들자”가 아니라 “명령을 아예 없애자”였다. 어차피 두께를 확인할 때 나는 이미 그 선 두 개를 클릭해서 보고 있었으니까. 선택이라는 행동이 이미 일어나고 있는데, 거기에 명령을 하나 더 얹을 이유가 없었다.
그래서 선택 자체를 신호로 삼았다. 리습을 로드해 두면 리액터 하나가 붙어서, 선택 세트가 바뀔 때마다 조용히 들여다본다. 지금 골라 둔 게 선이나 폴리선 계열이고, 딱 두 개이고, 서로 평행하면 — 그때만 거리를 계산해서 명령창에 찍어 준다. 조건에 안 맞으면 아무 말도 하지 않는다. 도면 위에서 마우스로 이것저것 집는 동안 계속 잔소리가 올라오면 그게 더 방해가 되니까.
거리는 한쪽 선의 시작점에서 반대쪽 선으로 내린 직교 거리로 잡는다. 이때 상대 선을 연장선까지 포함해서 보기 때문에, 두 선이 서로 어긋나 있어서 마주 보는 구간이 없어도 나란하기만 하면 두께가 나온다. 벽선이 창호에서 끊겨 있거나 한쪽만 길게 빠져 있는 실제 도면에서 이게 꽤 중요했다.
표시 자릿수는 내가 정하지 않고 도면에 맡겼다. UNITS에서 설정한 소수점 자리수를 그대로 따라가기 때문에, 정수로 쓰는 도면에서는 정수로, 소수 셋째 자리까지 쓰는 도면에서는 그만큼 나온다. 도구가 자기 기준을 들고 오지 않는 편이 낫다고 봤다.
선택만 하면 숫자가 먼저 와 있다
지금은 확인 절차가 사라졌다. 벽선 두 개를 드래그로 집으면 그 순간 명령창에 두께가 이미 찍혀 있다. 명령을 친 적이 없으니 취소할 것도 없고, 스냅이 어디에 물렸는지 의심할 일도 없다.
바뀐 게 시간만은 아니었다. 예전에는 “확인해 볼까 말까”를 한 번 저울질했다. 세 동작이 드니까. 지금은 저울질이 없어서, 애매하면 그냥 집어 본다. 확인이 싸지니까 확인을 더 자주 하게 되고, 결과적으로 도면에서 잡히는 오류가 늘었다. 도구가 손을 덜어 준 것보다 습관을 바꾼 쪽이 더 컸다.
사용 환경
- ZWCAD 2023 기준으로 개발하고 실전에서 검증했다. AutoCAD 호환은 확인하지 못했다.
- 리습 파일 하나만 로드하면 된다. 로드하는 방법은 리습 불러오기 4가지 글에 정리해 두었다.
- 파일이 로드되는 순간 기능이 자동으로 켜진다. 별도로 켜는 명령을 칠 필요가 없다.
어떻게 쓰나
- 리습을 로드한다. 로드와 동시에 기능이 켜진다.
- 두께를 재고 싶은 평행한 선 두 개를 선택한다. 클릭 두 번이든 드래그든 상관없다.
- 명령창에 두 선 사이의 거리가 표시된다.
기능을 잠시 끄고 싶으면 AD-OFF, 다시 켜고 싶으면 AD-ON을 친다. 선택할 일이 아주 많은 작업을 할 때, 예를 들어 대량 편집을 돌리는 중에는 꺼 두는 편이 조용하다.
아직 안 되는 것
- 선·폴리선 계열만 인식한다. 원호, 원, 블록, 치수선은 대상이 아니다. 벽이 블록 안에 들어 있으면 잡히지 않는다.
- 정확히 두 개일 때만 계산한다. 세 개 이상을 선택하면 아무 반응이 없다. 하나만 선택해도 마찬가지다.
- 잠긴 레이어의 객체는 세지 않는다. 참조용으로 잠가 둔 도면 위에서 오작동하지 않는다는 뜻이지만, 반대로 한쪽 선이 잠긴 레이어에 있으면 유효 객체가 하나뿐이라 결과가 뜨지 않는다.
- 평행 판정이 엄격하다. 허용 오차가 매우 좁아서, 눈으로는 나란해 보여도 미세하게 기울어진 선은 잡히지 않는다. 반대로 말하면 나온 숫자는 믿어도 된다는 뜻이기도 하다.
- 폴리선은 시작점과 끝점을 잇는 방향으로만 각도를 본다. 꺾인 폴리선에서는 의도와 다른 판정이 나올 수 있다.
- 시작점과 끝점이 같은 폐합 폴리선은 건너뛴다.
곡선 경계나 꺾인 폴리선을 다루는 방식은, 평행선을 잘라 내는 평행선 트림 (TRA·TRB) 쪽에서 먼저 고민했던 문제이기도 하다.
받아 가기
받아서 쓰다가 막히는 부분이나 이상 동작이 있으면 댓글로 남겨 주면 좋겠다. 쓰는 사람이 하나 늘 때마다 도구가 조금씩 단단해진다.
짧은 회고
이 도구를 만들면서 배운 건, 좋은 자동화는 동작을 빠르게 만드는 게 아니라 동작을 없애는 쪽이라는 것이다. DIST를 두 배 빠르게 치는 방법을 찾았다면 아마 지금도 DIST를 치고 있었을 것이다. 대신 이미 하고 있던 행동, 그러니까 선을 클릭하는 행동에 결과를 얹으니 명령이 통째로 사라졌다.
도구가 말이 없다는 것도 나중에야 마음에 들었다. 조건이 안 맞으면 아무것도 출력하지 않는데, 처음에는 실패를 알려 줘야 하나 싶었다. 지금 생각하면 하루 종일 켜 두는 물건이 자꾸 말을 걸면 그건 도구가 아니라 소음이다. 필요할 때만 나타나는 게 결국 가장 친절했다.
개인·비영리 자유 사용 / 출처(Talkative Archi) 표기 시 수정 가능 / 무단 재배포·상업적 판매 금지 / 무보증·본인 책임 — 자세히
답글 남기기