11using Autodesk . DataExchange . Core . Enums ;
22using Autodesk . DataExchange . DataModels ;
33using Autodesk . DataExchange . SchemaObjects . Units ;
4- using Autodesk . GeometryPrimitives . Design ;
5- using Autodesk . GeometryPrimitives . Geometry ;
6- using Autodesk . GeometryPrimitives . Math ;
4+ using Autodesk . GeometryPrimitives . Data ;
5+ using Autodesk . GeometryPrimitives . Data . DX ;
6+ using Autodesk . GeometryUtilities . MeshAPI ;
77using Autodesk . Parameters ;
88using System . Collections . Generic ;
99using System . IO ;
@@ -122,9 +122,9 @@ public void AddPrimitiveCurveAndSurfaceGeometries(ElementDataModel data)
122122 data . SetElementGeometryByElement ( circleElement , circleElementGeometry ) ;
123123 }
124124
125- private void AddCurveGeometries ( Autodesk . GeometryPrimitives . Design . GeometryContainer geometryContainer )
125+ private void AddCurveGeometries ( GeometryContainer geometryContainer )
126126 {
127- geometryContainer . Curves = new CurveArray ( ) ;
127+ geometryContainer . Curves = new List < Curve > ( ) ;
128128
129129 AddCircleGeometries ( geometryContainer ) ;
130130
@@ -202,7 +202,7 @@ private Ellipse GetEllipseGeometry()
202202
203203 private void AddSurfaceGeometries ( GeometryContainer geometryContainer )
204204 {
205- geometryContainer . Surfaces = new SurfaceArray ( )
205+ geometryContainer . Surfaces = new List < Surface > ( )
206206 {
207207 new Plane ( )
208208 {
@@ -236,11 +236,269 @@ private void AddSurfaceGeometries(GeometryContainer geometryContainer)
236236
237237 public void AddMeshGeometry ( ElementDataModel data )
238238 {
239- var newMeshElement = data . AddElement ( new ElementProperties ( "MeshEElement" , "SampleMesh" , "GenericsMesh" , "GenericMesh" , "Mesh Object" ) ) ;
240- var newMeshGeometry = new List < ElementGeometry > ( ) ;
241- var filePathMesh = $ "{ Path . GetDirectoryName ( Assembly . GetExecutingAssembly ( ) . Location ) } \\ InputStepFile\\ mesh1.obj";
242- newMeshGeometry . Add ( ElementDataModel . CreateGeometry ( new GeometryProperties ( filePathMesh , commonRenderStyle ) ) ) ;
243- data . SetElementGeometryByElement ( newMeshElement , newMeshGeometry ) ;
239+ Autodesk . GeometryUtilities . MeshAPI . Mesh inMemoryMesh = new Autodesk . GeometryUtilities . MeshAPI . Mesh ( )
240+ {
241+ Vertices = new List < Vertex >
242+ {
243+ new Vertex ( 0.0 , 0.0 , 0.0 ) ,
244+ new Vertex ( 1.0 , 0.0 , 0.0 ) ,
245+ new Vertex ( 0.0 , 1.0 , 0.0 ) ,
246+ new Vertex ( 1.0 , 1.0 , 0.0 ) ,
247+ } ,
248+ Faces = new List < Face >
249+ {
250+ new Face ( )
251+ {
252+ Corners = new List < int > { 0 , 1 , 2 } ,
253+ Normals = new List < Normal >
254+ {
255+ new Normal ( 0 , 0 , 1 ) ,
256+ new Normal ( 0 , 0 , 1 ) ,
257+ new Normal ( 0 , 0 , 1 ) ,
258+ } ,
259+ } ,
260+ new Face ( )
261+ {
262+ Corners = new List < int > { 2 , 1 , 3 } ,
263+ Normals = new List < Normal >
264+ {
265+ new Normal ( 0 , 0 , 1 ) ,
266+ new Normal ( 0 , 0 , 1 ) ,
267+ new Normal ( 0 , 0 , 1 ) ,
268+ } ,
269+ } ,
270+ } ,
271+ } ;
272+
273+ var meshObjWithColor = new Autodesk . GeometryUtilities . MeshAPI . Mesh ( )
274+ {
275+ MeshColor = new Color ( 0.9f , 0.2f , 0.2f , 1.0f ) , // mesh body color
276+ Vertices = new List < Vertex >
277+ {
278+ new Vertex ( 0.0 , 0.0 , 0.0 ) ,
279+ new Vertex ( 1.0 , 0.0 , 0.0 ) ,
280+ new Vertex ( 0.0 , 1.0 , 0.0 ) ,
281+ new Vertex ( 1.0 , 1.0 , 0.0 ) ,
282+ } ,
283+ Faces = new List < Face >
284+ {
285+ new Face ( )
286+ {
287+ Corners = new List < int > { 0 , 1 , 2 } ,
288+ Normals = new List < Normal >
289+ {
290+ new Normal ( 0 , 0 , 1 ) ,
291+ new Normal ( 0 , 0 , 1 ) ,
292+ new Normal ( 0 , 0 , 1 ) ,
293+ } ,
294+ FaceColor = new Color ( 0.2f , 0.2f , 0.9f , 1.0f ) , // face color
295+ } ,
296+ new Face ( )
297+ {
298+ Corners = new List < int > { 2 , 1 , 3 } ,
299+ Normals = new List < Normal >
300+ {
301+ new Normal ( 0 , 0 , 1 ) ,
302+ new Normal ( 0 , 0 , 1 ) ,
303+ new Normal ( 0 , 0 , 1 ) ,
304+ } ,
305+ FaceColor = new Color ( 0.2f , 0.9f , 0.2f , 1.0f ) , // face color
306+ } ,
307+ } ,
308+ } ;
309+
310+ var complexMesh = new Autodesk . GeometryUtilities . MeshAPI . Mesh ( )
311+ {
312+ MeshColor = new Color ( 0.5f , 0.5f , 0.5f , 1.0f ) , // mesh body color
313+ Vertices = new List < Vertex >
314+ {
315+ new Vertex ( 0.0 , 0.0 , 0.0 ) ,
316+ new Vertex ( 1.0 , 0.0 , 0.0 ) ,
317+ new Vertex ( 0.0 , 1.0 , 0.0 ) ,
318+ new Vertex ( 1.0 , 1.0 , 0.0 ) ,
319+ new Vertex ( 0.0 , 0.0 , 1.0 ) ,
320+ new Vertex ( 1.0 , 0.0 , 1.0 ) ,
321+ new Vertex ( 0.0 , 1.0 , 1.0 ) ,
322+ new Vertex ( 1.0 , 1.0 , 1.0 ) ,
323+ new Vertex ( 0.5 , 0.5 , 1.5 ) ,
324+ } ,
325+ Faces = new List < Face >
326+ {
327+ new Face ( )
328+ {
329+ Corners = new List < int > { 0 , 1 , 2 } ,
330+ Normals = new List < Normal >
331+ {
332+ new Normal ( 0 , 0 , 1 ) ,
333+ new Normal ( 0 , 0 , 1 ) ,
334+ new Normal ( 0 , 0 , 1 ) ,
335+ } ,
336+ FaceColor = new Color ( 0.2f , 0.2f , 0.9f , 1.0f ) , // face color
337+ } ,
338+ new Face ( )
339+ {
340+ Corners = new List < int > { 2 , 1 , 3 } ,
341+ Normals = new List < Normal >
342+ {
343+ new Normal ( 0 , 0 , 1 ) ,
344+ new Normal ( 0 , 0 , 1 ) ,
345+ new Normal ( 0 , 0 , 1 ) ,
346+ } ,
347+ FaceColor = new Color ( 0.2f , 0.9f , 0.2f , 1.0f ) , // face color
348+ } ,
349+ new Face ( )
350+ {
351+ Corners = new List < int > { 0 , 1 , 4 } ,
352+ Normals = new List < Normal >
353+ {
354+ new Normal ( 0 , 1 , 0 ) ,
355+ new Normal ( 0 , 1 , 0 ) ,
356+ new Normal ( 0 , 1 , 0 ) ,
357+ } ,
358+ FaceColor = new Color ( 0.9f , 0.2f , 0.2f , 1.0f ) , // face color
359+ } ,
360+ new Face ( )
361+ {
362+ Corners = new List < int > { 1 , 5 , 4 } ,
363+ Normals = new List < Normal >
364+ {
365+ new Normal ( 0 , 1 , 0 ) ,
366+ new Normal ( 0 , 1 , 0 ) ,
367+ new Normal ( 0 , 1 , 0 ) ,
368+ } ,
369+ FaceColor = new Color ( 0.9f , 0.2f , 0.2f , 1.0f ) , // face color
370+ } ,
371+ new Face ( )
372+ {
373+ Corners = new List < int > { 0 , 2 , 4 } ,
374+ Normals = new List < Normal >
375+ {
376+ new Normal ( 1 , 0 , 0 ) ,
377+ new Normal ( 1 , 0 , 0 ) ,
378+ new Normal ( 1 , 0 , 0 ) ,
379+ } ,
380+ FaceColor = new Color ( 0.2f , 0.9f , 0.9f , 1.0f ) , // face color
381+ } ,
382+ new Face ( )
383+ {
384+ Corners = new List < int > { 2 , 6 , 4 } ,
385+ Normals = new List < Normal >
386+ {
387+ new Normal ( 1 , 0 , 0 ) ,
388+ new Normal ( 1 , 0 , 0 ) ,
389+ new Normal ( 1 , 0 , 0 ) ,
390+ } ,
391+ FaceColor = new Color ( 0.2f , 0.9f , 0.9f , 1.0f ) , // face color
392+ } ,
393+ new Face ( )
394+ {
395+ Corners = new List < int > { 1 , 3 , 5 } ,
396+ Normals = new List < Normal >
397+ {
398+ new Normal ( 0 , - 1 , 0 ) ,
399+ new Normal ( 0 , - 1 , 0 ) ,
400+ new Normal ( 0 , - 1 , 0 ) ,
401+ } ,
402+ FaceColor = new Color ( 0.9f , 0.9f , 0.2f , 1.0f ) , // face color
403+ } ,
404+ new Face ( )
405+ {
406+ Corners = new List < int > { 3 , 7 , 5 } ,
407+ Normals = new List < Normal >
408+ {
409+ new Normal ( 0 , - 1 , 0 ) ,
410+ new Normal ( 0 , - 1 , 0 ) ,
411+ new Normal ( 0 , - 1 , 0 ) ,
412+ } ,
413+ FaceColor = new Color ( 0.9f , 0.9f , 0.2f , 1.0f ) , // face color
414+ } ,
415+ new Face ( )
416+ {
417+ Corners = new List < int > { 2 , 3 , 6 } ,
418+ Normals = new List < Normal >
419+ {
420+ new Normal ( - 1 , 0 , 0 ) ,
421+ new Normal ( - 1 , 0 , 0 ) ,
422+ new Normal ( - 1 , 0 , 0 ) ,
423+ } ,
424+ FaceColor = new Color ( 0.9f , 0.2f , 0.9f , 1.0f ) , // face color
425+ } ,
426+ new Face ( )
427+ {
428+ Corners = new List < int > { 3 , 7 , 6 } ,
429+ Normals = new List < Normal >
430+ {
431+ new Normal ( - 1 , 0 , 0 ) ,
432+ new Normal ( - 1 , 0 , 0 ) ,
433+ new Normal ( - 1 , 0 , 0 ) ,
434+ } ,
435+ FaceColor = new Color ( 0.9f , 0.2f , 0.9f , 1.0f ) , // face color
436+ } ,
437+ new Face ( )
438+ {
439+ Corners = new List < int > { 4 , 5 , 6 } ,
440+ Normals = new List < Normal >
441+ {
442+ new Normal ( 0 , 0 , - 1 ) ,
443+ new Normal ( 0 , 0 , - 1 ) ,
444+ new Normal ( 0 , 0 , - 1 ) ,
445+ } ,
446+ FaceColor = new Color ( 0.2f , 0.2f , 0.2f , 1.0f ) , // face color
447+ } ,
448+ new Face ( )
449+ {
450+ Corners = new List < int > { 5 , 7 , 6 } ,
451+ Normals = new List < Normal >
452+ {
453+ new Normal ( 0 , 0 , - 1 ) ,
454+ new Normal ( 0 , 0 , - 1 ) ,
455+ new Normal ( 0 , 0 , - 1 ) ,
456+ } ,
457+ FaceColor = new Color ( 0.2f , 0.2f , 0.2f , 1.0f ) , // face color
458+ } ,
459+ new Face ( )
460+ {
461+ Corners = new List < int > { 4 , 6 , 8 } ,
462+ Normals = new List < Normal >
463+ {
464+ new Normal ( 0 , 0 , 1 ) ,
465+ new Normal ( 0 , 0 , 1 ) ,
466+ new Normal ( 0 , 0 , 1 ) ,
467+ } ,
468+ FaceColor = new Color ( 0.5f , 0.5f , 0.5f , 1.0f ) , // face color
469+ } ,
470+ new Face ( )
471+ {
472+ Corners = new List < int > { 5 , 7 , 8 } ,
473+ Normals = new List < Normal >
474+ {
475+ new Normal ( 0 , 0 , 1 ) ,
476+ new Normal ( 0 , 0 , 1 ) ,
477+ new Normal ( 0 , 0 , 1 ) ,
478+ } ,
479+ FaceColor = new Color ( 0.5f , 0.5f , 0.5f , 1.0f ) , // face color
480+ } ,
481+ new Face ( )
482+ {
483+ Corners = new List < int > { 6 , 7 , 8 } ,
484+ Normals = new List < Normal >
485+ {
486+ new Normal ( 0 , 0 , 1 ) ,
487+ new Normal ( 0 , 0 , 1 ) ,
488+ new Normal ( 0 , 0 , 1 ) ,
489+ } ,
490+ FaceColor = new Color ( 0.5f , 0.5f , 0.5f , 1.0f ) , // face color
491+ } ,
492+ } ,
493+ } ;
494+
495+ var meshGeom = ElementDataModel . CreateMeshGeometry ( new GeometryProperties ( meshObjWithColor , "Mesh With Color" ) ) ;
496+ var meshElement = data . AddElement ( new ElementProperties ( "Mesh1" , "SampleMesh" , "Mesh" , "Mesh" , "In memory mesh" ) ) ;
497+ data . SetElementGeometryByElement ( meshElement , new List < ElementGeometry > { meshGeom } ) ;
498+
499+ var complexMeshGeom = ElementDataModel . CreateMeshGeometry ( new GeometryProperties ( complexMesh , "Complex Mesh With Color" ) ) ;
500+ var complexMeshElement = data . AddElement ( new ElementProperties ( "ComplexMesh" , "ComplexSampleMesh" , "Mesh" , "Mesh" , "Complex In memory mesh" ) ) ;
501+ data . SetElementGeometryByElement ( complexMeshElement , new List < ElementGeometry > { complexMeshGeom } ) ;
244502 }
245503
246504 public void AddIFCGeometry ( ElementDataModel data )
@@ -435,11 +693,47 @@ public void AddElementsForExchangeUpdate(ElementDataModel data)
435693 data . SetElementGeometryByElement ( newBRep , newBRepGeometry ) ;
436694
437695 //Add Element with Mesh Geometry
438- var newMeshElement = data . AddElement ( new ElementProperties ( "MeshElementUpdate" , "SampleMesh" , "GenericsMeshUpdate" , "GenericMeshUpdate" , "Mesh Object Update" ) ) ;
439- var newMeshGeometry = new List < ElementGeometry > ( ) ;
440- var filePathToMesh = $ "{ Path . GetDirectoryName ( Assembly . GetExecutingAssembly ( ) . Location ) } \\ InputStepFile\\ mesh2.obj";
441- newMeshGeometry . Add ( ElementDataModel . CreateGeometry ( new GeometryProperties ( filePathToMesh , commonRenderStyle ) ) ) ;
442- data . SetElementGeometryByElement ( newMeshElement , newMeshGeometry ) ;
696+
697+ var meshObjWithColor = new Autodesk . GeometryUtilities . MeshAPI . Mesh ( )
698+ {
699+ MeshColor = new Color ( 0.9f , 0.9f , 0.9f , 1.0f ) , // mesh body color
700+ Vertices = new List < Vertex >
701+ {
702+ new Vertex ( 0.0 , 0.0 , 0.0 ) ,
703+ new Vertex ( 1.0 , 0.0 , 0.0 ) ,
704+ new Vertex ( 0.0 , 1.0 , 0.0 ) ,
705+ new Vertex ( 1.0 , 1.0 , 0.0 ) ,
706+ } ,
707+ Faces = new List < Face >
708+ {
709+ new Face ( )
710+ {
711+ Corners = new List < int > { 0 , 1 , 2 } ,
712+ Normals = new List < Normal >
713+ {
714+ new Normal ( 0 , 0 , 1 ) ,
715+ new Normal ( 0 , 0 , 1 ) ,
716+ new Normal ( 0 , 0 , 1 ) ,
717+ } ,
718+ FaceColor = new Color ( 0.2f , 0.2f , 0.9f , 1.0f ) , // face color
719+ } ,
720+ new Face ( )
721+ {
722+ Corners = new List < int > { 2 , 1 , 3 } ,
723+ Normals = new List < Normal >
724+ {
725+ new Normal ( 0 , 0 , 1 ) ,
726+ new Normal ( 0 , 0 , 1 ) ,
727+ new Normal ( 0 , 0 , 1 ) ,
728+ } ,
729+ FaceColor = new Color ( 0.9f , 0.9f , 0.2f , 1.0f ) , // face color
730+ } ,
731+ } ,
732+ } ;
733+
734+ var meshGeom = ElementDataModel . CreateMeshGeometry ( new GeometryProperties ( meshObjWithColor , "Mesh With Color" ) ) ;
735+ var meshElement = data . AddElement ( new ElementProperties ( "Mesh3" , "SampleMesh" , "Mesh" , "Mesh" , "In memory mesh with Color" ) ) ;
736+ data . SetElementGeometryByElement ( meshElement , new List < ElementGeometry > { meshGeom } ) ;
443737 }
444738
445739 private void AddPrimitivePolylineGeometry ( ElementDataModel dataModel )
@@ -448,7 +742,7 @@ private void AddPrimitivePolylineGeometry(ElementDataModel dataModel)
448742 var polyLineElementGeometry = new List < ElementGeometry > ( ) ;
449743 var geomContainer = new GeometryContainer ( )
450744 {
451- Curves = new CurveArray ( )
745+ Curves = new List < Curve > ( )
452746 {
453747 new Polyline ( )
454748 {
@@ -459,9 +753,9 @@ private void AddPrimitivePolylineGeometry(ElementDataModel dataModel)
459753 new Point3d ( 12.5 , 4 , 0 ) ,
460754 new Point3d ( 4.5 , 4 , 0 ) ,
461755 new Point3d ( 11.25 , 0 , 0 )
462- }
463- }
464- }
756+ } ,
757+ } ,
758+ } ,
465759 } ;
466760
467761 polyLineElementGeometry . Add ( ElementDataModel . CreatePrimitiveGeometry ( new GeometryProperties ( geomContainer , commonRenderStyle ) ) ) ;
0 commit comments