当前位置: 首页 > article >正文

C# Solidworks二次开发:三种获取SW设计结构树的方法-第一讲

今天要讲的方法是如何在Solidworks中获取左侧设计结构上的节点,获取节点的方法我所知道的有三种。

这三种方法满足我在使用过程的多种需求,下面先开始介绍第一个方法:

方法的API如下所示:GetComponents Method (IAssemblyDoc)

这个API的解释如下:获取此程序集的活动配置中的所有组件。

方法中传入的参数是一个Bool类型,当传入参数为true的时候,表示只获取顶层节点。当传入参数为false的时候,表示获取所有节点。

下面是这个API的使用例子:

            swModel = (ModelDoc2)swApp.ActiveDoc;
            swExt = (ModelDocExtension)swModel.Extension;
            swSelMgr = (SelectionMgr)swModel.SelectionManager;
            featMgr = (FeatureManager)swModel.FeatureManager;
            swAssem = (AssemblyDoc)swModel;
            object[] vComponents = null;
            vComponents = (object[])swAssem.GetComponents(true);
            swComp = (Component2)vComponents[0];
            object[] vBodies = null;
            vBodies = (object[])swComp.GetBodies2((int)swBodyType_e.swSolidBody);
            if ((vBodies != null))
            {
                Body2 pBody = default(Body2);
                pBody = (Body2)vBodies[0];
                MidSurface3 midSurf = default(MidSurface3);
                swModel = (ModelDoc2)swComp.GetModelDoc2();
                Debug.Print("Component in which to insert midsurface feature: " + swModel.GetPathName());
                midSurf = (MidSurface3)featMgr.InsertMidSurface(pBody, swModel, 0.5, true);
                Debug.Print("Face count: " + midSurf.GetFaceCount());
            }
            else
            {
                Debug.Print("Open a different assembly in which the specified body is a solid body.");
            }

我个人平时更喜欢通过这个方法来获取所有节点:

 var comps = (object[])swAss.GetComponents(false);//获取装配体中的所有组件
   for (int j = 0; j <= comps.GetUpperBound(0); j++)

{

然后在这个循环中获取我想要的ModelDOC2以及COMP类型变量。

                var swcomp = (Component2)comps[j];
                var swcomps = (Component2)comps[0];
                ModelDoc2 swcompDoc = swcomp.GetModelDoc2();

也可以在这个循环中通过判断 ModelDoc2变量的类型,来判断自己获取到的这个变量类型是装配体还是零件。

if (swcompDoc.GetType() == 1)//判断是不是零部件文档

当判断是零部件文档以后,还有通过PartDoc类型来获取Bodie,Face,Edge等非常多的类型变量,非常的好用。

}

今天要讲的就是这些了,我们第二种方法就下篇文章再见了。


http://www.kler.cn/a/161714.html

相关文章:

  • 贪心算法day03(最长递增序列问题)
  • C++面试基础知识:排序算法 C++实现
  • 【数据结构】交换排序——冒泡排序 和 快速排序
  • three.js 杂记
  • NoSQL数据库与关系型数据库的主要区别
  • uniapp+vue2 设置全局变量和全局方法 (兼容h5/微信小程序)
  • 计算整数各位数字之和 C语言xdoj29
  • GO设计模式——11、装饰器模式(结构型)
  • uniapp实战 —— 自适配高度的可滚动区域(scroll-view的使用技巧)
  • 【Axure教程】树筛选中继器表格
  • 分布式搜索引擎elasticsearch(二)
  • 图表管理功能(前后端实现增删改查)
  • webpack学习-3.管理输出
  • vue中对pdf文件和路径的处理
  • 采样率越高噪声越大?
  • GO设计模式——13、享元模式(结构型)
  • node.js出现version `GLIBC_2.27‘ not found的解决方案
  • oomall课堂笔记
  • 软考2018下午第六题改编逻辑(状态模式)
  • 【动手学深度学习】(十)PyTorch 神经网络基础+GPU
  • QT Windos平台下打包应用程序
  • CSM2433 一款集成2.4G+125K 和8位RISC 的SOC芯片
  • 临时或永久修改linux-kali虚拟机的主机名和遇见的错误解决方法(保姆级图文)【网络工程】
  • 流量分析1--菜刀666
  • [ES]ElasticSearch强转日期的时区问题
  • 备忘录怎么传到电脑?备忘录手机电脑互传方法