계단 코어 검토는 늘 순서가 거꾸로였다. 단수를 정하고, 단높이를 나누고, 계단참을 잡고, 그렇게 다 그린 다음에야 유효높이 2100이 나오는지 알 수 있었다. 안 나오면 처음으로 돌아갔다. 이 리습은 그 순서를 뒤집는다. 조건만 넣으면 통과하는 조합을 먼저 보여주고, 고른 뒤에 그린다.

사실 계단 도구를 만든 건 이번이 처음이 아니다. 앞서 계단 자동 작도(STCA)를 만들어 썼다. 층고를 넣으면 단수를 제안하고, 확정하면 계단을 그려주는 도구였다. 그런데 헤드룸은 미달이어도 경고창만 띄우고 작도는 그대로 진행됐다. 결국 판단은 여전히 사람 몫이었고, 경고가 뜨면 값을 바꿔 다시 돌리는 일이 반복됐다.
STC는 그 지점을 뒤집은 후속 버전이다. 통과하지 못하는 조합은 아예 후보에 올리지 않는다. 여기에 층을 여러 개 이어서 검토할 수 있게 됐고, 무엇보다 헤드룸 계산의 기준선 자체를 고쳤다. 그 이야기는 아래에서 하겠다.
어떤 문제였나 — 계단 헤드룸은 그려봐야 알 수 있었다
층고가 나오면 계단은 사실상 반쯤 자동으로 결정된다. 최대 단높이로 나누면 최소 단수가 나오고, 코어 내측 폭에서 계단참 둘을 빼면 한 번에 올라갈 수 있는 단 수가 나온다. 여기까지는 계산기로 3분이면 끝난다.
문제는 그다음이다. 아래 계단을 오르는 사람의 머리 위로, 위 계단의 슬래브 밑면이 지나간다. 그 사이가 2100 이상 떠 있어야 한다. 그런데 이 값은 한 점에서 결정되지 않는다. 아래 계단은 비스듬히 올라가고 위 슬래브도 비스듬히 내려오니까, 둘이 가장 가까워지는 지점이 어디인지는 단면을 실제로 그려봐야 보인다. 게다가 계단참 안에서 계단을 어디쯤에 붙이느냐(좌우로 한 단씩 밀어보는 그 조정)에 따라 가장 좁은 곳이 통째로 이동한다.
그래서 검토는 항상 이런 식이었다. 단수를 하나 정해서 단면을 그린다. 2100 선을 긋는다. 아슬아슬하게 걸린다. 단수를 하나 올린다. 다시 그린다. 이번엔 단높이가 최대치를 넘는다. 계단참을 100 줄여본다. 또 그린다. 반나절이 이렇게 갔다.
여기에 층이 겹치면 계산이 한 겹 더 붙는다. 아래층 계단의 마지막 구간은 위층 계단의 첫 구간과 만난다. 위층 단높이는 위층 층고에 달려 있고, 층고는 층마다 다르다. 결국 한 층만 잘 풀어도 소용이 없고, 위층까지 같이 봐야 한다. 손으로 하면 이 조합이 감당이 안 된다.
무엇보다 자주 틀리는 지점이 하나 있었다. 슬래브 두께를 계단 코 선에서 재느냐, 구조체 안쪽 모서리에서 재느냐. 정답은 후자인데, 앞의 것으로 재면 소프핏이 단높이만큼 통째로 높게 나온다. 여기에 마감 두께까지 빠뜨리면 실제보다 250~300 정도를 너그럽게 계산하게 된다. 도면상으로는 통과인데 현장에서는 머리가 닿는, 가장 무서운 종류의 오차다.
어떻게 풀었나 — 통과하는 조합만 남기고 전부 걸러낸다
접근은 단순하다. 사람이 하나씩 그려보던 걸 전부 계산으로 돌린다.
층고와 코어 제원을 받으면 가능한 단수를 최소부터 최대까지 훑는다. 각 단수마다 계단이 몇 개 구간(flight)으로 쪼개질지, 단이 어떻게 분배될지, 각 구간을 계단참 안에서 좌우로 몇 단씩 밀지, 그 조합을 전부 만든다. 그리고 조합마다 위아래 계단이 가장 가까워지는 지점을 찾아 여유를 잰다. 2100이 안 나오는 건 그 자리에서 버린다.
여유를 재는 지점은 네 곳이다. 아래 계단의 시작과 끝, 그리고 위 슬래브의 경사면이 아래참·위참과 각각 꺾이는 두 지점. 최솟값은 반드시 이 넷 중 하나에서 나오기 때문에, 구간 전체를 훑지 않아도 정확한 값이 나온다.
기준선은 위에서 말한 대로 잡았다. 슬래브 밑면은 계단 코가 아니라 디딤판과 챌판이 만나는 구조체 안쪽 모서리에서 직각으로 잰다. 구조체 상면은 마감면보다 마감 두께만큼 낮고, 안쪽 모서리는 수평으로도 그만큼 안쪽이다. 이 두 가지를 판정식에 넣어야 실제와 맞는다.
위층은 별도로 다룬다. 위층 층고를 아직 안 정했으면 적용 가능한 위층 단수를 목록으로 먼저 보여주고, 하나 고르면 그 조건으로 다시 푼다. 이미 확정한 층이 있으면 도면 안에 저장해 둔 기록을 읽어 그 배치를 고정한 채 검토한다. 층고를 0으로 넣으면 최상층으로 보고 위층 검사를 건너뛴다.
계단참이 1200 아래로 내려가거나, 코어 폭이 단너비로 나누어떨어지지 않거나, 한 구간의 상승고가 3m를 넘는 경우는 후보에 올리지 않는다. 통과 후보가 하나도 없으면 무엇이 발목을 잡았는지 — 헤드룸인지, 구간 상승고인지 — 알려준다.
어떻게 달라졌나 — 검토가 한 번에 끝난다
가장 크게 바뀐 건 순서다. 예전에는 하나 정해서 그려보고 아니면 되돌아왔는데, 이제는 통과하는 조합이 먼저 표로 나온다. 헤드룸 여유가 큰 순으로 정렬돼 있어서, 여유가 넉넉한 걸 고를지 계단참을 조금 더 확보한 걸 고를지 그 자리에서 판단하면 된다.
같은 결과를 내는 조합은 하나로 묶어서 보여준다. 인셋을 조금 다르게 잡아도 결과가 같은 경우가 꽤 많은데, 그걸 전부 늘어놓으면 표가 읽히지 않는다. 대표 하나만 남기고 옆에 개수를 적어 뒀다.
번호를 고르고 삽입점을 찍으면 단면이 그려진다. 마감선, 구조선, 슬래브 하부선, 그리고 2100 검증선까지 레이어를 나눠서 나온다. 검증선은 파선이라 눈으로 바로 확인된다.
그리고 그린 층은 도면 안에 기록으로 남는다. 다음 층을 작도할 때 아래층 배치를 다시 입력할 필요가 없고, 위층이 이미 확정돼 있으면 그 조건에 맞춰서만 후보를 찾는다. 층을 순서대로 올라가며 작도하면 층 사이가 자동으로 맞아떨어진다.
사용 환경
- 캐드 2023 기준으로 개발했고 실무에서 검증했다. 오토캐드 호환은 확인하지 못했다.
- 단위는 mm 기준이다.
- 파일 인코딩은 CP949, 줄바꿈은 CRLF다. 편집할 일이 있으면 인코딩을 유지해야 한다.
- 로드 방법은 리습 불러오기 4가지 글을 참고하면 된다.
어떻게 쓰나
명령어는 STC 하나다.
1) 층고 리스트 처음 실행하면 건물 층 수를 묻고, 층마다 층고를 받는다. 최상층은 층고를 0으로 넣는다. 위로 올라갈 계단이 없다는 표시다. 한 번 입력하면 도면에 저장되고, 다음 실행부터는 저장된 값을 쓸지 물어본다.
2) 작도할 층 번호 검토하고 그릴 층을 지정한다.
3) 공통 제원 일곱 가지 괄호 안은 기본값이다. 엔터로 넘기면 그대로 들어간다.
- 코어 내측 폭 (4000)
- 현재 층 계단참 Dc (1200) — 난간선 기준
- 반층 위 계단참 Dd (1200) — 난간선 기준
- 단너비 T (260)
- 최대 단높이 Rmax (200)
- 슬래브 두께 (150)
- 마감 두께 (50)
4) 위층 단수 선택 위층이 아직 확정되지 않았으면 적용 가능한 위층 단수 목록이 뜬다. 각각의 최대 헤드룸이 함께 표시되니 참고해서 하나 고른다.
5) 후보 표에서 선택 통과 후보가 헤드룸 여유가 큰 순으로 최대 10개까지 나온다. 읽는 법은 아래에 따로 정리했다.
6) 삽입점 번호를 고르면 삽입점을 묻는다. 코어 좌하단 내측 코너를 찍으면 그 점을 기준으로 단면이 그려진다.
작도가 끝나면 그 층의 배치가 도면에 저장된다. 다음 층으로 넘어가면 이 기록을 읽어서 층 사이 헤드룸을 검사한다.
후보 표 읽는 법
먼저 F2를 누르는 걸 권한다. 명령창이 두세 줄만 보이는 상태라면 후보 표가 위로 밀려 잘린다. F2를 누르면 명령행 이력 창이 따로 열려서 열 개 후보와 열 이름이 한 화면에 들어온다. 번호를 고른 뒤 다시 F2로 닫으면 된다.
표는 이렇게 읽는다.
| 열 | 뜻 |
|---|---|
| 번호 | 아래에서 입력할 후보 번호 |
| N | 현재 층 단수 |
| Nup | 위층 단수 (최상층이면 0) |
| F | 구간(flight) 수 |
| 분배 | 구간별 단수. 5+5+5+5 처럼 표시된다 |
| R | 단높이. 최대 단높이 이하로만 나온다 |
| 헤드룸 | 2100을 넘고 남은 여유(mm). 클수록 안전하다 |
| 병목 | 가장 좁아지는 위치. f3-2 는 3번 구간 위, 경사 구간이라는 뜻 |
| Dc / Dd | 인셋까지 반영한 최종 계단참 치수 |
| 동일 | 같은 결과를 내는 조합의 개수 |
정렬은 헤드룸 여유 순이라 위쪽이 가장 안전한 안이다. 다만 여유가 크다고 늘 좋은 건 아니다. 여유를 벌려면 단수가 늘거나 계단참이 줄어드는 쪽으로 가기 쉬우니, 헤드룸·R·Dc/Dd 세 열을 같이 보고 고르는 편이 낫다. 병목 열은 나중에 도면을 수정할 때 어디를 건드리면 안 되는지 알려주는 표시로 쓰면 된다.
동일 열이 큰 후보는 그만큼 조합에 여유가 있다는 뜻이다. 인셋을 조금 달리 잡아도 같은 결과가 나온다는 것이니, 현장에서 치수를 조정할 여지가 있다고 봐도 된다.
아직 안 되는 것
코어형 굴절계단 전용이다. 계단참에서 방향을 바꿔 좌우로 왕복하며 올라가는, 아파트·근생 코어에서 흔히 보는 그 구조를 전제로 한다. 구간 수가 짝수(2·4·6·8)로 강제되는 것도 이 좌우 대칭 때문이다. 직선 계단이나 나선 계단, 좌우 비대칭 굴절계단에는 맞지 않는다.
단너비로 나누어떨어져야 한다. 코어 내측 폭에서 계단참과 여유를 뺀 길이가 단너비의 정수배가 아니면 그 자리에서 멈추고, 나누어떨어지는 단너비를 제안한다. 그 값으로 강행할지 물어본다.
층별 기록이 잘릴 수 있다. 확정 배치를 도면 사전에 문자열로 저장하는데, 구간이 6~8개로 많아지면 이 문자열이 저장 한도(255자)를 넘어설 수 있다. 넘으면 다음 층 작도 때 위층 기록을 못 읽는다. 구간 2~4개에서는 여유가 있다.
레이어 이름이 겹칠 수 있다. STAIR FIN SLAB CHK 네 개를 쓰는데, 같은 이름이 이미 도면에 있으면 새로 만들지 않고 기존 레이어를 그대로 쓴다. 색이나 선종이 회사 표준을 따라간다는 뜻이다. 파일 안 *STC_LAYERS* 부분을 고치면 이름을 바꿀 수 있다.
실패 원인 문구가 정확하지 않을 때가 있다. 통과 후보가 하나도 없을 때 원인을 알려주는데, 단높이 초과로 걸러진 경우가 집계에서 빠져 있다. 결과 자체는 맞지만 안내 문구가 “레벨 부족”으로 뭉뚱그려질 수 있다.
단면만 그린다. 평면, 난간, 손잡이, 치수 기입은 없다. 검토와 골격까지가 이 도구의 몫이다.
오토캐드에서는 검증하지 않았다. 도면 사전과 폴리선 작도가 주된 동작이라 크게 다르지 않을 것 같지만, 확인한 건 아니다.
받아 가기
문제가 있거나 잘 안 되는 부분이 있으면 댓글로 알려주세요. 확인해서 반영하겠습니다.
짧은 회고
이 도구를 만들면서 가장 오래 붙잡은 건 알고리즘이 아니라 기준선이었다. STC의 첫 버전은 슬래브 밑면을 계단 코 선에서 잡았고, 마감 두께는 아예 식에 없었다. 결과는 그럴듯하게 나왔다. 표에 숫자가 뜨고 단면이 그려졌으니까. 그런데 손으로 검산해보니 실제보다 270 정도를 너그럽게 계산하고 있었다.
작동하는 것과 맞는 것은 다르다는 걸, 이번만큼 분명하게 느낀 적이 없다. 오히려 아무것도 안 나왔으면 바로 알았을 텐데, 잘 돌아가니까 한동안 몰랐다. 자동화 도구가 위험해지는 지점이 정확히 여기라는 생각을 했다. 사람이 검토하던 걸 대신 해주는 도구일수록, 그 안의 전제를 사람이 계속 들여다보고 있어야 한다.
그래서 이 리습의 판정식은 파일 맨 위 주석에 전부 적어 뒀다. 가져다 쓰시는 분이 자기 기준과 맞는지 한 번 확인해보셨으면 한다.
개인·비영리 자유 사용 / 출처(Talkative Archi) 표기 시 수정 가능 / 무단 재배포·상업적 판매 금지 / 무보증·본인 책임 — 자세히
답글 남기기