UG二次开发 拔模功能实现

        使用拔模命令可通过更改相对于脱模方向的角度来修改面。可执行以下操作: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 脱模方向(矢量)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MarcoPro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值