명령창에 그냥 숫자만! — cal 없이 자동 계산되는 캐드 리습

작성자

카테고리:

도면을 그리다 보면 치수 하나 빼려고 계산기를 켜는 순간이 하루에도 몇 번씩 온다. ZWCAD에는 cal이라는 멀쩡한 계산 모듈이 이미 들어 있는데도, 나는 그걸 잘 안 쓰게 됐다. 이유는 단순하다. 귀찮아서.

귀찮은 계산기, 어떤 문제였나

cal은 좋은 기능이다. 명령창에 cal을 치고, 수식을 넣고, 결과를 받는다. 문제는 그 사이의 손동작이다.

도면 작업 중에는 거의 항상 오른손이 마우스에 가 있다. 그 상태에서 cal을 치려면 마우스를 놓고, 양손을 키보드로 가져와 명령어를 입력하고, 다시 마우스를 잡는다. 계산 한 번에 손이 두 번 자리를 옮긴다. 1200에서 500을 빼는 그 잠깐을 위해서 말이다.

별것 아닌 것 같지만, 이게 하루에 수십 번 쌓이면 작업 흐름을 자꾸 끊는다. 결국 나는 cal을 켜는 대신 옆에 둔 윈도우 계산기를 두드리거나, 머릿속으로 대충 암산하고 넘어가곤 했다. 멀쩡한 기능을 두고도.

그래서 생각했다. cal이라고 굳이 칠 필요 없이, 명령창에 그냥 1200-500이라고 치면 알아서 계산해주면 안 될까?

어떻게 풀었나

핵심은 ZWCAD가 “알 수 없는 명령”을 만났을 때를 가로채는 것이다.

명령창에 1200-500처럼 명령으로 인식되지 않는 문자열을 입력하면, 보통은 알 수 없는 명령 메시지와 함께 그냥 튕겨 나간다. 이 도구는 그 순간에 끼어든다. :vlr-unknownCommand 리액터가 입력값을 받아서, 이게 사칙연산이 섞인 수식인지 판단한 다음, 맞으면 내부적으로 cal을 호출해 계산하고 결과를 명령창에 띄운다.

판단은 두 단계다. 먼저 입력값이 숫자·연산자·괄호·소수점으로만 이뤄졌는지 확인하고, 그다음 연산자(+ - * /)가 실제로 들어 있는지를 본다. 그래서 LINE이나 좌표 같은 평범한 입력은 건드리지 않는다. 오직 수식처럼 생긴 것에만 반응한다.

어떻게 달라졌나

이제 계산이 필요하면 명령창에 수식을 친다. 그게 전부다.

명령: 1200-500
========================================
[자동 계산 결과]  1200-500  =  700.0000
========================================

cal을 칠 필요도, 윈도우 계산기를 띄울 필요도 없다. 마우스 옆에서 한 손으로 숫자만 던지면 결과가 명령창에 바로 뜬다. 괄호도 먹는다. (1200-500)*2 같은 식도 그대로 계산된다.

사용 환경

ZWCAD 2023에서 개발하고 실전에서 검증했다. AutoCAD 호환은 별도로 확인하지 않았다(코드는 cal 모듈을 AutoCAD geomcal / ZWCAD zcal 양쪽으로 로드하도록 시도한다).

이 리습은 한 가지 성격이 분명하다. 다른 도구들과 달리, 늘 켜져 있을수록 유용하다. 멀티플롯이나 낱장 분리는 필요할 때 한 번 부르는 도구지만, 계산은 작업 내내 수시로 필요하다. 그래서 이 도구는 매번 손으로 로드하기보다, 도면을 열 때마다 자동으로 켜지게 해두는 편이 잘 어울린다.

마침 전에 올린 acaddoc.lsp 상시 자동 로드 글에서 다룬 방식이 여기에 그대로 들어맞는다. 그 폴더에 이 파일을 같이 넣어두면, 도면을 열 때마다 계산 기능이 자동으로 켜진 상태가 된다. 따로 켤 필요 없이, 늘 명령창에서 수식이 계산되는 환경이 만들어지는 셈이다.

어떻게 쓰나

파일을 로드하면 자동으로 기능이 켜진다(파일 맨 아래 (c:CALC-ON) 한 줄이 그 역할을 한다).

  • 계산하기: 명령창에 수식을 입력하고 엔터. 예) 350*4, (1200-500)/3
  • 끄기: CALC-OFF — 자동 계산 기능을 잠시 멈춘다.
  • 다시 켜기: CALC-ON

자동으로 켜지는 게 부담스러우면, 파일 맨 아래 (c:CALC-ON) 줄만 지우면 된다. 그러면 로드해도 가만히 있다가, CALC-ON을 직접 칠 때만 동작한다.

아직 안 되는 것

  • 단독 음수·양수는 계산하지 않는다. -100처럼 부호 하나만 붙은 입력은 좌표나 일반 입력일 가능성이 높아서 일부러 제외했다. 대신 -100+30처럼 연산자가 둘 이상이면 정상적으로 계산한다.
  • 명령 프롬프트 진행 중에는 동작이 갈릴 수 있다. 어떤 명령이 값을 기다리는 도중의 입력은 그 명령이 먼저 가져가므로, 이 기능은 명령창이 비어 있을 때 가장 안정적으로 동작한다.
  • AutoCAD 호환은 미검증이다. zcal/geomcal 로드를 양쪽 다 시도하긴 하지만, ZWCAD 2023 외 환경은 확인하지 않았다.

받아 가기

링크가 안 열리거나 사용 중 막히는 부분이 있으면 댓글로 남겨주세요.

짧은 회고

이 도구를 만들고 나서 가장 달라진 건, 계산을 더 자주 하게 됐다는 점이다. 예전엔 귀찮아서 암산으로 때우던 것들을, 이제는 그냥 명령창에 던진다. 손이 멈추지 않으니까. 작은 마찰 하나를 없앴을 뿐인데, 그 마찰이 막고 있던 행동이 생각보다 많았다는 걸 뒤늦게 알았다.


이 리습은 개인·비영리 목적으로 자유롭게 사용할 수 있으며, 출처(Talkative Archi)를 표기하면 수정도 가능합니다. 무단 재배포·상업적 판매는 금지합니다. 자세히

코멘트

답글 남기기

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

acaddoc (2) APPLOAD (2) AutoLISP (32) BRS (1) QT (16) RRAV (2) TRA (2) TRB (2) ZWCAD (32) 거리 측정 (1) 건축실무 (4) 기준점 (1) 단축키 (2) 도곽 (3) 도면 검수 (2) 도면 편집 (2) 러브소나타 (1) 리습 (32) 멀티플롯 (2) 블록 (3) 시편 (6) 에스겔 (10) 워크플로우자동화 (3) 일본선교 (1) 창호도 (2) 창호일람표 (2) 캐드 자동화 (31) 평행선 (2) 폴리라인 (1) 히브리서 (1)