• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Allegro X PCB Editor
  3. How to Extract Through Holes and Slots Seperately

Stats

  • Replies 9
  • Subscribers 160
  • Views 15913
  • Members are here 0
More Content

How to Extract Through Holes and Slots Seperately

ahood
ahood over 14 years ago

Hi

I am trying to extract a seperate count for Through Holes with Hole Type set as: Circle_Drill as opposed to those set as: Oval_Slot or Rectangle_Slot. Can anyone assist as I am not sure what the command to pull the Hole Type out is?

 Below is a section from my skill script that just selects all Through Hole Pads

 foreach(pin pins_list
 if(pin->isThrough == t then
  pin_xy = pin->xy
  padstack = car(pin->pads)->parent
  drill = padstack->drillDiameter
  pin_name = padstack->name
  plating = axlDBGetDrillPlating(pin_name)
  if(drill > 0 then
   if(rexMatchp("NON PLATED" plating) == nil then
    if(member(drill pdrill_list) == nil then
     pdrill_list = cons(drill pdrill_list)
    )
   else
    if(member(drill npdrill_list) == nil then
     npdrill_list = cons(drill npdrill_list)
    )
   )
   pin_count++

 

Regards

 

ahood

  • Sign in to reply
  • Cancel
  • eDave
    eDave over 14 years ago
    Try using: pin->definition ->holeType
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • ahood
    ahood over 14 years ago

    Hi Dave

     

    Thanks for the quick response, I tried something similar, but am not sure of the correct  "holeType" entry,

    neither of these below appear to work

     

    if(pin->isThrough == t && pin->definition->holeType->circle_drill == t then

     or 

    if(pin->isThrough == t && pin->definition->holeType == circle_drill then

    Regards

    ahood 

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Nagaraj Shanmu
    Nagaraj Shanmu over 14 years ago

    I did  a similar code for extracting the padstack info and below is the part of the code which u use for extracting the padstack and drill info

     

     

    axlPurgePadstacks('padstacks nil)

                axlPurgePadstacks('via nil)

                axlSetFindFilter(?enabled list("noall" "pins") ?onButtons list("noall" "pins"))

                pin_dbids = axlGetSelSet(axlAddSelectAll())

                axlClearSelSet(); clear all selection

                throu_pin_dbids = smd_pin_dbids =  list()

                foreach(pin_dbid pin_dbids

                if(pin_dbid->isThrough

               

                then

                throu_pin_dbids = cons(pin_dbid throu_pin_dbids)

                else

                smd_pin_dbids = cons(pin_dbid smd_pin_dbids)

                ); end for each pin type

     

    drilloutfile = outfile("drillchart.txt" "a")

     

    foreach(throu_pin_dbid throu_pin_dbids

                throu_pad_name = throu_pin_dbid->definition->name

                drill_size = throu_pin_dbid->definition->drillDiameter

                drill_type = throu_pin_dbid->definition->holeType

                plating = axlDBGetDrillPlating(throu_pad_name)

               

                drillFigureHeight = throu_pin_dbid->definition->drillFigureHeight

                drill_char = throu_pin_dbid->definition->drillChar

                drillFigureWidth = throu_pin_dbid->definition->drillFigureWidth

    drillFigureName = throu_pin_dbid->definition->drillFigureName

    fprintf(drilloutfile "%L,%L,%L,%L,%L,%L,%L,%L\n" throu_pad_name drill_size drill_type plating drillFigureHeight drill_char drillFigureWidth drillFigureName)

     

    ); end for each padstack information

     

     

    This throu_pin_dbid->definition->holeType  works for me to get the hole type.

     

    Good luck.

     

    Thanks,

    Nagaraj.



    • ATT00001.gif
    • View
    • Hide
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • eDave
    eDave over 14 years ago
    if(pin->isThrough && pin->definition->holeType == "circle_drill" then
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • ahood
    ahood over 14 years ago

    Hi Dave

    Great that works fine, my other issue is accessing the Slot Length amd Width dimensions

    Using the Extracta command they are: DRILL_HOLE_NAME (major dim) & DRILL_HOLE_NAME2 (minor dim).

    Is it possible to pull this information as I am doing using the Drill Diameter in a similar way, see below?

    padstack->drillDiameter, this gives the drill hole diameter. If I use this command on a slot, the slot width is used.

    The command padstack->drillHoleName I presume accesses the DRILL_HOLE_NAME2 field for all types of hole.

    Can you assist further?

     Regards,

    ahood

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
>
Cadence Guidelines

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information