■ 소개
"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
테스트 모델
프로그램 소스 파일
* 반드시 Part 파일에 재질 파일을 지정해야 합니다
프로그램 실행 전 | 프로그램 실행 후 |
■ 테스트
* 동일한 크기의 모델들은 좌표계 이동을 해도 관성 모우먼트 값은 동일 합니다
* 동일한 무게를 가지고 있는 모델의 형상이 다르면 관성 모우먼트 값이 다릅니다.
* 동일한 크기를 가지고 있는 모델은 좌표계의 방향에 상관 없이 관성 모우먼트 값이 동일 합니다.
관성모우먼트 값을 데이터 베이스에 저장하고, 3D 모델을 완성한 다음 데이터 베이스에서 동일한 크기의 모델을 검색하고, 재활용 한다면 개발 바용 절검 및 설계 시간 단축이 가능 합니다.
현재의 모델과 비슷한 모델 (95%이상)으 모두 표시. . . .
영업 문의 : lionkk@idt21c.com
'VBA, VB.NET 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 |