Solved

How to convert a 3D-Polygon into a Surface?

  • 21 August 2014
  • 3 replies
  • 46 views

Hi All,

 

 

I am building validation rules for 3D buildings. One of the rules I would like to test is to check that all the surfaces (walls, ground surfaces, roofs) are not crossing each other.

 

 

When I test this with dummy data, this works fine using the SpatialRelator. (Test to perform: Crosses)

 

[I create dummy data by creating 2D-lines an extrude them (some of them with a constant extrusion height, some of them with and extrusion vector) so I get surface which intersect somewhere in 3D (and the intersection is a line) and the SpatialRelator detects my crossing objects. So this works fine.]

 

 

When I test the same with real data (and I know some of the surfaces do cross, the SpatialRelator doesn not detect the crossings.

 

 

I have the impression that the difference is the geometry type of my "surfaces".

 

In my dummy data the Geometry is IFMECompositeSurface and contains a IFMEFace and an Appearance. (it is the extruder who changes the geometry-type from line into IFMECompositeSurface)

 

My real data have a geometry  type IFMEMultiArea and contains and IFMEPolygon with a boundary (So normal polygons, but with 3D vertices in X, Y and Z)

 

 

So I assume I need to change IFMEMultiArea into IFMECompositeSurface. But I don't succeed in doing so.

 

 

I thought I would need the GeometryCoercer and set the geometrytype to "fme_composite_surface".

 

But this doesn't change anything. The help of the GeometryCoercer states :

 

"If you try to set the feature's geometry to fme_composite_surface and the geometry of the feature is not a multi-surface or brep solid, or extrusion or box or csg solid, then the feature's geometry will be unchanged. An exception for this option is when the source feature contains a mesh, in which case this option will produce a multi-surface."

 

 

So, I'll need something else... any suggestions on creating IFMECompositeSurfaces?

 

 

Thanks

 

 

Bruno
icon

Best answer by takashi 21 August 2014, 13:00

View original

3 replies

Userlevel 2
Badge +17
Hi Bruno,

 

 

Possibly these transformers do that.

 

[IFMEMultiArea]

 

1) Deaggregator (Mode: Flatten One Level)

 

-> [IFMEPolygon]

 

2) FaceReplacer

 

-> [IFMEFace]

 

3) Aggregator (Mode: Geometry - Assemble One Level)

 

-> [IFMEMultiSurface]

 

4) GeometryCoercer (Geometry Type: fme_composite_surface)

 

-> [IFMECompositeSurface]

 

 

Hope this works!

 

 

Takashi
Thank you Takashi.

 

 

It is the FaceReplacer I was looking for... (and the Deaggregator).

 

 

It would make sense to me if the FaceReplacer was also in the Transformer Category Surfaces.
Badge
Hi Bruno,

 

 

Possibly these transformers do that.

 

[IFMEMultiArea]

 

1) Deaggregator (Mode: Flatten One Level)

 

-> [IFMEPolygon]

 

2) FaceReplacer

 

-> [IFMEFace]

 

3) Aggregator (Mode: Geometry - Assemble One Level)

 

-> [IFMEMultiSurface]

 

4) GeometryCoercer (Geometry Type: fme_composite_surface)

 

-> [IFMECompositeSurface]

 

 

Hope this works!

 

 

Takashi
Thanks!

 

It may not work.

 

setnormalsonface.zip

 

Reply