Sebastian Szafran  You did it!  Well,

@sszafran You did it! Well, there’s still a lot of work to do because the same logic needs to be implemented for elements (thru holes, drills, and smds), vias, copper pours, and the board outline layer.

If you looks closely at the pic of the bottom layer pic, you will see that you got the copper for my thru holes and vias to move over but the drills are still on the right side. I also have a solder jumper (same as an SMD) on the bottom that did not move over and I tested ground planes in another design that persists.

But you did the hard part and I’m excited to help transfer the same logic you implemented to the other 4 drawing functions that still need to get flipped.

+Peter van der Walt Wake up and smell the smoothie :slight_smile:

Tell me if you recognize the board being rendered.

I didn’t touch the polygons and smd’s yet. Got some troubles with dimension, need more time.
I still think we should mirror in a way that the boards will use the same position. This can be done be reverting x coordinates and deduct Xmax (or Y coords and deduct Ymax), depending what is the mirror axis. If we decide to mirror along one axis only (as it is now) this is still fine.
Dimension and drills can be done only for one layer (probably Top), as it is not needed to cut board outline or drill twice. And if one does this way, the machine must be perfectly aligned.

I need to combine the mirroring code created by you with my changes. I want to have it in a way that a user will choose the Top or Bottom layer and gets appropriate paths, so the mirror button won’t be needed.

Once done we need to add alignment holes.

That would be great if @jlauer ​, @raykholo ​ and @sszafran ​ could talk and discuss some issues one day. I am 6 hours ahead from your timezone.

@jlauer Sebastian is +6 hours from me so that’s +9 hours from you. Scheduling/ availability is up to you.

+Peter van der Walt that’s a different widget… Shh!

I can help with the drills.

@Frank_Herrmann I think we just need a checkbox in the render tab for each type:

This is really simple to implement. Then the user can choose on what layer they want to handle it.