• 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. skill program to create shape symbol

Stats

  • Replies 11
  • Subscribers 164
  • Views 19395
  • Members are here 0
More Content

skill program to create shape symbol

Ejlersen
Ejlersen over 15 years ago

Hi

Attached, find a small utility to help creating rectangular shapes with rounded corners for shape symbols to be used inside a pad

Usage: File, New, Shape symbol

Run the program "ns_spad"

Add width(x), height(y) and a radius in the dialog shown

Hit run to create the shape.

Have fun :-)

Ole

ns_spad.zip
  • Sign in to reply
  • Cancel
  • SKILLBILL
    SKILLBILL over 15 years ago
    Hi Ole

    Your program is great. It works very nice.
    Funny because lately i made similar one. Only diference between them is that yours is cute and mine is not :)
    Mine tho automaticaly opens allegro shape template and then promts for X Y and R :) then it makes three shapes.
    One for etch
    One for Paste mask
    and one for Solder mask

    Using the oportunity i would like to ask you something Ole.
    Ok we now have the shape generation. What about making pad ? Is it possible to create a padstack like the one I can get from Pad Designer?

    I have been trying to build a pad with the shapes created this way. I found a function that should work axlDBCreatePadStack but I cant generate .pad file
    There is a piece of code to that function in algroskill.pdf
    It may be that I dont understand the example. Am I doing something wrong ?
    Here is a piece of my code:

    Pad_list = cons(make_axlPadStackPad(?layer "TOP", ?type 'REGULAR, ?figure Shape_top_name ?figureSize x:y) nil)
    Pad_list = cons(make_axlPadStackPad(?layer "PASTEMASK_TOP", ?type 'REGULAR, ?figure Shape_pm_name ?figureSize pmX:pmY) Pad_list)
    Pad_list = cons(make_axlPadStackPad(?layer "SOLDERMASK_TOP", ?type 'REGULAR, ?figure Shape_sm_name ?figureSize smX:smY) Pad_list)
    printf("Pad_list = %L\n",Pad_list)
    Padstack = axlDBCreatePadStack("krzyhoo",nil, Pad_list nil)
    printf("axlDBCreatePadStack = %L", Padstack)
    axlPadStackToDisk("krzyhoo")

    with those printfs i know that a dbid was created .. but not a .pad file, and axlPadStackToDisk function doesnt worka at all....

    Do you have any ideas?

    PS. This is my second post... And i dont like the form of it ... why my text is so condensed... no Enters no tabs ... everything so close together ... I made it so hard to read...
    When i wrote it wasnt tlike this..
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • vramanan
    vramanan over 15 years ago

     Hi Skillbill

    are you using chrome, I find chrome behaving like this

    Use Firefox

    Seach Google or the forum for FPM (Foot Print Make)

    It has all the tools you need to create symbols and padstacks

    regarding surface mount pads yes I see there is a need for a utility to  quickly create padstacks

     I will investigate on this and let you know my findings

    regards

    Venkata

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • vramanan
    vramanan over 15 years ago

     Hi Skillbill

    the example file 

    %cdsroot%/share/pcb/examples/skill/dbcreate/pad.il

    will create 2 pad files 

    MY_PAD and SMT_PAD

    it will not create a physical PAD file but will create the pad definition inside the allegro database

    to see them go to Tools-> Padstack->Modify Design Padstack

    Now you should see those definitions

    you could either save them by Editing and invoking the padstack editor or File->Export->libraries and chooseonly padstack

    as mentioned in the help doc this will not work in the symbol editor

     

    I can see that using this you could create a quick SMT pad on the fly and replace an existing pad

     

    regards

    Venkata

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • SKILLBILL
    SKILLBILL over 15 years ago

    Hi vramanan

     

    This is great. Wonderfull. I made it, thx to your idea vramanan. I have created padstack.

    You are 100% right. With the help of axlDBCreatePadStack function padstack is virtualy created in allegro database.

    Export of the padstack allso works.

     

    Right now I am working on a way to automaticaly export this pad.

    Some time ago mr Ejlersen showed me a way to fill forms that pop up in allegro.

    Back then i was filling form that poped after nctape_full command

    and i used this code

    tmp_file = axlDMOpenFile("ALLEGRO_SCRIPT", "tmp", "w")
          fprintf(tmp_file "scriptmode +i +n +w +c\n")
          fprintf(tmp_file "setwindow pcb\n")
          fprintf(tmp_file "nctape_full\n")
          fprintf(tmp_file "setwindow form.nc_drill\n")
          fprintf(tmp_file "FORM nc_drill tape_name NC_Drill_%s.drl\n" filename)
          fprintf(tmp_file "FORM nc_drill auto_tool_select YES\n")
         fprintf(tmp_file "FORM nc_drill separate_tapes NO\n")
          fprintf(tmp_file "FORM nc_drill repeat_codes YES\n")
          fprintf(tmp_file "FORM nc_drill optimize YES\n")
          fprintf(tmp_file "FORM nc_drill execute\n")
          fprintf(tmp_file "FORM nc_drill close\n")
          fprintf(tmp_file "setwindow pcb\n")
          axlDMClose(tmp_file)
          axlShell("replay tmp")
          if( isFile( "tmp.scr") then deleteFile("tmp.scr"))
          printf("NC Drill created succesfully\n")

     

    now i tried to modify it a little but i dont know the name of the form dlib opens.

    This is what I have tried:

    tmp_file = axlDMOpenFile("ALLEGRO_SCRIPT", "tmp", "w")
             fprintf(tmp_file "scriptmode +i +n +w +c\n")
             fprintf(tmp_file "setwindow pcb\n")
             fprintf(tmp_file "dlib\n")    
             fprintf(tmp_file "setwindow form.export_libraries\n") ; this is where i am wrong forms name aint form.export_libraries
             fprintf(tmp_file "FORM export_libraries mechanical_symbols NO\n") ;checkbox set to NO but i am not sure to the name of those checkboxes. I used the names i found in help under "dlib"
             fprintf(tmp_file "FORM export_libraries package_symbols NO\n")
             fprintf(tmp_file "FORM export_libraries format_symbols NO\n")
             fprintf(tmp_file "FORM export_libraries shape_and_flash_symbols NO\n")
             fprintf(tmp_file "FORM export_libraries device_files NO\n")
             fprintf(tmp_file "FORM export_libraries padstacks YES\n")
             fprintf(tmp_file "FORM export_libraries no_library_dependencies NO\n")
             fprintf(tmp_file "FORM export_libraries execute\n")
             fprintf(tmp_file "FORM export_libraries close\n")
             fprintf(tmp_file "setwindow pcb\n")
             axlDMClose(tmp_file)
             axlShell("replay tmp")
            if( isFile( "tmp.scr") then deleteFile("tmp.scr"))

    it doesnt work...tho..

    If you have a clue of those params pls tell me. I feel i am so close :)

    Damn you are good vramanan :D

    I am realy happy and impressed

    Have a nice day

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Ejlersen
    Ejlersen over 15 years ago

    Hi SkillBill

    I'm not sitting in front of PCB Editor at the moment, but when I have difficulties with skill writing script files I normally do the following

    1. Record a new script where I do whatever I want to do.

    2. Carefully check that all my fprintf lines are correct - it only takes a very small spelling or syntax error to fail. Sometimes I even redo the script write commands in my skill program.

    3. Comment out the line "if( isFile( "tmp.scr") then deleteFile("tmp.scr"))" because then I can try running the script "tmp.scr" manually or do a file compare with my previously recorded script.

    4.  Remove +i +n +w +c from the line "fprintf(tmp_file "scriptmode +i +n +w +c\n")" since that may give better warnings as to what the issue could be.

    Hope this helps

    Ole

    • 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