Just looking at the model, I’d attempt creating a block with a zig-zag side to intersect faces of the ends, then remove the excess.After grouping this block and positioning, I’d put this shape in the same context as the bar faces (inside the group or component) and ungroup the block shape after positioning so , with “intersect faces” it leaves faces along the resulting zig zag cut. The file is too large for me to experiment with as everything would be too slow on my computer. I tried to check if the object could be a solid, but it was taking too long.
Checking out the size of the objects, you should scale it up 1000x for this operation. You can scale a component of the bar and block shape, leaving an unscaled component aside. Both will update.
I’d draw a rectangle below the end with a zigzag edge such that when pushpulled up , the zig zag faces intersect the very end of the wrapper.
Save a copy of the block you make to use on the opposite end.
I’d draw the 2d rectangle shape and start the zig-zag with two angled edges near one corner, and duplicate across the shape so the the zigzag divides the face in two. Remove the face and edges on the bar side of the zig zag edges, and extrude the resulting shape up.
One only needs to have the end shape at one end to demonstrate the process. I’d show you how to isolate that for the example file, but you probably know, and it takes too long on my computer–actually it’s just hung right now.