본문 바로가기
  • You find inspiration to create your own path !
업무 자동화/VBA, VB.NET For Creo

IpfcBaseSession : Method (Function GetModelFromDescr)

by ToolBOX01 2025. 11. 9.
반응형

◎ Function GetModelFromDescr(MdlDescr as IpfcModelDescriptor) as IpfcModel [optional]

Creo VBA API를 사용하여 모델 디스크립터(Model Descriptor) 객체를 통해 현재 Creo Parametric 세션에 로드되어 있는 모델을 검색하는 기능입니다. 파일의 버전을 확인하거나 지정하는 핵심은 모델 디스크립터 (Model Descriptor) 객체를 활용하는 것입니다.

이 함수는 모델의 이름과 유형을 직접 입력하는 대신, 모델을 고유하게 식별하는 정보를 담고 있는 디스크립터 객체를 사용하여 모델을 찾는 고급 방법입니다.

💡 모델 디스크립터 (IpfcModelDescriptor)의 역할

모델 디스크립터는 특정 모델의 고유한 식별 정보를 담고 있는 일종의 신분증과 같습니다. 모델 디스크립터는 실제 Creo 세션에 로드(Load)되어 있지 않은 모델까지 포함하여 모든 Creo 파일을 참조하고 식별할 수 있는 핵심 도구입니다.

  • 일반적으로 IpfcBaseSession.RetrieveModel()과 같은 함수를 사용하여 모델을 로드하거나, 다른 API 함수로부터 모델 정보를 받을 때 이 디스크립터를 얻게 됩니다.
  • Function GetModelFromDescr는 이 디스크립터의 정보를 활용하여, 디스크립터가 가리키는 모델이 현재 Creo 세션에 이미 로드되어 사용 중인지 빠르게 확인하는 데 유용합니다.
  • 모델 식별 정보 포함: 파일 이름, 모델 유형, 버전 등의 정보를 캡슐화하여, 특정 모델을 Creo 시스템 전체에서 고유하게 가리킵니다. 디스크립터에는 모델 이름, 모델 유형, 버전(선택적) 등의 정보가 포함되어 있습니다.
  • 세션 외부 모델 표현: 모델 디스크립터는 현재 Creo 세션 메모리에 로드되어 있지 않은 파일 시스템 상의 모델도 나타낼 수 있습니다. 이는 모델을 로드하기 전에 존재 여부를 확인하거나 참조 정보를 저장할 때 유용합니다.

🗂️ 모델 디스크립터 (IpfcModelDescriptor) 지원되는 모델 유형 (Model Types)

모델 디스크립터가 식별할 수 있는 주요 Creo 모델 및 파일 유형은 다음과 같습니다. 이들은 IpfcModelType 열거형 상수로 정의됩니다.

모델 유형 상수 (VBA/API) 설명
MDL_ASSEMBLY pfcMDL_ASSEMBLY 어셈블리 파일 (.ASM)
MDL_PART pfcMDL_PART 파트 파일 (.PRT)
MDL_DRAWING pfcMDL_DRAWING 드로잉 파일 (.DRW)
MDL_DWG_FORMAT pfcMDL_DWG_FORMAT 드로잉 형식 파일 (.FRM)
MDL_MFG pfcMDL_MFG 제조 파일 (NC, 주조 등)
MDL_REPORT pfcMDL_REPORT 보고서 파일
MDL_LAYOUT pfcMDL_LAYOUT 레이아웃 파일
MDL_MARKUP pfcMDL_MARKUP 마크업 파일
MDL_DIAGRAM pfcMDL_DIAGRAM 다이어그램 파일
MDL_2D_SECTION pfcMDL_2D_SECTION 2D 단면 파일

 

모델 디스크립터는 Creo 자동화 프로그램이 모델 파일을 식별하고 관리하는 데 사용하는 데이터 구조체입니다.

이 모델 디스크립터 객체는 다음과 같은 함수에서 사용됩니다.

IpfcBaseSession.RetrieveModel(MdlDescr): 
디스크립터가 지정하는 모델을 디스크에서 찾아 Creo 세션으로 로드할 때 사용합니다.

IpfcBaseSession.GetModelFromDescr(MdlDescr): 
디스크립터가 지정하는 모델이 이미 세션에 로드되어 있는지 확인할 때 사용합니다.

IpfcBaseSession.CreateModelDescriptor(...): 
코드를 통해 새로운 디스크립터 객체를 생성할 때 사용합니다.

 

매개변수

MdlDescr (IpfcModelDescriptor): 검색할 모델의 이름, 유형, 버전 등의 고유 식별 정보가 담긴 객체입니다.

반환값

IpfcModel [선택 사항]: 검색된 모델 객체를 반환합니다. 해당 모델이 현재 세션에 로드되어 있지 않다면 Nothing을 반환합니다.

주요 예외

IpfcXToolkitNotFound: 디스크립터와 일치하는 모델을 세션에서 찾을 수 없을 때 발생할 수 있습니다.


💻 Sample code : 디스크립터를 사용하여 모델 찾기

특정 모델의 디스크립터를 생성하고, 그 디스크립터를 사용하여 모델이 세션에 로드되어 있는지 확인하는 과정을 보여줍니다.

Dim pfcSession As pfcls.IpfcBaseSession
Dim modelDescriptor As pfcls.IpfcModelDescriptor
Dim foundModel As pfcls.IpfcModel

' // 검색할 모델 정보 정의 //'
Const MODEL_NAME As String = "bracket.prt"
Const MODEL_TYPE As pfcls.IpfcModelType = pfcls.pfcMDL_PART


' // 검색에 사용할 모델 디스크립터 생성 //'
Set modelDescriptor = pfcSession.CreateModelDescriptor( _
        Name:=MODEL_NAME, _
        Type:=MODEL_TYPE, _
        Version:=0 ' 버전은 일반적으로 0을 사용하거나 생략 가능
)

'// 디스크립터를 사용하여 모델 검색 //'
Set foundModel = pfcSession.GetModelFromDescr(modelDescriptor)

' // 모델을 성공적으로 찾음 //'
MsgBox "디스크립터로 모델을 찾았습니다! 이름: " & foundModel.FileName, vbInformation

 

by korealionkk@gmail.com


반응형