■ 모델의 Features 이름, Feature Type, Feature 순서 번호 검색 하는 프로그램 소스
Part 모드에서 Feature의 이름과 ID, 순서 번호, Type을 검색 합니다.
▶ 소스 코드
Sub Feature_LIST2()
On Error GoTo RunError
Dim asynconn As New pfcls.CCpfcAsyncConnection
Dim conn As pfcls.IpfcAsyncConnection: Set conn = asynconn.Connect("", "", ".", 5)
Dim session As pfcls.IpfcBaseSession: Set session = conn.session
Dim model As IpfcModel: Set model = session.CurrentModel
'Model Path Name
Cells(1, "c").Select: Selection.ClearContents
Cells(1, "c") = session.GetCurrentDirectory
'Model File Name
Cells(1, "D").Select: Selection.ClearContents
Cells(1, "D") = model.Filename
'Cells 초기화
Range(Cells(3, "A"), Cells(Rows.Count, "A")).EntireRow.Delete
'Feature LIST
Dim Modelowner As IpfcModelItemOwner: Set Modelowner = model
Dim FeatureItems As IpfcModelItems: Set FeatureItems = Modelowner.ListItems(EpfcModelItemType.EpfcITEM_FEATURE)
Dim oModelitem As IpfcModelItem
Dim Feature As IpfcFeature
'Feature Pattern
Dim Featurepattern As IpfcFeaturePattern
Dim PatternListMembers As IpfcFeatures
Dim Pattern As IpfcFeature
Dim oFeatureStatus As EpfcFeatureStatus
'Excel Display
For i = 0 To FeatureItems.Count - 1
Set oModelitem = FeatureItems(i)
Set Feature = FeatureItems(i)
Set Featurepattern = Feature.Pattern
Cells(i + 3, "A") = i + 1
Cells(i + 3, "B") = oModelitem.GetName
Cells(i + 3, "C") = Feature.FeatTypeName
Cells(i + 3, "D") = Feature.Number
Cells(i + 3, "E") = Feature.FeatType
oFeatureStatus = Feature.Status
Cells(i + 3, "G") = oFeatureStatus
If Not Featurepattern Is Nothing Then
Set PatternListMembers = Featurepattern.ListMembers
For j = 0 To PatternListMembers.Count - 1
Set Pattern = PatternListMembers(j)
Cells(i + 7, "F") = "Pattern"
Next j
End If
Next i
conn.Disconnect (2)
'Cleanup
Set asynconn = Nothing
Set conn = Nothing
Set session = Nothing
Set model = 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
주의)
Cells(i + 3, "C") = Feature.Number 의 코드는 "regeneration" 상태 인것만 표시 합니다
-> The regeneration number of the feature. If the feature is suppressed or unregenerated, this will be null.
프로그램 실행 결과)
6번 기준면, 8번 기준면은 "suppressed" 되었습니다. 재미 있는것은 스케치 Feature는 suppressed 데이텀 면을 하나 가지고 있습니다.
주의)
Cells(i + 3, "H") = Feature.IsGroupMember
그룹의 멤버를 체크 합니다.
주의)
Cells(i + 3, "I") = Feature.IsEmbedded
내부 데이텀을 체크 합니다.
'VBA For Creo' 카테고리의 다른 글
측정 Feature의 매개변수 값 가져오기 #2 (0) | 2022.09.15 |
---|---|
측정 Feature의 매개변수 값 가져오기 #1 (0) | 2022.09.09 |
Materials : Creo 모델에 지정된 재질 파일 검색 (0) | 2022.09.07 |
엑셀의 Parameter 값 -> CREO 모델에 Parameter 값으로 입력 (0) | 2022.09.05 |
part 파일에서 paramter 및 value 표시 하기 (0) | 2022.09.05 |