■ 기능 소개
1. New 버튼 클릭
1) 파일 위치 : 현재 활성화 된 모델의 폴더 위치를 표시 합니다
2) 파일 이름 : 현재 활성화 된 모델의 이름을 표시 합니다.
3) ISOVIEW : 현재 활성화된 모델의 "ISOVIEW" 이름의 View로 이동후, Creo 파일 이름과 동일한 JPG 이미지를
삽입 합니다. JPG 이미지는 C:\PTC\IMAGES 폴더에 저장 됩니다.
4) PART_NO: Paramert 이름 "PART_NO"의 값 표시 합니다. 반드시 모델에 "PART_NO" 값이 있어야 합니다.
5) PART_NAME: Paramert 이름 "PART_NAME"의 값 표시 합니다. 반드시 모델에 "PART_NAME" 값이 있어야 합니다.
6) MATERIAL_NAME: Paramert 이름 "MATERIAL_NAME"의 값 표시 합니다. 반드시 모델에 "MATERIAL_NAME"
값이 있어야 합니다. Creo에서 MATERIAL을 변경 하면 자동으로 모델의 재질 이름은 변경 됩니다. (읽기 전용)
7) WEIGHT : MASS Feature의 로컬 매개변수 "MASS"값을 표시 합니다. 수정을 할수 없습니다. (읽기 전용)
2. Paramerer Save
변경된 "PART_NO", "PART_NAME" 값을 Creo 모델에 저장 합니다
3. Material Change
Mapkey를 호출하여 Creo에서 재질 파일을 선택 합니다.
4. Initialization
Cell "5A" 이하를 모두 삭제 합니다. 또한 Cell " 4C"도 삭제 합니다.
■ Test 모델
▶ NEW 버튼 소스 코드
Sub Newmodel()
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
'config.pro 옵션
Call session.SetConfigOption("mass_property_calculate", "automatic")
Call session.SetConfigOption("regen_failure_handling", "resolve_mode")
'Model Path Name
Cells(4, "C") = session.GetCurrentDirectory
'Model File Name
Cells(6, "B") = model.Filename
'SET Regenerate
Dim RegenInstructions As New CCpfcRegenInstructions
Dim oInstrs As IpfcRegenInstructions: Set oInstrs = RegenInstructions.Create(True, True, Nothing)
Dim Solid As IpfcSolid: Set Solid = model
Call Solid.Regenerate(oInstrs)
Call Solid.Regenerate(oInstrs)
'현재 모델의Parameter들 모으기
Dim oPowner As pfcls.IpfcParameterOwner: Set oPowner = model
Dim oParams As IpfcParameters: Set oParams = oPowner.ListParams()
Dim oParam As IpfcBaseParameter
Dim oParamValue As IpfcParamValue
Dim oParamName As IpfcNamedModelItem
Dim i As Long
For i = 0 To oParams.count - 1
Set oParam = oParams(i)
Set oParamValue = oParam.Value
Set oParamName = oParam
If oParamName.name = "PART_NO" Then
Cells(6, "D") = oParamValue.StringValue
ElseIf oParamName.name = "PART_NAME" Then
Cells(6, "E") = oParamValue.StringValue
ElseIf oParamName.name = "MASS_NAME" Then
Cells(6, "F") = oParamValue.StringValue
End If
Next i
'GRAVITY Feature 개체 정의
Dim oModelItemOwner As IpfcModelItemOwner: Set oModelItemOwner = model
Dim oModelItem As IpfcModelItem
Set oModelItem = oModelItemOwner.GetItemByName(EpfcModelItemType.EpfcITEM_FEATURE, "GRAVITY")
Dim oParameterOwner As IpfcParameterOwner: Set oParameterOwner = oModelItem
'Local Parameter Name : "mass"
Dim oParametermass As IpfcParameter: Set oParametermass = oParameterOwner.GetParam("mass")
Dim oBaseParametermass As IpfcBaseParameter: Set oBaseParametermass = oParametermass
Dim oParamValuemass As IpfcParamValue: Set oParamValuemass = oBaseParametermass.Value
Cells(6, "G") = oParamValuemass.DoubleValue
Call session.SetConfigOption("mass_property_calculate", "by_request")
Call session.SetConfigOption("regen_failure_handling", "no_resolve_mode")
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
▶ initialzation 버튼 소스 코드
Sub modelinitialzation()
'Cells clear
Cells(4, "C").Select: Selection.ClearContents
Range(Cells(6, "A"), Cells(Rows.count, "A")).EntireRow.Delete
End Sub
'VBA For Creo' 카테고리의 다른 글
활성화된 어셈블 정보 (Parameter Value) #1 (0) | 2022.09.23 |
---|---|
활성화된 모델의 정보 (Parameter Value) #2 (0) | 2022.09.20 |
Creo Dimension을 Regenerate 하는 코드 (0) | 2022.09.19 |
측정 Feature의 매개변수 값 가져오기 #3 (1) | 2022.09.16 |
측정 Feature의 매개변수 값 가져오기 #2 (0) | 2022.09.15 |