본문으로 건너뛰기

Dev.

AutoCAD 방식 2D 작도와 직접 모델링 3D 를 통합한 CAD 프로그램 개발

AutoCAD 방식 2D 작도와 SpaceClaim 방식 3D 직접 모델링을 한 프로그램에 통합한 iCAD 를 v1.0.0.5 까지 개발하였다. 2D 명령 196개를 구현하였고, 5만 객체 도면의 휠 확대 응답을 1.6초에서 3 ms 로 줄였다.

2026. 10. 30

개요

이 개발일지는 2D 작도와 3D 모델링을 한 프로그램에서 수행하는 CAD 프로그램 iCAD 의 개발 과정을 기록한다. v1.0.0.0(2026.9.10.)부터 v1.0.0.5(2026.10.30.)까지 여섯 판의 작업을 한 편으로 종합하였다.

2D 작도는 AutoCAD 의 명령 체계와 화면 배치를 따르고, 3D 모델링은 ANSYS SpaceClaim 의 직접 모델링 방식을 따른다. 형상 계산에는 공개 형상 커널 OCCT 를, 화면에는 Python 과 PySide6 를 사용하였다.

그림 1은 iCAD 의 기능 목록과 구현 여부를 나타낸다. 그림 2는 판별 작업 순서와 날짜를 나타낸다.

가지를 누르면 아래 단계가 펼쳐지고 다시 누르면 접힘 · 번호는 「핵심 1-2」 꼴
    • 1로고 창
    • 2리본
    • 3파일 메뉴
    • 4명령줄
    • 5플로팅 명령줄
    • 6입력 자동 완성
    • 7선택지 링크
    • 8모형·배치 탭
    • 9상태 표시줄
    • 10도킹 창
    • 11작업 공간 전환
    • 12도움말
    • 132D 배경 밝기
    • 14여러 문서 탭
    • 15명령 별칭 사용자 지정
    • 16리본 사용자 지정
    • 17다국어
    • 18팔레트 창
    • 1설정 파일
    • 2옛 설정 이어받기
    • 3저장되는 값
    • 4사용자 별칭 파일
    • 5객체 스냅 종류 고르기
    • 63D 도구 옵션 창
    • 7격자 간격·극좌표 증분 바꾸기
    • 8통합 옵션 대화상자
    • 9단위 선택
      • 1Windows 실행 파일
      • 2exe 다시 빌드
      • 3실행 파일 크기
      • 4설치 프로그램
      • 1엔진 시험
      • 2화면 시험
      • 3실행 파일 자체 점검
      • 4실제 Windows 손 시험
      • 5반응속도 측정
      • 1개발일지 1편
      • 2genealogypost.com 게시
iCAD구현 34 / 502026.10.30. 기준
      • 1선
      • 2폴리선
      • 3원
      • 4호
      • 5직사각형
      • 6폴리곤
      • 7한 줄 문자
      • 8타원
      • 9스플라인
      • 10점
      • 11구성선
      • 12도넛·구름형 수정 기호
      • 1지우기
      • 2이동
      • 3복사
      • 4회전
      • 5축척
      • 6대칭
      • 7간격띄우기
      • 8자르기
      • 9연장
      • 10분해
      • 11모깎기
      • 12모따기
      • 13그립 편집
      • 14배열
      • 15늘리기
      • 16끊기
      • 17잇기
      • 18특성 일치
      • 19길이 조정
      • 20정렬
      • 1선형 치수
      • 2정렬 치수
      • 3반지름 치수
      • 4지름 치수
      • 5해치
      • 6각도 치수
      • 7기준선·연속 치수
      • 8지시선
      • 9여러 줄 문자
      • 10치수·문자 스타일
      • 11치수 한 명령
      • 12세로좌표 치수
      • 13연관 치수
      • 14치수 그립·문자 편집
      • 15치수 재지정
      • 16표
      • 1도면층
      • 2특성 창
      • 3선 종류 표시
      • 4선 가중치
      • 5선 종류 축척
      • 6블록
      • 7도면층 도구
      • 8도면층 상태
      • 9정리·검사
      • 1블록 속성
      • 2블록 편집기
      • 3블록 팔레트
      • 4비균일 축척 블록
      • 5블록 쓰기
      • 6외부 참조
      • 7DesignCenter
      • 8그룹·그리기 순서
      • 9클립보드
      • 10동적 블록
      • 1좌표 입력
      • 2객체 스냅 9종
      • 3직교
      • 4극좌표 추적
      • 5격자·격자 스냅
      • 6동적 입력
      • 7객체 스냅 추적
      • 8임시 재지정
      • 1거리
      • 2면적
      • 3점 좌표
      • 4객체 정보
      • 1줌·이동
      • 2창·교차 선택
      • 3되돌리기·다시 실행
      • 4오른쪽 클릭 메뉴
      • 53D 스케치로 보내기
      • 6올가미 선택
      • 7빠른 선택·유사 선택
      • 8반응속도 최적화
      • 1배치·뷰포트
      • 2뷰포트 축척
      • 3페이지 설정
      • 4PDF 플롯
      • 5표제란
      • 6프린터 인쇄
      • 1표면거칠기 기호
      • 2기하공차 틀·데이텀
      • 3치수공차 첨자·끼워맞춤 기호
      • 4부품번호 풍선·부품표
      • 5요목표
      • 6나사·기어·베어링 약도
      • 7표제란·도면 양식
      • 1스케치 평면 고르기
      • 2선·사각형·원·3점 호
      • 3잘라내기·곡선 지우기
      • 4그리는 중 치수 입력
      • 5스케치 스냅
      • 6영역 자동 인식
      • 72D 도면에서 가져오기
      • 8스케치 구속조건
      • 9폴리곤·슬롯·타원·스플라인
      • 10스케치 모깎기·간격띄우기
      • 1영역을 입체로
      • 2면 당기기
      • 3모서리 당기기
      • 4회전 당기기
      • 5원통면 당기기
      • 6쓸기
      • 7블렌드
      • 8구배
      • 9대상까지 당기기
      • 1이동·회전 조작기
      • 2수치 이동·회전
      • 3대칭
      • 4패턴
      • 1채우기
      • 2합치기·빼기·교차
      • 3쉘
      • 4면 간격띄우기
      • 5몸체 나누기
      • 1기준 평면
      • 2원점 평면 표시
      • 3기본 도형
      • 4기준 축·점
      • 1거리 측정
      • 2질량 속성
      • 3재료 지정
      • 4각도 측정
      • 5단면 모드
      • 6간섭 검사
      • 1제3각법 투영
      • 2단면도·상세도
      • 1표준 방향
      • 2마우스 회전·이동·확대
      • 3구조 트리
      • 4되돌리기·다시 실행
      • 5표시 모드
      • 6조립품
      • 1자체 형식
      • 2STEP · STP
      • 3IGES · IGS
      • 4STL
      • 53MF
      • 6DXF
      • 7DWG
      • 8PDF 내보내기
      • 9SVG · PNG 내보내기
      • 10OBJ · Parasolid · SAT
      • 1새로 만들기·열기·저장
      • 2가져오기
      • 3최근 파일
      • 4한글 경로
      • 5자동 저장·복구
1구현1미구현초록 가지 핵심기능 3개 · 파란 가지 주요기능 3개 · 가지 오른쪽 숫자는 2차 기준 구현 수/전체 · 2차는 하위 항목이 모두 구현일 때 구현 · 끝 항목 기준 구현 165/199
그림 1. iCAD 기능 마인드맵 (2026.10.30. 기준, 끝 항목 199개 중 구현 165개)

묶음 작업 이름을 누르면 하위 작업이 펼쳐짐 · 막대에 마우스를 올리면 기간과 상태 표시
지난 기간
오늘 10.30
ID
작업 이름
기간
시작
완료
진행률
선행
2026.09.9.079.149.219.282026.10.10.0510.1210.1910.262026.11.11.0211.0911.1611.2311.302026.12.12.07
1
v1.0.0.0 2D 작도·3D 모델링·형식
1일
9.10
9.10
100%
✓ 해결 완료
2
v1.0.0.1 이름 변경·2D 보완 13건
26일
10.02
10.27
100%
✓ 해결 완료
3
v1.0.0.2 2D 보완 12건
1일
10.27
10.27
100%
✓ 해결 완료
4
v1.0.0.3 AutoCAD 화면·치수·배치
1일
10.29
10.29
100%
✓ 해결 완료
5
v1.0.0.4 3D 기본기 1
1일
10.29
10.29
100%
✓ 해결 완료

6
2일
10.29
10.30
100%
✓ 해결 완료
6.1
강의 영상 기준 기능 공백 조사
1일
10.29
10.29
100%
✓ 해결 완료
6.2
설정·옵션·명령 보완, Inno Setup
2일
10.29
10.30
100%
6.1
✓ 해결 완료
6.3
PC 설치·사례 CS1~CS6
1일
10.30
10.30
100%
6.2
✓ 해결 완료
6.4
블록·참조·도면층·그립·올가미
1일
10.30
10.30
100%
6.3
✓ 해결 완료
6.5
반응속도 측정과 최적화
1일
10.30
10.30
100%
6.4
✓ 해결 완료
7
genealogypost 개발일지·본편 게시
1일
10.30
10.30
80%
6.5
진행
8
새 설치 파일 사람 방식 실기 시험
3일
10.31
11.02
0%
7
계획(안)
M
동력전달장치 기준 범위 결정
0일
11.03
11.03
0%
8
동력전달장치 기준 범위 결정
9
v1.0.0.6 기계 제도 기호·도면 양식(안)
11일
11.04
11.14
0%
M
계획(안)
10
v1.0.0.7 3D 기본기 2(안)
10일
11.16
11.25
0%
9
계획(안)
11
v1.0.1.0 3D 형상 확장(안)
12일
11.26
12.07
0%
10
계획(안)
완료(해결된 지난 작업)진행게시 대기계획(안)결정 시점묶음 작업지난 기간
그림 2. iCAD 개발 시퀀스 (오늘 이후 작업은 계획(안))
목적
AutoCAD 사용자가 같은 명령과 조작으로 2D 도면을 그리고, 그 도면을 같은 프로그램 안에서 3D 형상으로 만들 수 있는 무료 CAD 프로그램을 제작한다.
계획
  1. 요구 조건과 비교 대상(AutoCAD, SpaceClaim) 정리
  2. 형상 커널과 화면 구조 결정
  3. 첫 판에서 2D 작도, 3D 모델링, 파일 형식을 한 번에 구현
  4. 기능 지도 작성 후 판마다 공백 항목 보완
  5. 설치 파일 생성과 실제 Windows PC 시험
  6. 반응속도 측정과 개선
체크리스트 9/11
  • ☑ 2D 작도·3D 모델링·형식 7종 첫 판 구현 (3.1절)
  • ☑ 기능 지도 158개 조사와 판별 계획 수립 (2.2절)
  • ☑ 2D 보완 25건, v1.0.0.1과 v1.0.0.2 (3.2절)
  • ☑ AutoCAD 방식 명령줄·치수·배치·PDF 출력 (3.3절)
  • ☑ 회전 당기기·원통면 당기기·대칭·재료 15종 (3.4절)
  • ☑ AutoCAD 명령 수집과 공백 46건 보완, 명령 196개 (3.5~3.6절)
  • ☑ Inno Setup 설치 파일 생성과 PC 사례 시험 6건 (3.5절)
  • ☑ 반응속도 측정, 휠 확대 354 ms에서 4 ms (3.7절)
  • ☑ 동력전달장치 기준 도면 수집 (1.3절)
  • ☐ 기계 제도 기호(표면거칠기, 기하공차, 부품표) (4절, 다음 판)
  • ☐ 새 설치 파일의 마우스 작도 시험 (4절, 진행 중)

1. 정보수집

1.1 요구 조건과 비교 대상

첫 판의 요구는 2D 작도와 3D 모델링을 함께 지원하고, IGES, STL, STEP, DXF, DWG 형식을 주고받는 것이었다. 완료 기준은 2D 스케치를 입체로 만들어 STEP 과 STL 로 저장하는 것으로 정하였다.

작업 중에 화면 기준이 추가되었다. 2D 는 AutoCAD 수준, 3D 는 ANSYS SpaceClaim 수준의 인터페이스를 갖추도록 하였다. 표 1은 iCAD 와 상용 CAD 의 형상 생성 방식을 비교한 것이다.

표 1 형상 생성 방식 비교

프로그램 2D 도면 3D 형상 생성 형상 커널
AutoCAD 독립 2D 작도가 중심 솔리드 명령 위주, 이력 없음 ShapeManager
SolidWorks 3D 모델에서 투영 스케치 구속과 피처 이력 Parasolid
CATIA 3D 모델에서 투영 스케치 구속과 피처 이력 CGM
Creo 3D 모델에서 투영 스케치 구속과 피처 이력 Granite
SpaceClaim 3D 모델에서 투영 면을 당기는 직접 모델링 ACIS
iCAD 독립 2D 작도(AutoCAD 명령) 면을 당기는 직접 모델링 OCCT 8.0.1

iCAD 의 2D 객체와 3D 스케치 객체는 같은 자료 구조를 사용한다.

1.2 AutoCAD 명령 수집

v1.0.0.5 에서는 AutoCAD 강의 영상을 따라 기능 공백을 찾았고, 이어서 Autodesk 공식 도움말의 명령 참조 문서를 기준으로 명령과 옵션을 수집하였다(참고문헌 1, 2).

수집은 네 군으로 나누었다. A군은 그리기와 문자, B군은 수정과 선택, C군은 블록과 참조와 도면층, D군은 치수와 보기와 단축키이다. 군마다 옵션 키워드와 효과를 적고 iCAD 소스와 대조하여 있음, 일부, 없음으로 판정하였다.

대조 결과 공백 46건(G-01~G-46)을 찾았다. 그립 모드 순환, 블록 속성, 블록 편집기, 외부 참조, DesignCenter, 도면층 특성 관리자, 임시 재지정 키가 큰 공백이었다.

1.3 동력전달장치 기준 도면

도면 완성도의 기준은 전산응용기계제도기능사 실기 수준의 동력전달장치 도면으로 정하였다. 한국산업인력공단 공개문제는 도면 쪽이 비어 있어, 도면 양식 규정만 확보하였다(참고문헌 3).

조립도와 부품도는 교육용 공개 자료에서 6종을 모았다. 그 도면에는 표면거칠기 기호, 기하공차 기입 틀, 데이텀, 치수공차 첨자, 부품번호 풍선, 요목표가 쓰인다. 이 기호들은 현재 iCAD 에 없으며 다음 판의 범위로 정하였다.

2. 전략수립

2.1 프로그램 구조

표 2는 첫 판에서 정한 구조와 그 근거를 나타낸다.

표 2 구조 결정

항목 결정 근거
형상 커널 OCCT 8.0.1 (cadquery-ocp) STEP, IGES, 불리언, 모깎기, 은선 제거를 한 라이브러리에서 처리한다. LGPL 무료
3D 방식 직접 모델링 이력 재생성이 없으므로 위상 명명 문제가 생기지 않는다
3D 화면 OCCT V3d·AIS 를 PySide6 창에 연결 선택, 강조, 뷰 큐브, 이동 조작기를 OCCT 가 제공한다
2D 화면 QPainter 와 명령 생성기 AutoCAD 명령줄의 입력 요청과 값의 반복은 Python 생성기의 yield 와 같은 형태이다
2D·3D 자료 선, 호, 원, 폴리선 객체 공유 2D 도면을 3D 스케치로 보내고 3D 몸체를 2D 도면으로 투영한다
DWG ODA File Converter 경유 DWG 는 비공개 규격이므로 직접 구현하지 않았다
배포 PyInstaller 폴더형과 Inno Setup OCCT DLL 이 커서 한 파일형은 실행마다 수백 MB 를 풀어야 한다

2.2 기능 지도와 판별 계획

2026.10.26. 소스를 기능 단위로 조사하여 158개 항목을 구현 92, 일부 7, 없음 59로 분류하였다. 이 기능 지도를 기준으로 공백 항목을 판마다 나누어 넣었다. 표 3은 판별 주제를 나타낸다.

표 3 판별 주제

판 날짜 주제
v1.0.0.0 2026.9.10. 2D 작도, 3D 모델링, 형식 7종
v1.0.0.1 2026.10.27. 이름 변경, 2D 보완 13건(해치, 배열, 타원, 스플라인 등)
v1.0.0.2 2026.10.27. 2D 보완 12건(블록, 여러 줄 문자, 지시선, 표 등)
v1.0.0.3 2026.10.29. AutoCAD 방식 명령줄, 치수, 배치와 PDF 출력
v1.0.0.4 2026.10.29. 회전 당기기, 원통면 당기기, 대칭, 각도 측정, 재료
v1.0.0.5 2026.10.30. 2D 공백 46건, 설치 파일, PC 시험, 반응속도

2.3 시험 방법

시험은 네 단계로 구성하였다. 엔진 시험(enginetest)은 화면 없이 연산과 파일 왕복을 확인한다. 화면 시험(realtest)은 마우스와 자판 사건을 실제 창에 보내고 화면을 저장한다.

실행 파일 자체 점검(–selftest)은 빌드한 exe 안에서 핵심 기능을 다시 실행한다. 마지막으로 사용자 PC 에 설치 파일을 설치하고 사례 도면을 그린 뒤 제거하는 시험을 반복하였다.

3. 예시. iCAD 개발 과정과 결과

3.1 첫 판 v1.0.0.0

첫 판에서 2D 명령 30개, 3D 도구(선택, 당기기, 이동, 채우기, 결합, 스케치), 파일 형식 7종을 구현하였다. 3D 에서 2D 로 가는 제3각법 투영은 OCCT 은선 제거로 숨은선을 HIDDEN 선 종류로 그린다.

STEP 왕복은 부피 56,858.407 mm³ 로 일치하였다. IGES 는 읽은 결과가 곡면 묶음이라 부피가 54,858 로 달랐고, 꿰매기(Sewing) 후 닫힌 껍질을 고체로 바꾸어 일치시켰다.

2만 3천 객체 도면에서 마우스 이동 한 번에 약 200 ms 가 걸렸다. 객체 전체를 매번 검사하였기 때문이며, 경계 상자 numpy 배열 색인을 적용하여 선택 0.3 ms, 스냅 1 ms 로 줄였다.

3.2 2D 보완 v1.0.0.1, v1.0.0.2

두 판에 걸쳐 2D 명령 25건을 추가하였다. 해치 내부 점의 경계는 3D 스케치 영역 계산과 같은 OCCT 분할기로 찾는다. 그림 3은 v1.0.0.2 에서 추가한 객체를 한 화면에 그린 결과이다.

iCAD v1.0.0.2 추가 객체
그림 3. 여러 줄 문자, 지시선, 표, 구성선, 도넛, 구름형 수정 기호

시계 방향 호 구간이 있는 폴리선의 면적이 틀린 결함을 이 과정에서 발견하였다. 호의 표본점을 반시계 순서로 뽑아 구간마다 점 순서가 뒤집혔기 때문이며, 진행 방향을 지키는 표본 함수로 고쳤다.

3.3 AutoCAD 방식 화면 v1.0.0.3

작도 화면 위에 반투명 플로팅 명령줄을 두고, 명령 이름과 별칭과 한글 이름으로 자동 완성 후보를 보이게 하였다. 치수는 DIM 한 명령으로 선, 원, 호를 보고 종류를 정한다.

치수 스타일 관리자는 AutoCAD 와 같은 7개 탭과 45개 변수를 갖는다. 그림 4는 DIM 명령으로 만든 선형, 각도, 지름 치수를 나타낸다.

DIM 치수 결과
그림 4. DIM 명령으로 그린 선형·각도·지름 치수

배치는 모형 탭과 배치 탭, 용지 공간, 뷰포트와 축척, 페이지 설정, 600 dpi PDF 출력을 갖추었다. 그림 5는 배치1 의 뷰포트 화면이다.

배치와 뷰포트
그림 5. 배치 탭의 용지와 뷰포트

3.4 3D 기본기 v1.0.0.4

3D 에는 면을 축 둘레로 돌리는 회전 당기기와, 구멍이나 축의 지름을 바꾸는 원통면 당기기를 추가하였다. 그림 6은 직선 당기기와 모서리 모깎기로 만든 판이고, 그림 7은 Z 축 둘레 회전 당기기 결과이다.

3D 구멍과 모깎기
그림 6. 당기기로 만든 판의 구멍과 모서리 모깎기
회전 당기기
그림 7. 스케치 영역을 Z 축 둘레로 360° 회전한 몸체

재료는 강, 알루미늄 6061, ABS 등 15종과 사용자 밀도를 지정할 수 있으며, 질량 속성 계산에 반영된다.

3.5 설치 파일과 PC 사례 시험 v1.0.0.5

Windows 실행 파일은 컨테이너의 wine 환경에서 PyInstaller 로 만들고, Inno Setup 으로 설치 파일(86 MB)을 생성하였다. 관리자 권한 없이 사용자 폴더에 설치되고 제어판에서 제거된다.

wine 에서는 Qt6Core 가 Windows 10 시스템 DLL 인 icuuc.dll 을 요구하였다. 함수 20개를 가진 대역 DLL 을 mingw 로 만들어 wine 에만 두었고, 설치 파일에는 넣지 않았다.

사용자 PC 에 설치한 뒤 공개 연습 도면 6건을 그리거나 열어 보았다. 표 4는 이 시험에서 발견하여 고친 결함을 나타낸다.

표 4 PC 사례 시험에서 고친 결함

현상 원인과 조치
모깎기한 사각형을 안쪽으로 간격띄우기하면 실패 반지름이 0 이하가 되는 호 구간을 빼고 이웃 구간을 잇도록 수정
DXF 로 저장하면 HIDDEN 선 종류가 실선으로 바뀜 ezdxf 기본 선 종류 표에 없는 무늬를 저장 전에 추가
반지름으로 그린 폴리곤의 아래 변이 기울어짐 시작 각을 −90°+180°/n 으로 바꾸어 아래 변을 수평으로
RECOVER 가 DXF 를 읽지 못함 DXF 이면 ezdxf 복구 읽기를 사용
확인 창의 예·아니요 단추가 영어로 표시됨 Qt 한국어 번역 파일을 실행 파일에 포함
인접한 두 고리의 해치 면적이 0 고리마다 포함 관계를 판정하여 섬만 빼도록 수정
폴리선 면적이 근삿값 호 구간의 활꼴 면적을 정확한 식으로 계산
새 배치에 뷰포트가 생기지 않음 LAYOUTCREATEVIEWPORT 와 같이 첫 열람 때 뷰포트 생성

3.6 블록, 참조, 탐색기 v1.0.0.5

1.2절의 공백 46건을 9개 묶음으로 나누어 구현하였다. 블록에는 속성(ATTDEF), 블록 편집기(BEDIT), 비균일 축척, 블록 쓰기(WBLOCK)를 넣었고, 블록 팔레트에서 끌어 놓아 삽입할 수 있다.

블록 팔레트
그림 8. 블록 팔레트(현재 도면, 최근 사용, 즐겨찾기, 라이브러리 탭)

탐색기 계열에는 외부 참조 팔레트, DesignCenter, 도면층 특성 관리자를 추가하였다. 도면층 관리자는 필터 나무, 검색, 상태 기호, 병합과 격리 메뉴를 갖는다. 그림 9는 도면층 관리자 화면이다.

도면층 특성 관리자
그림 9. 도면층 특성 관리자

그립은 Enter 로 신축, 이동, 회전, 축척, 대칭을 차례로 바꾸고, 누른 채 끌면 올가미 선택이 된다. Shift 와 객체 스냅 키를 누르는 동안 스냅을 임시로 바꾸는 임시 재지정 키도 추가하였다. 명령은 196개가 되었다.

3.7 반응속도 측정과 개선

CAD 는 마우스 동작과 화면 응답 사이의 지연이 작업 속도를 정한다. 이에 객체 1천, 1만, 5만 개의 도면을 만들어 사용자가 체감하는 동작 9가지의 시간을 측정하였다. 표 5는 개선 전후 값을 나타낸다.

표 5 동작별 응답 시간 (ms, 사건 처리와 다시 그리기 포함)

동작 1만 개 전 1만 개 후 5만 개 전 5만 개 후
휠 확대 한 단계 354.6 4.1 1,609.8 3.2
가운데 단추 끌어 이동 346.9 5.0 1,688.5 4.3
선 하나 그리기 명령 449.0 26.5 2,055.5 74.8
되돌리기 541.2 56.3 2,887.5 483.6
전체 선택 후 화면 3,248.0 10.3 93,509.6 23.0
선 그리기 중 마우스 이동(스냅) 10.7 9.4 19.0 21.1
처음 전체 그리기 397.3 325.2 1,699.8 1,631.4

측정 scripts/bench.py, 가상 화면 1500×900, 7회 측정의 중앙값

휠 확대와 끌어 이동은 화면 전체를 다시 그리던 방식에서, 직전 그림을 새 축척으로 옮겨 보이고 동작이 140 ms 멈추면 다시 그리는 방식으로 바꾸었다.

도면이 바뀌면 객체마다 특성을 직렬화하여 이전 값과 비교하고, 바뀐 객체의 경계 상자 영역만 다시 그린다. 부분 갱신 그림과 전체 그림을 화소 단위로 비교하는 시험 32건을 모두 통과하였다.

전체 선택의 93.5초는 번호로 객체를 찾는 함수가 목록을 처음부터 검색하여 생긴 지연이었다. 번호 사전을 두어 23 ms 로 줄였다. 처음 전체 그리기와 5만 개 도면의 되돌리기는 개선하지 못하였다.

3.8 시험 결과 추이

표 6은 판별 시험 결과를 나타낸다. 모든 판에서 시험을 전부 통과하였다.

표 6 판별 시험 결과

판 엔진 시험 화면 시험 자체 점검
v1.0.0.0 34/34 40/40 14/14 (wine exe)
v1.0.0.1 64/64 56/56 16/16
v1.0.0.2 90/90 75/75 17/17
v1.0.0.3 129/129 111/111 20/20
v1.0.0.4 151/151 128/128 24/24
v1.0.0.5 382/382 188/188 32/32

v1.0.0.5 wine exe 자체 점검은 31/32. 한글 파일 이름을 만들지 못하는 wine 제약 1건이며 실제 Windows 에서는 정상이다.

그림 10은 3D 몸체를 2D 도면으로 투영한 결과이다. 정면도, 평면도, 우측면도, 등각도가 한 도면에 배치된다.

3D 에서 2D 투영
그림 10. 3D 몸체의 제3각법 투영 도면

4. 결과 및 남은 일

본 작업에서는 AutoCAD 방식 2D 작도와 SpaceClaim 방식 3D 직접 모델링을 한 프로그램에 통합한 iCAD 를 v1.0.0.5 까지 개발하였다.

2D 명령은 196개, 기능 지도의 끝 항목은 199개 중 165개를 구현하였다. 설치 파일을 사용자 PC 에 설치하여 사례 6건을 시험하였고 결함 8건을 고쳤다.

휠 확대와 끌어 이동은 5만 개 도면에서 4 ms 안팎으로 응답한다. 동력전달장치 도면에 필요한 기계 제도 기호는 아직 없으며, 다음 판에서 구현한다.

표 7 열린 항목

항목 내용 예정
기계 제도 기호 표면거칠기, 기하공차 틀과 데이텀, 치수공차 첨자, 부품번호 풍선과 부품표, 요목표 v1.0.0.6(안)
도면 양식 A2 표제란, 윤곽선, 중심마크 v1.0.0.6(안)
마우스 작도 시험 새 설치 파일로 격자와 객체 스냅을 써서 대략 그린 뒤 간격띄우기와 자르기로 치수를 맞추는 시험 진행 중
반응속도 처음 전체 그리기 1.6초, 5만 개 되돌리기 0.48초, DXF 읽기 6.3초(5만 개) 다음 판
DXF 미지원 객체 3D 솔리드, 래스터 이미지, 와이프아웃, 다중선, 공차 객체 다음 판
3D 기본기 2 쉘, 패턴, 면 간격띄우기, 단면 모드, 기본 도형 v1.0.0.7(안)

참고문헌

  1. Autodesk, “AutoCAD 2024 Help, Commands”. https://help.autodesk.com/view/ACD/2024/ENU/
  2. Autodesk, “AutoCAD Keyboard Shortcuts Guide”. https://www.autodesk.com/shortcuts/autocad
  3. 한국산업인력공단, “전산응용기계제도기능사 실기 공개문제”, Q-Net. https://www.q-net.or.kr
  4. Open Cascade, “Open CASCADE Technology 8.0 Documentation”. https://dev.opencascade.org/doc/overview/html/
  5. ezdxf, “ezdxf Documentation”. https://ezdxf.readthedocs.io/

ABOUT AUTHOR

shind

shind

소개글이 아직 없습니다.

댓글 남기기

Your email address will not be published. Required fields are marked *