今天要讲的方法是如何在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等非常多的类型变量,非常的好用。
}
今天要讲的就是这些了,我们第二种方法就下篇文章再见了。



















