본문 바로가기
  • Welcome!
VBA For Creo

함께 VBA 만들기 #6 - Parameter 값 모델에 저장하기

by ToolBOX01 2023. 2. 8.
반응형

엑셀 파일에 입력한 값을 모델에 저장 하는 기능 입니다
엑셀에서 파라메터 이름을 가져오고, 모델의 동일한 파라메터에  값을 저장 합니다.
- 파라메터 타입에 주의 합니다.

■ 사용자 화면

■ 코드

1. 설계자, 검도자, 승인자 (Designer, Checker, Approver) 값, part 파일에 입력 하기

for 문을 사용 하여 반복하여 Parameter 이름과 값을 엑셀에서 가져와 모델에 저장 합니다.
String 타입이므로  "CreateStringParamValue"을 사용 합니다.

'// DESIGNER,CHECKER,APPROVER ///////////////////////////////////////////////////////////////////////

    For i = 0 To 2
    
        oCellsParameterName = Cells(i + 7, "D")  '// Parameter Name
        Set oParameter = oParameterOwner.GetParam(oCellsParameterName)
        Set oBaseParameter = oParameter
        Set oParamValue = oCMModelItem.CreateStringParamValue(Cells(i + 7, "E")) '// Parameter Value
    
        oBaseParameter.Value = oParamValue
    
    Next i

 

2. 입력한 무게 값을 모델에 저장 합니다.

실수 (double) 타입 이므로 "CreateDoubleParamValue"을 사용 합니다.

 '// MATERIAL MASS /////////////////////////////////////////////////////////
    
    
    oCellsParameterName = Cells(17, "D") '// Parameter Name
    Set oParameter = oParameterOwner.GetParam(oCellsParameterName)
    Set oBaseParameter = oParameter
    Set oParamValue = oCMModelItem.CreateDoubleParamValue(Cells(17, "C")) '// Parameter Value
    
    oBaseParameter.Value = oParamValue

 

Sub ParamSave()

    Call Creo_Connect
    
    On Error GoTo RunError
    
    '// Creo Parameter variable
    Dim oParameterOwner As IpfcParameterOwner
    Dim oBaseParameter As IpfcBaseParameter
    Dim oParamValue As IpfcParamValue
    Dim oParameter As IpfcParameter
    Dim oCMModelItem As New CMpfcModelItem
    Dim oModelItem As IpfcModelItem
    
    Dim oCellsParameterName As String
    Dim i As Integer, j As Integer
    
    Set oParameterOwner = oModel
    
    '// DESIGNER,CHECKER,APPROVER ///////////////////////////////////////////////////////////////////////

    For i = 0 To 2
    
        oCellsParameterName = Cells(i + 7, "D")  '// Parameter Name
        Set oParameter = oParameterOwner.GetParam(oCellsParameterName)
        Set oBaseParameter = oParameter
        Set oParamValue = oCMModelItem.CreateStringParamValue(Cells(i + 7, "E")) '// Parameter Value
    
        oBaseParameter.Value = oParamValue
    
    Next i
    
    
    '// MATERIAL FINISH,PART_NO,PART_NAME /////////////////////////////////////////////////////////

    For j = 0 To 3
    
        oCellsParameterName = Cells(j + 13, "D")  '// Parameter Name
        Set oParameter = oParameterOwner.GetParam(oCellsParameterName)
        Set oBaseParameter = oParameter
        Set oParamValue = oCMModelItem.CreateStringParamValue(Cells(j + 13, "C")) '// Parameter Value
    
        oBaseParameter.Value = oParamValue
    
    Next j
    
    
    '// MATERIAL MASS /////////////////////////////////////////////////////////
    
    
    oCellsParameterName = Cells(17, "D") '// Parameter Name
    Set oParameter = oParameterOwner.GetParam(oCellsParameterName)
    Set oBaseParameter = oParameter
    Set oParamValue = oCMModelItem.CreateDoubleParamValue(Cells(17, "C")) '// Parameter Value
    
    oBaseParameter.Value = oParamValue
    
    
    oModel.Save
    
    MsgBox "Model Saved", vbInformation, "www.idt21c,com"
    
    
     '// Disconnect with Creo
    conn.Disconnect (2)
    
    '// Cleanup
    Set asynconn = Nothing
    Set conn = Nothing
    Set oSession = Nothing
    Set oModel = Nothing
       
    
Exit Sub
    
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