C# UG NXOpen 二次开发 偏置基准平面

1、通过NXObject偏置基准平面
        /// <summary>
        /// 通过NXObject偏置基准平面
        /// </summary>
        /// <param name="orgin_face"></param>
        /// <param name="offset_dist"></param>
        /// <param name="dplane"></param>
        public void CreateDatumPlaneByObjectAndOffsetDistance(NXObject orgin_face, double offset_dist, out DatumPlane dplane)
        {
            NXOpen.Features.DatumPlaneBuilder datumPlaneBuilder1;
            datumPlaneBuilder1 = workPart.Features.CreateDatumPlaneBuilder(null);

            Plane plane1;
            plane1 = datumPlaneBuilder1.GetPlane();

            plane1.SetUpdateOption(NXOpen.SmartObject.UpdateOption.WithinModeling);

            plane1.SetMethod(NXOpen.PlaneTypes.MethodType.Coincident);

            NXObject[] geom2 = new NXObject[1];
            geom2[0] = orgin_face;
            plane1.SetGeometry(geom2);

            plane1.SetAlternate(NXOpen.PlaneTypes.AlternateType.One);

            plane1.Evaluate();

            //plane1.SetOffsetFlip(false);

            plane1.SetOffsetExpression("0");

            plane1.Evaluate();

            plane1.SetOffsetExpression(offset_dist.ToString());

            plane1.Evaluate();

            NXOpen.Features.Feature feature1;
            feature1 = datumPlaneBuilder1.CommitFeature();

            NXOpen.Features.DatumPlaneFeature datumPlaneFeature1 = (NXOpen.Features.DatumPlaneFeature)feature1;
            dplane = datumPlaneFeature1.DatumPlane;

            datumPlaneBuilder1.Destroy();
        }

2、通过Face偏置基准平面
        /// <summary>
        /// 通过Face偏置基准平面
        /// </summary>
        /// <param name="orgin_face"></param>
        /// <param name="offset_dist"></param>
        public void CreateDatumPlaneByObjectAndOffsetDistance(Face orgin_face, double offset_dist, out DatumPlane dplane)
        {
            NXOpen.Features.DatumPlaneBuilder datumPlaneBuilder1;
            datumPlaneBuilder1 = workPart.Features.CreateDatumPlaneBuilder(null);

            Plane plane1;
            plane1 = datumPlaneBuilder1.GetPlane();

            Section section1;
            section1 = workPart.Sections.CreateSection(0.02413, 0.0254, 0.5);

            Unit unit1 = (Unit)workPart.UnitCollection.FindObject("MilliMeter");
            Expression expression1;
            expression1 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1);

            Section section2;
            section2 = workPart.Sections.CreateSection(0.02413, 0.0254, 0.5);

            Expression expression2;
            expression2 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1);

            plane1.SetUpdateOption(NXOpen.SmartObject.UpdateOption.WithinModeling);

            NXObject[] geom1 = new NXObject[0];
            plane1.SetGeometry(geom1);

            plane1.SetMethod(NXOpen.PlaneTypes.MethodType.Coincident);

            plane1.SetMethod(NXOpen.PlaneTypes.MethodType.Coincident);

            NXObject[] geom2 = new NXObject[1];
            geom2[0] = orgin_face;
            plane1.SetGeometry(geom2);

            plane1.SetAlternate(NXOpen.PlaneTypes.AlternateType.One);

            plane1.Evaluate();

            plane1.SetOffsetFlip(false);

            plane1.SetOffsetExpression("0");

            plane1.Evaluate();

            plane1.SetOffsetFlip(false);

            plane1.SetOffsetExpression(offset_dist.ToString());

            plane1.Evaluate();

            bool flip1;
            flip1 = plane1.Flip;

            NXOpen.Features.Feature feature1;
            feature1 = datumPlaneBuilder1.CommitFeature();

            NXOpen.Features.DatumPlaneFeature datumPlaneFeature1 = (NXOpen.Features.DatumPlaneFeature)feature1;
            dplane = datumPlaneFeature1.DatumPlane;

            dplane.SetReverseSection(false);

            datumPlaneBuilder1.Destroy();

            try
            {
                // Expression is still in use.
                workPart.Expressions.Delete(expression2);
            }
            catch (NXException ex)
            {
                ex.AssertErrorCode(1050029);
            }

            section2.Destroy();

            try
            {
                // Expression is still in use.
                workPart.Expressions.Delete(expression1);
            }
            catch (NXException ex)
            {
                ex.AssertErrorCode(1050029);
            }

            section1.Destroy();
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

UG NXOpen学徒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值