Перейти к публикации

NX Thread Open API


naik.yavd

Рекомендованные сообщения

Здравствуйте, подскажите, каким методом можно реализовать резьбу на детали, используя лишь NX Open API, на C# (.NET), но если знаете пишите на любом другом языке или любыми другими способами, так, что бы она была детализированной (3D).

Знаю метод "theUfSession.Modl.CreateSymbThread(ref thread, out feat)", но он отображает только символически, в виде пунктирного круга, что не очень устраивает.

 

Может можно запустить как-нибудь макрос через код в библиотеке? или как-нибудь журнальный код воспроизвести?

 UFModl.SymbThreadData thread = new UFModl.SymbThreadData();                     
                        
                        thread.cyl_face = c_face;
                        thread.start_face = s_face;
                        thread.axis_direction = new double [3] { 0.00, 0.00, 1.00 };
                        thread.rotation = 1;
                        thread.num_starts = 10;
                        thread.length = Convert.ToString(ThreadLong);// длина резьбы
                        thread.form = "Metric";// метрическая система
                        thread.major_dia = Convert.ToString((2 * Radius)+1);//внешний диаметр резьбы
                        thread.minor_dia = Convert.ToString((2 * Radius)-1);//внутренний диаметр резьбы
                        thread.tapped_dia = Convert.ToString((2 * Radius));//диметр резьбы
                        thread.pitch = Convert.ToString(Step);//шаг резьбы
                        thread.angle = "20";//угол резьбы
                        //thread.internal_thread = true;
                        thread.callout = "M10_X_1.5";

            theUfSession.Modl.CreateSymbThread(ref thread, out feat);

post-47695-0-12596700-1432763055.png

Ссылка на сообщение
Поделиться на других сайтах


Если только самому заметать профиль резьбы. Немного трудоемко, но в целом - реализуемо.

Ссылка на сообщение
Поделиться на других сайтах

Если только самому заметать профиль резьбы. Немного трудоемко, но в целом - реализуемо.

А можно по подробнее объяснить что значит профиль и как реализовывать это?

 

Собираюсь пробовать рисовать в ручную, через пружину и путем сдвига, незнаю возможно ли это средствами NX, или нет.

Может быть возможно вращение треугольника вокруг оси, по спирали с параметром FeatureSigns.Negative ???

Ссылка на сообщение
Поделиться на других сайтах
  • 5 месяцев спустя...

Дабы эта проблема была более мение, хоть как нибудь решена, напмшу мой способ.

Т.к. проект я сделал давно, я мало что уже вспомню, но хорошо разобраться за неделю, две не составит большого труда.

Походу в nx еще нельзя програмно управлять некоторыми методами, необходимыми для реализации резьбы, по этому я делал через журнал. А документация там порой веселая...

В журнале можно переопределять переменные, но шансы того, что они будут корректно отображатся не велики, надо разбираться.

 

Советую этот код сравнивать со своим как порядок действий, а не копировать его бездумно.

 ///Новая резба
                NXOpen.Session theSession = NXOpen.Session.GetSession();
                NXOpen.Part workPart = theSession.Parts.Work;
                NXOpen.Part displayPart = theSession.Parts.Display;
                // ----------------------------------------------
                //   Меню: Вставить->Кривая->Спираль...
                // ----------------------------------------------
                NXOpen.Session.UndoMarkId markId1;
                markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Начало");
                NXOpen.Features.Helix nullNXOpen_Features_Helix = null;
                if (!workPart.Preferences.Modeling.GetHistoryMode())
                {throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");}

                NXOpen.Features.HelixBuilder helixBuilder1;
                helixBuilder1 = workPart.Features.CreateHelixBuilder(nullNXOpen_Features_Helix);
                NXOpen.Unit unit1;
                unit1 = helixBuilder1.SizeLaw.Value.Units;

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

                helixBuilder1.OrientationOption = NXOpen.Features.HelixBuilder.OrientationOptions.Specified;
                helixBuilder1.StartAngle.RightHandSide = Convert.ToString(AngleThraed);
                helixBuilder1.SizeOption = NXOpen.Features.HelixBuilder.SizeOptions.Radius;
                helixBuilder1.SizeLaw.Value.RightHandSide = Convert.ToString(Radius);
                helixBuilder1.SizeLaw.StartValue.RightHandSide = "20";
                helixBuilder1.SizeLaw.EndValue.RightHandSide = "20";
                helixBuilder1.PitchLaw.Value.RightHandSide = Convert.ToString(Step);
                helixBuilder1.PitchLaw.StartValue.RightHandSide = "5";
                helixBuilder1.PitchLaw.EndValue.RightHandSide = "5";
                helixBuilder1.NumberOfTurns = "25";
                helixBuilder1.StartLimit.Expression.RightHandSide = "0";
                helixBuilder1.StartLimit.IsPercentUsed = false;
                helixBuilder1.EndLimit.Expression.RightHandSide = "50";
                helixBuilder1.EndLimit.IsPercentUsed = false;
                theSession.SetUndoMarkName(markId1, "Диалоговое окно Спираль");
                helixBuilder1.Spine.DistanceTolerance = 0.01;
                helixBuilder1.Spine.ChainingTolerance = 0.0095;
                helixBuilder1.SizeLaw.AlongSpineData.Spine.DistanceTolerance = 0.01;
                helixBuilder1.SizeLaw.AlongSpineData.Spine.ChainingTolerance = 0.0095;
                helixBuilder1.SizeLaw.LawCurve.DistanceTolerance = 0.01;
                helixBuilder1.SizeLaw.LawCurve.ChainingTolerance = 0.0095;
                helixBuilder1.PitchLaw.AlongSpineData.Spine.DistanceTolerance = 0.01;
                helixBuilder1.PitchLaw.AlongSpineData.Spine.ChainingTolerance = 0.0095;
                helixBuilder1.PitchLaw.LawCurve.DistanceTolerance = 0.01;
                helixBuilder1.PitchLaw.LawCurve.ChainingTolerance = 0.0095;
                helixBuilder1.Spine.AngleTolerance = 0.5;
                helixBuilder1.SizeLaw.AlongSpineData.Spine.AngleTolerance = 0.5;
                helixBuilder1.SizeLaw.LawCurve.AngleTolerance = 0.5;
                helixBuilder1.PitchLaw.AlongSpineData.Spine.AngleTolerance = 0.5;
                helixBuilder1.PitchLaw.LawCurve.AngleTolerance = 0.5;
                helixBuilder1.StartLimit.Expression.RightHandSide = "0";
                helixBuilder1.EndLimit.Expression.RightHandSide = Convert.ToString(ThreadLong);

                NXOpen.Point3d origin1 = new NXOpen.Point3d(0.0, 0.0, 0.0);
                NXOpen.Vector3d xDirection1 = new NXOpen.Vector3d(1.0, 0.0, 0.0);
                NXOpen.Vector3d yDirection1 = new NXOpen.Vector3d(0.0, 1.0, 0.0);
                NXOpen.Xform xform1;
                xform1 = workPart.Xforms.CreateXform(origin1, xDirection1, yDirection1, NXOpen.SmartObject.UpdateOption.WithinModeling, 1.0);
                NXOpen.CartesianCoordinateSystem cartesianCoordinateSystem1;
                cartesianCoordinateSystem1 = workPart.CoordinateSystems.CreateCoordinateSystem(xform1, NXOpen.SmartObject.UpdateOption.WithinModeling);
                helixBuilder1.CoordinateSystem = cartesianCoordinateSystem1;
                NXOpen.Session.UndoMarkId markId2;
                markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Спираль");
                theSession.DeleteUndoMark(markId2, null);
                NXOpen.Session.UndoMarkId markId3;
                markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Спираль");
                NXOpen.NXObject nXObject1;

                nXObject1 = helixBuilder1.Commit();
                theSession.DeleteUndoMark(markId3, null);
                theSession.SetUndoMarkName(markId1, "Спираль");
                NXOpen.Expression expression3 = helixBuilder1.StartLimit.Expression;
                NXOpen.Expression expression4 = helixBuilder1.StartAngle;
                NXOpen.Expression expression5 = helixBuilder1.SizeLaw.Value;
                NXOpen.Expression expression6 = helixBuilder1.PitchLaw.Value;
                NXOpen.Expression expression7 = helixBuilder1.EndLimit.Expression;
                helixBuilder1.Destroy();
                workPart.Expressions.Delete(expression1);
                workPart.Expressions.Delete(expression2);
                // ----------------------------------------------
                //   Меню: Вставить->Эскиз...
                // ----------------------------------------------
                NXOpen.Session.UndoMarkId markId4;
                markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Начало");

                NXOpen.Sketch nullNXOpen_Sketch = null;
                NXOpen.SketchInPlaceBuilder sketchInPlaceBuilder1;
                sketchInPlaceBuilder1 = workPart.Sketches.CreateNewSketchInPlaceBuilder(nullNXOpen_Sketch);
                NXOpen.Expression expression8;
                expression8 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1);
                NXOpen.Expression expression9;
                expression9 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1);
                NXOpen.SketchAlongPathBuilder sketchAlongPathBuilder1;
                sketchAlongPathBuilder1 = workPart.Sketches.CreateSketchAlongPathBuilder(nullNXOpen_Sketch);
                sketchAlongPathBuilder1.PlaneLocation.Expression.RightHandSide = "0";
                theSession.SetUndoMarkName(markId4, "Диалоговое окно Создание эскиза");
                sketchAlongPathBuilder1.Section.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);
                NXOpen.Session.UndoMarkId markId5;
                markId5 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
                NXOpen.Features.Feature[] features1 = new NXOpen.Features.Feature[1];
                NXOpen.Features.Helix helix1 = (NXOpen.Features.Helix)nXObject1;
                features1[0] = helix1;
                NXOpen.CurveFeatureRule curveFeatureRule1;
                curveFeatureRule1 = workPart.ScRuleFactory.CreateRuleCurveFeature(features1);
                sketchAlongPathBuilder1.Section.AllowSelfIntersection(true);
                NXOpen.SelectionIntentRule[] rules1 = new NXOpen.SelectionIntentRule[1];
                rules1[0] = curveFeatureRule1;
                NXOpen.NXObject nullNXOpen_NXObject = null;
                NXOpen.Point3d helpPoint1 = new NXOpen.Point3d(0.0, 0.0, 0.0);
                sketchAlongPathBuilder1.Section.AddToSection(rules1, nullNXOpen_NXObject, nullNXOpen_NXObject, nullNXOpen_NXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
                theSession.DeleteUndoMark(markId5, null);
                NXOpen.Session.UndoMarkId markId6;
                markId6 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");
                NXOpen.Session.UndoMarkId markId7;
                markId7 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
                theSession.DeleteUndoMark(markId7, null);

                sketchAlongPathBuilder1.PlaneLocation.Path.Value = sketchAlongPathBuilder1.Section;
                sketchAlongPathBuilder1.PlaneLocation.Update(NXOpen.GeometricUtilities.OnPathDimensionBuilder.UpdateReason.Path);
                sketchAlongPathBuilder1.PlaneLocation.Expression.RightHandSide = "0.1574622768553";
                sketchAlongPathBuilder1.PlaneLocation.Expression.RightHandSide = "0.1574622768553";
                theSession.DeleteUndoMark(markId6, null);
                sketchAlongPathBuilder1.PlaneLocation.Expression.RightHandSide = "0";
                sketchAlongPathBuilder1.PlaneLocation.Update(NXOpen.GeometricUtilities.OnPathDimensionBuilder.UpdateReason.Path);
                sketchAlongPathBuilder1.PlaneLocation.Expression.RightHandSide = "0.1574622768553";
                sketchAlongPathBuilder1.PlaneLocation.Expression.RightHandSide = "0";
                sketchAlongPathBuilder1.PlaneLocation.Expression.RightHandSide = "0";

                NXOpen.Session.UndoMarkId markId8;
                markId8 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Создание эскиза");
                theSession.DeleteUndoMark(markId8, null);
                NXOpen.Session.UndoMarkId markId9;
                markId9 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Создание эскиза");
                NXOpen.SelectIReferenceAxis selectIReferenceAxis1;

                selectIReferenceAxis1 = sketchAlongPathBuilder1.Axis;
                theSession.Preferences.Sketch.CreateInferredConstraints = true;
                theSession.Preferences.Sketch.ContinuousAutoDimensioning = true;
                theSession.Preferences.Sketch.DimensionLabel = NXOpen.Preferences.SketchPreferences.DimensionLabelType.Expression;
                theSession.Preferences.Sketch.TextSizeFixed = true;
                theSession.Preferences.Sketch.FixedTextSize = 3.0;
                theSession.Preferences.Sketch.ConstraintSymbolSize = 3.0;
                theSession.Preferences.Sketch.DisplayObjectColor = false;
                theSession.Preferences.Sketch.DisplayObjectName = true;
                NXOpen.NXObject nXObject2;

                nXObject2 = sketchAlongPathBuilder1.Commit();

                NXOpen.Sketch sketch1 = (NXOpen.Sketch)nXObject2;
                sketch1.Activate(NXOpen.Sketch.ViewReorient.True);
                theSession.DeleteUndoMark(markId9, null);
                theSession.SetUndoMarkName(markId4, "Создание эскиза");
                sketchInPlaceBuilder1.Destroy();
                sketchAlongPathBuilder1.Destroy();
                try
                {                    // Выражение используется
                    workPart.Expressions.Delete(expression9);}
                catch (NXException ex)
                {ex.AssertErrorCode(1050029);}
                try{// Выражение используется
                    workPart.Expressions.Delete(expression8);}
                catch (NXException ex)
                {ex.AssertErrorCode(1050029);}
                // ----------------------------------------------
                //   Меню: Увеличение
                // ----------------------------------------------
                NXOpen.Point3d corner1_1 = new NXOpen.Point3d(-1.66162487549808, 2.87007933040578, 0.0);
                NXOpen.Point3d corner2_1 = new NXOpen.Point3d(2.26585210295194, -1.05739764804424, 0.0);
                workPart.ModelingViews.WorkView.ZoomByRectangle(corner1_1, corner2_1);
                // ---------------------------------------------
                //   Меню: Зафиксировать вид
                // ----------------------------------------------
                workPart.ModelingViews.WorkView.SnapToClosestCannedOrientation();
                // ----------------------------------------------
                //   Меню: Вставить->Кривая эскиза->Прямоугольник...
                // ----------------------------------------------
                NXOpen.Session.UndoMarkId markId10;
                markId10 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Profile short list");
                NXOpen.Session.UndoMarkId markId11;
                markId11 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Create Rectangle");
                NXOpen.Expression expression10;
                expression10 = workPart.Expressions.CreateSystemExpression("1");
                NXOpen.Expression expression11;
                expression11 = workPart.Expressions.CreateSystemExpression("2");
                NXOpen.Expression expression12;
                expression12 = workPart.Expressions.CreateSystemExpression("227");
                workPart.Expressions.Edit(expression10, "1");
                workPart.Expressions.Edit(expression11, "1");
                workPart.Expressions.Edit(expression12, "225");
                workPart.Expressions.Edit(expression10, "1");
                workPart.Expressions.Edit(expression11, "1");
                workPart.Expressions.Edit(expression12, "225");
                workPart.Expressions.Edit(expression10, "1");
                workPart.Expressions.Edit(expression11, "1");
                workPart.Expressions.Edit(expression12, "225");
                workPart.Expressions.Edit(expression10, "1");
                workPart.Expressions.Edit(expression11, "1");
                workPart.Expressions.Edit(expression12, "225");
                workPart.Expressions.Edit(expression10, "1");
                workPart.Expressions.Edit(expression11, "1");
                workPart.Expressions.Edit(expression12, "225");
                workPart.Expressions.Edit(expression10, "1");
                workPart.Expressions.Edit(expression11, "1");
                workPart.Expressions.Edit(expression12, "225");
                theSession.SetUndoMarkVisibility(markId11, "Create Rectangle", NXOpen.Session.MarkVisibility.Visible);
                // ----------------------------------------------
                // Creating rectangle using By 3 Points method 
                // ----------------------------------------------
                NXOpen.Point3d startPoint1 = new NXOpen.Point3d(Radius, -0.0444733533376771, 0.698585800630747); //РЕДАКЦИЯЯЯЯЯЯЯЯЯЯЯ
                NXOpen.Point3d endPoint1 = new NXOpen.Point3d(Radius + 0.70710678118655, 0.000451517701146835, -0.00709242346444313);
                NXOpen.Line line1;
                line1 = workPart.Curves.CreateLine(startPoint1, endPoint1);
                NXOpen.Point3d startPoint2 = new NXOpen.Point3d(Radius + 0.70710678118655, 0.000451517701146835, -0.00709242346444313);
                NXOpen.Point3d endPoint2 = new NXOpen.Point3d(Radius + 0.00000000000001, 0.0453763887399711, -0.712770647559639);
                NXOpen.Line line2;
                line2 = workPart.Curves.CreateLine(startPoint2, endPoint2);
                NXOpen.Point3d startPoint3 = new NXOpen.Point3d(Radius + 0.00000000000001, 0.0453763887399711, -0.712770647559639);
                NXOpen.Point3d endPoint3 = new NXOpen.Point3d(Radius - 0.70710678118654, 0.000451517701147188, -0.00709242346444867);//4.29289321881346
                NXOpen.Line line3;
                line3 = workPart.Curves.CreateLine(startPoint3, endPoint3);
                NXOpen.Point3d startPoint4 = new NXOpen.Point3d(Radius-0.70710678118654, 0.000451517701147188, -0.00709242346444867);
                NXOpen.Point3d endPoint4 = new NXOpen.Point3d(Radius, -0.0444733533376771, 0.698585800630747);
                NXOpen.Line line4;
                line4 = workPart.Curves.CreateLine(startPoint4, endPoint4);
                theSession.ActiveSketch.AddGeometry(line1, NXOpen.Sketch.InferConstraintsOption.InferNoConstraints);
                theSession.ActiveSketch.AddGeometry(line2, NXOpen.Sketch.InferConstraintsOption.InferNoConstraints);
                theSession.ActiveSketch.AddGeometry(line3, NXOpen.Sketch.InferConstraintsOption.InferNoConstraints);
                theSession.ActiveSketch.AddGeometry(line4, NXOpen.Sketch.InferConstraintsOption.InferNoConstraints);
                NXOpen.Sketch.ConstraintGeometry geom1_1 = new NXOpen.Sketch.ConstraintGeometry();
                geom1_1.Geometry = line1;
                geom1_1.PointType = NXOpen.Sketch.ConstraintPointType.EndVertex;
                geom1_1.SplineDefiningPointIndex = 0;
                NXOpen.Sketch.ConstraintGeometry geom2_1 = new NXOpen.Sketch.ConstraintGeometry();
                geom2_1.Geometry = line2;
                geom2_1.PointType = NXOpen.Sketch.ConstraintPointType.StartVertex;
                geom2_1.SplineDefiningPointIndex = 0;
                NXOpen.SketchGeometricConstraint sketchGeometricConstraint1;
                sketchGeometricConstraint1 = theSession.ActiveSketch.CreateCoincidentConstraint(geom1_1, geom2_1);

                NXOpen.Sketch.ConstraintGeometry geom1_2 = new NXOpen.Sketch.ConstraintGeometry();
                geom1_2.Geometry = line2;
                geom1_2.PointType = NXOpen.Sketch.ConstraintPointType.EndVertex;
                geom1_2.SplineDefiningPointIndex = 0;
                NXOpen.Sketch.ConstraintGeometry geom2_2 = new NXOpen.Sketch.ConstraintGeometry();
                geom2_2.Geometry = line3;
                geom2_2.PointType = NXOpen.Sketch.ConstraintPointType.StartVertex;
                geom2_2.SplineDefiningPointIndex = 0;
                NXOpen.SketchGeometricConstraint sketchGeometricConstraint2;
                sketchGeometricConstraint2 = theSession.ActiveSketch.CreateCoincidentConstraint(geom1_2, geom2_2);

                NXOpen.Sketch.ConstraintGeometry geom1_3 = new NXOpen.Sketch.ConstraintGeometry();
                geom1_3.Geometry = line3;
                geom1_3.PointType = NXOpen.Sketch.ConstraintPointType.EndVertex;
                geom1_3.SplineDefiningPointIndex = 0;
                NXOpen.Sketch.ConstraintGeometry geom2_3 = new NXOpen.Sketch.ConstraintGeometry();
                geom2_3.Geometry = line4;
                geom2_3.PointType = NXOpen.Sketch.ConstraintPointType.StartVertex;
                geom2_3.SplineDefiningPointIndex = 0;
                NXOpen.SketchGeometricConstraint sketchGeometricConstraint3;
                sketchGeometricConstraint3 = theSession.ActiveSketch.CreateCoincidentConstraint(geom1_3, geom2_3);

                NXOpen.Sketch.ConstraintGeometry geom1_4 = new NXOpen.Sketch.ConstraintGeometry();
                geom1_4.Geometry = line4;
                geom1_4.PointType = NXOpen.Sketch.ConstraintPointType.EndVertex;
                geom1_4.SplineDefiningPointIndex = 0;
                NXOpen.Sketch.ConstraintGeometry geom2_4 = new NXOpen.Sketch.ConstraintGeometry();
                geom2_4.Geometry = line1;
                geom2_4.PointType = NXOpen.Sketch.ConstraintPointType.StartVertex;
                geom2_4.SplineDefiningPointIndex = 0;
                NXOpen.SketchGeometricConstraint sketchGeometricConstraint4;
                sketchGeometricConstraint4 = theSession.ActiveSketch.CreateCoincidentConstraint(geom1_4, geom2_4);

                NXOpen.Sketch.ConstraintGeometry conGeom1_1 = new NXOpen.Sketch.ConstraintGeometry();
                conGeom1_1.Geometry = line1;
                conGeom1_1.PointType = NXOpen.Sketch.ConstraintPointType.None;
                conGeom1_1.SplineDefiningPointIndex = 0;
                NXOpen.Sketch.ConstraintGeometry conGeom2_1 = new NXOpen.Sketch.ConstraintGeometry();
                conGeom2_1.Geometry = line2;
                conGeom2_1.PointType = NXOpen.Sketch.ConstraintPointType.None;
                conGeom2_1.SplineDefiningPointIndex = 0;
                NXOpen.SketchGeometricConstraint sketchGeometricConstraint5;
                sketchGeometricConstraint5 = theSession.ActiveSketch.CreatePerpendicularConstraint(conGeom1_1, conGeom2_1);

                NXOpen.Sketch.ConstraintGeometry conGeom1_2 = new NXOpen.Sketch.ConstraintGeometry();
                conGeom1_2.Geometry = line2;
                conGeom1_2.PointType = NXOpen.Sketch.ConstraintPointType.None;
                conGeom1_2.SplineDefiningPointIndex = 0;
                NXOpen.Sketch.ConstraintGeometry conGeom2_2 = new NXOpen.Sketch.ConstraintGeometry();
                conGeom2_2.Geometry = line3;
                conGeom2_2.PointType = NXOpen.Sketch.ConstraintPointType.None;
                conGeom2_2.SplineDefiningPointIndex = 0;
                NXOpen.SketchGeometricConstraint sketchGeometricConstraint6;
                sketchGeometricConstraint6 = theSession.ActiveSketch.CreatePerpendicularConstraint(conGeom1_2, conGeom2_2);

                NXOpen.Sketch.ConstraintGeometry conGeom1_3 = new NXOpen.Sketch.ConstraintGeometry();
                conGeom1_3.Geometry = line3;
                conGeom1_3.PointType = NXOpen.Sketch.ConstraintPointType.None;
                conGeom1_3.SplineDefiningPointIndex = 0;
                NXOpen.Sketch.ConstraintGeometry conGeom2_3 = new NXOpen.Sketch.ConstraintGeometry();
                conGeom2_3.Geometry = line4;
                conGeom2_3.PointType = NXOpen.Sketch.ConstraintPointType.None;
                conGeom2_3.SplineDefiningPointIndex = 0;
                NXOpen.SketchGeometricConstraint sketchGeometricConstraint7;
                sketchGeometricConstraint7 = theSession.ActiveSketch.CreatePerpendicularConstraint(conGeom1_3, conGeom2_3);

                NXOpen.Sketch.ConstraintGeometry conGeom1_4 = new NXOpen.Sketch.ConstraintGeometry();
                conGeom1_4.Geometry = line4;
                conGeom1_4.PointType = NXOpen.Sketch.ConstraintPointType.None;
                conGeom1_4.SplineDefiningPointIndex = 0;
                NXOpen.Sketch.ConstraintGeometry conGeom2_4 = new NXOpen.Sketch.ConstraintGeometry();
                conGeom2_4.Geometry = line1;
                conGeom2_4.PointType = NXOpen.Sketch.ConstraintPointType.None;
                conGeom2_4.SplineDefiningPointIndex = 0;
                NXOpen.SketchGeometricConstraint sketchGeometricConstraint8;
                sketchGeometricConstraint8 = theSession.ActiveSketch.CreatePerpendicularConstraint(conGeom1_4, conGeom2_4);

                NXOpen.Sketch.DimensionGeometry dimObject1_1 = new NXOpen.Sketch.DimensionGeometry();
                dimObject1_1.Geometry = line3;
                dimObject1_1.AssocType = NXOpen.Sketch.AssocType.StartPoint;
                dimObject1_1.AssocValue = 0;
                dimObject1_1.HelpPoint.X = 0.0;
                dimObject1_1.HelpPoint.Y = 0.0;
                dimObject1_1.HelpPoint.Z = 0.0;
                dimObject1_1.View = nullNXOpen_NXObject;
                NXOpen.Sketch.DimensionGeometry dimObject2_1 = new NXOpen.Sketch.DimensionGeometry();
                dimObject2_1.Geometry = line3;
                dimObject2_1.AssocType = NXOpen.Sketch.AssocType.EndPoint;
                dimObject2_1.AssocValue = 0;
                dimObject2_1.HelpPoint.X = 0.0;
                dimObject2_1.HelpPoint.Y = 0.0;
                dimObject2_1.HelpPoint.Z = 0.0;
                dimObject2_1.View = nullNXOpen_NXObject;
                NXOpen.Point3d dimOrigin1 = new NXOpen.Point3d(4.46680217108621, 0.034327368335669, -0.539213040902043);
                NXOpen.SketchDimensionalConstraint sketchDimensionalConstraint1;
                sketchDimensionalConstraint1 = theSession.ActiveSketch.CreateDimension(NXOpen.Sketch.ConstraintType.ParallelDim, dimObject1_1, dimObject2_1, dimOrigin1, expression10, NXOpen.Sketch.DimensionOption.CreateAsDriving);

                NXOpen.SketchHelpedDimensionalConstraint sketchHelpedDimensionalConstraint1 = (NXOpen.SketchHelpedDimensionalConstraint)sketchDimensionalConstraint1;
                NXOpen.Annotations.Dimension dimension1;
                dimension1 = sketchHelpedDimensionalConstraint1.AssociatedDimension;

                NXOpen.Sketch.DimensionGeometry dimObject1_2 = new NXOpen.Sketch.DimensionGeometry();
                dimObject1_2.Geometry = line2;
                dimObject1_2.AssocType = NXOpen.Sketch.AssocType.StartPoint;
                dimObject1_2.AssocValue = 0;
                dimObject1_2.HelpPoint.X = 0.0;
                dimObject1_2.HelpPoint.Y = 0.0;
                dimObject1_2.HelpPoint.Z = 0.0;
                dimObject1_2.View = nullNXOpen_NXObject;
                NXOpen.Sketch.DimensionGeometry dimObject2_2 = new NXOpen.Sketch.DimensionGeometry();
                dimObject2_2.Geometry = line2;
                dimObject2_2.AssocType = NXOpen.Sketch.AssocType.EndPoint;
                dimObject2_2.AssocValue = 0;
                dimObject2_2.HelpPoint.X = 0.0;
                dimObject2_2.HelpPoint.Y = 0.0;
                dimObject2_2.HelpPoint.Z = 0.0;
                dimObject2_2.View = nullNXOpen_NXObject;
                NXOpen.Point3d dimOrigin2 = new NXOpen.Point3d(5.53319782891379, 0.0343273683356687, -0.539213040902039);
                NXOpen.SketchDimensionalConstraint sketchDimensionalConstraint2;
                sketchDimensionalConstraint2 = theSession.ActiveSketch.CreateDimension(NXOpen.Sketch.ConstraintType.ParallelDim, dimObject1_2, dimObject2_2, dimOrigin2, expression11, NXOpen.Sketch.DimensionOption.CreateAsDriving);

                NXOpen.SketchHelpedDimensionalConstraint sketchHelpedDimensionalConstraint2 = (NXOpen.SketchHelpedDimensionalConstraint)sketchDimensionalConstraint2;
                NXOpen.Annotations.Dimension dimension2;
                dimension2 = sketchHelpedDimensionalConstraint2.AssociatedDimension;

                NXOpen.Sketch.DimensionGeometry dimObject1_3 = new NXOpen.Sketch.DimensionGeometry();
                NXOpen.DatumAxis datumAxis1 = (NXOpen.DatumAxis)workPart.Datums.FindObject("SKETCH(3:1B) Primary tangent axis");  //скетч
                dimObject1_3.Geometry = datumAxis1;
                dimObject1_3.AssocType = NXOpen.Sketch.AssocType.EndPoint;
                dimObject1_3.AssocValue = 0;
                dimObject1_3.HelpPoint.X = -55.5632843937983;
                dimObject1_3.HelpPoint.Y = 0.0;
                dimObject1_3.HelpPoint.Z = 0.0;
                dimObject1_3.View = nullNXOpen_NXObject;
                NXOpen.Sketch.DimensionGeometry dimObject2_3 = new NXOpen.Sketch.DimensionGeometry();
                dimObject2_3.Geometry = line1;
                dimObject2_3.AssocType = NXOpen.Sketch.AssocType.EndPoint;
                dimObject2_3.AssocValue = 0;
                dimObject2_3.HelpPoint.X = 5.70710678118655;
                dimObject2_3.HelpPoint.Y = 0.000451517701146835;
                dimObject2_3.HelpPoint.Z = -0.00709242346444313;
                dimObject2_3.View = nullNXOpen_NXObject;
                NXOpen.Point3d dimOrigin3 = new NXOpen.Point3d(3.23223304703364, 0.112763695298207, -1.77128798370243);
                NXOpen.SketchDimensionalConstraint sketchDimensionalConstraint3;
                sketchDimensionalConstraint3 = theSession.ActiveSketch.CreateDimension(NXOpen.Sketch.ConstraintType.AngularDim, dimObject1_3, dimObject2_3, dimOrigin3, expression12, NXOpen.Sketch.DimensionOption.CreateAsDriving);

                NXOpen.Annotations.Dimension dimension3;
                dimension3 = sketchDimensionalConstraint3.AssociatedDimension;

                theSession.Preferences.Sketch.AutoDimensionsToArcCenter = false;

                theSession.ActiveSketch.Update();

                theSession.Preferences.Sketch.AutoDimensionsToArcCenter = true;

                NXOpen.SmartObject[] geoms1 = new NXOpen.SmartObject[4];
                geoms1[0] = line1;
                geoms1[1] = line2;
                geoms1[2] = line3;
                geoms1[3] = line4;
                theSession.ActiveSketch.UpdateConstraintDisplay(geoms1);

                NXOpen.SmartObject[] geoms2 = new NXOpen.SmartObject[4];
                geoms2[0] = line1;
                geoms2[1] = line2;
                geoms2[2] = line3;
                geoms2[3] = line4;
                theSession.ActiveSketch.UpdateDimensionDisplay(geoms2);

                // ----------------------------------------------
                //   Меню: Вставить->Заметание->Заметание...
                // ----------------------------------------------
                NXOpen.Session.UndoMarkId markId12;
                markId12 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Начало");
                NXOpen.Features.Swept nullNXOpen_Features_Swept = null;
                NXOpen.Features.SweptBuilder sweptBuilder1;
                sweptBuilder1 = workPart.Features.CreateSweptBuilder(nullNXOpen_Features_Swept);
                NXOpen.Expression expression13;
                expression13 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1);
                NXOpen.Expression expression14;
                expression14 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1);
                NXOpen.Expression expression15;
                expression15 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1);
                sweptBuilder1.G0Tolerance = 0.01;
                sweptBuilder1.G1Tolerance = 0.5;
                sweptBuilder1.PreserveShapeOption = false;
                sweptBuilder1.OrientationMethod.OrientationOption = NXOpen.GeometricUtilities.OrientationMethodBuilder.OrientationOptions.ByForcedDirection;
                sweptBuilder1.OrientationMethod.AngularLaw.Value.RightHandSide = "0";
                sweptBuilder1.OrientationMethod.AngularLaw.StartValue.RightHandSide = "0";
                sweptBuilder1.OrientationMethod.AngularLaw.EndValue.RightHandSide = "0";
                sweptBuilder1.ScalingMethod.AreaLaw.Value.RightHandSide = "1";
                sweptBuilder1.ScalingMethod.AreaLaw.StartValue.RightHandSide = "1";
                sweptBuilder1.ScalingMethod.AreaLaw.EndValue.RightHandSide = "1";
                sweptBuilder1.ScalingMethod.PerimeterLaw.Value.RightHandSide = "1";
                sweptBuilder1.ScalingMethod.PerimeterLaw.StartValue.RightHandSide = "1";
                sweptBuilder1.ScalingMethod.PerimeterLaw.EndValue.RightHandSide = "1";
                theSession.SetUndoMarkName(markId12, "Диалоговое окно Заметание");
                NXOpen.Point3d origin2 = new NXOpen.Point3d(0.0, 0.0, 0.0);
                NXOpen.Vector3d vector1 = new NXOpen.Vector3d(0.0, 0.0, 1.0);
                NXOpen.Direction direction1;
                direction1 = workPart.Directions.CreateDirection(origin2, vector1, NXOpen.SmartObject.UpdateOption.WithinModeling);
                sweptBuilder1.OrientationMethod.OrientationVector = direction1;
                sweptBuilder1.Spine.DistanceTolerance = 0.01;
                sweptBuilder1.Spine.ChainingTolerance = 0.0095;
                sweptBuilder1.AlignmentMethod.AlignCurve.DistanceTolerance = 0.01;
                sweptBuilder1.AlignmentMethod.AlignCurve.ChainingTolerance = 0.0095;
                sweptBuilder1.OrientationMethod.OrientationCurve.DistanceTolerance = 0.01;
                sweptBuilder1.OrientationMethod.OrientationCurve.ChainingTolerance = 0.0095;
                sweptBuilder1.OrientationMethod.AngularLaw.AlongSpineData.Spine.DistanceTolerance = 0.01;
                sweptBuilder1.OrientationMethod.AngularLaw.AlongSpineData.Spine.ChainingTolerance = 0.0095;
                sweptBuilder1.OrientationMethod.AngularLaw.LawCurve.DistanceTolerance = 0.01;
                sweptBuilder1.OrientationMethod.AngularLaw.LawCurve.ChainingTolerance = 0.0095;
                sweptBuilder1.ScalingMethod.ScalingCurve.DistanceTolerance = 0.01;
                sweptBuilder1.ScalingMethod.ScalingCurve.ChainingTolerance = 0.0095;
                sweptBuilder1.ScalingMethod.AreaLaw.AlongSpineData.Spine.DistanceTolerance = 0.01;
                sweptBuilder1.ScalingMethod.AreaLaw.AlongSpineData.Spine.ChainingTolerance = 0.0095;
                sweptBuilder1.ScalingMethod.AreaLaw.LawCurve.DistanceTolerance = 0.01;
                sweptBuilder1.ScalingMethod.AreaLaw.LawCurve.ChainingTolerance = 0.0095;
                sweptBuilder1.ScalingMethod.PerimeterLaw.AlongSpineData.Spine.DistanceTolerance = 0.01;
                sweptBuilder1.ScalingMethod.PerimeterLaw.AlongSpineData.Spine.ChainingTolerance = 0.0095;
                sweptBuilder1.ScalingMethod.PerimeterLaw.LawCurve.DistanceTolerance = 0.01;
                sweptBuilder1.ScalingMethod.PerimeterLaw.LawCurve.ChainingTolerance = 0.0095;
                sweptBuilder1.Spine.AngleTolerance = 0.5;
                sweptBuilder1.AlignmentMethod.AlignCurve.AngleTolerance = 0.5;
                sweptBuilder1.OrientationMethod.OrientationCurve.AngleTolerance = 0.5;
                sweptBuilder1.OrientationMethod.AngularLaw.AlongSpineData.Spine.AngleTolerance = 0.5;
                sweptBuilder1.OrientationMethod.AngularLaw.LawCurve.AngleTolerance = 0.5;
                sweptBuilder1.ScalingMethod.ScalingCurve.AngleTolerance = 0.5;
                sweptBuilder1.ScalingMethod.AreaLaw.AlongSpineData.Spine.AngleTolerance = 0.5;
                sweptBuilder1.ScalingMethod.AreaLaw.LawCurve.AngleTolerance = 0.5;
                sweptBuilder1.ScalingMethod.PerimeterLaw.AlongSpineData.Spine.AngleTolerance = 0.5;
                sweptBuilder1.ScalingMethod.PerimeterLaw.LawCurve.AngleTolerance = 0.5;
            
                NXOpen.Section section1;
                section1 = workPart.Sections.CreateSection(0.0095, 0.01, 0.5);
                sweptBuilder1.SectionList.Append(section1);
                section1.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);
                NXOpen.Session.UndoMarkId markId13;
                markId13 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
                NXOpen.Features.Feature[] features2 = new NXOpen.Features.Feature[1];
                NXOpen.Features.SketchFeature sketchFeature1 = (NXOpen.Features.SketchFeature)workPart.Features.FindObject("SKETCH(3)");
                features2[0] = sketchFeature1;
                NXOpen.CurveFeatureRule curveFeatureRule2;
                curveFeatureRule2 = workPart.ScRuleFactory.CreateRuleCurveFeature(features2);

                section1.AllowSelfIntersection(true);
                NXOpen.SelectionIntentRule[] rules2 = new NXOpen.SelectionIntentRule[1];
                rules2[0] = curveFeatureRule2;
                NXOpen.Point3d helpPoint2 = new NXOpen.Point3d(0.0, 0.0, 0.0);
                section1.AddToSection(rules2, nullNXOpen_NXObject, nullNXOpen_NXObject, nullNXOpen_NXObject, helpPoint2, NXOpen.Section.Mode.Create, false);
                theSession.DeleteUndoMark(markId13, null);
                NXOpen.Session.UndoMarkId markId14;
                markId14 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");
                NXOpen.Session.UndoMarkId markId15;
                markId15 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
                theSession.DeleteUndoMark(markId15, null);
                NXOpen.Section[] sections1 = new NXOpen.Section[1];
                sections1[0] = section1;
                sweptBuilder1.AlignmentMethod.SetSections(sections1);
                NXOpen.Expression expression16;
                expression16 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1);
                theSession.DeleteUndoMark(markId14, null);
                NXOpen.Section section2;
                section2 = workPart.Sections.CreateSection(0.0095, 0.01, 0.5);
                sweptBuilder1.GuideList.Append(section2);
                section2.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);
                NXOpen.Session.UndoMarkId markId16;
                markId16 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");
                NXOpen.Session.UndoMarkId markId17;
                markId17 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
                NXOpen.Features.Feature[] features3 = new NXOpen.Features.Feature[1];
                features3[0] = helix1;
                NXOpen.CurveFeatureRule curveFeatureRule3;
                curveFeatureRule3 = workPart.ScRuleFactory.CreateRuleCurveFeature(features3);
                section2.AllowSelfIntersection(true);
                NXOpen.SelectionIntentRule[] rules3 = new NXOpen.SelectionIntentRule[1];
                rules3[0] = curveFeatureRule3;
                NXOpen.Point3d helpPoint3 = new NXOpen.Point3d(0.0, 0.0, 0.0);
                section2.AddToSection(rules3, nullNXOpen_NXObject, nullNXOpen_NXObject, nullNXOpen_NXObject, helpPoint3, NXOpen.Section.Mode.Create, false);
                theSession.DeleteUndoMark(markId17, null);
                sweptBuilder1.ScalingMethod.AreaLaw.AlongSpineData.SetFeatureSpine(section2);
                sweptBuilder1.ScalingMethod.PerimeterLaw.AlongSpineData.SetFeatureSpine(section2);
                NXOpen.Session.UndoMarkId markId18;
                markId18 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Update Law Data");
                theSession.DeleteUndoMarksUpToMark(markId18, "Update Law Data", false);
                NXOpen.Session.UndoMarkId markId19;
                markId19 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Update Law Data");
                theSession.DeleteUndoMarksUpToMark(markId19, "Update Law Data", false);
                sweptBuilder1.OrientationMethod.AngularLaw.AlongSpineData.SetFeatureSpine(section2);
                NXOpen.Session.UndoMarkId markId20;
                markId20 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Update Law Data");
                theSession.DeleteUndoMarksUpToMark(markId20, "Update Law Data", false);
                theSession.DeleteUndoMark(markId16, null);
                NXOpen.Session.UndoMarkId markId21;
                markId21 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Заметание");
                theSession.DeleteUndoMark(markId21, null);
                NXOpen.Session.UndoMarkId markId22;
                markId22 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Заметание");
                NXOpen.Session.UndoMarkId markId23;
                markId23 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Deactivate Sketch");
                theSession.ActiveSketch.Deactivate(NXOpen.Sketch.ViewReorient.False, NXOpen.Sketch.UpdateLevel.SketchOnly);
                NXOpen.NXObject nXObject3;
                nXObject3 = sweptBuilder1.Commit();
                NXOpen.DisplayModification displayModification1;
                displayModification1 = theSession.DisplayManager.NewDisplayModification();
                displayModification1.ApplyToAllFaces = false;
                displayModification1.SetNewGrid(0, 0);
                displayModification1.PoleDisplayState = false;
                displayModification1.KnotDisplayState = false;
                NXOpen.DisplayableObject[] objects1 = new NXOpen.DisplayableObject[1];
                NXOpen.Features.Swept swept1 = (NXOpen.Features.Swept)nXObject3;
                NXOpen.Face face1 = (NXOpen.Face)swept1.FindObject("FACE 10001 {(-5.0020878840569,0.0451878043264,25.6979897864495) SWEPT(7)}");
                objects1[0] = face1;
                displayModification1.Apply(objects1);
                face1.Color = 32767;
                displayModification1.SetNewGrid(0, 0);
                displayModification1.PoleDisplayState = false;
                displayModification1.KnotDisplayState = false;
                NXOpen.DisplayableObject[] objects2 = new NXOpen.DisplayableObject[1];
                NXOpen.Face face2 = (NXOpen.Face)swept1.FindObject("FACE 1 {(4.9998585786438,0.0004605239211,-0.0072338928362) SWEPT(7)}");
                objects2[0] = face2;
                displayModification1.Apply(objects2);
                face2.Color = 32767;
                displayModification1.SetNewGrid(0, 0);
                displayModification1.PoleDisplayState = false;
                displayModification1.KnotDisplayState = false;
                NXOpen.DisplayableObject[] objects3 = new NXOpen.DisplayableObject[1];
                NXOpen.Face face3 = (NXOpen.Face)swept1.FindObject("FACE 10002 {(-4.9965585658374,-0.0484041601949,24.2878253666216) SWEPT(7)}");
                objects3[0] = face3;
                displayModification1.Apply(objects3);
                face3.Color = 32767;
                displayModification1.SetNewGrid(0, 0);
                displayModification1.PoleDisplayState = false;
                displayModification1.KnotDisplayState = false;
                NXOpen.DisplayableObject[] objects4 = new NXOpen.DisplayableObject[1];
                NXOpen.Face face4 = (NXOpen.Face)swept1.FindObject("FACE 2 {(4.9998585786438,0.0004425114812,49.9930490459071) SWEPT(7)}");
                objects4[0] = face4;
                displayModification1.Apply(objects4);
                face4.Color = 32767;
                theSession.DeleteUndoMark(markId22, null);
                theSession.SetUndoMarkName(markId12, "Заметание");
                sweptBuilder1.Destroy();
                workPart.Expressions.Delete(expression16);
                workPart.Expressions.Delete(expression13);
                workPart.Expressions.Delete(expression14);
                workPart.Expressions.Delete(expression15);
                // ----------------------------------------------
                //   Меню: Вставить->Комбинировать->Вычитание...
                // ----------------------------------------------
                NXOpen.Session.UndoMarkId markId24;
                markId24 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Начало");
                NXOpen.Features.BooleanFeature nullNXOpen_Features_BooleanFeature = null;
                NXOpen.Features.BooleanBuilder booleanBuilder1;
                booleanBuilder1 = workPart.Features.CreateBooleanBuilderUsingCollector(nullNXOpen_Features_BooleanFeature);
                NXOpen.ScCollector scCollector1;
                scCollector1 = booleanBuilder1.ToolBodyCollector;
                NXOpen.GeometricUtilities.BooleanRegionSelect booleanRegionSelect1;
                booleanRegionSelect1 = booleanBuilder1.BooleanRegionSelect;
                booleanBuilder1.Tolerance = 0.01;
                booleanBuilder1.Operation = NXOpen.Features.Feature.BooleanType.Subtract;
                theSession.SetUndoMarkName(markId24, "Диалоговое окно Вычитание");
                NXOpen.Body body1 = (NXOpen.Body)workPart.Bodies.FindObject("REVOLVED(0)");
                bool added1;
                added1 = booleanBuilder1.Targets.Add(body1);
                NXOpen.TaggedObject[] targets1 = new NXOpen.TaggedObject[1];
                targets1[0] = body1;
                booleanRegionSelect1.AssignTargets(targets1);
                NXOpen.ScCollector scCollector2;
                scCollector2 = workPart.ScCollectors.CreateCollector();
                NXOpen.Features.Feature[] features4 = new NXOpen.Features.Feature[1];
                features4[0] = swept1;
                NXOpen.BodyFeatureRule bodyFeatureRule1;
                bodyFeatureRule1 = workPart.ScRuleFactory.CreateRuleBodyFeature(features4, false);
                NXOpen.SelectionIntentRule[] rules4 = new NXOpen.SelectionIntentRule[1];
                rules4[0] = bodyFeatureRule1;
                scCollector2.ReplaceRules(rules4, false);
                booleanBuilder1.ToolBodyCollector = scCollector2;
                NXOpen.TaggedObject[] targets2 = new NXOpen.TaggedObject[1];
                targets2[0] = body1;
                booleanRegionSelect1.AssignTargets(targets2);
                NXOpen.Session.UndoMarkId markId25;
                markId25 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Вычитание");
                theSession.DeleteUndoMark(markId25, null);
                NXOpen.Session.UndoMarkId markId26;
                markId26 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Вычитание");
                NXOpen.NXObject nXObject4;
                nXObject4 = booleanBuilder1.Commit();
                theSession.DeleteUndoMark(markId26, null);
                theSession.SetUndoMarkName(markId24, "Вычитание");
                booleanBuilder1.Destroy();
                // ----------------------------------------------
                //   Меню: Оптимизировать
                // ----------------------------------------------
                workPart.ModelingViews.WorkView.Fit();

В итоге должно получится что то типа этого:

post-47695-0-63863100-1446183718_thumb.png

 

Барабанову привет...

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...