element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Autodesk EAGLE
  • Products
  • More
Autodesk EAGLE
EAGLE User Support (English) Gerber coordinate plane vs. part centroid data
  • Blog
  • Forum
  • Documents
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Autodesk EAGLE to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 6 replies
  • Subscribers 180 subscribers
  • Views 1222 views
  • Users 0 members are here
  • eagle
  • gerbmerge
  • panelization
  • cam
  • centroid
  • assembly
  • gerber
Related

Gerber coordinate plane vs. part centroid data

omega
omega over 14 years ago

I'm working on putting things together for a multi-design panel that's going out for assembly as soon as I get the PCBs from the fab house.  I used gerbmerge to get everything together, and that worked quite nicely.

 

The next step is to produce a "centroid" file for Screaming Circuits, which contains the origins of every part on the board.  In the case of a single design this isn't such a problem, because all the parts are in one file with locations that are accurate relative to each other.  They just have to line up one of the parts and all the others go along for the ride, regardless of where the origin is (whether you're talking the centroid file's origin or the placement of the physical PCB on the pick-n-place machine).

 

The problem is, when I try to get this data together for a panel, I find that while the partlist data (either from the Screaming Circuits centroid ULP or from Eagle's Export Partlist) references everything to the Eagle origin, the Gerber data from the CAM processor is "randomly" placed in the coordinate plane.  I'm aware *why* this is (Gerber coords are always positive, origin is based on the furthest bottom/left drawable item in any layer drawn or not), but the here's the crux of the problem: nowhere can I find any information about what this offset actually is for a given board.  Without this basic information, I'm unable to determine the difference between the partlist origin and the Gerber origin, making it effectively impossible to actually create a merged centroid file for the panel based on gerbmerge's selected per-board origin.

 

I stumbled on a partial solution for now by the fact that I designed all these boards absolutely centered on the Eagle origin.  My script can find the extent of the board outline in Gerber space, split the difference, and with some other black magic determine where in the merged Gerbers they actually reside.  However, this doesn't have a chance of working in the general case.

 

I thought about adding a non-drawble (e.g 49 Reference) entity at -10,-10 to "force" the Gerber origin, but when doing a Zoom-to-Fit on the design it ends up just scaling the board down into the near-invisible range.  This happens whether or not the layer is visible, which I consider to be a (separate) problem anyway.  Zoom-to-Fit should have the option of scaling to only the visible layers...

 

 

Anyway, either I'm missing some hidden offset data somewhere and this is solvable now, or the Eagle coders need to find some way to add this data (Gerber comment?) in the next revision.  I plan on releasing my partlist merge tool as well as probably writing a tutorial or three on how to do panelization of both PCB art and assembly, but I'm stuck relying on boards being centered on the origin for my script to work, there's really no point.

  • Sign in to reply
  • Cancel
Parents
  • Former Member
    0 Former Member over 14 years ago

     

    "omega" <communitymanager@premierfarnell.com> wrote in message

    news:155198066.5491305996528690.JavaMail.jive@flcspu-csapp-01.premierfarnell.com...

    I'm working on putting things together for a multi-design panel that's

    going out for assembly as soon as I get the PCBs from the fab house.Â

    I used gerbmerge to get everything together, and that worked quite

    nicely.

     

    The next step is to produce a "centroid" file for Screaming Circuits,

    which contains the origins of every part on the board.  In the case

    of a single design this isn't such a problem, because all the parts

    are in one file with locations that are accurate relative to each

    other.  They just have to line up one of the parts and all the others

    go along for the ride, regardless of where the origin is (whether

    you're talking the centroid file's origin or the placement of the

    physical PCB on the pick-n-place machine).

     

    The problem is, when I try to get this data together for a panel, I

    find that while the partlist data (either from the Screaming Circuits

    centroid ULP or from Eagle's Export Partlist) references everything to

    the Eagle origin, the Gerber data from the CAM processor is "randomly"

    placed in the coordinate plane.  I'm aware why this is (Gerber

    coords are always positive, origin is based on the furthest

    bottom/left drawable item in any layer drawn or not), but the here's

    the crux of the problem: nowhere can I find any information about

    what this offset actually is for a given board.  Without this basic

    information, I'm unable to determine the difference between the

    partlist origin and the Gerber origin, making it effectively

    impossible to actually create a merged centroid file for the panel

    based on gerbmerge's selected per-board origin.

     

    I stumbled on a partial solution for now by the fact that I designed

    all these boards absolutely centered on the Eagle origin.  My script

    can find the extent of the board outline in Gerber space, split the

    difference, and with some other black magic determine where in the

    merged Gerbers they actually reside.  However, this doesn't have a

    chance of working in the general case.

     

    I thought about adding a non-drawble (e.g 49 Reference) entity

    at -10,-10 to "force" the Gerber origin, but when doing a Zoom-to-Fit

    on the design it ends up just scaling the board down into the

    near-invisible range.  This happens whether or not the layer is

    visible, which I consider to be a (separate) problem anyway.Â

    Zoom-to-Fit should have the option of scaling to only the visible

    layers...

     

    >

    Anyway, either I'm missing some hidden offset data somewhere and this

    is solvable now, or the Eagle coders need to find some way to add this

    data (Gerber comment?) in the next revision.  I plan on releasing my

    partlist merge tool as well as probably writing a tutorial or three on

    how to do panelization of both PCB art and assembly, but I'm stuck

    relying on boards being centered on the origin for my script to work,

    there's really no point.

     

     

    You maybe able to salvage the design by placing the board in the

    positive coordinate plane and using that data.

    The board house should be able to apply a offset and use the data. It is

    part of their work flow.

    Always use the lower Left as the origin, standard drawing dimensioning.

     

    Cheers

     

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • omega
    0 omega over 14 years ago in reply to Former Member

    Guest wrote:

     

    You maybe able to salvage the design by placing the board in the

    positive coordinate plane and using that data.

    The board house should be able to apply a offset and use the data. It is

    part of their work flow.

    Always use the lower Left as the origin, standard drawing dimensioning.

     

    Cheers

     

    I think you missed a number of key points:

     

    - Eagle sets the Gerber offset to wherever it wants, regardless of whether the visible part of the design has the origin at 0,0.  The Gerber origin is selected based on the existence of *any* entity on a visible plane or otherwise, at less than 0,0.  In particular, an extremely common scenario is for either tNames or tValues to be hidden (for lack of silkscreen real-estate), yet have text that's somewhat randomly located (because of where the library puts the text in each footprint) and thus located well below 0,0.  This is not something anybody generally ever notices, because they have the layer hidden.

     

    - I'm panelizing these boards and their centroid data myself. I have multiple copies each of multiple designs, and the assembly house requires that I have all parts for the entire panel in the same coordinate plane.  That means I absolutely must know how to offset the centroid data from a single board layout relative to where gerbmerge is placing each of many copies on the panel itself.  This is not something the assembly house will do for me, and I wouldn't expect them to.  It would be an entirely different matter if I were producing a panel all of the same design, as they outright told me that centroid alignment and step&repeat is a given for single-design panels.

     

    - I have my boards centered on 0,0 because I have a  Ctrl-F tied to "mark (0 0);display all;group all;mirror (CR> 0  0);display last;show;", which will properly flip my board over.  Since  every design I have right now is heavily populated on both sides, I tend  to be flipping my boards over to work on the other side a lot.   If the board isn't centered around 0,0, every flip requires a radical  readjustment of the viewport so I can see the board again.

     

     

    Thus there are still two key problems here:

     

    - Eagle needs to give me some hint of what the offset is between its own coordinate space and the output Gerber space.

    - It would be really handy if the Gerber space was located based on the visible layers.  OTOH I can see why that's a little difficult, since the "visible" layers would be the sum of layers from each of the separate CAM layers.  Then again, that shouldn't be a hard thing to figure out.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 14 years ago in reply to omega

    I updated to Eagle 5.11.0

    I generated gerbers for a 4 layer board built in 2009 and compared them

    to the new gerbers. Both used the 274x-4 layer cam file that came with

    program.

    Using a gerber viewer, I observed:

    5.11.0

    The thermals on an inner ground layer (allows rework) had an additional

    pad superposed. Since this is a negative, it would disconnect the pin

    entirely.

    Previously generated gerbers lacked this additional pad, were connected

    and made useful boards. (probable 5.9.0 - too bad no provision for

    Program/version tag in gerbers)

     

    The other difference noticed - old version labelled inner layers gerber

    file extensions as .gnd and .pwr

     

    Current version labels them as .ly2 and .l15

     

    What do I need to change too make usable negative gerbers for thermals

    on an inner layer ??

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 14 years ago in reply to Former Member

    Obviously, I was incorrect in stating that they used the same CAM file,

    since the layer names are generated based on the cam file and differed.

    So it is probably not a version issue, either.

     

    The question in the subject remains - what do I need to change -in the

    CAM file-  to generate usable negative gerbers for thermals

    on an inner layer ??

     

    Thanks

     

    On 7/1/2011 2:13 PM, DWS wrote:

    I updated to Eagle 5.11.0

    I generated gerbers for a 4 layer board built in 2009 and compared them

    to the new gerbers. Both used the 274x-4 layer cam file that came with

    program.

    Using a gerber viewer, I observed:

    5.11.0

    The thermals on an inner ground layer (allows rework) had an additional

    pad superposed. Since this is a negative, it would disconnect the pin

    entirely.

    Previously generated gerbers lacked this additional pad, were connected

    and made useful boards. (probable 5.9.0 - too bad no provision for

    Program/version tag in gerbers)

     

    The other difference noticed - old version labelled inner layers gerber

    file extensions as .gnd and .pwr

     

    Current version labels them as .ly2 and .l15

     

    What do I need to change too make usable negative gerbers for thermals

    on an inner layer ??

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • Former Member
    0 Former Member over 14 years ago in reply to Former Member

    Obviously, I was incorrect in stating that they used the same CAM file,

    since the layer names are generated based on the cam file and differed.

    So it is probably not a version issue, either.

     

    The question in the subject remains - what do I need to change -in the

    CAM file-  to generate usable negative gerbers for thermals

    on an inner layer ??

     

    Thanks

     

    On 7/1/2011 2:13 PM, DWS wrote:

    I updated to Eagle 5.11.0

    I generated gerbers for a 4 layer board built in 2009 and compared them

    to the new gerbers. Both used the 274x-4 layer cam file that came with

    program.

    Using a gerber viewer, I observed:

    5.11.0

    The thermals on an inner ground layer (allows rework) had an additional

    pad superposed. Since this is a negative, it would disconnect the pin

    entirely.

    Previously generated gerbers lacked this additional pad, were connected

    and made useful boards. (probable 5.9.0 - too bad no provision for

    Program/version tag in gerbers)

     

    The other difference noticed - old version labelled inner layers gerber

    file extensions as .gnd and .pwr

     

    Current version labels them as .ly2 and .l15

     

    What do I need to change too make usable negative gerbers for thermals

    on an inner layer ??

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube