• 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 make Assy Ref Des follow Ref Des Silk

Stats

  • State Verified Answer
  • Replies 8
  • Answers 1
  • Subscribers 161
  • Views 5503
  • Members are here 0
More Content

How to make Assy Ref Des follow Ref Des Silk

Sagetech
Sagetech over 1 year ago

Is there a way to set the Assy Ref Des to follow the Ref Des silk location and size? It seems there should be as it quickly gets old having to move the assy ref des to match the silk ref des location when there are hundreds of parts on a pcb.

  • Sign in to reply
  • Cancel
Parents
  • DavidJHutchins
    0 DavidJHutchins over 1 year ago

    The skill code below should move the assy text to the silk text locations, however I am on vacation & don't have access to licenses to test it...

    procedure(silk2assy()
    let((refdes layer orient silk assy Dx Dy)
    foreach( symbol axlDBGetDesign()->symbols
    if( (symbol->definition->type == "PACKAGE" || symbol->definition->type == "MECHANICAL") then
    if( !symbol->refdes || nindex(symbol->refdes,"*") then
    (refdes = nil)
    else
    (refdes = symbol->refdes)
    )
    if( symbol->component && refdes then
    if((((symbol->prop)->FIXED) == t)||((((symbol->component)->prop)->FIXED) == t) then
    axlMsgPut("skipping FIXED symbol %s" refdes)
    else
    (assy = nil)
    (silk = nil)
    foreach(Child symbol->children
    (layer = (Child->layer))
    if(((Child->objType) == "text") then
    if((symbol->isMirrored) then
    if((layer == "REF DES/SILKSCREEN_BOTTOM") then
    (silk = Child)
    (orient = axlTextOrientationCopy(Child))
    )
    if((layer == "REF DES/ASSEMBLY_BOTTOM") then
    (assy = Child)
    )
    else
    if((layer == "REF DES/SILKSCREEN_TOP") then
    (silk = Child)
    (orient = axlTextOrientationCopy(Child))
    )
    if((layer == "REF DES/ASSEMBLY_TOP") then
    (assy = Child)
    )
    )
    )
    )
    when(silk && assy
    axlTextOrientationCopy(assy orient)
    (Dx = xCoord(silk->xy) - xCoord(assy->xy))
    (Dy = yCoord(silk->xy) - yCoord(assy->xy))
    axlTransformObject(assy ?move list(Dx Dy))
    )
    )
    )
    )
    )
    )
    )
    axlCmdRegister("silk2assy" 'silk2assy)

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
Reply
  • DavidJHutchins
    0 DavidJHutchins over 1 year ago

    The skill code below should move the assy text to the silk text locations, however I am on vacation & don't have access to licenses to test it...

    procedure(silk2assy()
    let((refdes layer orient silk assy Dx Dy)
    foreach( symbol axlDBGetDesign()->symbols
    if( (symbol->definition->type == "PACKAGE" || symbol->definition->type == "MECHANICAL") then
    if( !symbol->refdes || nindex(symbol->refdes,"*") then
    (refdes = nil)
    else
    (refdes = symbol->refdes)
    )
    if( symbol->component && refdes then
    if((((symbol->prop)->FIXED) == t)||((((symbol->component)->prop)->FIXED) == t) then
    axlMsgPut("skipping FIXED symbol %s" refdes)
    else
    (assy = nil)
    (silk = nil)
    foreach(Child symbol->children
    (layer = (Child->layer))
    if(((Child->objType) == "text") then
    if((symbol->isMirrored) then
    if((layer == "REF DES/SILKSCREEN_BOTTOM") then
    (silk = Child)
    (orient = axlTextOrientationCopy(Child))
    )
    if((layer == "REF DES/ASSEMBLY_BOTTOM") then
    (assy = Child)
    )
    else
    if((layer == "REF DES/SILKSCREEN_TOP") then
    (silk = Child)
    (orient = axlTextOrientationCopy(Child))
    )
    if((layer == "REF DES/ASSEMBLY_TOP") then
    (assy = Child)
    )
    )
    )
    )
    when(silk && assy
    axlTextOrientationCopy(assy orient)
    (Dx = xCoord(silk->xy) - xCoord(assy->xy))
    (Dy = yCoord(silk->xy) - yCoord(assy->xy))
    axlTransformObject(assy ?move list(Dx Dy))
    )
    )
    )
    )
    )
    )
    )
    axlCmdRegister("silk2assy" 'silk2assy)

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
Children
  • Sagetech
    0 Sagetech over 1 year ago in reply to DavidJHutchins

    Thank you for the reply. I feel stupid - what do I do with this / how do I use it?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • DavidJHutchins
    0 DavidJHutchins over 1 year ago in reply to Sagetech

    Save the code into a file named 'silk2assy.il'

    Then in Allegro issue the command 'skill load "silk2assy.il"

    Then run the new command 'silk2assy'

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