在装配体中每个部件都是Component2对象的一个实例,装配体中的自动化操作少不了使用到Component2。本节我们就来介绍下Component2,以及一些部件的基本操作。
如下图所示,装配体中的零部件,底座及转轴,都是Component2对象的一个实例。
1.Component2对象的获取
Component2对象的获取方式有很多,在已知需要获取部件的名称时候,我们可以通过如下方式获取部件。
AssemblyDoc.GetComponentByName(CompName)
示例
Component2 SwComp = ((AssemblyDoc)swApp.ActiveDoc).GetComponentByName("转轴-1");
其中部件名“转轴-1”中的1,对应如下图尖括号中的数字
2.部件文档对象的获取
通过Component2的方法,还可以进一步获取对应部件的通用文档对象ModelDoc2对象,以进行进一步的自动化操作如属性设置。可以通过如下方法实现:
ModelDoc2 Doc=Component2.GetModelDoc2()
3.实例分析
A.装配体中的部件设置
在装配体中,我们可以通过Component2的方法,对部件进行压缩,解压,轻化的设置。方法如下:
Component2.SetSuppression2(State)
其中参数Status是swComponentSuppressionState_e枚举实例,分别包括压缩,解压,轻化等情况。
代码示例
public static void SetComponentsStatus(Component2 SwComp)
{
SwComp.SetSuppression2((int)swComponentSuppressionState_e.swComponentSuppressed);
System.Windows.MessageBox.Show("部件"+ SwComp.Name2+":被压缩");
SwComp.SetSuppression2((int)swComponentSuppressionState_e.swComponentResolved);
System.Windows.MessageBox.Show("部件" + SwComp.Name2 + ":被解压");
SwComp.SetSuppression2((int)swComponentSuppressionState_e.swComponentFullyLightweight);
System.Windows.MessageBox.Show("部件" + SwComp.Name2 + ":被轻化");
SwComp.SetSuppression2((int)swComponentSuppressionState_e.swComponentResolved);//还原解压
}
B.部件是否包含在明细栏
我们可以通过Component2.ExcludeFromBOM的属性对部件进行是否包含在明细表的设置。
示例代码:
public static void SetCompBomInclude(Component2 SwComp)
{
SwComp.ExcludeFromBOM = true;
System.Windows.MessageBox.Show("部件" + SwComp.Name2 + ":设置为不包含在明细表中");
SwComp.ExcludeFromBOM = false;
System.Windows.MessageBox.Show("部件" + SwComp.Name2 + ":设置包含在明细表中");
}
C.部件的配置设置
当部件存在不同配置的时候,装配体中需要设置使用部件的哪种配置,此时可以通过部件的属性Component2.ReferencedConfiguration进行部件的配置设置。注意,当部件变化了配置后,需要对其所在的装配体进行模型重新,以刷新模型。
代码示例
public static void SetCompConfig(ModelDoc2 AssemDoc, Component2 SwComp)
{
SwComp.ReferencedConfiguration = "配置2";
AssemDoc.EditRebuild3();
System.Windows.MessageBox.Show("部件" + SwComp.Name2 + ":使用了配置2");
SwComp.ReferencedConfiguration = "Default";
AssemDoc.EditRebuild3();
System.Windows.MessageBox.Show("部件" + SwComp.Name2 + ":使用了Default配置");
}
如下图为本文的示例程序,源码可上我的Github下载。操作步骤可见文章《公众号源码Github分享库》 , 实例序号16