イナーシャが欲しいのですが、ササっと検索してもProductばかり見つかったのですが
だったのですが、サーフェスで欲しいです。
結局、全部入りのサイトがありました。
Measuring Mass and Inertia | CATIA V5 Automation
消えてしまうと困るので、お借りする。
まず単位はこちら。
メートル法っぽいです。
で、
Product(Partも) : GetTechnologicalObject
Body(形状セットも) : SPAWorkbench.Inertias.Add
で、サーフェスは直接の方法が無い様なのですが、新規の形状セットに
突っ込んで、形状セットのイナーシャで大丈夫だよ と
記載されている気がします。
そこで、好みな部分も有ってこんな感じにしてみました。
'イナーシャの取得 '''param:surf-対象サーフェス '''return:array(Inertia, HybridBody) - 失敗:empty private Function get_surf_inertia( _ Byval surf As HybridShape) As variant set get_surf_inertia = empty If surf Is Nothing Then exit function dim pt As Part set pt = get_parent_of_T(surf, "Part") Dim objRef As Reference Set objRef = pt.CreateReferenceFromObject(surf) Dim intType As Integer intType = pt.HybridShapeFactory.GetGeometricalFeatureType(objRef) If intType = 5 Then exit function Dim geoSet As HybridBody Set geoSet = pt.HybridBodies.Add geoSet.Name = "Temp_ForInertiaMeasure" Dim objJoin As HybridShapeAssemble Set objJoin = pt.HybridShapeFactory.AddNewJoin(objRef, objRef) objJoin.RemoveElement 2 pt.UpdateObject objJoin geoSet.AppendHybridShape objJoin On Error Resume Next Dim objSPAWorkbench As Workbench Set objSPAWorkbench = pt.Parent.GetWorkbench("SPAWorkbench") Dim objInertia As Inertia Set objInertia = objSPAWorkbench.Inertias.Add(geoSet) On Error GoTo 0 if objInertia is nothing then exit function get_surf_inertia = array(objInertia, geoSet) End Function '指定した型をParentから取得 - typenameで取得出来るもので '''param:aoj-対象要素 '''param:T-目的の型名 '''return:AnyObject - 失敗:Nothing private Function get_parent_of_T( _ ByVal aoj As AnyObject, _ ByVal T As String) _ As AnyObject Dim aojName As String Dim parentName As String On Error Resume Next Set aoj = as_dispath(aoj) aojName = aoj.name parentName = aoj.Parent.name On Error GoTo 0 If TypeName(aoj) = TypeName(aoj.Parent) And _ aojName = parentName Then Set get_parent_of_T = Nothing Exit Function End If If TypeName(aoj) = T Then Set get_parent_of_T = aoj Else Set get_parent_of_T = get_parent_of_T(aoj.Parent, T) End If End Function 'ディスパッチ '''param:o-対象要素 '''param:T-目的の型名 '''return:CATBaseDispatch Private Function as_dispath( _ byval o As INFITF.CATBaseDispatch) As INFITF.CATBaseDispatch Set as_dispath = o End Function
関数だけなので動かないですし、VSCodeで書いただけで動かしていないので
間違っている可能性が大。