Skip to main content
Solved

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

  • August 21, 2014
  • 3 replies
  • 217 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

Best answer by takashi

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
View original
Did this help you find an answer to your question?

3 replies

takashi
Influencer
  • Best Answer
  • August 21, 2014
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.

Forum|alt.badge.img
takashi wrote:
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

 


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings