使用拔模命令可通过更改相对于脱模方向的角度来修改面。可执行以下操作:1)指定多个拔模角并对一组面指派角度;2)将单个拔模特征添加到多个体。
拔模命令通常用于对面应用斜率,以在塑模部件或模铸部件中使用,从而使得在模具或凹模分开时,这些面可以相互移开,而不是相互靠近滑动。通常,脱模方向是模具或冲模为了与部件分离而必须移动的方向。但是,如果为模具或冲模建模,则脱模方向是部件为了与模具或冲模分开而必须移动的方向。
本节通过录制拔模功能,完成了按平面拔模方法的整理:
拔模工具截图如下:
最终效果图如下:
一、主程序
//拔模
theUFSession = UFSession.GetUFSession();
Tag face1 = Tag.Null, face2 = Tag.Null;
theUFSession.Obj.CycleByName("FACE1", ref face1);
theUFSession.Obj.CycleByName("FACE2", ref face2);
Vector3d vector1 = new Vector3d(0.0, 0.0, 1.0);
EventHelper.CreateDraftNXopen(face1,face2,"45","角度",vector1);
二、拔模方法
/// <summary>
/// 拔模
/// </summary>
/// <param name="face1Tag">固定面</param>
/// <param name="face2Tag">拔模的面</param>
/// <param name="value">参数值</param>
/// <param name="unitsType">参数类型</param>
/// <param name="vector">脱模方向(矢量)</param>
/// <returns></returns>
public static Tag CreateDraftNXopen(Tag face1Tag, Tag face2Tag, string value, string unitsType, Vector3d vector)
{
Session theSession = Session.GetSession();
Part workPart = theSession.Parts.Work;
NXOpen.Features.Feature nullFeatures_Feature = null;
NXOpen.Features.DraftBuilder draftBuilder1;
draftBuilder1 = workPart.Features.CreateDraftBuilder(nullFeatures_Feature);
draftBuilder1.DistanceTolerance = 0.001;
draftBuilder1.AngleTolerance = 0.05;
draftBuilder1.AngleTolerance = 0.05;
draftBuilder1.DistanceTolerance = 0.001;
draftBuilder1.DraftIsoclineOrTruedraft = NXOpen.Features.DraftBuilder.Method.Isocline;
NXOpen.GeometricUtilities.DraftVariableAngleData draftVariableAngleData1;
draftVariableAngleData1 = draftBuilder1.VariableAngleData;
NXOpen.GeometricUtilities.DraftPointData[] points1;
points1 = draftVariableAngleData1.GetDraftPoints();
draftBuilder1.TypeOfDraft = NXOpen.Features.DraftBuilder.Type.Face;
draftBuilder1.FaceSetAngleExpressionList.Clear(NXOpen.ObjectList.DeleteOption.Delete);
draftBuilder1.EdgeSetAngleExpressionList.Clear(NXOpen.ObjectList.DeleteOption.Delete);
Point3d origin1 = new Point3d(0.0, 0.0, 0.0);
Direction direction1;
direction1 = workPart.Directions.CreateDirection(origin1, vector, NXOpen.SmartObject.UpdateOption.WithinModeling);
draftBuilder1.Direction = direction1;
Face face1 = (Face)NXOpen.Utilities.NXObjectManager.Get(face1Tag);
draftBuilder1.StationaryEntity = face1;
ScCollector nullScCollector = null;
ExpressionCollectorSet expressionCollectorSet1;
expressionCollectorSet1 = workPart.CreateExpressionCollectorSet(nullScCollector, value, unitsType, 0);
draftBuilder1.FaceSetAngleExpressionList.Append(expressionCollectorSet1);
ScCollector scCollector1;
scCollector1 = workPart.ScCollectors.CreateCollector();
Face face2 = (Face)NXOpen.Utilities.NXObjectManager.Get(face2Tag);
Face[] boundaryFaces1 = new Face[0];
FaceTangentRule faceTangentRule1;
faceTangentRule1 = workPart.ScRuleFactory.CreateRuleFaceTangent(face2, boundaryFaces1, 0.05);
SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
rules1[0] = faceTangentRule1;
scCollector1.ReplaceRules(rules1, false);
expressionCollectorSet1.Collector = scCollector1;
NXOpen.Features.Feature feature1;
feature1 = draftBuilder1.CommitFeature();
return feature1.Tag;
}
拔模方法抽象出5个参数,基本可以覆盖按平面拔模的所有场景,参数列表如下:
1、face1Tag 固定面
2、face2Tag 拔模的面
3、value 参数值
4、unitsType参数类型
5、vector 脱模方向(矢量)