在装配体配合中,记录配合关系的对象为Mate2,如下图红框中的每个配合就是一个配合对象Mate2的实例,本文将简单介绍Mate2的获取及其记录的相关配合参数的获取。
1.Mate2对象的获取
常用的Mate2对象获取可以通过部件对象(Component2)或特征对象(Faeture)对象获取。
Feature SwFeat;
Mate2 SwMate = SwFeat.GetSpecificFeature2()
Component2 SwComp;
Mate2 SwMate = SwComp.GetMates()
2.实例分析--对象获取
本例使用API获取部件转轴的配合对象与类型。
代码实例:
public static void GetMateType(Component2 SwComp)
{
object[] CompMateObjs = SwComp.GetMates();//获取数组
foreach (object ObjMate in CompMateObjs)
{
if (ObjMate is Mate2)//判断是否为配合
{
Mate2 SwMate = (Mate2)ObjMate;
System.Windows.MessageBox.Show(Enum.Parse(typeof(swMateType_e), SwMate.Type.ToString().Trim()).ToString().Trim());
}
}
}
代码解析
通过SwComp.GetMates()获得的是object[]数组,不能直接使用配合数组Mate2[]。循环遍历每个object对象是,判断该object是否为Mate2对象,在继续后续的数据获取。
实例效果
3.实例分析-配合参数获取
本例将通过Mate2对象的属性和方法获取每个配合的参数,包括参考对象,参考部件,配合尺寸等信息。
代码实例
public static void GetMateRefrence(Component2 SwComp)
{
object[] CompMateObjs = SwComp.GetMates();
StringBuilder Sb = new StringBuilder("");
foreach (object ObjMate in CompMateObjs)
{
if (ObjMate is Mate2)
{
Mate2 SwMate = (Mate2)ObjMate;
Sb.Append("配合【"+ ((Feature)SwMate).Name + "】参考对象:\r\n");//配合名称
int n = SwMate.GetMateEntityCount();
for(int i=0;i< n;i++)//配合参考
{
MateEntity2 SwMateEntity2 = SwMate.MateEntity(i);
string reftype = Enum.Parse(typeof(swSelectType_e), SwMateEntity2.ReferenceType2.ToString().Trim()).ToString().Trim();
string comp = SwMateEntity2.ReferenceComponent.Name2;
string refname = SwMateEntity2.Reference.Name;
Sb.Append("部件【" + comp + "】,参考【" + refname + "】" + ",类型【" + reftype + "】");
DisplayDimension SwDispDim = SwMate.DisplayDimension2[0];
if (SwDispDim != null)
{
if (SwMate.Type == (int)swMateType_e.swMateANGLE)
{
Sb.Append(",角度=" + SwDispDim.GetDimension2(0).Value.ToString().Trim());
}
else if (SwMate.Type == (int)swMateType_e.swMateDISTANCE)
{
Sb.Append(",尺寸=" + SwDispDim.GetDimension2(0).Value.ToString().Trim());
}
}
Sb.Append("\r\n");
}
Sb.Append("\r\n");
}
}
System.Windows.MessageBox.Show(Sb.ToString().Trim());
}
代码解读
a.通过Mate2::GetMateEntityCount()可以获得每个配合的参考数量,这是获取每个参考详细数据的前置条件。
b.配合对象也是一个特征,所以可以通过强制转换为Feature对象,获得该配合的名称
c.通过Mate2::MateEntity(i)方法可以获得每个配合的参考实体对象SwMateEntity2
d.通过SwMateEntity2对象即可获取参考对象,所属部件,等各类配合参考的信息。
e.通过Mate2::DisplayDimension2方法,即可获得对应配合的配合尺寸及数据,关于尺寸相关对象,可以查看之前的文章《尺寸对象Dimension》
实例效果
如下图为本文的示例程序,源码可上我的Github下载。操作步骤可见文章《公众号源码Github分享库》 , 实例序号17