Question

Create 3D solids from aggregates

  • 22 November 2017
  • 21 replies
  • 53 views

I am a new FME user and am trying to create a solid model consisting of terrain, roads and buildings to be printed out with a 3D printer.

With help of transformers I created an aggregate of a terrain model from a point could and clipped out the roads that run on the terrain.

I have also made another aggregate consisting of buildings that are created by extrusion from roof faces to the DEMRraster.

I aggregated these 2 aggregates into one it looked complete but when I printed out the object, it appeared clearly that there are two separate components set together. How can I create only one solid object? End result is to be a WaveOBJ file which I will use in 3D printing.

I passed the aggregate through a SolidBuilder transformer but the resulting solid has holes.

I have also tried using the Solid Dissolver instead of the Solid Builder but was also unsuccessful.

Please help.

I am working in FME Workbench 2017


21 replies

Userlevel 2
Badge +17

Hi @annachong, I think this workflow could generate a single solid if the terrain model and buildings were solids or aggregates consisting of solids. Assume that there is no gap between the building bottoms and the terrain surface.

Thanks Takashi,

I have used BRepSolidBoundaryCreator.Beta transformer to create walls and bottoms to my Buildings, using _band{0}.min extracted from DEMRaster as Planar Surface Elevation.

I am not if sure my terrain model is a solid as it has undergone a lot of extruding and clipping.

Userlevel 2
Badge +17

Thanks Takashi,

I have used BRepSolidBoundaryCreator.Beta transformer to create walls and bottoms to my Buildings, using _band{0}.min extracted from DEMRaster as Planar Surface Elevation.

I am not if sure my terrain model is a solid as it has undergone a lot of extruding and clipping.

You can assemble each building solid from the output features from the BRepSolidBoundaryCreator.Beta with this workflow.

 

I guess the terrain model is an aggregate consisting of multiple solid geometries. Extrusion is also a kind of solid. You can confirm the geometry data structure on the Feature Information window of Data Inspector.

 

Thanks Takashi, I'll try again.

Yes the terrain aggregate is a FMEBrepSolid.

The terrain model consists of 530 parts of FMEMultiSolids.

The Clipper rejected it due to invalid clipper geometry type. clipperreject.pngfeature-information.png

Sorry Takashi,

I think I must have misunderstood your instructions or have set wrong parameters.

The clipper has failed to clip. Reason being: INVALID_CLIPPER_GEOMETRY_TYPE.

Userlevel 2
Badge +17

Sorry Takashi,

I think I must have misunderstood your instructions or have set wrong parameters.

The clipper has failed to clip. Reason being: INVALID_CLIPPER_GEOMETRY_TYPE.

The Clipper might reject input solids if their structure was too complex. I thought the terrain model was relatively simple, but seemingly wasn't in fact. We have to think of other approach.

 

I think there is a solution if you could create the terrain model as a single surface geometry. The way depends on conditions of the original data which are the sources of the solids. Could you share minimal dataset including terrain, roads, and building roofs etc.?

 

 

Of course, Takashi,

Here are the data.

rydebackroad.zippoint2solidterrainminusroadsplusbuildings.zipnewroofs.zippoint2solidterrainminusroadsplusbuildings.fmw

Userlevel 2
Badge +17
A Shapefile dataset is a set of at least three files - *.shp, *.shx, and *.dbf, but your attachment contains *.shp file only, so I wasn't able to read your data unfortunately.

 

However, I think I was able to understand your requirement from your workspace. This is a workspace example that explains how your desired surface model can be created. This might help you if I have understood your requirement correctly.

 

create-terrain-model-with-buildings.fmwt (FME 2017.1.1.1)

 

 

Userlevel 2
Badge +17
Addition. Probably some tolerance (the following parameters) should be considered in the SurfaceOnSurfaceOverlayer transformer, depending on the data conditions.

 

  • Enable Tolerance
  • Normal Tolerance in Degrees
  • Offset Tolerance

 

Apologies, Takashi.

My earlier datafiles were incomplete. Here comes 3 new zipped files that are more complete.

I tried but failed. I shall continue trying.

markmodell-clipped-2017-09-22-11-43-47-1.zipnewroofs.ziprydebackroad.zip

Userlevel 2
Badge +17

Apologies, Takashi.

My earlier datafiles were incomplete. Here comes 3 new zipped files that are more complete.

I tried but failed. I shall continue trying.

markmodell-clipped-2017-09-22-11-43-47-1.zipnewroofs.ziprydebackroad.zip

The roofs were more complex than I had thought. It seems that simplifying and cleansing are required. This workspace example still may not be perfect, but contains some tips.

 

create-terrain-model-with-buildings-2.fmwt (FME 2017.0.1.1)

 

Hope this helps.

 

 

Userlevel 2
Badge +17

Apologies, Takashi.

My earlier datafiles were incomplete. Here comes 3 new zipped files that are more complete.

I tried but failed. I shall continue trying.

markmodell-clipped-2017-09-22-11-43-47-1.zipnewroofs.ziprydebackroad.zip

Another approach. This workspace contains a PythonCaller, which combines the terrain solid and all the building solids and builds a single solid with CSG (Constructive Solid Geometry) modeling operation.

 

It generates a single clean solid, but note that it could take a long time (possibly tens minutes) to complete the translation.

 

create-terrain-model-with-buildings-3.fmwt

 

 

Userlevel 2
Badge +17

Apologies, Takashi.

My earlier datafiles were incomplete. Here comes 3 new zipped files that are more complete.

I tried but failed. I shall continue trying.

markmodell-clipped-2017-09-22-11-43-47-1.zipnewroofs.ziprydebackroad.zip

This one could be more efficient and robust than the previous one.

 

create-terrain-model-with-buildings-4.fmwt (FME 2017.0.1.1)

 

 

Wow! Many Thanks Takashi.

I am looking forward to use them in my workspace.

Userlevel 2
Badge +17

Apologies, Takashi.

My earlier datafiles were incomplete. Here comes 3 new zipped files that are more complete.

I tried but failed. I shall continue trying.

markmodell-clipped-2017-09-22-11-43-47-1.zipnewroofs.ziprydebackroad.zip

Update: I was able to clip out the space under the overhang of a roof.

 

create-terrain-model-with-buildings-4-1.fmwt (FME 2017.0.1.1)

 

 

Thanks again for all your help, Takashi.

The result is great especially with the overhang of the roof.

I have encountered a little problem when I sent it to Simplify before Printing.

fme-inspector.pngsimplify1.pngsimplify2.png

The workspace worked perfectly in another project area.

simplify1-vildvinet.pngsimplify2-vildvinet.png

Is there anything we can do in FME?

Userlevel 2
Badge +17

Thanks again for all your help, Takashi.

The result is great especially with the overhang of the roof.

I have encountered a little problem when I sent it to Simplify before Printing.

fme-inspector.pngsimplify1.pngsimplify2.png

The workspace worked perfectly in another project area.

simplify1-vildvinet.pngsimplify2-vildvinet.png

Is there anything we can do in FME?

There could still be a not-clean part in the dataset, but I could not detect any more relevant issue. For now, I have no idea what we can do with FME.

 

 

You were a tremendous help, Takashi.

I shall check and redo my building roofs.

Have a nice day.

Takashi, the problem was solved when I changed the writer file to SketchUp without assigning a coordinate system. Thank you for all your help.

Userlevel 2
Badge +17

Takashi, the problem was solved when I changed the writer file to SketchUp without assigning a coordinate system. Thank you for all your help.

Good to hear that. I've also learned many things through this thread. Cheers!

 

 

Reply