• 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]);

                }

                ///

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

                ///     '''

                public SldWorks swApp;

            }

        }

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

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

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

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

  • 相关阅读:
    NumPy数组基础
    “前端”工匠系列(一):合格的工匠,究竟该搞什么 | 京东云技术团队
    ARM架构与编程 · 基于IMX6ULL
    Vue--》简易资金管理系统后台项目实战(前端)
    CMap数据库筛选化学药物
    开源报表工具Limereport交叉编译及使用
    selenium等待元素加载、元素操作、执行js、切换选项卡、登录cnblogs(chrome)、抽屉半自动点赞
    spring基本使用
    Springboot毕设项目校园跑腿网站013tujava+VUE+Mybatis+Maven+Mysql+sprnig)
    Python基础复习-基本数据类型
  • 原文地址:https://blog.csdn.net/m0_53104033/article/details/138027031