大家好,今天要介绍模型、组件、主体的表面积相关API。
下面是今天要介绍的API:
(1)第一个为SurfaceArea Property (IMassProperty),这个API的含义为获取此模型的表面积,下面是官方的具体解释:

其没有输入参数值,返回值为表面积。
下面是官方使用的例子:
This example shows how to get and override some mass properties of a part.
// -----------------------------------------------------------------------
// Preconditions:
// 1. Ensure the specified document exists.
// 2. Open the Immediate window.
//
// Postconditions: Inspect the Immediate window.
// ----------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Forms;
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Diagnostics;
namespace MassProperty2_CSharp
{
partial class SolidWorksMacro
{
private ModelDocExtension Extn;
private MassProperty2 MyMassProp;
private MassPropertyOverrideOptions OvProp;
private ModelDoc2 swModelDoc;
private double\[\] pmoi;
private double\[\] vValue;
private double\[\] value = new double3;
private int errors;
private int warnings;
private double val;
public void Main()
{
swModelDoc = swApp.OpenDoc6(@"C:\Users\Public\Documents\SOLIDWORKS\SOLIDWORKS 2019\samples\tutorial\advdrawings\98food processor.sldasm", (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);
Extn = swModelDoc.Extension;
// Create mass properties and override options
MyMassProp = (MassProperty2)Extn.CreateMassProperty2();
OvProp = (MassPropertyOverrideOptions)MyMassProp.GetOverrideOptions();
OvProp.OverrideMass = true;
OvProp.SetOverrideMassValue(100);
double\[\] comArr = new double9;
comArr0 = 0.1677;
comArr1 = 0;
comArr2 = 0;
comArr3 = 0;
comArr4 = 0.21358;
comArr5 = 0;
comArr6 = 0;
comArr7 = 0;
comArr8 = 0.34772;
OvProp.OverrideMomentsOfInertia = true;
OvProp.SetOverrideMomentsOfInertiaValue(0, comArr, "");
// Use document property units (MKS)
MyMassProp.UseSystemUnits = false;
Debug.Print("Mass properties before override");
Debug.Print("");
val = MyMassProp.Mass;
Debug.Print("Mass: " + val);
val = MyMassProp.Volume;
Debug.Print("Volume: " + val);
val = MyMassProp.Density;
Debug.Print("Density: " + val);
val = MyMassProp.SurfaceArea;
Debug.Print("Surface area: " + val);
pmoi = (double\[\])MyMassProp.PrincipalMomentsOfInertia;
Debug.Print("Principal moments of inertiae: Px: " + pmoi0 + ", Py: " + pmoi1 + ", and Pz: " + pmoi2);
vValue = (double\[\])MyMassProp.GetMomentOfInertia(0);
Debug.Print("Moments of inertia: Lxx: " + vValue0 + ", Lxy: " + vValue1 + ", Lxz: " + vValue2 + ", Lyx: " + vValue3 + ", Lyy: " + vValue4 + ", Lyz: " + vValue5 + ", Lzx: " + vValue6 + ", Lzy: " + vValue7 + ", Lzz: " + vValue8);
MyMassProp.SetOverrideOptions(OvProp, (int)swInConfigurationOpts_e.swThisConfiguration, null);
MyMassProp.Recalculate();
Debug.Print("");
Debug.Print("Mass properties after override");
Debug.Print("");
val = MyMassProp.Mass;
Debug.Print("Mass: " + val);
val = MyMassProp.Volume;
Debug.Print("Volume: " + val);
val = MyMassProp.Density;
Debug.Print("Density: " + val);
val = MyMassProp.SurfaceArea;
Debug.Print("Surface area: " + val);
pmoi = (double\[\])MyMassProp.PrincipalMomentsOfInertia;
Debug.Print("Principal moments of inertia: Px: " + pmoi0 + ", Py: " + pmoi1 + ", and Pz: " + pmoi2);
vValue = (double\[\])MyMassProp.GetMomentOfInertia(0);
Debug.Print("Moments of inertia: Lxx: " + vValue0 + ", Lxy: " + vValue1 + ", Lxz: " + vValue2 + ", Lyx: " + vValue3 + ", Lyy: " + vValue4 + ", Lyz: " + vValue5 + ", Lzx: " + vValue6 + ", Lzy: " + vValue7 + ", Lzz: " + vValue8);
}
/// <summary>
/// ''' The SldWorks swApp variable is pre-assigned for you.
/// ''' </summary>
public SldWorks swApp;
}
}
(2)第二个为SurfaceArea Property (IMassProperty2),这个API的含义为获取所选组件或主体的表面积,下面是官方的具体解释:

其没有输入参数值,返回值为表面积。
(3)第三个为SurfaceArea Property (ISustainabilityManufacturing),这个API的含义为获取用于制造当前部件的表面积,下面是官方的具体解释:

本篇文章要介绍的就是这么多,我们下篇文章再见。