示例#1
0
        internal static Snap.Position[] PointSet(Snap.NX.ICurve icurve, int pointCount)
        {
            Globals.UndoMarkId markId  = Globals.SetUndoMark(Globals.MarkVisibility.Invisible, "Snap_PositionArray_EqualParameter999");
            PointSetBuilder    builder = Globals.WorkPart.NXOpenPart.Features.CreatePointSetBuilder(null);

            builder.Type          = PointSetBuilder.Types.CurvePoints;
            builder.CurvePointsBy = PointSetBuilder.CurvePointsType.EqualArcLength;
            builder.Associative   = false;
            builder.NumberOfPointsExpression.RightHandSide = pointCount.ToString();
            builder.StartPercentage.RightHandSide          = "0";
            builder.EndPercentage.RightHandSide            = "100";
            SelectionIntentRule[] rules = Snap.NX.Section.CreateSelectionIntentRule(new Snap.NX.ICurve[] { icurve });
            NXOpen.NXObject       nXOpenTaggedObject = (NXOpen.NXObject)icurve.NXOpenTaggedObject;
            builder.SingleCurveOrEdgeCollector.AddToSection(rules, nXOpenTaggedObject, null, null, (Point3d)icurve.StartPoint, NXOpen.Section.Mode.Create, false);
            builder.Commit();
            NXOpen.NXObject[] committedObjects = builder.GetCommittedObjects();
            builder.Destroy();
            Snap.Position[] positionArray = new Snap.Position[committedObjects.Length];
            for (int i = 0; i < positionArray.Length; i++)
            {
                TaggedObject  obj3  = committedObjects[i];
                Snap.NX.Point point = (NXOpen.Point)obj3;
                positionArray[i] = point.Position;
            }
            Globals.UndoToMark(markId, "Snap_PositionArray_EqualParameter999");
            Globals.DeleteUndoMark(markId, "Snap_PositionArray_EqualParameter999");
            return(positionArray);
        }
示例#2
0
 internal static Snap.NX.Torus CreateTorus(Snap.Position axisPoint, Vector axisVector, double majorRadius, double minorRadius)
 {
     Snap.Orientation orientation = new Snap.Orientation(axisVector);
     Snap.Position    center      = axisPoint + ((Snap.Position)(majorRadius * orientation.AxisX));
     Snap.NX.Arc      arc         = Create.Circle(center, orientation.AxisY, minorRadius);
     Snap.NX.ICurve[] curves      = new Snap.NX.ICurve[] { arc };
     return(new Snap.NX.Torus(Create.Revolve(curves, axisPoint, axisVector).NXOpenRevolve));
 }
示例#3
0
        internal static Snap.Position[] PointSet(Snap.NX.ICurve icurve, double chordalTolerance, double angularTolerance, double stepTolerance)
        {
            double[] numArray;
            int      numpts = 0;

            angularTolerance *= 0.017453292519943295;
            Globals.UFSession.Modl.AskCurvePoints(icurve.NXOpenTag, chordalTolerance, angularTolerance, stepTolerance, out numpts, out numArray);
            return(Snap.Position.PositionsFromCoordinates(numArray));
        }
示例#4
0
 internal static Snap.NX.Cylinder CreateCylinder(Snap.NX.ICurve arc, Snap.Number height)
 {
     NXOpen.Features.CylinderBuilder featureBuilder = Globals.WorkPart.NXOpenPart.Features.CreateCylinderBuilder(null);
     featureBuilder.Type = NXOpen.Features.CylinderBuilder.Types.ArcAndHeight;
     featureBuilder.BooleanOption.Type   = BooleanOperation.BooleanType.Create;
     featureBuilder.Arc.Value            = arc.NXOpenICurve;
     featureBuilder.Height.RightHandSide = height.ToString();
     NXOpen.Features.Cylinder cylinder = (NXOpen.Features.Cylinder)Snap.NX.Feature.CommitFeature(featureBuilder);
     featureBuilder.Destroy();
     return(new Snap.NX.Cylinder(cylinder));
 }
示例#5
0
 internal static Snap.NX.Cone CreateConeFromArcs(Snap.NX.ICurve baseArc, Snap.NX.ICurve topArc)
 {
     NXOpen.Features.ConeBuilder featureBuilder = Globals.WorkPart.NXOpenPart.Features.CreateConeBuilder(null);
     featureBuilder.BooleanOption.Type = BooleanOperation.BooleanType.Create;
     featureBuilder.Type          = NXOpen.Features.ConeBuilder.Types.TwoCoaxialArcs;
     featureBuilder.BaseArc.Value = baseArc.NXOpenICurve;
     featureBuilder.TopArc.Value  = topArc.NXOpenICurve;
     NXOpen.Features.Cone cone = (NXOpen.Features.Cone)Snap.NX.Feature.CommitFeature(featureBuilder);
     featureBuilder.Destroy();
     return(new Snap.NX.Cone(cone));
 }
示例#6
0
 internal static Snap.NX.OffsetCurve CreateOffsetLine(Snap.NX.ICurve icurve, Snap.NX.Point point, string distance, bool reverseDirection)
 {
     NXOpen.Features.OffsetCurveBuilder featureBuilder = Globals.WorkPart.NXOpenPart.Features.CreateOffsetCurveBuilder(null);
     featureBuilder.Type = NXOpen.Features.OffsetCurveBuilder.Types.Distance;
     featureBuilder.InputCurvesOptions.InputCurveOption = CurveOptions.InputCurve.Retain;
     featureBuilder.Tolerance = Globals.DistanceTolerance;
     featureBuilder.OffsetDistance.RightHandSide = distance;
     featureBuilder.ReverseDirection             = reverseDirection;
     featureBuilder.PointOnOffsetPlane           = (NXOpen.Point)point;
     ((Snap.NX.Section)featureBuilder.CurvesToOffset).AddICurve(new Snap.NX.ICurve[] { icurve });
     NXOpen.Features.Feature feature = (NXOpen.Features.Feature)Snap.NX.Feature.CommitFeature(featureBuilder);
     featureBuilder.CurvesToOffset.CleanMappingData();
     featureBuilder.Destroy();
     return(feature as NXOpen.Features.OffsetCurve);
 }
示例#7
0
 internal static Snap.NX.DatumAxis CreateDatumAxis(Snap.NX.ICurve icurve, Snap.Number arcLength, CurveOrientations curveOrientation)
 {
     NXOpen.Features.DatumAxisBuilder featureBuilder = Globals.WorkPart.NXOpenPart.Features.CreateDatumAxisBuilder(null);
     featureBuilder.Type = NXOpen.Features.DatumAxisBuilder.Types.OnCurveVector;
     featureBuilder.ArcLength.IsPercentUsed            = true;
     featureBuilder.ArcLength.Expression.RightHandSide = arcLength.ToString();
     featureBuilder.CurveOrientation     = (NXOpen.Features.DatumAxisBuilder.CurveOrientations)curveOrientation;
     featureBuilder.IsAssociative        = true;
     featureBuilder.IsAxisReversed       = false;
     featureBuilder.Curve.Value          = icurve.NXOpenICurve;
     featureBuilder.ArcLength.Path.Value = icurve.NXOpenTaggedObject;
     featureBuilder.ArcLength.Update(OnPathDimensionBuilder.UpdateReason.Path);
     NXOpen.Features.Feature feature = (NXOpen.Features.Feature)Snap.NX.Feature.CommitFeature(featureBuilder);
     featureBuilder.Destroy();
     return(new Snap.NX.DatumAxis((DatumAxisFeature)feature));
 }
示例#8
0
        internal static Snap.NX.DatumPlane CreateDatumPlane(Snap.NX.ICurve curve, Snap.Number arcLength)
        {
            NXOpen.Features.DatumPlaneBuilder featureBuilder = Globals.WorkPart.NXOpenPart.Features.CreateDatumPlaneBuilder(null);
            NXOpen.Plane plane = featureBuilder.GetPlane();
            plane.SetMethod(PlaneTypes.MethodType.Frenet);
            NXOpen.NXObject[] geom = new NXOpen.NXObject[] { (NXOpen.NXObject)curve.NXOpenICurve };
            plane.SetGeometry(geom);
            plane.SetFrenetSubtype(PlaneTypes.FrenetSubtype.Tangent);
            plane.SetPercent(true);
            plane.SetExpression(arcLength.ToString());
            plane.Evaluate();
            DatumPlaneFeature datumPlaneFeature = (DatumPlaneFeature)Snap.NX.Feature.CommitFeature(featureBuilder);

            featureBuilder.Destroy();
            return(new Snap.NX.DatumPlane(datumPlaneFeature));
        }
示例#9
0
        private static double ArcPercentage(Snap.NX.ICurve curve, Snap.Position point1, Snap.Position point2)
        {
            IntPtr ptr;
            double num  = 0.0;
            double num2 = curve.MaxU - curve.MinU;
            double num3 = (curve.Parameter(point1) - curve.MinU) / num2;
            double num4 = (curve.Parameter(point2) - curve.MinU) / num2;
            UFEval eval = Globals.UFSession.Eval;

            eval.Initialize2(curve.NXOpenTag, out ptr);
            double[] numArray2 = new double[2];
            numArray2[1] = 1.0;
            double[] limits = numArray2;
            eval.AskLimits(ptr, limits);
            Globals.UFSession.Curve.AskArcLength(curve.NXOpenTag, num3, num4, ModlUnits.ModlMmeter, out num);
            return((num / curve.ArcLength) * 100.0);
        }
示例#10
0
        internal static Snap.NX.Torus CreateTorus(Snap.Position center, Snap.Orientation matrix, double majorRadius, double minorRadius, Box2d boxUV)
        {
            Vector axisX = matrix.AxisX;
            Vector axisZ = matrix.AxisZ;

            Snap.Orientation orientation = new Snap.Orientation(axisX, axisZ);
            Snap.Position    position    = center + ((Snap.Position)(majorRadius * matrix.AxisX));
            Snap.NX.Arc      arc         = Create.Arc(position, orientation, minorRadius, boxUV.MinV, boxUV.MaxV);
            Snap.NX.ICurve[] curves      = new Snap.NX.ICurve[] { arc };
            double           x           = matrix.AxisZ.X;
            double           y           = matrix.AxisZ.Y;
            double           z           = matrix.AxisZ.Z;
            string           str         = Snap.Number.ToString(boxUV.MinU);
            string           str2        = Snap.Number.ToString(boxUV.MaxU);

            Snap.Number[] angles = new Snap.Number[] { str, str2 };
            return(new Snap.NX.Torus(Create.RevolveSheet(curves, center, matrix.AxisZ, angles).NXOpenRevolve));
        }
示例#11
0
 public Snap.NX.Arc[] Divide(Snap.NX.ICurve boundingCurve, Position helpPoint)
 {
     Snap.NX.Curve[] curveArray = base.Divide(boundingCurve, helpPoint);
     return(this.ArcArray(curveArray));
 }
示例#12
0
 public virtual Snap.NX.Curve[] Divide(Snap.NX.ICurve boundingCurve, Snap.Position helpPoint)
 {
     Compute.IntersectionResult result = Compute.IntersectInfo(this, boundingCurve, helpPoint);
     return(this.Divide(new double[] { result.CurveParameter }));
 }