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

2023-12-14 19:22:02

今天要讲的方法是如何在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等非常多的类型变量,非常的好用。

}

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

文章来源:https://blog.csdn.net/m0_53104033/article/details/134865170
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。