본문 바로가기
  • You find inspiration to create your own path !
업무 자동화/FreeCAD

Feature 기반 3D CAD를 데이터베이스로 바라보기

by ToolBOX01 2026. 6. 23.
반응형

■ Feature 기반(Creo, CATIA, SolidWorks) CAD는 거대한 객체 지향 데이터베이스

많은 사람들이 3D CAD를 "형상을 그리는 소프트웨어"로 생각합니다. 하지만 FEATURE 기반 3D CAD(PTC Creo, CATIA, SolidWorks, NX 등)의 내부 구조를 살펴보면, CAD는 단순한 그래픽 도구가 아니라 데이터를 생성, 관리, 참조, 검증하는 데이터베이스 시스템(Database System)에 가깝습니다.

특히 관계형 데이터베이스(RDBMS)와 객체지향(Object-Oriented) 개념을 이해하고 있다면 CAD의 동작 원리를 훨씬 쉽게 이해할 수 있습니다.

 

3D CAD = 객체-관계형 데이터베이스

우리는 보통 CAD를 “형상을 그리는 프로그램”으로 생각합니다.
하지만 FEATURE 기반 CAD의 내부를 들여다보면 테이블, 키, 참조, 트랜잭션, 재계산 엔진이 존재합니다.
FEATURE 기반 CAD는 형상을 저장하는 그래픽 툴이 아니라, 설계 의도를 저장하는 데이터베이스 시스템입니다.


도면 수정이 아니라 “데이터 업데이트”로 보이기 시작합니다.
치수 변경 → 관계 검증 → 재생성 → 하위 객체 업데이트라는 흐름은 데이터베이스(DB)의 UPDATE + CASCADE와 거의 같습니다.

 

데이터베이스란 무엇입니까?
데이터베이스는 마치 도서관의 책장처럼, 컴퓨터 안에 방대한 양의 정보를 정리해서 보관하는 곳이라고 생각하면 됩니다.
현실 세계의 복잡한 정보를 컴퓨터 안에서 정확하게 모델링하고, 이를 테이블 형태로 연결하여 관리하는 것입니다.
예시: 좋아하는 노래 가사, 친구들의 전화번호, 회사에서 일하는 사람들의 정보 등을 모두 한 곳에 모아서 관리할 수 있는 
공간입니다.

객체-관계형 데이터베이스란 무엇입니까?
1) 객체: 현실 세계의 사물이나 개념을 컴퓨터 안에서 표현하는 방법입니다. 예를 들어, '사람'이라는 객체는 이름,
나이, 주소 등의 정보를 가질 수 있습니다.

2) 관계형: 서로 관련된 데이터들을 테이블 형태로 연결하여 관리하는 방식입니다. 예를 들어, '사람' 테이블과 
'회사' 테이블을 연결하여 어떤 사람이 어떤 회사에 소속되어 있는지 알 수 있습니다.


Feature 기반 CAD는 왜 데이터베이스인가?

아래와 같은 모델이 있다고 가정해 보겠습니다.

스케치
   ↓
돌출(Extrude)
   ↓
구멍(Hole)
   ↓
모따기(Chamfer)

사용자는 단순히 형상을 만들었다고 생각하지만 CAD 내부에서는 다음과 같이 관리됩니다.

Feature ID Type Parent
F1 Sketch -
F2 Extrude F1
F3 Hole F2
F4 Chamfer F3

각 Feature는 하나의 데이터 레코드이며 서로 참조 관계를 가집니다. 이는 데이터베이스의 테이블 구조와 매우 유사합니다.


Feature 기반 CAD를 구성하는 4개의 데이터 계층

“왜 치수 하나를 바꾸면 모델 전체가 자동으로 수정될까?” 이 질문에 대한 가장 정확한 답은 ‘CAD가 데이터베이스처럼 동작하기 때문’입니다.

FEATURE 기반 3D CAD(PTC Creo, CATIA, SolidWorks 등)는 단순한 그림 도구가 아닙니다. 각 피처(Extrude, Hole, Fillet 등)는 독립 객체로 저장되고, 서로를 참조하며, 변경 시 참조 무결성을 검사한 뒤 전체 모델을 재계산합니다. 이는 관계형 데이터베이스의 외래키(FK)트랜잭션 개념과 놀라울 정도로 닮아 있습니다.

1. 레이 1 :  Parameter Schema — 치수는 컬럼(Column)이다

모든 설계의 시작점입니다. 길이, 각도, 두께, 수량 같은 값이 저장됩니다.

CAD 개념 DB 개념
치수(D1, D2) 컬럼(Column)
관계식(D2 = D1/2) 계산식(Computed Column)
전역 변수 도메인/환경 변수
단위(mm, deg) 타입(Type)

 

치수는 숫자가 아니라 재사용 가능한 데이터 정의입니다. 그래서 한 번 정의한 값을 여러 피처가 공유할 수 있습니다.


2. 레이어 2 : Feature Schema — 피처는 레코드(Row)다

Extrude, Revolve, Hole 같은 피처는 독립 객체로 저장됩니다. 각 피처(돌출, 회전, 라운드 등)는 데이터베이스의 레코드(Record)와 같습니다

 

  • PK (Primary Key): Feature_ID (내부 고유 식별자)
  • Attributes: Feature_Type(Extrude, Cut, Fillet), Timestamp(생성 순서), Status(Active, Suppressed)
  • FK (Foreign Key): Parent_Feature_ID (참조하는 부모 피처 ID)

피처는 형상 자체가 아니라 형상을 만드는 절차와 참조를 저장합니다. 예를 들어 Hole 피처는 “지름 10mm짜리 구멍”이라는 결과보다 어떤 면에, 어떤 위치에, 어떤 치수로 생성되었는지를 기록합니다.

 


3. 레이어 3 : Reference Graph — CAD의 외래키(FK)

이 레이어가 CAD를 단순 그래픽 툴과 구분합니다.

FeatureDependency
parent_feature child_feature
Extrude_1 Hole_1
Hole_1 Pattern_1
Pattern_1 Chamfer_1

 

"Extrude_1"을 삭제하면   무슨 일이 벌어질까?

1) Extrude_1 삭제
2) Hole_1의 기준 면이 사라짐
3) Pattern_1도 무효화
4) Chamfer_1까지 연쇄 실패

참조 무결성과 관계 (Parent-Child Relationship)

RDBMS에서 가장 중요한 개념인 외래키(FK) 제약조건참조 무결성은 CAD의 부모-자식 관계(Parent-Child)와 1:1로 대응됩니다.

 

  • 스케치 기반 피처: Extrude(자식)는 상위 Sketch 또는 Datum Plane(부모)의 고유 ID를 참조(FK)합니다.
  • Cascade Delete (연쇄 삭제): RDBMS에서 부모 레코드를 지우면 자식 레코드도 지워지거나 에러가 나듯, CAD에서도 부모 피처를 삭제하면 이를 참조하던 자식 피처들이 에러(Constraint Violation)를 일으키거나 함께 Suppress/Delete 됩니다.
  • 순환 참조 방지 (No Cyclic Dependency): 데이터베이스 아키텍처와 마찬가지로, CAD에서도 피처 A가 B를 참조하고, B가 다시 A를 참조하는 순환 관계는 엄격히 금지됩니다(Directed Acyclic Graph, DAG 구조).

 

4. 레이어 4 : Regeneration Engine — 트랜잭션과 재계산

치수 하나를 바꾸면 CAD는 다음 순서로 동작합니다.

 

1) 파라미터 값 변경 (UPDATE)
2) 의존성 그래프 탐색
3) 영향받는 피처 순서 계산 (Topological Sort)
4) 피처 재생성
5) 실패 시 롤백 또는 오류 표시

3D CAD는 설계 변경 이력을 완벽하게 추적할 수 있는 Log-structured 데이터베이스와 유사합니다
- 트랜잭션과 이력 관리 (Transaction & Rollback)

  • Regeneration (재연산 = Query Execution): 상위 피처의 치수(Parameter)를 바꾸는 것은 데이터베이스의 UPDATE 문을 실행하는 것과 같습니다. 재생성 버튼을 누르면, 최상위 부모 피처부터 최하위 자식 피처까지 순서대로 연산(SELECT 및 연쇄 UPDATE)이 수행됩니다.
  • Rollback (치기 이력 이동): CAD의 '모델 트리 바(Rollback Bar)'를 위로 올리는 행위는 데이터베이스에서 특정 트랜잭션 타임스탬프 시점으로 ROLLBACK 하거나 Flashback 쿼리를 실행하는 것과 동일합니다. 그 하위 피처(데이터)들은 물리적으로 삭제된 것이 아니라 잠시 '비활성화(Suppressed)' 상태로 로그에만 남게 됩니다.

어셈블리: 계층형 및 네트워크 데이터 모델

단품(Part)이 모여 이루는 어셈블리(Assembly) 구조는 완벽한 BOM(Bill of Materials) 트리 구조이자 계층형 데이터베이스 모델입니다.

  • 인스턴스화 (Instantiation): 어셈블리 파일은 부품의 형상 데이터를 직접 가지지 않습니다. 오직 부품 파일의 경로(FK 역할)와 어셈블리 내에서의 배치 좌표계(Matrix), 그리고 수량 정보만을 가진 링크 테이블입니다.
  • 상형 설계 (Top-Down Design): 어셈블리 수준에서 다른 부품의 모서리를 참조하여 새로운 부품을 만드는 것은, 서로 다른 테이블(Part A, Part B) 간의 Cross-Reference(교차 참조) 조인(JOIN) 연산을 수행하는 구조적 결합입니다.

FEATURE 베이스 CAD는 "시간 축(Timestamp)에 따라 정렬된 피처 생성 쿼리문(DDL/DML)들의 집합체"이며, 우리가 화면에서 보는 3D 형상은 그 쿼리문들이 순서대로 실행되어 렌더링된 최종 결과 뷰(Materialized View)라고 정의할 수 있습니다. 부품의 API(VBA, Java, Python 등)를 다룰 때도 이러한 테이블-레코드 관점으로 접근하면 객체 모델(Object Model)을 훨씬 쉽게 제어할 수 있습니다.

 

 

반응형