I have exhausted with the solutions offered by CoPilot with no success.
I want to extend the room solid to the full storey height temporarily to enable me to check the presence of beams protruding inside the room.
Essentially, the problem is that using
room_solid = GeometryCreationUtilities.CreateExtrusionGeometry(original_curve_loops_of_room_solid, XYZ(0.0, 0.0, 1.0), room_height)
will give a solid of length = room_height and with Min.Z = - room_height/2 and Max.Z = + room_height/2 (i.e. extending upward and downward) instead of extending upward only to the full storey height.
Using:
transform = Transform.CreateTranslation(XYZ(0.0, 0.0, offset))
..
adjusted_curve = curve.CreateTransformed(transform)
with whatever offset value cannot change the final result.
Other methods like building the solid from lines cannot yield the desired results.
The final solution is to use:
`room_solid = GeometryCreationUtilities.CreateExtrusionGeometry(original_curve_loops_of_room_solid, XYZ(0.0, 0.0, 1.0), room_height * 2)`
to make up the full storey height, and the intersection with ceiling beams does work. It seems that floor beams below are not intersected even though Min.Z is negative the room_height.
Is this solution robust? Is it possible to extrude in one direction only instead of symmetrically?