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

주 관성 모멘트(CenterGravityInertiaTensor의 고유값)

by ToolBOX01 2023. 8. 3.
반응형

■ 소개

"IpfcMassProperty.PrincipalMoments"는 개체의 질량 특성을 나타내는 객체의 속성 중 하나로, 이 객체에는 주요 모멘트(principal moments)에 대한 정보가 포함됩니다. 주요 모멘트는 물체 주위의 회전에 대한 관성 모멘트를 설명하는 중요한 값 중 하나로, 물체의 회전 운동을 분석하는 데 사용됩니다.

무게 및 관성모우먼트 값을 이용하여, 기존 모델과 비교하여, 공용 모델 사용률을 높이거나. 기존 모델을 약간만 수정하여 새로운 모델을 빠르게 만들기 위한 기능 개발 가능 합니다

주요 모멘트 동영상 . . . 

 

주요 관성 모우먼트 값 (최소, 중간, 최대)을 모델에서 가져오는 VBA 프로그램 입니다. 모듈을 이용 하여 개발 하였습니다VBA는 기능 위주의 프로그램 입니다.  다양한 오류에 대한 대응 코드를 개발 하지 않습니다.

프로그램 구성은 모듈을 이용 하여 개발 하였습니다.

◎ 모듈 (Session 연결)

Public asynconn As New pfcls.CCpfcAsyncConnection
Public conn As pfcls.IpfcAsyncConnection
Public session As pfcls.IpfcBaseSession
Public Model As pfcls.IpfcModel

Sub model_session()
    '/현재 session에 있는 모델의 이름을 표시합니다
    
    Set conn = asynconn.Connect("", "", ".", 5)
    Set session = conn.session
    Set Model = session.CurrentModel
      
End Sub

 

◎ 모듈 (관성 모우먼트)

Sub model_session()

 '/모델에 지정된 재질 파일 이름 가져오기
    Dim Solid As IpfcSolid
    Dim Part As IpfcPart
    Dim Material As IpfcMaterial
    Dim MaterialName As String
    
    Set Solid = Model
    Set Part = Solid
    Set Material = Part.CurrentMaterial
    
    MaterialName = Material.Name
    
    If MaterialName = "PTC_SYSTEM_MTRL_PROPS" Then
            Cells(7, "D") = "Not"
        Else
            Cells(7, "D") = LCase(MaterialName)
    End If
    
    '/모델에 지정된 재질 파일을 이용한 무게 계산 하기
    '/config.pro 옵션
    
     Call session.SetConfigOption("mass_property_calculate", "automatic")
             
     Dim MassProperty As IpfcMassProperty
     Set MassProperty = Solid.GetMassProperty("")
     Cells(8, "D") = Format(MassProperty.Mass, "0.00")
     
     Dim Vector3D As IpfcVector3D
     Set Vector3D = MassProperty.principalMoments
      
     Cells(9, "D") = Format(Vector3D.Item(0), "0.00")
     Cells(10, "D") = Format(Vector3D.Item(1), "0.00")
     Cells(11, "D") = Format(Vector3D.Item(2), "0.00")
     
End Sub

 

◎ Main 프로그램

Sub model_info()

    '/ 현재 세션 연결 - 모듈 호출
    file_name.model_session
    
    'File 이름 표시
    Cells(4, "D") = LCase(Model.FullName)
    
    '/ File 타입 표시
    Dim modeltype As Integer
    modeltype = Model.Type
    If modeltype = 1 Then
            Cells(5, "D") = "part"
        ElseIf modeltype = 0 Then
            Cells(5, "D") = "assy"
        Else
            Cells(5, "D") = "drawing"
    End If
    
    '/Date 표시
    Dim currentDate As Date
    currentDate = Date
    Cells(6, "D") = Format(currentDate, "yyyy년 mm월 dd일")
    
    '/ 관성 모우 먼트 - 모듈 호출
    material_property.model_session
    
    'Disconnect with Creo
    conn.Disconnect (2)
    
    'Cleanup
    Set asynconn = Nothing
    Set conn = Nothing
    Set session = Nothing
    Set Model = Nothing

End Sub

테스트 모델

korea.prt.1
0.06MB

프로그램 소스 파일

ToolBOX VBA by IDT.xlsm
0.04MB

 

* 반드시 Part 파일에 재질 파일을 지정해야 합니다

프로그램 실행 전 프로그램 실행 후

 


■ 테스트


* 동일한 크기의 모델들은 좌표계 이동을 해도 관성 모우먼트 값은 동일 합니다

* 동일한 무게를 가지고 있는 모델의 형상이 다르면 관성 모우먼트 값이 다릅니다.

* 동일한 크기를 가지고 있는 모델은 좌표계의 방향에 상관 없이 관성 모우먼트 값이 동일 합니다.

관성모우먼트 값을 데이터 베이스에 저장하고, 3D 모델을 완성한 다음 데이터 베이스에서 동일한 크기의 모델을 검색하고, 재활용 한다면 개발 바용 절검 및 설계 시간 단축이 가능 합니다.

현재의 모델과 비슷한 모델 (95%이상)으 모두 표시. . . . 


영업 문의 : lionkk@idt21c.com

'VBA For Creo' 카테고리의 다른 글

#1/3 Helical Sweep & VBA  (0) 2023.08.06
모델이 가지고 있는 치수 이름, 값, 타입 표시  (0) 2023.08.04
Module  (0) 2023.08.02
유용한 사이트  (0) 2023.05.21
To : Jonny Stocco  (0) 2023.03.15