@@ -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 ( ) ;
0 commit comments