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

함께 VBA 만들기 #5 - Material 지정 및 무게 계산

by ToolBOX01 2023. 2. 8.
반응형

엑셀에서 선택한 재질 파일을 모델에 지정 하고, 무게를 저장 하는 프로그램 입니다. 무게의 단위는 모델의 단위를 사용 합니다.무게 기능은 재질 파일이 지정 되면, Creo에서 자동으로 계산되는 기능을 사용 합니다. 재질 파일 선택은 엑셀이 유효성 검사 기능을 사용 합니다.

1. 재질 폴더 지정 및 자동 계산 기능 구성 파일 설정

'// config.pro option
Call oSession.SetConfigOption("pro_material_dir", Worksheets("data").Cells(20, "B"))
Call oSession.SetConfigOption("mass_property_calculate", "automatic")

 

2. 디스크에 있는 재질 파일 불러오고, 지정 하기

- 재질 파일 이름은 반드시 "파일 확장자"를 제거 하고, 사용 합니다.
- 예) "iron.mtl"  (오류 발생) / "iron" (사용 가능)

Set oPart = oModel
Set oMaterial = oPart.RetrieveMaterial(Worksheets("File Info").Cells(12, "C"))
        
Worksheets("File Info").Cells(13, "C") = oMaterial.Name
oPart.CurrentMaterial = oMaterial

 

3. 무게 계산을 위한 Regen 기능 

'// SET Regenerate
                     
Dim RegenInstructions As New CCpfcRegenInstructions
Dim oInstrs As IpfcRegenInstructions

Set oInstrs = RegenInstructions.Create(False, False, Nothing)

'// Regenerate 실행
Call oSolid.Regenerate(oInstrs)
Call oSolid.Regenerate(oInstrs)

 

4. 무게 값 표시

'//Mass
    
 Dim oMassProperty As IpfcMassProperty
 Set oMassProperty = oSolid.GetMassProperty("")
 Worksheets("File Info").Cells(17, "C") = oMassProperty.Mass

 


전체 코드

Sub CreoMass()

    Call Creo_Connect

    Set oModel = oSession.CurrentModel
    Set oSolid = oModel
    
    '// config.pro option
        Call oSession.SetConfigOption("pro_material_dir", Worksheets("data").Cells(20, "B"))
        Call oSession.SetConfigOption("mass_property_calculate", "automatic")
      
    Dim oPart As IpfcPart
    Dim oMaterial As IpfcMaterial
    
    If Worksheets("File Info").Cells(6, "E") Is Nothing Then
    
       MsgBox "Please select a material file", vbInformation, "www.idt21c,com"
      
       Exit Sub
  
       ElseIf Worksheets("File Info").Cells(6, "E") = "prt" Then
    
            Set oPart = oModel
            Set oMaterial = oPart.RetrieveMaterial(Worksheets("File Info").Cells(12, "C"))
        
            Worksheets("File Info").Cells(13, "C") = oMaterial.Name
            oPart.CurrentMaterial = oMaterial
        
       Else
   
            MsgBox "Not a part file", vbInformation, "www.idt21c,com"
            
            Exit Sub

    End If

    '// SET Regenerate
                     
    Dim RegenInstructions As New CCpfcRegenInstructions
    Dim oInstrs As IpfcRegenInstructions

    Set oInstrs = RegenInstructions.Create(False, False, Nothing)
 
    '// Regenerate 실행

    Call oSolid.Regenerate(oInstrs)
    Call oSolid.Regenerate(oInstrs)
       
    '//Mass
    
    Dim oMassProperty As IpfcMassProperty
    Set oMassProperty = oSolid.GetMassProperty("")
    Worksheets("File Info").Cells(17, "C") = oMassProperty.Mass
    
    MsgBox "Part file weight was calculated", vbInformation, "www.idt21c,com"
   
End Sub