Skip to content

Commit be13c1e

Browse files
author
moethu
committed
implemented meshes
1 parent d6adbf3 commit be13c1e

2 files changed

Lines changed: 45 additions & 1 deletion

File tree

SketchUpForGrasshopper/SketchUp.cs

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public SketchUpModel() : base("Load SketchUp Model", "Load SketchUp Model", "Loa
4747
protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager)
4848
{
4949
pManager.AddTextParameter("Path", "P", "Path to Sketchup File (skp)", GH_ParamAccess.item);
50+
int a = pManager.AddBooleanParameter("Mesh", "M", "Load Meshes (Default: True)", GH_ParamAccess.item);
51+
pManager[a].Optional = true;
5052
}
5153

5254
protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager)
@@ -55,25 +57,40 @@ protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager
5557
pManager.AddTextParameter("Layers", "L", "Layers", GH_ParamAccess.list);
5658
pManager.AddGenericParameter("Instances", "I", "Instances", GH_ParamAccess.list);
5759
pManager.AddCurveParameter("Curves", "C", "Curves", GH_ParamAccess.list);
60+
pManager.AddMeshParameter("Meshes", "M", "Meshes", GH_ParamAccess.list);
5861
}
5962

6063
protected override void SolveInstance(IGH_DataAccess DA)
6164
{
6265
GH_String path = new GH_String();
6366
DA.GetData<GH_String>(0, ref path);
6467

68+
GH_Boolean mesh = new GH_Boolean(true);
69+
if (!DA.GetData<GH_Boolean>(1, ref mesh))
70+
{
71+
mesh = new GH_Boolean(true);
72+
}
73+
6574
List<GH_Brep> surfaces = new List<GH_Brep>();
6675
List<GH_String> layers = new List<GH_String>();
6776
List<Instance> Instances = new List<Instance>();
6877
List<GH_Curve> curves = new List<GH_Curve>();
78+
List<GH_Mesh> meshes = new List<GH_Mesh>();
6979

7080
SketchUp skp = new SketchUp();
71-
if (skp.LoadModel(path.Value))
81+
if (skp.LoadModel(path.Value, mesh.Value))
7282
{
7383
foreach (Surface srf in skp.Surfaces)
84+
{
7485
foreach (var brep in srf.ToRhinoGeo())
7586
surfaces.Add(new GH_Brep(brep));
7687

88+
if (srf.FaceMesh != null)
89+
{
90+
meshes.Add(new GH_Mesh(srf.FaceMesh.ToRhinoGeo()));
91+
}
92+
}
93+
7794
foreach (Layer l in skp.Layers)
7895
layers.Add(new GH_String(l.Name));
7996

@@ -88,6 +105,7 @@ protected override void SolveInstance(IGH_DataAccess DA)
88105
DA.SetDataList(1, layers);
89106
DA.SetDataList(2, Instances);
90107
DA.SetDataList(3, curves);
108+
DA.SetDataList(4, meshes);
91109
}
92110

93111
public override Guid ComponentGuid
@@ -177,6 +195,7 @@ protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager
177195
pManager.AddTextParameter("Parent Name", "PN", "Parent Name", GH_ParamAccess.item);
178196
pManager.AddBrepParameter("Inner", "I", "Inner", GH_ParamAccess.list);
179197
pManager.AddCurveParameter("Curves", "C", "Curves", GH_ParamAccess.list);
198+
pManager.AddCurveParameter("Meshes", "M", "Meshes", GH_ParamAccess.list);
180199
}
181200

182201
protected override void SolveInstance(IGH_DataAccess DA)
@@ -191,6 +210,7 @@ protected override void SolveInstance(IGH_DataAccess DA)
191210
List<GH_Brep> surfaces = new List<GH_Brep>();
192211
List<GH_Brep> inner = new List<GH_Brep>();
193212
List<GH_Curve> curves = new List<GH_Curve>();
213+
List<GH_Mesh> meshes = new List<GH_Mesh>();
194214

195215
GH_String parentName = new GH_String("");
196216
SketchUpNET.Component parentComponent = i.Parent as Component;
@@ -203,10 +223,17 @@ protected override void SolveInstance(IGH_DataAccess DA)
203223
{
204224
surfaces.Add(new GH_Brep(brep));
205225
}
226+
227+
if (srf.FaceMesh != null)
228+
{
229+
meshes.Add(new GH_Mesh(srf.FaceMesh.ToRhinoGeo()));
230+
}
206231
}
207232

208233
foreach (Edge c in parentComponent.Edges)
209234
curves.Add(new GH_Curve(c.ToRhinoGeo().ToNurbsCurve()));
235+
236+
210237
}
211238

212239
DA.SetData(0, location);
@@ -216,6 +243,7 @@ protected override void SolveInstance(IGH_DataAccess DA)
216243
DA.SetData(4, parentName);
217244
DA.SetDataList(5, inner);
218245
DA.SetDataList(6, curves);
246+
DA.SetDataList(7, meshes);
219247
}
220248

221249
public override Guid ComponentGuid
@@ -387,6 +415,22 @@ public static Rhino.Geometry.Brep[] ToRhinoGeo(this SketchUpNET.Surface v, Trans
387415
return breps;
388416
}
389417

418+
419+
public static Rhino.Geometry.Mesh ToRhinoGeo(this SketchUpNET.Mesh mesh, Transform t = null)
420+
{
421+
Rhino.Geometry.Mesh m = new Rhino.Geometry.Mesh();
422+
423+
foreach (var v in mesh.Vertices)
424+
m.Vertices.Add(v.ToRhinoGeo(t));
425+
426+
foreach (var v in mesh.Faces)
427+
m.Faces.AddFace(v.A,v.B,v.C);
428+
429+
m.Normals.ComputeNormals();
430+
m.Compact();
431+
return m;
432+
}
433+
390434
public static void WriteModel(string path, List<GH_Surface> surfaces = null, List<GH_Curve> curves = null, bool append = false)
391435
{
392436
SketchUpNET.SketchUp skp = new SketchUpNET.SketchUp();

Testfiles/TestDefinition.gh

1007 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)