Gear Desk · 기어 설계 보조 프로그램
모듈·잇수·압력각만 넣으면 스퍼·랙·베벨·제네바·탈진휠·웜의 기준 치수와 치형을 계산해 DXF·STEP으로 바로 뽑아 주는 9 MB짜리 윈도우 설계 보조 도구
| NO. | S-01 |
|---|---|
| FIELD | 기구학 · 3D 설계 |
| SCALE | 일반 |
| TOOLS | Python · Tkinter |
| DATE | 2026 |
| REPO | khw1566/Gear-Design-Assistant-Program |
왜 만들었나
기구 설계 과제를 할 때마다 기어 치수를 계산기로 두드리고, 그 값을 CAD에 옮겨 치형을 다시 그리는 일이 반복됐다. 계산 실수 하나가 치형 전체를 다시 그리게 만들었고, 학교 PC에는 무거운 설계 프로그램을 마음대로 설치할 수도 없었다.
그래서 목표를 이렇게 잡았다. 설치 없이 실행되고, 치수 계산부터 CAD로 가져갈 파일까지 한 번에 끝내는 도구.
계산은 손으로 해 봤으니까, 이번엔 손이 안 가게
무엇을 만들었나
Gear Desk는 윈도우용 단일 EXE(약 9.28 MiB) 프로그램이다. 형식을 고르고 값을 넣으면 0.18초 뒤 치수와 형상이 갱신된다.
| 형식 | 계산 / 2D | 3D(STEP) |
|---|---|---|
| 스퍼기어 | 피치원·기초원·이끝원·이뿌리원, 인벌류트 치형 | 치형 압출 솔리드 + 축 구멍 |
| 랙 | 피치·치 높이·전체 길이 | 직선 치형 압출 솔리드 |
| 베벨기어 | 축각 90° 원추각·원추거리·외단 이끝원 | 참고용 축소 로프트 솔리드 |
| 제네바 | 슬롯 배치, 크랭크 반지름, 운동/정지 구간 | — |
| 탈진휠 | 톱니형 개념 치형 | 개념 치형 압출 솔리드 |
| 웜 기어쌍 | 기준 지름·리드·축간거리·감속비 | — |
- 이 상세도: 이 하나를 확대해 현두께
sc = 2r·sin(π/2z), 현이높이hc,ha,hf를 치수선과 화살표로 표시한다. 원호 치두께s = πm/2와 직선 현두께를 구분해서 보여 준다. - 스냅과 두 점 측정: 끝점·중심점·교차점·사분점에 마우스를 대면 강조되고, 두 점을 찍으면 거리와 ΔX·ΔY가 나온다. 화면 픽셀이 아니라 모델 좌표로 계산해서 확대해도 값이 변하지 않는다.
- 출력: CSV(Excel용), SVG, DXF(R2000), STEP(AP203). DXF·STEP 옆에는 입력 조건과 한계를 적은
.dimensions.csv가 같이 저장된다. - 사용성: 입력은 0.45초 뒤 자동 저장되고, 창을 닫으면 트레이로 접혀 대기한다. 중복 실행 대신 기존 창을 다시 연다.
어떻게 만들었나
- 계산 엔진 분리: 형식별 입력 범위(모듈 0.05
50 mm, 잇수 6300 등)를 스키마로 정의하고, 검증과 계산을 화면과 분리된 모듈(gearmath.py)에 모았다. 덕분에 화면 없이도 단위 테스트를 돌릴 수 있었다. - 인벌류트 치형: 기초원에서 이끝원까지 인벌류트 곡선을 한쪽 측면당 18개 선분으로 근사해 외곽을 만들고, 상세도에서는 100개 구간으로 더 촘촘하게 그렸다.
- CAD 파일 직접 작성: 외부 CAD 엔진 없이 DXF와 STEP(
FACETED_BREP) 텍스트를 직접 써서 내보낸다. 실행용 외부 라이브러리는 0개다. - 가볍게 유지하기: 트레이 관리는 Windows 메시지 스레드로 처리하고, 창이 접혀 있을 때는 다시 그리지 않는다. 접은 상태에서 3초간 측정한 CPU 사용률은 0.00%였다.
"가볍다"를 말로만 하지 않으려고 메모리와 CPU를 직접 쟀다
결과와 검증
만든 파일이 "열리는 것처럼 보이는지"가 아니라, 다른 도구로 다시 읽어서 맞는지 확인했다.
- 계산·범위·출력·폐곡면 방향 단위 검사 5개, 상세도(교차점·스냅·현두께) 단위 검사 5개 통과
- STEP 4종: OCCT로 다시 읽어 유효한 솔리드이고, 체적이 수식 계산값과 일치함을 확인
- DXF 12종(일반 6 + 상세 6): ezdxf 읽기와 감사 오류 0
- 실제 Tk 창 6종에서 점 강조, 두 점 측정, 확대 후 거리 유지, 자동 저장·트레이 복원 자동 검사 통과
- 배포 EXE 약 9.28 MiB, 실행 시 메모리(RSS) 약 40.6 MiB
한계와 다음 단계
할 수 있는 것과 없는 것을 README와 출력 파일에 분명히 적었다. 베벨은 구면 인벌류트가 아닌 참고 솔리드이고, 제네바의 잠금 원호, 탈진기 팔렛, 웜 호빙 치면, 치근 트로코이드와 언더컷 절삭은 구현하지 않았다. 강도·공차·소음 검증도 범위 밖이다.
다음 목표: 전위 계수와 백래시 입력, 실제 맞물림 간섭 검사
이 프로젝트에서 가장 크게 배운 것은 설계 도구는 계산이 맞는 것만큼 "어디까지 믿어도 되는지"를 알려 주는 게 중요하다는 점이다.