How to divide brep by surfaces

hey guys,im new here
so excuse my very basic question.
if i want to divide a brep by a surface,what should i do in grasshopper to realize this
i used ‘deconstruct brep’ to sort out the surfaces of the brep and i did it again to sort out the surrounding curve of the dividing surface.Then i used ‘surface split’ 4 times to split the surfaces by curves,and then use ‘brep join’ to join the divided surfaces
i konw the way i used is so complicated and time-wasting,but i can’t figure out a better way to do this.
so can anyone help me with it

Hope this helps!

thanks for your advice,Patternseeing
for simple breps i can finish it,but what if i want to divide a complex brep
following the figure

what can i do to divide this into 2 parts with a surf in it ?

works fine here!

thanks for your reply!
your advice was great,it works in some situation,but there remains a prob when i used it on a brep extruded by the upper surface,and the split failed

i don’t know why it failed

Probably something with the rhino geometry. Did you try remodelling them?!