업무 자동화/VBA, VB.NET For Creo
IpfcBaseSession : Method (Sub RegisterCustomModelCheck)
ToolBOX01
2025. 11. 3. 09:12
반응형
◎ Sub RegisterCustomModelCheck (Instructions as IpfcCustomCheckInstructions)
사용자가 정의한 커스텀 검사(check)를 등록하여 Creo ModelCHECK 실행 시 포함되도록 만드는 기능입니다.
일반적인 ModelCHECK는 “검사(check) 파일”(.chf 등)을 반드시 사용합니다.
RegisterCustomModelCheck()는 위의 “기존 파일 기반 체크 시스템”에 새 항목을 “동적으로 추가”하는 API입니다. API로 "체크 검사(check) 파일” 없이, 항목을 등록하는 사용자 정의 기능 입니다.
RegisterCustomModelCheck()는 ModelCHECK “검사 파일”을 대체하거나 보완하는 방식으로 사용할 수 있으며,
필수적으로 파일을 요구하지는 않습니다. 대신 API에서 IpfcCustomCheckInstructions 객체를 통해 검사 정의를 코드로 직접 제공합니다.
참고 : ModelCHECK의 기본 구조
| 파일 | 설명 | 위치 예시 |
| start.mch | ModelCHECK 실행 시 로드되는 메인 설정 파일 | <Creo loadpoint>\Common Files\<version>\text\modelcheck\config\start.mch |
| check_files.mch | 사용할 체크 항목 목록 정의 파일 | 같은 폴더 또는 사용자 정의 위치 |
| .chf 파일들 | 실제 개별 체크 항목 정의 파일 (예: parameters.chf, units.chf) | <modelcheck\checks> |
| .crc, .rpt | 검사 결과 및 리포트 파일 | 사용자 지정 출력 폴더 |
- Parameters (매개변수)
- Instructions : IpfcCustomCheckInstructions 타입 객체로, 검사 이름(CheckName), 표시 라벨(CheckLabel), 리스너(listener) 등 검사 항목의 동작을 정의한 지침 객체입니다.
- 예외 (Exceptions)
- IpfcXToolkitFound : 동일한 이름의 체크가 이미 존재할 때 발생.
- IpfcXToolkitBadContext : 현재 세션에서 ModelCHECK가 활성화되어 있지 않은 경우 등 맥락이 맞지 않을 때 발생.
- 사용 맥락 및 유의사항
- 커스텀 검사를 등록하려면, 먼저 검사 동작을 수행할 리스너(Listener) 구현이 필요합니다. 등록된 커스텀 체크는 ModelCHECK 실행 시 옵션 또는 리포트 항목으로 포함될 수 있습니다.
- 등록 전에 같은 이름의 체크가 이미 등록돼 있으면 오류가 나므로, 이름 관리를 잘 해야 합니다.
- 또한, ModelCHECK 기능이 사용 가능한 환경인지 (라이선스, 설정 등) 확인해야 합니다.
Sample code
Dim session As pfcls.IpfcBaseSession
Dim instr As pfcls.IpfcCustomCheckInstructions
'// 검사 지침 객체 생성 //'
Set instr = New pfcls.CCpfcCustomCheckInstructions
instr = instr.Create
'// 체크 이름 및 라벨 설정 //'
instr.CheckName = "CHK_MY_PARAM_NAME"
instr.CheckLabel = "Parameter matches model name"
'// 액션 버튼 명 설정 (옵션) '//
instr.ActionButtonLabel = "Fix Parameter" ' 사용자가 결과 보고서에서 눌러 실행할 수 있는 버튼'
instr.UpdateButtonLabel = "Update ModelName" ' 사용자가 업데이트 버튼 눌렀을 때 실행될 버튼'
'// 리스너 객체 설정: 리스너는 IpfcCustomCheckListener 인터페이스를 구현해야 함 // '
Set listener = New MyCustomCheckListener
instr.Listener = listener
session.RegisterCustomModelCheck instr
MsgBox "Custom check registered successfully: " & instr.CheckName
**리스너(listener)**는 실제 검사를 수행하고 결과를 반환하는 클래스입니다.
' 리스너 클래스 예제
' 이 클래스는 IpfcCustomCheckListener 인터페이스를 구현해야 함
' (아래는 구조 예시)'
Private Class MyCustomCheckListener
Implements pfcls.IpfcCustomCheckListener
' 검사를 실제 수행하는 메서드
Private Function IpfcCustomCheckListener_Check( _
ByVal Model As pfcls.IpfcModel, _
ByVal CheckInst As pfcls.IpfcCustomCheckInstructions) As Boolean _
Implements pfcls.IpfcCustomCheckListener_Check
Dim modelName As String
Dim paramName As String
modelName = Model.Name ' 모델명 가져오기
paramName = GetParameterValue(Model, "PARAM_NAME") ' 사용자 정의 함수
If paramName = modelName Then
' 조건 만족 → 정상
IpfcCustomCheckListener_Check = True
Else
' 조건 불만족 → 오류
IpfcCustomCheckListener_Check = False
End If
End Function
' 버튼 액션 처리 메서드
Private Sub IpfcCustomCheckListener_Action( _
ByVal Model As pfcls.IpfcModel, _
ByVal CheckInst As pfcls.IpfcCustomCheckInstructions) _
Implements pfcls.IpfcCustomCheckListener_Action
' 예: 파라미터 값을 모델명으로 자동 업데이트
Dim modelName As String
modelName = Model.Name
SetParameterValue Model, "PARAM_NAME", modelName ' 사용자 정의 함수
MsgBox "Parameter PARAM_NAME updated to match model name."
End Sub
End Class
모델명(model name)”과 “PARAM_NAME이라는 파라미터 값”이 같은지 자동으로 확인하고,
다르면 ModelCHECK 결과에서 ‘오류’로 표시하는 커스텀 검사를 등록하는 기능입니다.
| 모델 이름 | PARAM_NAME | 결과 | 조치 버튼 결과 |
| BOX_A | BOX_A | ✅ 정상 | - |
| BOX_B | BOX_123 | ❌ 불일치 | "Fix Parameter" 클릭 시 → PARAM_NAME = BOX_B 로 수정됨 |
위 함수를 이용하여, 파라미터 기반 여러 체크 등록 , 엑셀과 연계한 리포트 자동화 , 또는 시트메탈이나 어셈블리 특화 검사등을할 수 있습니다
by korealionkk@gmail.com

반응형