public static Dictionary<string, object> LoadModel(string path) { List<Autodesk.DesignScript.Geometry.Surface> surfaces = new List<Autodesk.DesignScript.Geometry.Surface>(); List<string> layers = new List<string>(); List<Instance> Instances = new List<Instance>(); List<List<Autodesk.DesignScript.Geometry.Line>> curves = new List<List<Autodesk.DesignScript.Geometry.Line>>(); List<Autodesk.DesignScript.Geometry.Line> edges = new List<Autodesk.DesignScript.Geometry.Line>(); SketchUpNET.SketchUp skp = new SketchUpNET.SketchUp(); if (skp.LoadModel(path)) { foreach (Curve c in skp.Curves) curves.Add(c.ToDSGeo()); foreach (Surface srf in skp.Surfaces) surfaces.Add(srf.ToDSGeo()); foreach (Layer l in skp.Layers) layers.Add(l.Name); foreach (Instance i in skp.Instances) Instances.Add(i); foreach (Edge e in skp.Edges) edges.Add(e.ToDSGeo()); } return new Dictionary<string, object> { { "Surfaces", surfaces }, { "Layers", layers }, { "Instances", Instances }, { "Curves", curves }, { "Edges", edges }, }; }
public static Dictionary <string, object> LoadModel(string path, bool includeMeshes = true) { List <Autodesk.DesignScript.Geometry.Surface> surfaces = new List <Autodesk.DesignScript.Geometry.Surface>(); List <Autodesk.DesignScript.Geometry.Mesh> meshes = new List <Autodesk.DesignScript.Geometry.Mesh>(); List <string> layers = new List <string>(); List <Instance> Instances = new List <Instance>(); List <List <Autodesk.DesignScript.Geometry.Line> > curves = new List <List <Autodesk.DesignScript.Geometry.Line> >(); List <Autodesk.DesignScript.Geometry.Line> edges = new List <Autodesk.DesignScript.Geometry.Line>(); List <Group> grp = new List <Group>(); SketchUpNET.SketchUp skp = new SketchUpNET.SketchUp(); if (skp.LoadModel(path, includeMeshes)) { foreach (Curve c in skp.Curves) { curves.Add(c.ToDSGeo()); } foreach (Surface srf in skp.Surfaces) { surfaces.Add(srf.ToDSGeo()); if (srf.FaceMesh != null) { meshes.Add(srf.FaceMesh.ToDSGeo()); } } foreach (Layer l in skp.Layers) { layers.Add(l.Name); } foreach (Instance i in skp.Instances) { Instances.Add(i); } foreach (Edge e in skp.Edges) { edges.Add(e.ToDSGeo()); } foreach (Group gr in skp.Groups) { grp.Add(gr); } } return(new Dictionary <string, object> { { "Surfaces", surfaces }, { "Layers", layers }, { "Instances", Instances }, { "Curves", curves }, { "Edges", edges }, { "Meshes", meshes }, { "Groups", grp } }); }
public static Dictionary <string, object> LoadModelByLayer(string path, string layername, bool includeMeshes = true) { List <Autodesk.DesignScript.Geometry.Surface> surfaces = new List <Autodesk.DesignScript.Geometry.Surface>(); List <Autodesk.DesignScript.Geometry.Mesh> meshes = new List <Autodesk.DesignScript.Geometry.Mesh>(); List <Instance> Instances = new List <Instance>(); List <Autodesk.DesignScript.Geometry.Line> edges = new List <Autodesk.DesignScript.Geometry.Line>(); List <Group> grp = new List <Group>(); List <Material> mats = new List <Material>(); SketchUpNET.SketchUp skp = new SketchUpNET.SketchUp(); if (skp.LoadModel(path, includeMeshes)) { foreach (Surface srf in skp.Surfaces.Where(s => s.Layer == layername)) { surfaces.Add(srf.ToDSGeo()); if (srf.FaceMesh != null) { meshes.Add(srf.FaceMesh.ToDSGeo()); } } foreach (Instance i in skp.Instances.Where(s => s.Layer == layername)) { Instances.Add(i); } foreach (Edge e in skp.Edges.Where(s => s.Layer == layername)) { edges.Add(e.ToDSGeo()); } foreach (Group gr in skp.Groups.Where(s => s.Layer == layername)) { grp.Add(gr); } foreach (var mat in skp.Materials) { mats.Add(new Material(mat.Value)); } } return(new Dictionary <string, object> { { "Surfaces", surfaces }, { "Instances", Instances }, { "Edges", edges }, { "Meshes", meshes }, { "Groups", grp }, { "Materials", mats } }); }