问题描述:在SolIDWorks中进行二次开发时,在程序中如何实现获得质量特性里的信息,如体积、表面积、重心等。
问题解决:
程序如下(语言类型是VB)
Option Explicit
Public Enum swMasspropertyMoment_e
swMasspropertyMomentAboutCenterOfMass = 0
swMasspropertyMomentAboutCoordSys = 1
End Enum
Public Enum swMasspropertIEsstatus_e
swMasspropertIEsstatus_OK = 0
swMasspropertIEsstatus_UnkNownError = 1
swMasspropertIEsstatus_NoBody = 2
End Enum
Public Enum swBodyType_e
swSolIDBody = 0
swSheetbody = 1
swWireBody = 2
swMinimumBody = 3
swGeneralBody = 4
swEmptyBody = 5
End Enum
Public Enum swUserPreferenceDoubleValue_e
swMaterialPropertyDensity = 7
End Enum
Sub main()
Dim swApp As SlDWorks.SlDWorks
Dim swModel As SlDWorks.ModelDoc2
Dim swDocExt As SlDWorks.ModelDocExtension
Dim swMass As SlDWorks.Massproperty
Dim swSelMgr As SlDWorks.SelectionMgr
Dim swComp As SlDWorks.Component2
Dim vBodyArr As Variant
Dim vCoM As Variant
Dim vMoI As Variant
Dim vPrinAoIx As Variant
Dim vPrinAoIy As Variant
Dim vPrinAoIz As Variant
Dim vPrinMoI As Variant
Dim nDensity As Double
Dim bRet As Boolean
Set swApp = Application.SlDWorks
Set swModel = swApp.ActiveDoc
Set swDocExt = swModel.Extension
Set swMass = swDocExt.CreateMassproperty
Set swSelMgr = swModel.SelectionManager
Set swComp = swSelMgr.GetSelectedobjectsComponent2(1)
vBodyArr = swComp.GetBodIEs2(swSolIDBody): DeBUG.Assert Not IsEmpty(vBodyArr)
bRet = swMass.AddBodIEs((vBodyArr)): DeBUG.Assert bRet
vCoM = swMass.CenterOfMass
vMoI = swMass.GetMomentOfInertia(swMasspropertyMomentAboutCenterOfMass)
vPrinAoIx = swMass.PrincipleAxesOfInertia(0)
vPrinAoIy = swMass.PrincipleAxesOfInertia(1)
vPrinAoIz = swMass.PrincipleAxesOfInertia(2)
vPrinMoI = swMass.PrincipleMomentsOfInertia
DeBUG.Print "file = " & swModel.GetPathname
DeBUG.Print " Comp = " & swComp.name2
DeBUG.Print " Config = " & swComp.ReferencedConfiguration
DeBUG.Print " Density = " & swMass.Density & " kg/m^3"
DeBUG.Print ""
DeBUG.Print " CenterOfMass = (" & vCoM(0) * 1000# & "," & vCoM(1) * 1000# & "," & vCoM(2) * 1000# & ") mm"
DeBUG.Print " Volume = " & swMass.Volume * 1000000000# & " mm^3"
DeBUG.Print " Area = " & swMass.SurfaceArea * 1000000# & " mm^2"
DeBUG.Print " Mass = " & swMass.Mass & " kg"
DeBUG.Print ""
DeBUG.Print " Ix = (" & vPrinAoIx(0) & "," & vPrinAoIx(1) & "," & vPrinAoIx(2) & ")"
DeBUG.Print " Iy = (" & vPrinAoIy(0) & "," & vPrinAoIy(1) & "," & vPrinAoIy(2) & ")"
DeBUG.Print " Iz = (" & vPrinAoIz(0) & "," & vPrinAoIz(1) & "," & vPrinAoIz(2) & ")"
DeBUG.Print ""
DeBUG.Print " Px = " & vPrinMoI(0) & " kg*m^2"
DeBUG.Print " Py = " & vPrinMoI(1) & " kg*m^2"
DeBUG.Print " Pz = " & vPrinMoI(2) & " kg*m^2"
DeBUG.Print ""
DeBUG.Print " Lxx = " & vMoI(0) & " kg*m^2"
DeBUG.Print " Lxy = " & vMoI(1) & " kg*m^2"
DeBUG.Print " Lxz = " & vMoI(2) & " kg*m^2"
DeBUG.Print " Lyx = " & vMoI(3) & " kg*m^2"
DeBUG.Print " Lyy = " & vMoI(4) & " kg*m^2"
DeBUG.Print " Lyz = " & vMoI(5) & " kg*m^2"
DeBUG.Print " Lzx = " & vMoI(6) & " kg*m^2"
DeBUG.Print " Lzy = " & vMoI(7) & " kg*m^2"
DeBUG.Print " Lzz = " & vMoI(8) & " kg*m^2"
End Sub
总结以上是内存溢出为你收集整理的SolidWorks二次开发:在程序中获取质量特征里的信息全部内容,希望文章能够帮你解决SolidWorks二次开发:在程序中获取质量特征里的信息所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)