반응형
모델을 구성 하는 Feature의 이름, 타입, ID, 상태를 리스트로 만들수 있습니다. Feature의 상태는 Supress 상태 (번호 5로 표시 됩니다)인지, 아닌지를 알 수 있습니다. Supress 상태 Creo로 부터 Feature 번호를 부여받지 못합니다. insert 모드이면 하위 Feature들은 Supress 상태 입니다. Feature가 오류가 있으면 Feature의 상태 번호는 변경 됩니다.
새로 고침을 클릭하면 자동으로 Feature 이름을 가져 옵니다. 일부 Feature의 경우 Creo가 자동으로 부여하는 이름을 가져 오지 않습니다. Supress 된 Feature는 Feature Count에서 제외 됩니다. Feature Status에서는 "5"로 표시 됩니다.
Sub Feature_LIST2()
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
'Model File location
Cells(2, "C") = oSession.GetCurrentDirectory
'Model File Name
Cells(1, "C") = oModel.Filename
'Feature LIST
Dim oModelowner As IpfcModelItemOwner: Set oModelowner = oModel
Dim oModelItems As IpfcModelItems
Set oModelItems = oModelowner.ListItems(EpfcModelItemType.EpfcITEM_FEATURE)
Dim oModelitem As IpfcModelItem
Dim oFeature As IpfcFeature
Dim i As Long
Dim k As Long: k = 0
'Excel Display
For i = 0 To oModelItems.Count - 1
Set oModelitem = oModelItems(i)
Set oFeature = oModelitem
oFeatureStatus = oFeature.Status
If oFeature.FeatType <> 13 Or oFeature.Number <> "" Then
Cells(k + 6, "A") = k + 1
Cells(k + 6, "B") = oModelitem.GetName
Cells(k + 6, "C") = oFeature.FeatTypeName
Cells(k + 6, "D") = oFeature.Number
Cells(k + 6, "E") = oFeatureStatus
k = k + 1
End If
Next i
Cells(3, "C") = k
Dim rng As Range
Set rng = Range("E6", Cells(Rows.Count, "E").End(xlUp))
Dim j As Long, m As Long
Dim oSupressCount As Long: oSupressCount = 0
For j = 0 To rng.Count - 1
m = Cells(j + 6, "E")
If m = 5 Then
oSupressCount = oSupressCount + 1
End If
Next j
Cells(4, "C") = oSupressCount
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
Sub modelinitialzation()
'Cells clear
Cells(1, "C").Select: Selection.ClearContents
Cells(2, "C").Select: Selection.ClearContents
Cells(3, "C").Select: Selection.ClearContents
Cells(4, "C").Select: Selection.ClearContents
Range(Cells(6, "A"), Cells(Rows.Count, "A")).EntireRow.Delete
End Sub
Sub Duplicate_01()
Dim rng As Range, C As Range
Dim dc As New Collection
Set rng = Range("C6", Cells(Rows.Count, "C").End(xlUp))
On Error Resume Next
For Each C In rng
If Len(C) Then
dc.Add Trim(C), CStr(Trim(C))
End If
Next
On Error GoTo 0
For i = 1 To dc.Count
Cells(i + 6, "Y") = dc(i) 'File Name
Next
For i = 1 To dc.Count
Cells(i + 6, "Z") = WorksheetFunction.CountIf(rng, dc(i)) ' 중복 수량 카운트
'Cells(i + 6, "A") = i + 1 'Number Count
Next
'Columns("Z").Delete
'Columns("W").Delete
End Sub
by lionkk@idt21c.com
'VBA, VB.NET For Creo' 카테고리의 다른 글
재질 파일에서 밀도값 가져오기 (0) | 2022.10.05 |
---|---|
Creo File 정보 얻기 Ver 0.2 (0) | 2022.10.04 |
#7 IpfcBaseSession.Select() : Feature 선택 하기 (0) | 2022.10.02 |
IpfcModel.backup() (0) | 2022.09.30 |
폴더에 있는 파일 List - IpfcBaseSession.ListFiles() (0) | 2022.09.30 |