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); }
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); }
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)); }
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)); }
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))); }
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); }