internal static void GetEdgeData(Snap.NX.Edge edge, out Snap.Position[] poles, out double[] knots, out double[] weights) { IntPtr ptr; double[] numArray; double[] numArray2; UFSession uFSession = Globals.UFSession; uFSession.Eval.Initialize2(edge.NXOpenTag, out ptr); int num = -1; int num2 = -1; uFSession.Eval.AskSplineControlPts(ptr, out num, out numArray); uFSession.Eval.AskSplineKnots(ptr, out num2, out numArray2); Snap.Position[] positionArray = new Snap.Position[num]; double[] numArray3 = new double[num]; for (int i = 0; i < num; i++) { positionArray[i] = new Snap.Position(numArray[i * 4], numArray[(i * 4) + 1], numArray[(i * 4) + 2]); numArray3[i] = numArray[(i * 4) + 3]; } poles = positionArray; weights = numArray3; knots = numArray2; }
internal static Snap.NX.Chamfer CreateChamfer(Snap.NX.Edge edge, Snap.Number distance1, Snap.Number distance2, bool offsetFaces) { NXOpen.Part workPart = (NXOpen.Part)Globals.WorkPart; NXOpen.Features.ChamferBuilder featureBuilder = workPart.Features.CreateChamferBuilder(null); featureBuilder.Option = NXOpen.Features.ChamferBuilder.ChamferOption.TwoOffsets; if (offsetFaces) { featureBuilder.Method = NXOpen.Features.ChamferBuilder.OffsetMethod.FacesAndTrim; } else { featureBuilder.Method = NXOpen.Features.ChamferBuilder.OffsetMethod.EdgesAlongFaces; } featureBuilder.FirstOffset = distance1.ToString(); featureBuilder.SecondOffset = distance2.ToString(); //featureBuilder.Tolerance = Globals.DistanceTolerance; ScCollector collector = workPart.ScCollectors.CreateCollector(); EdgeTangentRule rule = workPart.ScRuleFactory.CreateRuleEdgeTangent((NXOpen.Edge)edge, null, false, Globals.AngleTolerance, false, false); SelectionIntentRule[] rules = new SelectionIntentRule[] { rule }; collector.ReplaceRules(rules, false); featureBuilder.SmartCollector = collector; NXOpen.Features.Feature feature = (NXOpen.Features.Feature)Snap.NX.Feature.CommitFeature(featureBuilder); featureBuilder.Destroy(); return((NXOpen.Features.Chamfer)feature); }
internal static void GetEdgeData(Snap.NX.Edge edge, out Snap.Position startPoint, out Snap.Position endPoint) { IntPtr ptr; UFEval.Line line; UFSession uFSession = Globals.UFSession; uFSession.Eval.Initialize2(edge.NXOpenTag, out ptr); uFSession.Eval.AskLine(ptr, out line); startPoint = new Snap.Position(line.start); endPoint = new Snap.Position(line.end); }
internal static void GetEdgeData(Snap.NX.Edge edge, out double radius, out double startAngle, out double endAngle, out Snap.Position center, out Vector axisX, out Vector axisY) { IntPtr ptr; UFEval.Arc arc; UFSession uFSession = Globals.UFSession; uFSession.Eval.Initialize2(edge.NXOpenTag, out ptr); uFSession.Eval.AskArc(ptr, out arc); startAngle = edge.Factor * arc.limits[0]; endAngle = edge.Factor * arc.limits[1]; center = new Snap.Position(arc.center); axisX = new Vector(arc.x_axis); axisY = new Vector(arc.y_axis); radius = arc.radius; }
internal static void GetEdgeData(Snap.NX.Edge edge, out Snap.Position center, out Vector axisX, out Vector axisY, out double majorRadius, out double minorRadius, out double angle1, out double angle2) { IntPtr ptr; UFEval.Ellipse ellipse; UFSession uFSession = Globals.UFSession; uFSession.Eval.Initialize2(edge.NXOpenTag, out ptr); uFSession.Eval.AskEllipse(ptr, out ellipse); center = ellipse.center; axisX = ellipse.x_axis; axisY = ellipse.y_axis; majorRadius = ellipse.major; minorRadius = ellipse.minor; angle1 = ellipse.limits[0] * edge.Factor; angle2 = ellipse.limits[1] * edge.Factor; }
internal static Snap.NX.Chamfer CreateChamfer(Snap.NX.Edge edge, Snap.Number distance, Snap.Number angle) { NXOpen.Part workPart = (NXOpen.Part)Globals.WorkPart; NXOpen.Features.ChamferBuilder featureBuilder = workPart.Features.CreateChamferBuilder(null); featureBuilder.Option = NXOpen.Features.ChamferBuilder.ChamferOption.OffsetAndAngle; featureBuilder.FirstOffset = distance.ToString(); featureBuilder.Angle = angle.ToString(); //featureBuilder.Tolerance = Globals.DistanceTolerance; ScCollector collector = workPart.ScCollectors.CreateCollector(); EdgeTangentRule rule = workPart.ScRuleFactory.CreateRuleEdgeTangent((NXOpen.Edge)edge, null, true, Globals.AngleTolerance, false, false); SelectionIntentRule[] rules = new SelectionIntentRule[] { rule }; collector.ReplaceRules(rules, false); featureBuilder.SmartCollector = collector; featureBuilder.AllInstances = false; NXOpen.Features.Feature feature = (NXOpen.Features.Feature)Snap.NX.Feature.CommitFeature(featureBuilder); featureBuilder.Destroy(); return((NXOpen.Features.Chamfer)feature); }
internal static Snap.NX.Edge CreateEdge(NXOpen.Edge nxopenEdge) { Snap.NX.Edge snapEdge = new Snap.NX.Edge(nxopenEdge); switch (GetEdgeType(snapEdge)) { case ObjectTypes.SubType.EdgeLine: return(new Line(nxopenEdge)); case ObjectTypes.SubType.EdgeArc: return(new Arc(nxopenEdge)); case ObjectTypes.SubType.EdgeSpline: return(new Spline(nxopenEdge)); case ObjectTypes.SubType.EdgeEllipse: return(new Ellipse(nxopenEdge)); } return(snapEdge); }
private static ObjectTypes.SubType GetEdgeType(Snap.NX.Edge snapEdge) { ObjectTypes.SubType edgeUnknown = ObjectTypes.SubType.EdgeUnknown; NXOpen.Edge.EdgeType undefined = NXOpen.Edge.EdgeType.Undefined; try { undefined = snapEdge.NXOpenEdge.SolidEdgeType; } catch { } switch (undefined) { case NXOpen.Edge.EdgeType.Linear: edgeUnknown = ObjectTypes.SubType.EdgeLine; break; case NXOpen.Edge.EdgeType.Circular: edgeUnknown = ObjectTypes.SubType.EdgeArc; break; case NXOpen.Edge.EdgeType.Elliptical: edgeUnknown = ObjectTypes.SubType.EdgeEllipse; break; case NXOpen.Edge.EdgeType.Intersection: edgeUnknown = ObjectTypes.SubType.EdgeIntersection; break; case NXOpen.Edge.EdgeType.Spline: edgeUnknown = ObjectTypes.SubType.EdgeSpline; break; case NXOpen.Edge.EdgeType.SpCurve: edgeUnknown = ObjectTypes.SubType.EdgeSpCurve; break; case NXOpen.Edge.EdgeType.ConstantParameter: edgeUnknown = ObjectTypes.SubType.EdgeIsoCurve; break; } return(edgeUnknown); }
internal Line(Snap.NX.Edge edge) : base((NXOpen.Edge)edge) { base.NXOpenTaggedObject = edge.NXOpenTaggedObject; }