• 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. Getting the number of vertice on a CLINE

Stats

  • Replies 3
  • Subscribers 158
  • Views 12996
  • Members are here 0
More Content

Getting the number of vertice on a CLINE

archive
archive over 18 years ago

Once in a while we get a CLINE that has a number of vertice in a straight line.  Sometimes they're wirebonds.  I'm trying to write some code that will determine the number of vertice on a cline. 
I already have the code to grab the clines that I want, I just need help working my way through them to find which ones have more than a beginning and an end point.
Also, when it finds one that meets the criteria, is there a "merge" command that will merge all of the segments into one long segment?  I could delete and replace the cline, but most of the time the cline has properties on it already.

 

Thanks,

Mark


Originally posted in cdnusers.org by MarkG
  • Sign in to reply
  • Cancel
  • archive
    archive over 18 years ago

    Mark, the following is an excerpt from a routine I put together to draw a circle at every vertice on a CLINE, specifically for package design where CLINES may have jogs at very small angles making them very difficult to locate. You should be able to adopt it to your needs. If you would like to full program please send an E-mail directly to djs@cadence.com.
    ; Add the figures to the Jog_Check subclass
    Design=axlDBGetDesign()
    foreach(Net Design->nets
    foreach(Branch Net->branches
    foreach(Child Branch->children
    if(
    Child->objType=="path"
    &&
    Child->layer==sprintf(dummy "ETCH/%s" Check_Layer)
    ||
    Child->layer==sprintf(dummy "CONDUCTOR/%s" Check_Layer) then
    foreach(Segment Child->segments
    if(Segment->isEtch==t then
    Start_End=car(Segment->startEnd)
    axlDBCreateCircle(list(car(Start_End):car(cdr(Start_End)) Figure_Diameter), 0, "manufacturing/jog_check")
    Start_End=car(cdr(Segment->startEnd))
    axlDBCreateCircle(list(car(Start_End):car(cdr(Start_End)) Figure_Diameter), 0, "manufacturing/jog_check")
    ); end if Segment...
    ); end foreach Segment...
    ); end if Child...
    ); end foreach Child...
    ); end foreach Branch...
    ); end foreach Net...
    ); end when
    ); end Show


    Originally posted in cdnusers.org by djs
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • archive
    archive over 18 years ago

    Thanks djs,
    I'll mess around with it.

    Mark


    Originally posted in cdnusers.org by MarkG
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • archive
    archive over 18 years ago

    Hi djs,
    I've been messing around with SKILL and found something cool that is simple and helps in my situation.  The variable WB_Obj is the selected wire bond object. 

    numofsegs=(WB_Obj->nSegs-1)

    So in my code, I have:

    if(WB_Obj->nSegs > 1
       then....

    Take care,
    Mark


    Originally posted in cdnusers.org by MarkG
    • 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