Question

How to create an arch solid - arch roof?

  • 12 February 2017
  • 6 replies
  • 3 views

Hi, i have Polygon shapefile(footPrint.shp) with wall height for FloorSurface and WallSurface. RoofSurface will be separated into small surface parts by lines with matching heights in Line shapefile (roofEdge_arch.shp). Is it possible to create an arch roof - arch solid from these?

Thanks!

Here's the picture of an arch roof and how the lines separating the RoofSurface.


6 replies

Userlevel 2
Badge +17
Hi @anhphanuet, a Shapefile dataset consists of at least 3 files - *.shp, *.shx, and *.dbf, but I was not able to find *.shx and *.dbf in your sample data. Can you post the sample data including those files again?

 

Hi @anhphanuet, a Shapefile dataset consists of at least 3 files - *.shp, *.shx, and *.dbf, but I was not able to find *.shx and *.dbf in your sample data. Can you post the sample data including those files again?

 

Hi @takashi, i am sorry for my mistake. i did repost it!

 

Userlevel 2
Badge +17

Hi @anhphanuet, the coordinate system of your sample dataset is unknown so it cannot be reprojected properly. I tried scaling it with multiplying X and Y by 50000, and found the data seems not to be an arch roof. It looks like this.

That aside, it's possible to create a solid based on a series of roof edge features (lines), but it would be a long story. The summary of a possible way is:

  1. Sort the roof edge features (lines) with the spatial order from an end to another end of the roof.
  2. Create all boundary surfaces (top, bottom, and walls) for the required solid based on the lines.
  3. Finally build a BRepSolid (boundary representation solid) from the boundary surfaces.

See the attached workspace example (FME 2016.1.3): create-arch-roof-solid.fmw

The workspace contains a custom transformer that creates a sample dataset.

Hope this helps.

Hi @anhphanuet, the coordinate system of your sample dataset is unknown so it cannot be reprojected properly. I tried scaling it with multiplying X and Y by 50000, and found the data seems not to be an arch roof. It looks like this.

That aside, it's possible to create a solid based on a series of roof edge features (lines), but it would be a long story. The summary of a possible way is:

  1. Sort the roof edge features (lines) with the spatial order from an end to another end of the roof.
  2. Create all boundary surfaces (top, bottom, and walls) for the required solid based on the lines.
  3. Finally build a BRepSolid (boundary representation solid) from the boundary surfaces.

See the attached workspace example (FME 2016.1.3): create-arch-roof-solid.fmw

The workspace contains a custom transformer that creates a sample dataset.

Hope this helps.

 

Hi @takashi, i did created an arch RoofSurface using TINGenerator. I'm making GableWall surfaces by using:

 

-Snipper to find the first point and the last point of each line and they'll be on 2 sides of the roof solid (GableWall surface)- PointConnector to make line from those points on each side.

 

- LineCloser to make GableWall polygons

 

I made a mistake but i can't figure it out!

 

Here's my workspace.

 

Thank you so much for your guidance and support!
Userlevel 2
Badge +17

 

Hi @takashi, i did created an arch RoofSurface using TINGenerator. I'm making GableWall surfaces by using:

 

-Snipper to find the first point and the last point of each line and they'll be on 2 sides of the roof solid (GableWall surface)- PointConnector to make line from those points on each side.

 

- LineCloser to make GableWall polygons

 

I made a mistake but i can't figure it out!

 

Here's my workspace.

 

Thank you so much for your guidance and support!
Your approach looks good, but I think it requires some conditions to work as expected.

 

  • The lines should be ordered from an end to another end of the roof.
  • The lines all should orient the same direction.
  • The start/end nodes of the lines should be on straight line in 2D.
Make sure if the lines satisfy those conditions. If a condition is not satisfied, the translation could fail.

 

Your approach looks good, but I think it requires some conditions to work as expected.

 

  • The lines should be ordered from an end to another end of the roof.
  • The lines all should orient the same direction.
  • The start/end nodes of the lines should be on straight line in 2D.
Make sure if the lines satisfy those conditions. If a condition is not satisfied, the translation could fail.

 

Hi @takashi

 

My problem is the nodes were not on straight lines in 2D.

 

Thank you so much for pointing it out!

Reply