Eagle Board mirror, a dream came true, not fully tested yet,

Eagle Board mirror, a dream came true, not fully tested yet, any one interested try it and send me your feedback if you notice any issues, here is a link to the experimental ws:

http://www.chilipeppr.com/ameen

There are two check boxes under the Layers drop down menu, you can mirror the board vertically or horizontally, and it works with any layer.

I also fixed an issue in vias.

Just tested by running my Cohesion3D boards thru this. It works great! And you fixed our “vias not inflating” bug too! Awesome!

This looks amazing. The mirroring works great too. How did you do it? Were you able to just do some high level Three.js trickery? This is full-fledged 2-sided milling now.
missing/deleted image from Google+

It looks like when you mirror, you get negative path inflation (deflation) rather than inflation, so it seems maybe you have a bug in your inflate being negative instead of positive. When I don’t mirror, it seems to work fine.

BTW, I’m just testing out the Arduino Uno board file cuz it’s a good test file https://www.arduino.cc/en/uploads/Main/arduino_Uno_Rev3-02-TH.zip

John’s right. Here it is on my C3D Mini: http://imgur.com/a/IUzut

It was more difficult to notice at 0.05 inflation, it’s very visible now at 0.1, and with the default 0.35 a bunch of the inflatepaths just won’t even generate and things get all around weird.

Here’s what it should look like (not mirrored): http://imgur.com/a/1u0Iy
And note how my 3.3v trace behaves differently in mirrored than the rest. It’s still fat when mirrored :slight_smile:

Hum, I’ve been testing using 0.35 inflation, I never ran in to this issue, but I can imagin what causing it, I’ll try to fix it tonight, it still early morning in here.

Please test again, problem should be solved, here is a screenshot.

Be aware, board dimensions are not yet mirrored, I’m trying to find the code that renders the dimensions.
missing/deleted image from Google+

Here is another screenshot to bottom layer
missing/deleted image from Google+

I can point you in the right direction there, message me on hangouts.

I found it.

Solder Mask is mirrored right away without changing a single line of code.
missing/deleted image from Google+

@ameen.nihad this is just incredible to see this working.

@jlauer I only used Three.js to mirror smdgroups and padgroups using applyMatrix, everything else is mirrored by recalculating x & y before pushing them to paths, lines . etc.
I used board boundaries (just minimum and maximum values of X & Y in board dimensions layer) to recalculate each and every x & y.

Well, what’s really great about your approach then is that stuff like the solder mask just works automatically. When I was thinking 6 months ago about how to tackle the board mirroring, I was going to just place everything into a Three.js group, flip the group horizontal, and then I’d be done. The problem with that is then you have to re-extract from the group all the objects with absolute XY values so you can use the Clipper.js library to do all the path creation. You just achieved all of this. Incredible work.

Great job @ameen.nihad ​.
I started board mirroring couple of months ago, have had some discussion with @raykholo ​ but didn’t get enough time to fully complete this. So I am even more happy to see this feature working.

It is a huge milestone, as it was a missing feature and whole community was waiting to see board mirroring available in the widget.

I think after some testing this might be pulled into main Chilipeppr workspace.

Ok, pushed to main TinyG workspace. @ameen.nihad amazing job here. This is a huge step for all of us. I made your checkboxes allow the text to be clicked too by adding a tag around them which is the Bootstrap technique I use everywhere.

I’m glad that I was able to contribute and add this nice feature to the wedge, I never thought I will be able to finish it in just few days, considering that a week ago I had no idea how Chilipeppr is developed, thanks for Jonh’s three tutorial videos, they increase the speed of my learning curve.

My approach was very simple and easy to implement, I spent most of the time trying to understand widget code and how the board is being rendered.

It’s nice that the widget is shared with GRBL workspace.

Hopefully, I will do more updates to Eagle BRD widget in the coming weeks, add new features and tweak some of the existing ones.

Happy new year for everyone.