Example #1
0
        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;
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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;
        }
Example #5
0
        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;
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #9
0
 internal Line(Snap.NX.Edge edge) : base((NXOpen.Edge)edge)
 {
     base.NXOpenTaggedObject = edge.NXOpenTaggedObject;
 }