本文将继续给读者介绍装配体对象AssemblyDoc中的方法--添加装配。如下图所示,本文我们将给转轴添加3个配合关系,分别为轴重合,距离配合以及角度配合。
在AssemblyDoc中,存在AddMate5的方法,用于部件的装配操作,方法详情:
Mate2 SwMate = AssemblyDoc.instance.AddMate5(MateTypeFromEnum, AlignFromEnum, Flip, Distance, DistanceAbsUpperLimit, DistanceAbsLowerLimit, GearRatioNumerator, GearRatioDenominator, Angle, AngleAbsUpperLimit, AngleAbsLowerLimit, ForPositioningOnly, LockRotation, WidthMateOption, ErrorStatus)
该方法中有很多的参数,详情如下
参数MateTypeFromEnum:
该参数为装配类型的枚举swMateType_e,例如距离配合重合配合等,其成员如下:
参数AlignFromEnum:
该参数为对齐类型的枚举swMateAlign_e,主要成员如下,其作用即为操作中的【配合对齐】选择项
参数Flip:
该参数仅在距离装配时有效,其作用即为操作中的【反转尺寸】选择项
参数Distance,DistanceAbsUpperLimit,DistanceAbsLowerLimit:
此3个参数都与距离相关的配合有关。
当为固定距离配合时,该三个参数的取值相同。
当为距离范围配合时,DistanceAbsUpperLimit,DistanceAbsLowerLimit分别代表上下限值。
参数GearRatioNumerator ,GearRatioDenominator用于齿轮配合时有效。
参数Angle,AngleAbsLowerLimit,AngleAbsLowerLimit :
此3个参数都与角度相关的配合有关,用法同距离。
当为固定角度配合时,该三个参数的取值相同。
当为角度范围配合时,AngleAbsUpperLimit,AngleAbsLowerLimit分别代表上下限值。
参数ForPositioningOnly :
是否仅用于定位
参数LockRotation :
是否锁定旋转
参数WidthMateOption:
宽度配合的附加选项,仅宽度配合时有效
参数ErrorStatus
返回执行结果
操作分析:
1.同时选中需要进行配合的基准。
2.添加需要的配合。
代码实例
public static void AddMate(SldWorks swApp, ModelDoc2 Doc, string newpartpath)
{
#region 添加部件
swApp.OpenDoc(newpartpath, 1);
((AssemblyDoc)Doc).AddComponent5(newpartpath, 0, "", false, "", 0, 0.3, 0);
swApp.CloseDoc(newpartpath);
#endregion
Component2 BaseComp = ((AssemblyDoc)Doc).GetComponentByName("底座-1");
Component2 RoateComp = ((AssemblyDoc)Doc).GetComponentByName("转轴-1");
int err = 0;
#region 轴装配
Feature BaseAxi = BaseComp.FeatureByName("基准轴1");
Feature RoateAxi = RoateComp.FeatureByName("转轴中心轴");
BaseAxi.Select(false);
RoateAxi.Select(true);
((AssemblyDoc)Doc).AddMate5((int)swMateType_e.swMateCOINCIDENT, (int)swMateAlign_e.swMateAlignALIGNED,false,0,0,0,0,0,0,0,0,false,false,0,out err);
#endregion
#region 底面装配距离
Feature BaseBp = BaseComp.FeatureByName("Top");
Feature RoateBp = RoateComp.FeatureByName("Top");
BaseBp.Select(false);
RoateBp.Select(true);
((AssemblyDoc)Doc).AddMate5((int)swMateType_e.swMateDISTANCE, (int)swMateAlign_e.swMateAlignALIGNED, false, 10/1000.0, 10 / 1000.0, 10 / 1000.0, 0, 0, 0, 0, 0, false, false, 0, out err);
#endregion
#region 方位装配
Feature BaseOir = BaseComp.FeatureByName("Right");
Feature RoateOir = RoateComp.FeatureByName("Right");
BaseOir.Select(false);
RoateOir.Select(true);
((AssemblyDoc)Doc).AddMate5((int)swMateType_e.swMateANGLE, (int)swMateAlign_e.swMateAlignALIGNED, false,0, 0, 0, 0, 0, (30/180.0)*Math.PI, (30 / 180.0) * Math.PI, (30 / 180.0) * Math.PI, false, false, 0, out err);
#endregion
Doc.EditRebuild3();
}
从上面我们可以看到,无论操作哪种配合关系,都使用AddMate5方法进行配合的添加,其中的参数有很多,但只有部分参数与我们需要建立的配合有关。
在目前最新的Soldiworks版本中,官方又提供了更新的添加装配的方法,各类配合会有自己的MateData,即配合数据,然后通过该统一的方法进行调用,在后续的章节中,还会给大家进一步讲解该方法的使用。
AssemblyDoc.CreateMate(MateData)
如下图为本文的示例程序,源码可上我的Github下载。操作步骤可见文章《公众号源码Github分享库》 , 实例序号15