I would like to draw a section through some 3D regions. I start by making some simple 3D regions as a minimum working example.
gg = BoundaryDiscretizeGraphics[
Graphics3D[#]] & /@ {Cuboid[{-0.2, -0.5, 0}, {0.2, 0.5, 0.5}],
Cone[{{1.5, 0, 0}, {2, 0, 2}}, 0.1] ,
Cylinder[{{2, 0, 1}, {3, 0, 0.5}}, 0.1], Sphere[{3, 0, 0}, 0.3],
Tube[{{0, 0, 0}, {4, 0, 3}}, 0.03]};
rr = RegionUnion[gg, Boxed -> True]

Now I define an InfinitePlane that I would like to slice through my regions.
ip = InfinitePlane[{{0, 0, 0}, {4, 0, 0}, {4, 0, 1}}];
Show[
Graphics3D[ip],
Region[rr]
]

How do I get the 2D Region lying in the plane? Is this possible?
This post has an approach for 3D primitives but I can't see how to extend this to 3D regions.
Edit
@kglr suggest I can go further with ClipPanes. Here is his suggestion.
rc = RegionPlot3D[rr, ClipPlanes -> ip,
ClipPlanesStyle -> Opacity[0.1, Green]]

This does the slicing and shows the insides but does not give me 2D regions. Could this be a starting point?
Edit 2
Continuing to take instructions from @kglr (see comments). He suggests finding the intersection with the mesh primitives.
dg = DiscretizeGraphics@
Quiet@Graphics3D[{DeleteCases[
RegionIntersection[ip, #] & /@
MeshPrimitives[rr,
2], _EmptyRegion | _Point | _RegionIntersection]}]

One can then extract the lines and reduce the coordinates to the values in the plane.
LL = MeshPrimitives[dg, 1] /. {a_, b_, c_} -> {a, c};
Graphics[LL]

This works. I will have to think further about what to do if the plane is not aligned with an axis. Reducing to 2D coordinates will then have to be done by a coordinate transform. However this is considerable progress and @kglr didn't have to post an answer!



RegionPlot3D[rr, ClipPlanes -> ip, ClipPlanesStyle -> Opacity[.5, Red]]? – kglr Feb 26 '19 at 19:51dg = DiscretizeGraphics@ Quiet@Graphics3D[{DeleteCases[ RegionIntersection[ip, #] & /@ MeshPrimitives[rr, 2], _EmptyRegion | _Point | _RegionIntersection]}]gives lines which can be further processed to form the polygons. – kglr Feb 26 '19 at 20:25