public PolyCurve PolycurveToNative(Polycurve polycurve)
        {
            DS.Curve[] curves = new DS.Curve[polycurve.segments.Count];
            for (var i = 0; i < polycurve.segments.Count; i++)
            {
                switch (polycurve.segments[i])
                {
                case Line curve:
                    curves[i] = LineToNative(curve);
                    break;

                case Arc curve:
                    curves[i] = ArcToNative(curve);
                    break;

                case Circle curve:
                    curves[i] = CircleToNative(curve);
                    break;

                case Ellipse curve:
                    curves[i] = EllipseToNative(curve);
                    break;

                case Spiral curve:
                    curves[i] = PolylineToNative(curve.displayValue);
                    break;

                case Polycurve curve:
                    curves[i] = PolycurveToNative(curve);
                    break;

                case Polyline curve:
                    curves[i] = PolylineToNative(curve);
                    break;

                case Curve curve:
                    curves[i] = CurveToNative(curve);
                    break;
                }
            }

            PolyCurve polyCrv = null;

            if (curves.Any())
            {
                polyCrv = PolyCurve.ByJoinedCurves(curves);
                polyCrv = polyCrv.SetDynamoProperties <PolyCurve>(GetDynamicMembersFromBase(polycurve));
            }

            return(polyCrv);
        }
        public Base CurveToSpeckle(DS.Curve curve, string units = null)
        {
            var  u = units ?? ModelUnits;
            Base speckleCurve;

            if (curve.IsLinear())
            {
                using (DS.Line line = curve.GetAsLine())
                {
                    speckleCurve = LineToSpeckle(line, u);
                }
            }
            else if (curve.IsArc())
            {
                using (DS.Arc arc = curve.GetAsArc())
                {
                    speckleCurve = ArcToSpeckle(arc, u);
                }
            }
            else if (curve.IsCircle())
            {
                using (DS.Circle circle = curve.GetAsCircle())
                {
                    speckleCurve = CircleToSpeckle(circle, u);
                }
            }
            else if (curve.IsEllipse())
            {
                using (DS.Ellipse ellipse = curve.GetAsEllipse())
                {
                    speckleCurve = EllipseToSpeckle(ellipse, u);
                }
            }
            else
            {
                speckleCurve = CurveToSpeckle(curve.ToNurbsCurve(), u);
            }

            CopyProperties(speckleCurve, curve);
            return(speckleCurve);
        }
Ejemplo n.º 3
0
        public Base CurveToSpeckle(DS.Curve curve)
        {
            Base speckleCurve;

            if (curve.IsLinear())
            {
                using (DS.Line line = curve.GetAsLine())
                {
                    speckleCurve = LineToSpeckle(line);
                }
            }
            else if (curve.IsArc())
            {
                using (DS.Arc arc = curve.GetAsArc())
                {
                    speckleCurve = ArcToSpeckle(arc);
                }
            }
            else if (curve.IsCircle())
            {
                using (DS.Circle circle = curve.GetAsCircle())
                {
                    speckleCurve = CircleToSpeckle(circle);
                }
            }
            else if (curve.IsEllipse())
            {
                using (DS.Ellipse ellipse = curve.GetAsEllipse())
                {
                    speckleCurve = EllipseToSpeckle(ellipse);
                }
            }
            else
            {
                speckleCurve = CurveToSpeckle(curve.ToNurbsCurve());
            }

            CopyProperties(speckleCurve, curve);
            return(speckleCurve);
        }