示例#1
0
        public virtual Snap.NX.Curve[] Divide(params double[] parameters)
        {
            Snap.NX.Curve      curve    = this.Copy();
            Snap.NX.Part       workPart = Globals.WorkPart;
            DivideCurveBuilder builder  = workPart.NXOpenPart.BaseFeatures.CreateDivideCurveBuilder(null);

            builder.Type = DivideCurveBuilder.Types.ByBoundingObjects;
            BoundingObjectBuilder[] builderArray = new BoundingObjectBuilder[parameters.Length];
            Snap.NX.Point[]         nxObjects    = new Snap.NX.Point[parameters.Length];
            for (int i = 0; i < parameters.Length; i++)
            {
                builderArray[i] = workPart.NXOpenPart.CreateBoundingObjectBuilder();
                builderArray[i].BoundingPlane        = null;
                builderArray[i].BoundingObjectMethod = BoundingObjectBuilder.Method.ProjectPoint;
                nxObjects[i] = Create.Point(curve.Position(parameters[i]));
                builderArray[i].BoundingProjectPoint = (NXOpen.Point)nxObjects[i];
                builder.BoundingObjects.Append(builderArray[i]);
            }
            View workView = workPart.NXOpenPart.ModelingViews.WorkView;

            builder.DividingCurve.SetValue((NXOpen.Curve)curve, workView, (Point3d)curve.StartPoint);
            builder.Commit();
            NXOpen.NXObject[] committedObjects = builder.GetCommittedObjects();
            builder.Destroy();
            Snap.NX.Curve[] curveArray = new Snap.NX.Curve[committedObjects.Length];
            for (int j = 0; j < curveArray.Length; j++)
            {
                curveArray[j] = CreateCurve((NXOpen.Curve)committedObjects[j]);
            }
            Snap.NX.NXObject.Delete(nxObjects);
            return(curveArray);
        }
示例#2
0
 public static Snap.NX.Curve[] Copy(Transform xform, params Snap.NX.Curve[] original)
 {
     Snap.NX.Curve[] curveArray = new Snap.NX.Curve[original.Length];
     for (int i = 0; i < original.Length; i++)
     {
         curveArray[i] = original[i].Copy(xform);
     }
     return(curveArray);
 }
示例#3
0
 internal static Snap.NX.Tube CreateTube(Snap.NX.Curve spine, Snap.Number outerDiameter, Snap.Number innerDiameter, bool createBsurface)
 {
     NXOpen.Features.TubeBuilder featureBuilder = Globals.WorkPart.NXOpenPart.Features.CreateTubeBuilder(null);
     featureBuilder.Tolerance = Globals.DistanceTolerance;
     featureBuilder.OuterDiameter.RightHandSide = outerDiameter.ToString();
     featureBuilder.InnerDiameter.RightHandSide = innerDiameter.ToString();
     featureBuilder.OutputOption = NXOpen.Features.TubeBuilder.Output.MultipleSegments;
     if (createBsurface)
     {
         featureBuilder.OutputOption = NXOpen.Features.TubeBuilder.Output.SingleSegment;
     }
     ((Snap.NX.Section)featureBuilder.PathSection).AddICurve(new Snap.NX.ICurve[] { spine });
     featureBuilder.BooleanOption.Type = BooleanOperation.BooleanType.Create;
     NXOpen.Features.Tube tube = (NXOpen.Features.Tube)Snap.NX.Feature.CommitFeature(featureBuilder);
     featureBuilder.Destroy();
     return(new Snap.NX.Tube(tube));
 }
示例#4
0
 internal static Snap.NX.Ruled CreateRuled(Snap.NX.Curve curve0, Snap.NX.Curve curve1)
 {
     NXOpen.Features.RuledBuilder featureBuilder = Globals.WorkPart.NXOpenPart.Features.CreateRuledBuilder(null);
     featureBuilder.PositionTolerance = Globals.DistanceTolerance;
     featureBuilder.FirstSection.DistanceTolerance  = Globals.DistanceTolerance;
     featureBuilder.FirstSection.ChainingTolerance  = (Globals.UnitType == Globals.Unit.Millimeter) ? 0.02413 : 0.00095;
     featureBuilder.SecondSection.DistanceTolerance = Globals.DistanceTolerance;
     featureBuilder.SecondSection.ChainingTolerance = (Globals.UnitType == Globals.Unit.Millimeter) ? 0.02413 : 0.00095;
     featureBuilder.AlignmentMethod.AlignCurve.DistanceTolerance = Globals.DistanceTolerance;
     featureBuilder.AlignmentMethod.AlignCurve.ChainingTolerance = (Globals.UnitType == Globals.Unit.Millimeter) ? 0.02413 : 0.00095;
     ((Snap.NX.Section)featureBuilder.FirstSection).AddICurve(new Snap.NX.ICurve[] { curve0 });
     ((Snap.NX.Section)featureBuilder.SecondSection).AddICurve(new Snap.NX.ICurve[] { curve1 });
     NXOpen.Section[] sections = new NXOpen.Section[] { featureBuilder.FirstSection, featureBuilder.SecondSection };
     featureBuilder.AlignmentMethod.SetSections(sections);
     NXOpen.Features.Ruled ruled = (NXOpen.Features.Ruled)Snap.NX.Feature.CommitFeature(featureBuilder);
     featureBuilder.Destroy();
     return(new Snap.NX.Ruled(ruled));
 }
示例#5
0
        internal static Snap.NX.Arc CreateArcFillet(Snap.NX.Curve curve1, Snap.NX.Curve curve2, double radius, Position center, bool doTrim)
        {
            Tag tag;

            Tag[]    tagArray  = new Tag[] { curve1.NXOpenTag, curve2.NXOpenTag };
            double[] array     = center.Array;
            int[]    numArray2 = new int[3];
            int[]    numArray3 = new int[3];
            if (doTrim)
            {
                numArray2[0] = 1;
                numArray2[1] = 1;
            }
            else
            {
                numArray2[0] = 0;
                numArray2[1] = 0;
            }
            Globals.UFSession.Curve.CreateFillet(0, tagArray, array, radius, numArray2, numArray3, out tag);
            return(new Snap.NX.Arc((NXOpen.Arc)Snap.NX.NXObject.GetObjectFromTag(tag)));
        }
示例#6
0
        internal static Snap.NX.Curve CreateCurve(NXOpen.Curve nxopenCurve)
        {
            Snap.NX.Curve       curve         = new Snap.NX.Curve(nxopenCurve);
            ObjectTypes.Type    objectType    = curve.ObjectType;
            ObjectTypes.SubType objectSubType = curve.ObjectSubType;
            switch (objectType)
            {
            case ObjectTypes.Type.Line:
                return(new Snap.NX.Line((NXOpen.Line)nxopenCurve));

            case ObjectTypes.Type.Arc:
                return(new Snap.NX.Arc((NXOpen.Arc)nxopenCurve));

            case ObjectTypes.Type.Spline:
                return(new Snap.NX.Spline((NXOpen.Spline)nxopenCurve));
            }
            if (objectSubType == ObjectTypes.SubType.ConicEllipse)
            {
                curve = new Snap.NX.Ellipse((NXOpen.Ellipse)nxopenCurve);
            }
            return(curve);
        }