Question

"3D intersection" of 3D and 2D polylines


Badge

Hi all,

I have a DWG file containing 3D polylines and 2D polylines. 3D polylines are "crossing" 2D polylines.

3D polylines are red and 2D polylines are white.

Is it possible to create 3D polylines that would be the projection of each 2D polylines (white) on 3D elements (red). That is to say 3D polylines whose summits will be the "intersection" between 2D and 3D polylines.

Thank you for your help.


14 replies

Userlevel 2
Badge +17

Hi @arka,

The SurfaceDraper transformer may be able to help you. Send the 3D polylines to the Points/Lines input, and the 2D polylines to the DrapeFeatures input. Set the Drape Method to MODEL for the best results.

Badge

Hi @arka,

The SurfaceDraper transformer may be able to help you. Send the 3D polylines to the Points/Lines input, and the 2D polylines to the DrapeFeatures input. Set the Drape Method to MODEL for the best results.

Hi @DaveAtSafe,

Indeed, I had thought at SurfaceDraper but it doesn't work as expected :

  • The created element isn't a 3D polyline
  • The created element has got a lot of vertex (whereas I expect a created element with vertex number equal to intersection number)

Userlevel 2
Badge +17

Hi @DaveAtSafe,

Indeed, I had thought at SurfaceDraper but it doesn't work as expected :

  • The created element isn't a 3D polyline
  • The created element has got a lot of vertex (whereas I expect a created element with vertex number equal to intersection number)

Hi @arka,

 

Would you be able to share the DWG file with me? There are a few techniques I would like to try to improve your results.

 

Userlevel 6
Badge +31

More ways to get this result but with only vectordata I would do:

- Calculate interpolated point where 2D & 3D line intersect by using a LineOnLineOverlayer.

 

- Insert this 2D vertex in the original 2D geometry by using a PointOnLineOverlayer and LineCombiner.

 

- Explode updated 2D geometry to points using a Chopper.

 

- Attach the interpolated height to the added vertex using a FeatureMerger, based on XY.

 

- Recreate this point with the new height using a VertexCreator.

 

- Rebuild the original geometry using a LineBuilder

This only works correctly when no vertical walls exist, causing duplicates in XY interpolated points.

Be aware that you need 2D vs 3D lines to get the LineOnLineOverlayer and PointOnLineOverlayer to interpolate. Otherwise the Transformer needs to decide which of the interpolated points is the correct one. Like the "Duplicate Nodes at Each Elevation" setting in the Intersector.

generateprofile2017.fmw

Badge

Hi @arka,

The SurfaceDraper transformer may be able to help you. Send the 3D polylines to the Points/Lines input, and the 2D polylines to the DrapeFeatures input. Set the Drape Method to MODEL for the best results.

Hi DaveAtSafe,

Sure, here is my file : 11669-extractions-v1.dwg

 

 

Userlevel 2
Badge +17

Hi @arka,

I am attaching another solution that uses the Intersector to create 3D nodes, then uses the TopologyBuilder to attach the elevations from those nodes to the 2D lines. Finally, VertexCreators are used to place those elevations on the 2D lines.

3dintersections.fmw

Userlevel 6
Badge +31

Hi @arka,

I am attaching another solution that uses the Intersector to create 3D nodes, then uses the TopologyBuilder to attach the elevations from those nodes to the 2D lines. Finally, VertexCreators are used to place those elevations on the 2D lines.

3dintersections.fmw

Thanks, learned something new today!

 

Badge

Hi @arka,

I am attaching another solution that uses the Intersector to create 3D nodes, then uses the TopologyBuilder to attach the elevations from those nodes to the 2D lines. Finally, VertexCreators are used to place those elevations on the 2D lines.

3dintersections.fmw

Hi @DaveAtSafe,

 

Thank you for your answer. It seems to be really interesting process.

 

However, I can't read your .fmw (version too recent) .

 

Can you export it in V2016 please ?

 

 

Userlevel 2
Badge +17
Hi @DaveAtSafe,

 

Thank you for your answer. It seems to be really interesting process.

 

However, I can't read your .fmw (version too recent) .

 

Can you export it in V2016 please ?

 

 

Hi @arka,

 

Sure, here is the FME 2016 version.

 

3dintersections-2016.fmw

 

Badge
Hi @arka,

 

Sure, here is the FME 2016 version.

 

3dintersections-2016.fmw

 

Hi @DaveAtSafe,

 

Thank you very much for your supply. I will try it soon.

 

 

Badge
Hi @DaveAtSafe,

 

Thank you very much for your supply. I will try it soon.

 

 

Hi @DaveAtSafe,

 

It works perfectly, thank you very much.

 

 

Badge

Hi @DaveAtSafe,

Your solution works perfectly. It creates one 3D polyline. Is it possible to customize a little bit more ?

Is it possible to create one 3D polyline for the intersection with "S2_Acc_GS4_Sommet" only and call it "S2_Acc_GS4_Sommet_Interpole" ?

One 3D polyline for the intersection with "S2_Acc_GS4_Decale only and call it "S2_Acc_GS4_Decale_Interpole" ?

And so on for each layer of 3D polyline.

Thanks

Userlevel 2
Badge +17

Hi @arka,

I moved the bulk of the process into a custom transformer, which allows using a separate copy for each existing 3D line.

3dintersections-individual-2016.fmw

Badge

Hi @arka,

I moved the bulk of the process into a custom transformer, which allows using a separate copy for each existing 3D line.

3dintersections-individual-2016.fmw

@Hi DaveAtSafe,

 

Thank you, indeed, it is a good solution. PERFECT.

 

 

Reply