Solid difference only when 2 breps completely intersect


For an assignment at university, I have to design a roof parametrically for a sculpture garden at the Escher museum in The Hague.

I have chosen to reflect ‘the geese’ from his world-famous drawing in the roof, in Grasshopper I do this with solid difference. The points are projected randomly on the extrusion to do the solid difference, the geese are scalable in size. Cutting out does work, but the points are often on the edge, so the roof edge does not remain intact (depicted at the 3rd screenshot).

However, I would like the roof edge to continue and the goose to be cut out only if they are completely inside the extrusion (the roof). My question is: is there a command to be made in Grasshopper that will make the solid difference only if the goose is completely inside the roof? (like the left goose on the 3rd screenshot).

My teacher can’t manage it so I hope you guys know a solution!

(See attached screenshots and the Grasshopper file)

Thanks in advance,

Schermafbeelding 2023-10-23 121509
Grasshopper roof for (592.0 KB)

1 Like

i first reduced your roof 2D, populated it, culled curves colliding with the 2D Boundary and extruded them - hope this helps.

Grasshopper roof for (2.2 MB)


Here are two methods - No. 2 being faster, avoiding solid difference and using trimming + re-joining objects:
Grasshopper roof for (594.5 KB)


1 Like

Thank you @Pejo and @corellaman, both options work really well!

I’ll try to completely understand the scripts but thanks again!!

Kind regards,

1 Like