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 1205 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
  • 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
  • Former Member
    0 Former Member over 14 years ago in reply to Former Member

    gerb274x-4layer.cam 30-Mar-2010 includes layer 2,17 and 18

    So my ground layer gerber was negative, but included positive pads/vias

    Layer 17 included a pad for the library components I was using.

     

    Layer 2 was defined as a supply layer (Layer - Change - checkbox), so it

    is unclear why the testpoint P1-13 from testpad library or my connectors

    would have pads as positive, when the rest of the layer successfully

    generated as negative in the Gerber.

     

    Thanks.

     

    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
  • Richard_H
    0 Richard_H over 14 years ago in reply to Former Member

    Am 01.07.2011 23:59, schrieb DWS:

    gerb274x-4layer.cam 30-Mar-2010 includes layer 2,17 and 18

    So my ground layer gerber was negative, but included positive pads/vias

    Layer 17 included a pad for the library components I was using.

     

    Layer 2 was defined as a supply layer (Layer - Change - checkbox), so it

    is unclear why the testpoint P1-13 from testpad library or my connectors

    would have pads as positive, when the rest of the layer successfully

    generated as negative in the Gerber.

     

    Thanks.

     

    Maybe this information helps:

    ( from http://www.cadsoftusa.com/training/faq/#17 )

     

    Supply Layers, Power Planes, Polygons in Inner Layers – What is what?

     

    If you would like to use copper planes in inner layers you should be

    aware of several things and know how this works:

    EAGLE uses so-called Supply layers, that will be generated automatically

    and lead one single signal. And there are the quite “normal” inner

    layers that use polygons for copper planes.

    EAGLE considers its Supply layers as a special kind of inner layer.

     

    Supply Layer:

    This one can be activated with the Supply option in the DISPLAY menu,

    Change button. The layer name determins the signal that will be lead in

    this layer:

    If you use, for example, the name GND, and activate the Supply option,

    the resulting layer name is $GND. The $ character is the identifying

    mark for a Supply layer. This can be done also with the help of the

    LAYER command, for example:LAYER 3 $GND

    Specials of a Supply layer

    a) The layer is displayed inverted, i. e. everything drawn in this layer

    is non-copper on the real board.

    b) This layer does not work with Pads and Vias. Connected elements will

    automatically get Thermal symbols if required, isolated elements will

    get isolating rings, so-called Annulus symbols. The dimensions of these

    symbols can be adjusted in the Design Rules’ Supply tab.

    c) To keep the board edges free of copper draw an isolating WIRE near

    the border. This avoids possible short circuits between adjacent

    (Supply) layers.

    d) It is not possible to draw traces in a Supply layer (inverted display!).

    e) For manufacturing data generation (for example Gerber) with the CAM

    Processor you have to activate the Supply layer only, nothing else! No

    Vias, no Pads!

    f) And again: The layers Pads and Vias have nothing to do with the

    Supply layer. To see what’s the matter in this layer you have to display

    only this Supply layer. And remember the inverted display.

     

    Inner Layer with copper planes – the “normal” power layer:

    In this case the inner layer will be treated the same as the Top or

    Bottom layer. Pads and Vias are necessary for connecting the polygons.

    The width of the polygon also determins the width of the traces that

    connect Pads or possibly Vias in Thermal symbols. Polygons follow the

    given Clearance values of the Design Rules.

    What do we have to keep in mind?

    a) Pads and Vias in inner layers are basically of round shape and are

    usually smaller in diameter than they are in Top or Bottom layer (see

    Restring settings in the Design Rules). With the default setting in

    EAGLE (layer color for Pads and Vias is green) the differences in shape

    and diameter are not visible in the Layout Editor. If the inner layer is

    displayed with Pads and Vias, it might happen that the distances seems

    to be too close. But this is not the case!

    Here is makes sense to change the layer color for Pads and Vias to the

    background color (DISPLAY, Change, Color). Now Pads and Vias are shown

    with the respective color of the currently active signal layer(s). It is

    possible to distinguish different shapes and diameters of each signal layer.

    b) Do you want to place several signal planes in a common layer? Then

    you may use several polygons with different names. Here it makes sense

    to use them with different Ranks.

    c) You are allowed to draw additional traces. The polygons keep their

    respective clearances. Keep an eye on the copper areas. It might happen

    that they will be devided into pieces and that there will appear

    airwires that represent not connected elements. RATSNEST should report

    Nothing to do! when the design is finished.

     

    --

    Mit freundlichen Gruessen / Best regards

    Richard Hammerl

      CadSoft Support -- hotline@cadsoft.de

      FAQ: http://www.cadsoft.de/faq.htm

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
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