C# Solidworks二次开发:获取模型、组件、主体的表面积相关API详解

大家好,今天要介绍模型、组件、主体的表面积相关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 double[3];

            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 double[9];

                comArr[0] = 0.1677;

                comArr[1] = 0;

                comArr[2] = 0;

                comArr[3] = 0;

                comArr[4] = 0.21358;

                comArr[5] = 0;

                comArr[6] = 0;

                comArr[7] = 0;

                comArr[8] = 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: " + pmoi[0] + ", Py: " + pmoi[1] + ", and Pz: " + pmoi[2]);

                vValue = (double[])MyMassProp.GetMomentOfInertia(0);

                Debug.Print("Moments of inertia: Lxx: " + vValue[0] + ", Lxy: " + vValue[1] + ", Lxz: " + vValue[2] + ", Lyx: " + vValue[3] + ", Lyy: " + vValue[4] + ", Lyz: " + vValue[5] + ", Lzx: " + vValue[6] + ", Lzy: " + vValue[7] + ", Lzz: " + vValue[8]);

                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: " + pmoi[0] + ", Py: " + pmoi[1] + ", and Pz: " + pmoi[2]);

                vValue = (double[])MyMassProp.GetMomentOfInertia(0);

                Debug.Print("Moments of inertia: Lxx: " + vValue[0] + ", Lxy: " + vValue[1] + ", Lxz: " + vValue[2] + ", Lyx: " + vValue[3] + ", Lyy: " + vValue[4] + ", Lyz: " + vValue[5] + ", Lzx: " + vValue[6] + ", Lzy: " + vValue[7] + ", Lzz: " + vValue[8]);

            }

            /// <summary>

            ///     ''' The SldWorks swApp variable is pre-assigned for you.

            ///     ''' </summary>

            public SldWorks swApp;

        }

    }

(2)第二个为SurfaceArea Property (IMassProperty2),这个API的含义为获取所选组件或主体的表面积,下面是官方的具体解释:

其没有输入参数值,返回值为表面积。

(3)第三个为SurfaceArea Property (ISustainabilityManufacturing),这个API的含义为获取用于制造当前部件的表面积,下面是官方的具体解释:

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

  • 52
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵桑さん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值