Ejemplo n.º 1
0
        public static Autodesk.DesignScript.Geometry.Surface ToDSGeo(this SketchUpNET.Surface v, Transform t = null)
        {
            try
            {
                List <Autodesk.DesignScript.Geometry.Curve> curves = new List <Autodesk.DesignScript.Geometry.Curve>();
                foreach (Edge c in v.OuterEdges.Edges)
                {
                    curves.Add(c.ToDSGeo(t).ToNurbsCurve());
                }
                int a = 0;
                Autodesk.DesignScript.Geometry.PolyCurve pc = Autodesk.DesignScript.Geometry.PolyCurve.ByJoinedCurves(curves);
                Autodesk.DesignScript.Geometry.Surface   s  = Autodesk.DesignScript.Geometry.Surface.ByPatch(pc);

                List <Autodesk.DesignScript.Geometry.Surface> inner = v.InnerLoops(t);

                foreach (Autodesk.DesignScript.Geometry.Surface srf in inner)
                {
                    Autodesk.DesignScript.Geometry.Geometry[] geo = s.Split(srf);
                    if (geo.Count() == 2)
                    {
                        s = (Autodesk.DesignScript.Geometry.Surface)geo[0];
                    }
                }
                return(s);
            }
            catch { return(null); }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Convert Region to Dynamo surface.
        /// </summary>
        public Autodesk.DesignScript.Geometry.Surface ToDynamoSurface()
        {
            // get closed curves
            List <Autodesk.DesignScript.Geometry.PolyCurve> closedCurves = new List <Autodesk.DesignScript.Geometry.PolyCurve>();

            foreach (Geometry.Contour contour in this.Contours)
            {
                List <Autodesk.DesignScript.Geometry.Curve> curves = new List <Autodesk.DesignScript.Geometry.Curve>();
                foreach (Geometry.Edge edge in contour.Edges)
                {
                    curves.Add(edge.ToDynamo());
                }
                closedCurves.Add(Autodesk.DesignScript.Geometry.PolyCurve.ByJoinedCurves(curves));
                curves.Clear();
            }

            // get surface
            List <Autodesk.DesignScript.Geometry.Surface> surfaces = new List <Autodesk.DesignScript.Geometry.Surface>();

            foreach (Autodesk.DesignScript.Geometry.PolyCurve closedCurve in closedCurves)
            {
                surfaces.Add(Autodesk.DesignScript.Geometry.Surface.ByPatch(closedCurve));
            }
            Autodesk.DesignScript.Geometry.Surface primarySurface = surfaces[0];
            surfaces.RemoveAt(0);
            foreach (Autodesk.DesignScript.Geometry.Surface secondarySurface in surfaces)
            {
                primarySurface = (Autodesk.DesignScript.Geometry.Surface)primarySurface.Split(secondarySurface)[0];
            }

            // return
            return(primarySurface);
        }