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); }
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)); }
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)); }
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)); }
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)); }
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); }
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)); }
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)); }
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); }
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)); }
public Snap.NX.Arc[] Divide(Snap.NX.ICurve boundingCurve, Position helpPoint) { Snap.NX.Curve[] curveArray = base.Divide(boundingCurve, helpPoint); return(this.ArcArray(curveArray)); }
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 })); }