본문 바로가기
  • Welcome!
VBA, VB.NET For Creo

Feature ID 및 Feature 이름 검색 프로그램 # 3/3

by ToolBOX01 2022. 12. 23.
반응형

Feature의 번호 및 이름을 표시 하는 코드 입니다. Feature의 이름은 ipfcmodelitem을 사용 합니다.
사용자가 정의한 이름만 표시 됩니다

Option Explicit
Sub Featurefail()

Application.EnableEvents = False
On Error GoTo RunError

        Dim asynconn As New pfcls.CCpfcAsyncConnection
        Dim conn As pfcls.IpfcAsyncConnection: Set conn = asynconn.Connect("", "", ".", 5)
        Dim oSession As pfcls.IpfcBaseSession: Set oSession = conn.session
        Dim oModel As IpfcModel: Set oModel = oSession.CurrentModel
        Dim oSolid As IpfcSolid: Set oSolid = oModel
        
        Cells(1, "B") = oModel.Filename
        
        Dim oModelowner As IpfcModelItemOwner: Set oModelowner = oSolid
        Dim oFeatureItems As IpfcModelItems
        Set oFeatureItems = oModelowner.ListItems(EpfcModelItemType.EpfcITEM_FEATURE)
        Dim oFeature As IpfcFeature
        Dim i As Long
        
        For i = 0 To oFeatureItems.Count - 1
                  
                  Set oFeature = oFeatureItems(i)
                  
                  Cells(i + 3, "A") = i + 1 '// Number
                  Cells(i + 3, "B") = oFeature.Number '// Feature Number
                  Cells(i + 3, "C") = oFeature.FeatTypeName '// Feature Number
                  Cells(i + 3, "D") = oFeatureItems(i).GetName '// Feature Name
                  Cells(i + 3, "E") = oFeatureItems(i).Type '// EpfcModelItemType         
        Next i
                    
    conn.Disconnect (2)
    
    'Cleanup
    Set asynconn = Nothing
    Set conn = Nothing
    Set oSession = Nothing
    Set oModel = Nothing
    
RunError:
    If Err.Number <> 0 Then
        MsgBox "Process Failed : Unknown error occurred." + Chr(13) + _
                "Error No: " + CStr(Err.Number) + Chr(13) + _
                "Error: " + Err.Description, vbCritical, "Error"
        If Not conn Is Nothing Then
            If conn.IsRunning Then
                conn.Disconnect (2)
            End If
        End If
    End If

End Sub

 

■ Part 모드

 > Feature 번호 "6"번 분석

- Feature 번호 "6"번은 스케치 Feature 입니다.
- 스케치 Feature는 내부적으로 "no_name"이라는 데이텀 평면을 만들고, 3D 형상을 만듭니다.
- 참조 모델이 Session에 없어, 참조 오류를 발생 시킵니다.
- 자식 Feaure도 오류가 발생 할수 있습니다. 
- 모델이 1,000개의 Feature로 구성되어 있고, 맨 처음 Feature가 참조 오류가 있다면, 최악의 악몽일수 있습니다. ㅜ

[ 참조 오류 ]

- 참조를 Part 내부로 변경 합니다. 오류가 없어 집니다. 아래와 같이 "no_name"으로 표시 됩니다.

[&nbsp; 오류 해결]

스케치 Feature는 "참조 방향"을 선택 하지 않아도 됩니다 "DEFAULT_**"은 참조 방향을 CREO 스스로 만든 것 입니다

[ 참조 없음 ]

 

■ 어셈블 모드

- Part 모드와 동일합니다

 

Seesion에 없는 모델과 연결돤 모델의 Feature를 알수 있는 함수는 VBA에 제공 하지 않았습니다. 
Modelcheck 기능을 사용 하면 가능 합니다.