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) Exporting pad data for Phoenix X-ray machine
  • 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
  • Replies 3 replies
  • Subscribers 178 subscribers
  • Views 947 views
  • Users 0 members are here
Related

Exporting pad data for Phoenix X-ray machine

autodeskguest
autodeskguest over 12 years ago

Hi all, we have Phoenix Micromex 180 x-ray machine for PCB inspection at

my workplace. Its software can greatly automate creation of new

inspection programs for boards, but as an input, it requires data with

component and pad coordinates. Two separate files are needed: 1. one

which lists all components, their names, package type and coordinates.

2. one which lists pad shapes and coordinates (relative to package's

origin mark) for all package types used on a board. Here are shortened

examples of needed file contents:

 

Component file:

  1. Board dimensions: X size, Y size, layer height

DIMENSIONS: 130 90 1.6

  1. RefDes    PackageID    X-shift    Y-shift    ROT    PinCount   

Side    MountType

C7               27    30    50    0    2    TOP       THROUGH  

R7               26    121    51    0    2    TOP       THROUGH  

V18             19    23    40    0    3    TOP       SMD      

C58             14    99    7    90    2    TOP       SMD      

V30             16    6    63    0    2    TOP       SMD      

V15             19    23    20    0    3    TOP       SMD      

C8               27    30    45    0    2    TOP       THROUGH  

C43             13    104    77    0    2    TOP       SMD      

 

Pad coordinates file:

PackageID    label    X-shift    Y-shift    Rotation    Width   

Height    Shape

6    1    -0.65    0    0    0.9    0.7    RECTANGLE

6    2    0.65    0    0    0.9    0.7    RECTANGLE

15    A    -1.7    0    90    1.8    1.4    OBLONG

15    K    1.7    0    90    1.8    1.4    OBLONG

22    A1    -12.06    12.06    0    0.6    0    ROUND

22    A10    -0.63    12.06    0    0.6    0    ROUND

22    A11    0.63    12.06    0    0.6    0    ROUND

22    A12    1.9    12.06    0    0.6    0    ROUND

22    A13    3.17    12.06    0    0.6    0    ROUND

27    1    -1.25    0    0    1.3    0    ROUND

27    2    1.25    0    0    1.3    0    ROUND

 

Obviously, the most "clean" solution would be to write my own ULP to

generate the files. But that would be very time-consuming, so I want to

try some alternative solutions before I do that. I figured the component

file could be easily obtained by editing the standard Eagle partlist,

for example by a relatively simple MS Excel macro. But I found no way

how to obtain the pad data, or at least not in the format needed. I know

there is export-ict-netlist-pad-coordinates.ulp, but this one exports

the pad coordinates relative to the entire board, not relative to

package's origin mark. And the information about pad shape is missing

completely in it.

 

So my question is: *is there some existing ULP which can produce such

pad data*?

 

Just in case you were interested, here is some info about our x-ray

machine:

http://www.ge-mcs.com/en/radiography-x-ray/micro-and-nanofocus/micromex-dxr-hd.html

 

--

To view any images and attachments in this post, visit:

http://www.element14.com/community/message/93087#93087

 

  • Sign in to reply
  • Cancel
  • autodeskguest
    autodeskguest over 12 years ago

    Caleb,

     

    It is quite simple, I wrote code to do that in the eagle2freerouter.ulp

    and you can lift it out there (around line 445). In this example I use

    functions (pad_sig and smd_sig) to store the data in a string array:

    -


    void read_board_pads_and_vias(void) { // 19-01-28

    // Get pads from the library and vias from the nets, defaults are

    already loaded

         board(B) {

              B.libraries(L) {

                   L.packages(P) {

                        P.contacts(C){

                             if (C.pad) {

                                  pad_sig (C.pad.shape[LAYER_TOP], C.pad.diameter[LAYER_TOP],

                                       C.pad.drill, C.pad.elongation, C.pad.angle);

                             }

                             if (C.smd) {

                                  smd_sig (C.smd.roundness, C.smd.dx, C.smd.dy, C.smd.layer,

    C.smd.angle);

                             }

                        }

                   }

              }

              B.signals(N) {

                   N.vias(V) {

                        via_sig(V.shape[LAYER_VIAS], V.diameter[LAYER_TOP], V.drill,

    V.start, V.end);

                   }

              }

         }

         return;

    }

    -


    Regards, Robert

     

    On 29/10/2013 16:50, Caleb Dead wrote:

    Hi all, we have Phoenix Micromex 180 x-ray machine for PCB inspection at

    my workplace. Its software can greatly automate creation of new

    inspection programs for boards, but as an input, it requires data with

    component and pad coordinates. Two separate files are needed: 1. one

    which lists all components, their names, package type and coordinates.

    2. one which lists pad shapes and coordinates (relative to package's

    origin mark) for all package types used on a board. Here are shortened

    examples of needed file contents:

     

    Component file:

    1. Board dimensions: X size, Y size, layer height

    DIMENSIONS: 130 90 1.6

    1. RefDes    PackageID    X-shift    Y-shift    ROT    PinCount

    Side    MountType

    C7               27    30    50    0    2    TOP       THROUGH

    R7               26    121    51    0    2    TOP       THROUGH

    V18             19    23    40    0    3    TOP       SMD

    C58             14    99    7    90    2    TOP       SMD

    V30             16    6    63    0    2    TOP       SMD

    V15             19    23    20    0    3    TOP       SMD

    C8               27    30    45    0    2    TOP       THROUGH

    C43             13    104    77    0    2    TOP       SMD

     

    Pad coordinates file:

    PackageID    label    X-shift    Y-shift    Rotation    Width

    Height    Shape

    6    1    -0.65    0    0    0.9    0.7    RECTANGLE

    6    2    0.65    0    0    0.9    0.7    RECTANGLE

    15    A    -1.7    0    90    1.8    1.4    OBLONG

    15    K    1.7    0    90    1.8    1.4    OBLONG

    22    A1    -12.06    12.06    0    0.6    0    ROUND

    22    A10    -0.63    12.06    0    0.6    0    ROUND

    22    A11    0.63    12.06    0    0.6    0    ROUND

    22    A12    1.9    12.06    0    0.6    0    ROUND

    22    A13    3.17    12.06    0    0.6    0    ROUND

    27    1    -1.25    0    0    1.3    0    ROUND

    27    2    1.25    0    0    1.3    0    ROUND

     

    Obviously, the most "clean" solution would be to write my own ULP to

    generate the files. But that would be very time-consuming, so I want to

    try some alternative solutions before I do that. I figured the component

    file could be easily obtained by editing the standard Eagle partlist,

    for example by a relatively simple MS Excel macro. But I found no way

    how to obtain the pad data, or at least not in the format needed. I know

    there is export-ict-netlist-pad-coordinates.ulp, but this one exports

    the pad coordinates relative to the entire board, not relative to

    package's origin mark. And the information about pad shape is missing

    completely in it.

     

    So my question is: *is there some existing ULP which can produce such

    pad data*?

     

    Just in case you were interested, here is some info about our x-ray

    machine:

    http://www.ge-mcs.com/en/radiography-x-ray/micro-and-nanofocus/micromex-dxr-hd.html

     

    --

    To view any images and attachments in this post, visit:

    http://www.element14.com/community/message/93087#93087

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • autodeskguest
    autodeskguest over 12 years ago

    On 30/10/2013 4:50 a.m., Caleb Dead wrote:

    Hi all, we have Phoenix Micromex 180 x-ray machine for PCB inspection at

    my workplace. Its software can greatly automate creation of new

    inspection programs for boards, but as an input, it requires data with

    component and pad coordinates. Two separate files are needed: 1. one

    which lists all components, their names, package type and coordinates.

    2. one which lists pad shapes and coordinates (relative to package's

    origin mark) for all package types used on a board. Here are shortened

    examples of needed file contents:

     

    Component file:

    1. Board dimensions: X size, Y size, layer height

    DIMENSIONS: 130 90 1.6

    1. RefDes    PackageID    X-shift    Y-shift    ROT    PinCount

    Side    MountType

    C7               27    30    50    0    2    TOP       THROUGH

    R7               26    121    51    0    2    TOP       THROUGH

    V18             19    23    40    0    3    TOP       SMD

    C58             14    99    7    90    2    TOP       SMD

    V30             16    6    63    0    2    TOP       SMD

    V15             19    23    20    0    3    TOP       SMD

    C8               27    30    45    0    2    TOP       THROUGH

    C43             13    104    77    0    2    TOP       SMD

     

    Pad coordinates file:

    PackageID    label    X-shift    Y-shift    Rotation    Width

    Height    Shape

    6    1    -0.65    0    0    0.9    0.7    RECTANGLE

    6    2    0.65    0    0    0.9    0.7    RECTANGLE

    15    A    -1.7    0    90    1.8    1.4    OBLONG

    15    K    1.7    0    90    1.8    1.4    OBLONG

    22    A1    -12.06    12.06    0    0.6    0    ROUND

    22    A10    -0.63    12.06    0    0.6    0    ROUND

    22    A11    0.63    12.06    0    0.6    0    ROUND

    22    A12    1.9    12.06    0    0.6    0    ROUND

    22    A13    3.17    12.06    0    0.6    0    ROUND

    27    1    -1.25    0    0    1.3    0    ROUND

    27    2    1.25    0    0    1.3    0    ROUND

     

    Obviously, the most "clean" solution would be to write my own ULP to

    generate the files. But that would be very time-consuming, so I want to

    try some alternative solutions before I do that. I figured the component

    file could be easily obtained by editing the standard Eagle partlist,

    for example by a relatively simple MS Excel macro. But I found no way

    how to obtain the pad data, or at least not in the format needed. I know

    there is export-ict-netlist-pad-coordinates.ulp, but this one exports

    the pad coordinates relative to the entire board, not relative to

    package's origin mark. And the information about pad shape is missing

    completely in it.

     

    So my question is: *is there some existing ULP which can produce such

     

    Hi Caleb

     

    This is outwardly an easy ULP but challanges arise when producing files

    with the classifications used in your examples.

     

    Do you have the file specifications you can post here?

    Can you post real data files?

     

    Some of the questions that need answering, for clarification, are:

    What is the difference between rectangle and oblong?

    Is the measurement always millimeter or can that change?

    Is the width of the ROUND pad its diameter?

    If a device has both SMD pads and through hole mounting should it be a

    MountType SMD or THROUGH?

    Does Phoenix expect PackageID to be numeric?

    Is the file Tab delimited or comma delimited or something else?

    How does Phoenix handle odd shaped pads when the pin does not align with

    a SMD pad that seeds the odd shape? It contacts the associated polygon

    or wire. Does it even matter?

    Are the dimensions a rectangle( with thickness) the board fits into no

    matter what the board shape?

    Are the 'Side' options TOP and BOTTOM?

     

    In Eagle an SMD pad is a rectangle with  a portion of rounding. 100%

    rounding makes a square pad round. So each pad needs evaluating to

    determine which Phoenix classification it resides in. Eagle has

    elongation for Pads.  Elongation is only valid for shapes

    PAD_SHAPE_LONG and PAD_SHAPE_OFFSET and defines how many percent the

    long side of such a pad is longer than its small side.

     

    So the ULP needs to produce a file in Phoenix speak.

     

    I was able to create the data for the component file today but the Pad

    coordinates file needs the above questions answered to progress to that

     

    Warren

     

     

     

     

     

     

     

     

     

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 9 years ago

    In case anyone was interested, I tasked one of my students to create an ULP that does exactly this. It's named "export-phoenix-x-ray-cad-data.ulp" and can be found on Cadsoft's ULP download page.

     

    Perhaps more importantly, the same student also created free "ODB++ to Phoenix X-ray CAD data converter", which allows you to generate the Phoenix CAD data from many other PCB layout editors (Altium, Allegro, Orcad, Protel, Expedition...), as long as they have ODB++ export. The converter runs in Java, and you can download the latest version from his Github repository (you only need the ODBtoRTG.jar file):

     

    https://github.com/popelavojtech/ODB-to-Phoenix-X-ray-CAD-data-converter

     

    The converter itself is simple to use, but you may encounter several problems while generating the ODB++ data, particularly on Cadence products. So I created an English help page, which can be found here:

     

    http://odbconverter.xf.cz/

     

    The CAD data should work on all Phoenix/GE machines that run the Xact software. Currently, it's Phoenix Xaminer, Micromex and Nanomex, though there may be others I'm unaware of. Note that only Xact Pro version currently supports CAD data import.

     

    If you have any questions of feature requests, please contact the student directly. While I was his supervisor (and betatester), he is the sole creator of the converter itself.

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