[태그:] WBLOCK

  • 도곽만 선택하면 낱장 DWG로 자동 분리 — RRAW

    도곽만 선택하면 낱장 DWG로 자동 분리 — RRAW

    한 파일 안에 도면이 여러 장 작성되어 있는 경우가 있다. 평면이 여러 장인 경우도 있고, 배치도 옆에 평면, 그 옆에 입면, 또 단면. 검토할 땐 한 자리에 모여 있는 편이 낫지만, 막상 다른 사용자에게 넘길 때가 되면 이야기가 달라진다. 협력사엔 장별로 따로 달라 하고, 세움터 업로드도 도면번호별 개별 파일이어야 하고. 그래서 결국 한 장씩 떼어내기 시작한다.

    작업이 어려운 건 아니다. 다만 손이 많이 간다. 도곽 하나 잡아서 WBLOCK, 그다음 파일명. 파일명을 뭐라고 칠지는 표제란을 눈으로 읽어 직접 타이핑한다. 도면번호 보고, 도면명 보고, 오타 안 나게. 그걸 스무 장, 서른 장 반복하고 나면 머리가 멍해진다. 머리를 쓰는 일이 아니라서 더 그렇다.

    RRAW로 도곽만 선택하면 낱장 DWG로 자동 분리

    어떤 문제였나

    문제는 단순함과 반복의 조합이다. 단계 하나하나는 누구나 할 수 있다. 그런데 그 묶음이 장 수만큼 되풀이된다.

    • 도곽 하나를 정확히 선택한다. 옆 도곽 객체가 딸려 들어가면 안 된다.
    • WBLOCK으로 떠낸다.
    • 표제란을 읽어 파일명을 손으로 적는다.

    여기에 함정이 몇 개 숨어 있다. 도곽이 잠긴 레이어 위에 있으면 옮기다 막히고, 외부참조(XREF)로 걸린 도곽이면 통째로 엉뚱하게 떨어진다. 인접한 도곽이 가까이 붙어 있으면 선택 범위에 남의 선이 슬쩍 끼어든다. 그리고 가장 자주 나는 실수는 파일명. 도면번호 한 자리를 잘못 쳐서 나중에 폴더를 다시 뒤지는 일. 손으로 하는 작업의 비용은 시간만이 아니다. 틀릴 여지가 매번 새로 생긴다는 것, 그게 더 피곤하다.

    어떻게 풀었나

    RRAW는 이 묶음을 한 번에 처리한다. 떼어낼 도곽(타이틀 블록)을 한꺼번에 선택하면, 각 도곽을 개별 DWG로 자동 분리한다. 핵심은 두 가지다.

    첫째, 파일명을 사람 대신 읽는다. 도곽이 가로냐 세로냐에 따라 표제란이 있을 자리를 자동으로 잡고, 그 영역 안의 글자만 모은다. 그중 큰 글자(도면번호·도면명)를 추려 조합하고, A1·A3·NONE·SCALE처럼 규격이나 축척을 가리키는 군더더기 텍스트는 걸러낸다. 줄을 위아래로 정리해 마지막 줄을 도면번호로, 윗줄을 도면명으로 보고 이름을 만든다. 파일명에 쓸 수 없는 문자도 정리한다. 읽을 표제란이 없으면 그냥 Sheet_1, Sheet_2로 떨어뜨린다.

    둘째, 떠낸 파일을 열었을 때 화면이 맞춰져 있다. 분리는 WBLOCK으로 하는데, 객체를 잠깐 절대원점으로 옮긴 뒤 그 자리에서 떠내고 곧장 제자리로 돌려놓는다. 덕분에 분리된 DWG를 열면 도곽이 화면에 깔끔하게 들어와 있다. 열 때마다 줌부터 맞추던 잔손질이 사라진다.

    안전장치도 같이 넣었다. 시작할 때 잠긴 레이어를 자동으로 풀었다가 끝나면 다시 잠그고, XREF 상태의 도곽이 섞여 있으면 “바인드하고 다시 실행하라”며 멈춘다. 중간에 에러가 나도 화면·시스템 변수·레이어를 원래대로 되돌린다. 인접 도곽의 선이 끼어들면 골라내고, 같은 이름이 이미 있으면 뒤에 _2, _3을 붙여 덮어쓰지 않는다.

    어떻게 달라졌나

    전엔 한 장씩이었다. 복사·WBLOCK·이름짓기를 도곽마다 손으로 반복했다. 지금은 도곽만 한 번에 선택하면 이름까지 자동으로 낱장이 분리된다. 서른 장이든 쉰 장이든, 선택하고 폴더만 고르면 끝난다. 줄어든 건 시간이고, 같이 줄어든 건 매번 새로 생기던 오타의 여지다.

    사용 환경

    • ZWCAD 2023 기준으로 개발·검증했다. AutoCAD 호환은 검증하지 않았다.
    • 도곽은 블록(INSERT)이어야 한다. 폴리라인으로 그린 도곽은 선택 대상으로 잡히지 않는다.
    • 표제란은 실제 글자(TEXT/MTEXT)여야 이름이 자동으로 붙는다. 블록 속성(ATTRIB)이나 이미지로 된 표제란은 못 읽어서 Sheet_N으로 떨어진다.
    • 도곽이 외부참조(XREF)면 먼저 바인드(Bind)한 뒤 실행한다-세움터 업로드를 생각하면 쉽다.
    • 표제란이 도곽의 우하단(가로) 또는 좌하단(세로)에 있는, 일반적인 배치를 전제한다.
    • 파일 인코딩은 CP949다.

    어떻게 쓰나

    1. 리습을 로드한다. 자주 쓸 거라면 매번 APPLOAD 하지 말고 자동 로드로 걸어두는 편이 낫다. (리습 자동 로드는 이 글에서 다뤘다.)
    2. (선택) 분리할 도곽을 미리 선택해 두면 그대로 쓴다. 안 했으면 다음 단계에서 고르면 된다.
    3. 명령행에 RRAW를 입력한다.
    4. 미리 선택하지 않았다면, 떠낼 도곽 블록을 모두 선택한다.
    5. 저장 폴더를 고른다.
    6. 끝. 폴더에 도면번호 도면명.dwg 형태로 파일이 쌓인다. 몇 개 성공했는지, 실패가 있으면 몇 개인지는 명령행에 표시된다.

    아직 안 되는 것

    • 폴리라인 도곽은 지원하지 않는다. 블록 도곽만 대상이다.
    • 표제란이 블록 속성으로 들어가 있으면 글자를 못 읽어 이름이 자동화되지 않는다.
    • 표제란 위치 가정(우하단·좌하단)을 크게 벗어난 도곽은 엉뚱한 텍스트를 읽을 수 있다.
    • 도면번호와 도면명의 줄 구분은 표제란 레이아웃에 따라 빗나갈 수 있다. 떠낸 뒤 파일명을 한 번 훑어보길 권한다.
    • AutoCAD에서는 검증하지 않았다.

    같은 도곽 선택 방식으로 출력까지 한 번에 거는 도구가 따로 있다. 일괄 멀티플롯은 RRAR 멀티플롯 글을 참고하면 된다.

    받아 가기

    파일은 아래 링크에서 받을 수 있다.

    쓰다가 막히는 부분이나 “이건 이렇게 됐으면” 싶은 점이 있으면 댓글로 남겨 주세요. 환경마다 표제란 모양이 달라서, 안 잡히는 사례를 알려 주시면 다듬는 데 큰 도움이 됩니다.

    짧은 회고

    이런 도구를 만들 때마다 느끼는 게 있다. 아껴지는 건 시간이기도 하지만, 더 아껴지는 건 안 해도 되는 판단이다. 도면번호를 한 글자씩 확인하며 옮겨 적던 그 작은 긴장이 사라진다. 손이 기억하던 일을 코드에 넘기고 나면, 정작 머리를 써야 할 곳에 머리가 남는다. 결국 자동화는 일을 빠르게 하는 게 아니라, 신경을 덜 쓰게 하는 일에 가깝다는 생각을 한다.


    개인·비영리 목적이라면 자유롭게 쓰셔도 됩니다. 출처(Talkative Archi)만 밝히면 수정도 괜찮습니다. 무단 재배포·상업적 판매는 금지하며, 무보증이므로 사용에 따른 책임은 본인에게 있습니다. 자세히