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

함께 VBA 만들기 #3 - Creo 3D 모델 정보 보기

by ToolBOX01 2023. 2. 3.
반응형

■ Parameter 값을 가져 오는 기능 
- 지정된 Parameter 값을 가져 옵니다
 지정된 Parameter 가 모델에 없으면 자동으로 모델에 생성 됩니다.

모델에서 Parameter 값을 가지고 올수 있습니다.

        Dim oParameterOwner As IpfcParameterOwner
        Set oParameterOwner = oModel

        Dim oBaseParameter As pfcls.IpfcBaseParameter
        Set  oBaseParameter = oParameterOwner.GetParam("PART_NO")
        Cells(7, "E") = oBaseParameter.Value

모델에 String 타입 Parameter 만들고 기본값을 입력 합니다.

        Dim oParameterOwner As IpfcParameterOwner
        Set oParameterOwner = oModel

        Dim oCMModelItem As New CMpfcModelItem
        Dim oParamValue As IpfcParamValue
        Set  oParamValue = oCMModelItem.CreateStringParamValue ( "A001-23457AB")
        Dim oParameter As IpfcParameter
        Set oParameter = oParameterOwner.CreateParam("PART_NO"), oParamValue)
            

1. 설계자, 검도자, 승인자  코드

모델에 설계자 검도자, 승인자에 해당하는 Parameter가 없으면, 자동으로 생성 됩니다. 기본값은 "not"가 입력 되고 ,모델에 저장 됩니다 

 Dim i As Long, j As Long
        
        '// Designer, Checker, Approver Parameter Define ////////////////////////////////
        
        For i = 0 To 2
        
            Set oBaseParameter = oParameterOwner.GetParam(Cells(i + 7, "D"))
            
            If oBaseParameter Is Nothing Then
            
               Set oParamValue = oCMModelItem.CreateStringParamValue("not")
               Set oParameter = oParameterOwner.CreateParam(Cells(i + 7, "D"), oParamValue)
               
               Cells(i + 7, "E") = "not"
            
            Else
            
               Set oParamValue = oBaseParameter.Value
               Cells(i + 7, "E") = oParamValue.StringValue
            
            End If
            
        Next i

 

2. Part_no ~ weight 값을 엑셀 파일로 가져 옵니다.

  Dim i As Long, j As Long
         
        '// Material, Finish, Part_no, Part_name Parameter Define
        For j = 0 To 3
    
            Set oBaseParameter = oParameterOwner.GetParam(Cells(j + 13, "D"))
            
            If oBaseParameter Is Nothing Then
            
               Set oParamValue = oCMModelItem.CreateStringParamValue("not")
               Set oParameter = oParameterOwner.CreateParam(Cells(j + 13, "D"), oParamValue)
               
               Cells(j + 13, "C") = "not"
            
            Else
            
               Set oParamValue = oBaseParameter.Value
               Cells(j + 13, "C") = oParamValue.StringValue
            
            End If
            
        Next j

        '///////////////////////////////////////////////////////////////////////////////////
        
        
        '// Weight Parameter Define
        Set oBaseParameter = oParameterOwner.GetParam(Cells(17, "D"))
        
        
        If oBaseParameter Is Nothing Then
            
               Set oParamValue = oCMModelItem.CreateDoubleParamValue(0#)
               Set oParameter = oParameterOwner.CreateParam(Cells(17, "D"), oParamValue)
               
               Cells(17, "C") = "not"
            
            Else
            
               Set oParamValue = oBaseParameter.Value
               Cells(17, "C") = oParamValue.DoubleValue
            
        End If
        
        '///////////////////////////////////////////////////////////////////////////////////

 

■ 전체 코드

 

Sub New_parameter()


        Dim oParameterOwner As IpfcParameterOwner
        Set oParameterOwner = oModel
        
        Dim oBaseParameter As pfcls.IpfcBaseParameter
        
        Dim oParameter As IpfcParameter
        Dim oParamValue As IpfcParamValue
        Dim oCMModelItem As New CMpfcModelItem
    
        Dim oModelItem As IpfcModelItem
        Dim oCellsParameterName, oCellsParameterType As String
        
        
        Dim i As Long, j As Long
        
        '// Designer, Checker, Approver Parameter Define ////////////////////////////////
        
        For i = 0 To 2
        
            Set oBaseParameter = oParameterOwner.GetParam(Cells(i + 7, "D"))
            
            If oBaseParameter Is Nothing Then
            
               Set oParamValue = oCMModelItem.CreateStringParamValue("not")
               Set oParameter = oParameterOwner.CreateParam(Cells(i + 7, "D"), oParamValue)
               
               Cells(i + 7, "E") = "not"
            
            Else
            
               Set oParamValue = oBaseParameter.Value
               Cells(i + 7, "E") = oParamValue.StringValue
            
            End If
            
        Next i
        
        '///////////////////////////////////////////////////////////////////////////////////
         
         
        '// Material, Finish, Part_no, Part_name Parameter Define
        For j = 0 To 3
    
            Set oBaseParameter = oParameterOwner.GetParam(Cells(j + 13, "D"))
            
            If oBaseParameter Is Nothing Then
            
               Set oParamValue = oCMModelItem.CreateStringParamValue("not")
               Set oParameter = oParameterOwner.CreateParam(Cells(j + 13, "D"), oParamValue)
               
               Cells(j + 13, "C") = "not"
            
            Else
            
               Set oParamValue = oBaseParameter.Value
               Cells(j + 13, "C") = oParamValue.StringValue
            
            End If
            
        Next j

        '///////////////////////////////////////////////////////////////////////////////////
        
        
        '// Weight Parameter Define
        Set oBaseParameter = oParameterOwner.GetParam(Cells(17, "D"))
        
        
        If oBaseParameter Is Nothing Then
            
               Set oParamValue = oCMModelItem.CreateDoubleParamValue(0#)
               Set oParameter = oParameterOwner.CreateParam(Cells(17, "D"), oParamValue)
               
               Cells(17, "C") = "not"
            
            Else
            
               Set oParamValue = oBaseParameter.Value
               Cells(17, "C") = oParamValue.DoubleValue
            
        End If
        
        '///////////////////////////////////////////////////////////////////////////////////
        
        
End Sub