
■ 유사성 평가 프로그램
설계 정보(Parameter & 물리적 속성)와 형상(Vision AI)을 결합한 하이브리드 유사성 평가 프로그램
품번(Part Number) 체계가 지능형 코드(Intelligent / Significant Part Numbering System) 구조를 가지고 있다면, 이는 AI나 물리 파라미터보다 더 명확하고 왜곡 없는 '최상위 도메인 지식(Domain Knowledge)' 역할을 할 수 있습니다.
예를 들어, 품번의 앞 4자리가 BRNG(베어링)나 GEAR(기어)처럼 부품의 대분류를 나타낸다면, 형상이나 무게를 비교하기도 전에 검색 범위를 해당 부품 군집(Cluster)으로 완전히 격리시킬 수 있습니다. 이를 활용해 파이프라인을 고도화하면 유사성 평가의 신뢰도를 최고 수준으로 끌어올릴 수 있습니다.
1. 지능형 품번을 결합한 3단계 필터링 구조
[신규 설계 모델 생성 및 STEP 내보내기]
│
▼ (0단계: 신규 입력된 품번의 특정 자릿수 파싱)
[품번 군집 필터링 (Cluster Filter)]
- 예: 앞 3자리 'SHA' -> 샤프트(Shaft) 군집 데이터만 선택 (타 부품 100% 차단)
│
▼ (1단계: 파라미터 필터링)
[물리적 속성 필터링 (Parametric Filter)]
- 해당 군집 내에서 부피/무게/관성모우먼트가 ±5% 이내인 후보 추출
│
▼ (2단계: AI 정밀 비교)
[비전 AI 이미지 유사도 분석 (Vision AI Matching)]
- 최종 후보들의 회전 이미지 임베딩 벡터 비교 -> 95% 유사도 판정
2. 지능형 품번을 결합한 3단계 필터링 구조
① 형상적 '의사 결정 착오(False Positive)' 완벽 제거
- 문제 상황: 외형 이미지와 부피가 기가 막히게 일치하는 두 부품이 있습니다. 하나는 고온 환경용 엔진 밸브(ENG-V-01)이고, 다른 하나는 일반 배관용 밸브(PIP-V-01)입니다. 비전 AI와 물리 파라미터는 두 부품을 99% 유사하다고 판단할 것입니다.
- 해결 책: 품번 체계에서 이미 ENG와 PIP로 군집이 나뉘기 때문에, 설계자가 엔진 밸브를 설계할 때 배관용 밸브가 추천되는 엔지니어링 에러를 원천 차단합니다.
② 연산 속도의 비약적인 향상 (O(N) -> O(1) 수준으로 대폭 축소)
- 데이터베이스에 수만, 수십만 개의 부품이 쌓여도 품번 자릿수로 인덱싱(Indexing)된 군집만 쿼리하기 때문에 검색 대상이 최초 시작부터 수백 개 단위로 좁혀집니다. 서버의 CPU/GPU 부하가 거의 제로에 수렴하게 됩니다.
3. 구현을 위한 데이터베이스 및 쿼리 고도화 방안
예품번의 각 자릿수가 가진 의미를 데이터베이스 테이블화하여 관리하면 매칭 알고리즘을 아주 깨끗하게 짤 수 있습니다.
① 데이터베이스 스키마 확장 (품번 메타데이터 분리)
| ALTER TABLE cad_models ADD COLUMN part_cluster_prefix VARCHAR(10), -- 품번 분류 코드 (예: 'BRNG', 'GEAR') ADD COLUMN material_code VARCHAR(5); -- 재질 분류 코드 (예: 'ST', 'AL') -- 분류 코드에 인덱스를 걸어 0단계 필터링 속도 극대화 CREATE INDEX idx_cad_models_cluster ON cad_models (part_cluster_prefix); |
② 하이브리드 검색 쿼리 (Python / SQL 통합 예시)
서버단에서 신규 품번(예: SHAFT-25-ST)을 받으면, 정규식이나 문자열 슬라이싱으로 군집 코드를 뽑아내어 쿼리에 주입합니다.
| Python # 예: 입력 품번이 "BRNG-025-A" 인 경우 new_part_number = "BRNG-025-A" cluster_code = new_part_number.split('-')[0] # 'BRNG' 추출 (베어링 군집) # SQL 실행 (0단계, 1단계, 2단계를 하나의 쿼리로 고속 처리) search_query = """ SELECT part_number, volume, weight, (1 - (image_embedding <=> %s::vector)) AS similarity FROM cad_models WHERE part_cluster_prefix = %s -- [0단계] 품번 군집 필터링 (가장 먼저 실행됨) AND volume BETWEEN %s AND %s -- [1단계] 부피 필터링 AND weight BETWEEN %s AND %s -- [1단계] 무게 필터링 ORDER BY similarity DESC LIMIT 5; """ |
■ 유사성 평가 프로그램 시스템 아키텍처 및 데이터 흐름
각 상용 CAD가 클라이언트(Client)가 되고, FreeCAD와 AI 모델이 탑재된 중앙 서버(Server)가 핵심 연산을 처리하는 REST API 기반 구조로 동작합니다.
| [각 CAD 환경] [중간 포맷] [중앙 자동화 서버] [데이터베이스 & AI] Creo, CATIA, SolidWorks ──> STEP 파일 ──> FreeCAD Python API ───────> DB (파라미터 및 벡터 저장) ▲ │ (이미지/파라미터 추출) │ └─────────────────── 검색 요청 및 결과 반환 ───────────────────────────────┘ |
1. 단계별 가능성 및 구현 핵심 가이드
단계 1: CAD 환경에서 STEP 변환 및 호출 (클라이언트 단)
구현 방법: 각 CAD 프로그램의 API와 매크로 기능을 활용해 현재 활성화된 모델을 STEP 파일로 내보내고, 중앙 서버의 검색 API를 호출하는 플러그인(버튼)을 만듭니다.
- Creo: Toolkit(C++)이나 Object TOOLKIT, VB API를 활용해 STEP 내보내기 자동화.
- SolidWorks: VBA(Macro) 또는 C# API (SaveAs 메서드) 활용.
- CATIA: CAA 또는 Automation API(VBA/VBScript) 활용.
단계 2: FreeCAD를 활용한 데이터 추출 및 DB 저장 (서버 단)
구현 방법: 서버에 FreeCAD를 설치하되 화면을 띄우지 않고, 파이썬 스크립트 모듈(import FreeCAD, import FreeCADGui)로만 호출하여 배치(Batch) 처리를 수행합니다.
- 파라미터 추출: STEP 파일을 로드한 후 Shape.Volume(부피), Shape.CenterOfMass(중심점)를 계산하고, 재질 밀도를 곱해 무게를 산출합니다. Shape.BoundBox로 대략적인 가로/세로/높이 크기도 확보합니다.
- 이미지 데이터 생성: FreeCADGui 모듈을 이용해 뷰(View) 방향을 코드(X, Y, Z 회전)로 제어하면서 백그라운드에서 saveImage를 실행하여 다각도 렌더링 이미지를 저장합니다.
- DB 저장: 추출된 물리 파라미터는 관계형 DB(PostgreSQL 등)에 넣고, 이미지 데이터는 AI 모델(ResNet 등)을 거쳐 특징 벡터(Embedding)로 변환한 뒤 벡터 DB(pgvector, Faiss 등)에 저장합니다.
단계 3: 유사모델 검색 알고리즘 실행 및 결과 반환
구현 방법: 앞서 말씀하신 1차 필터링(무게/부피) + 2차 정밀 비교(이미지/벡터 유사도) 하이브리드 알고리즘을 중앙 서버에서 수행합니다.
결과 반환: 가장 유사도가 높은 상위 3~5개의 기존 모델 정보(부품 번호, 유사도 %, 미리보기 이미지 URL 등)를 JSON 형태로 클라이언트 CAD 플러그인에 반환합니다.
2. FreeCAD를 사용한 아키텍처의 강력한 장점
- CAD 라이선스 비용 절감: Creo, CATIA, 솔리드웍스 라이선스는 매우 비쌉니다. 이 비싼 CAD들을 데이터 추출 서버용으로 따로 띄워둘 필요 없이, 서버단은 100% 무료 오픈소스인 FreeCAD와 Python으로만 구성하므로 서버 운영 비용이 거의 들지 않습니다.
- 단일 알고리즘 유지보수: 유사도를 분석하는 핵심 알고리즘이 중앙 서버(Python 환경)에 딱 하나만 존재하므로, 알고리즘을 개선하거나 AI 모델을 업그레이드할 때 각 CAD 플러그인을 일일이 수정할 필요 없이 서버 코드만 업데이트하면 됩니다.
이미지 기반 유사도 비교를 구현할 때 활용하기 좋은 대표적인 접근법 3가지
① 사전 학습된 CNN 변형 (ResNet / EfficientNet + Triplet Loss)
② Contrastive Learning (SimCLR / CLIP)
③ 전통적인 컴퓨터 비전 기법 (OpenCV ORB / SIFT)
기계학습을 통하여 "알고리즘"을 개발 합니다. 개발된 알고리즘을 사용 CAD의 API로 개발된 유사도 평가 프로그램에 삽입합니다. 설계부서에서는 지속적으로 새로운 데이터를 발생 시킵니다. 아마도 개발된 "알고리즘"을 지속적으로 업데이트 해야 합니다.
By korealionkk@gmail.com
'업무 자동화 > FreeCAD' 카테고리의 다른 글
| 설계 검증 체크 리스트 데이터베이스 (0) | 2026.06.24 |
|---|---|
| Feature 기반 3D CAD를 데이터베이스로 바라보기 (0) | 2026.06.23 |
| 도면 정보 (0) | 2026.06.11 |
| 관성모멘트(Moment of Inertia) 계산하기 (0) | 2026.06.06 |
| Python] 모델 무게중심 구하기 (0) | 2026.06.06 |