Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 425|回复: 2

快速創建焊盤skill

[复制链接]
发表于 2024-1-25 13:22:58 | 显示全部楼层 |阅读模式
自己重新編譯幾樓科技的焊盤創建skill,放上碼源供大家參考

新增/改進功能
>  將pad儲存位置改為當前目錄下
>  新增建完pad後自動擺放
>  將可輸入小數點擴充至後5位

将这两个档案另存为标头指定的档案名称,并放到allegro的skill目录下

快捷指令 pad

  1. ;档名请命名为 create_pad.il

  2. axlCmdRegister("pad" 'pad_creater ?cmdType "general")

  3. procedure( pad_creater()
  4. let((form)

  5.         form = create_pad_createform()
  6.         create_pad_int_var(form)
  7.         create_pad_update_form(form)

  8. )
  9. )


  10. procedure( create_pad_createform()
  11. let((file form)
  12.         file = "~/pcbenv/create_pad_form.il"
  13.         when(boundp('createpad_form)
  14.                 when(axlIsFormType(eval('createpad_form))
  15.                         axlFormClose(eval('createpad_form))
  16.                 )
  17.         )
  18.         form = axlFormCreate('createpad_form file nil 'create_pad_CB t)
  19.         form
  20.        
  21. )
  22. )

  23. procedure( create_pad_int_var(form)
  24. let(()
  25.        
  26.         form->pop = ncons(nil)
  27.         form->pop->padtype = list(
  28.                 list("SMD PAD" "padtype_smd")
  29.                 list("Thru Pin" "padtype_hole")
  30.                 list("Thru Via" "padtype_via")
  31.         )
  32.         form->var = ncons(nil)
  33.         form->var->padtype = cadar(form->pop->padtype)
  34.        
  35.         form->var->rec_pad = t
  36.         form->var->unitsel = "mil"
  37.         form->var->pad_name = "smd100_80"
  38.         form->var->value_W = 100.
  39.         form->var->value_H = 80.
  40.         form->var->value_D1 = 40.
  41.         form->var->value_D2 = 60.
  42.         form->var->sold_val = 4
  43.        
  44.         form->var->cir_cir_hole = t
  45.        
  46.         form->vis = ncons(nil)
  47.         form->vis->rec_pad = 1
  48.         form->vis->cir_pad = 1
  49.         form->vis->obl_pad = 1
  50.         form->vis->cir_cir_hole = 0
  51.         form->vis->cir_Rec_hole = 0
  52.         form->vis->cir_oval_hole = 0
  53.         form->vis->oval_oval_hole = 0
  54.         form->vis->nth_hole = 0
  55.        
  56.         form->vis->W_name = 1
  57.         form->vis->value_W = 1
  58.         form->vis->H_name = 1
  59.         form->vis->value_H = 1
  60.         form->vis->D1_name = 0
  61.         form->vis->value_D1 = 0
  62.         form->vis->D2_name = 0
  63.         form->vis->value_D2 = 0
  64. t
  65. )
  66. )


  67. procedure( create_pad_CB(form)
  68. let((SavePath tt)
  69.         case(form->curField
  70.                 ("pad_name" | "value_W" | "value_H" | "value_D1" | "value_D2" | "sold_val"
  71.                         evalstring(sprintf(nil "form->var->%s = %L" form->curField form->curValue))
  72.                         when(form->curField == "pad_name"
  73.                                 form->var->pad_name = lowerCase(form->curValue)
  74.                         )
  75.                 )
  76.                 ("unitsel"
  77.                         form->var->value_W = axlMKSConvert(form->var->value_W form->var->unitsel form->curValue)
  78.                         form->var->value_H = axlMKSConvert(form->var->value_H form->var->unitsel form->curValue)
  79.                         form->var->value_D1 = axlMKSConvert(form->var->value_D1 form->var->unitsel form->curValue)
  80.                         form->var->value_D2 = axlMKSConvert(form->var->value_D2 form->var->unitsel form->curValue)
  81.                         form->var->sold_val = axlMKSConvert(form->var->sold_val form->var->unitsel form->curValue)
  82.                         form->var->unitsel = form->curValue
  83.                 )
  84.                 ("rec_pad" | "cir_pad" | "obl_pad"
  85.                         foreach(n0 list("rec_pad" "cir_pad" "obl_pad")
  86.                                 evalstring(sprintf(nil "form->var->%s = axlFormGetField(form %L)" n0 n0))
  87.                         )
  88.                 )
  89.                 ("cir_cir_hole" | "cir_Rec_hole" | "cir_oval_hole" | "oval_oval_hole" | "nth_hole"
  90.                         foreach(n0 list("cir_cir_hole" "cir_Rec_hole" "cir_oval_hole" "oval_oval_hole" "nth_hole")
  91.                                 evalstring(sprintf(nil "form->var->%s = axlFormGetField(form %L)" n0 n0))
  92.                         )
  93.                 )
  94.                 ("cpad"
  95.                
  96.                         SavePath = getWorkingDir()
  97.                         when(SavePath
  98.                                 tt = create_pad_CreateAction(form)
  99.                                 when(tt
  100.                                         axlOSFileMove(tt strcat(SavePath "/" tt))
  101.                                 )
  102.                         )
  103.                 )
  104.                 ("padtype"
  105.                         form->var->padtype = form->curValue
  106.                         form->var->sold_val = 4.
  107.                         form->var->rec_pad = t
  108.                         form->var->cir_pad = nil
  109.                         form->var->obl_pad = nil
  110.                         form->var->cir_cir_hole = t
  111.                         form->var->cir_Rec_hole = nil
  112.                         form->var->cir_oval_hole = nil
  113.                         form->var->oval_oval_hole = nil
  114.                         form->var->nth_hole = nil
  115.                        
  116.                         case(form->curValue
  117.                                 ("padtype_smd"
  118.                                         form->vis->rec_pad = 1
  119.                                         form->vis->cir_pad = 1
  120.                                         form->vis->obl_pad = 1
  121.                                         form->vis->cir_cir_hole = 0
  122.                                         form->vis->cir_Rec_hole = 0
  123.                                         form->vis->cir_oval_hole = 0
  124.                                         form->vis->oval_oval_hole = 0
  125.                                         form->vis->nth_hole = 0
  126.                                 )
  127.                                 ("padtype_hole"
  128.                                         form->vis->rec_pad = 0
  129.                                         form->vis->cir_pad = 0
  130.                                         form->vis->obl_pad = 0
  131.                                         form->vis->cir_cir_hole = 1
  132.                                         form->vis->cir_Rec_hole = 1
  133.                                         form->vis->cir_oval_hole = 1
  134.                                         form->vis->oval_oval_hole = 1
  135.                                         form->vis->nth_hole = 1
  136.                                 )
  137.                                 ("padtype_via"
  138.                                         form->vis->rec_pad = 0
  139.                                         form->vis->cir_pad = 0
  140.                                         form->vis->obl_pad = 0
  141.                                         form->vis->cir_cir_hole = 0
  142.                                         form->vis->cir_Rec_hole = 0
  143.                                         form->vis->cir_oval_hole = 0
  144.                                         form->vis->oval_oval_hole = 0
  145.                                         form->vis->nth_hole = 0
  146.                                         form->var->sold_val = 0.
  147.                                 )
  148.                         )
  149.                 )
  150.         )
  151.         unless(form->curField == ""
  152.                 create_pad_update_form(form)
  153.         )
  154. t
  155. )
  156. )


  157. procedure( create_pad_update_form(form)
  158. let((tt)
  159.        
  160.         form->var->W_name = "W"
  161.         form->var->H_name = "H"
  162.         case(form->var->padtype
  163.                 ("padtype_smd"
  164.                         form->vis->D1_name = 0
  165.                         form->vis->value_D1 = 0
  166.                         form->vis->D2_name = 0
  167.                         form->vis->value_D2 = 0
  168.                         if(form->var->cir_pad then
  169.                                 form->vis->H_name = 0
  170.                                 form->vis->value_H = 0
  171.                         else
  172.                                 form->vis->H_name = 1
  173.                                 form->vis->value_H = 1
  174.                         )
  175.                 )
  176.                 ("padtype_hole"
  177.                         form->vis->W_name = 1
  178.                         form->vis->value_W = 1
  179.                         form->vis->H_name = 1
  180.                         form->vis->value_H = 1
  181.                         form->vis->D1_name = 0
  182.                         form->vis->value_D1 = 0
  183.                         form->vis->D2_name = 0
  184.                         form->vis->value_D2 = 0
  185.                         cond(
  186.                                 (form->var->cir_cir_hole
  187.                                         form->var->W_name = "D0"
  188.                                         form->vis->H_name = 0
  189.                                         form->vis->value_H = 0
  190.                                         form->vis->D1_name = 1
  191.                                         form->vis->value_D1 = 1
  192.                                 )
  193.                                 (form->var->cir_Rec_hole
  194.                                         form->vis->H_name = 0
  195.                                         form->vis->value_H = 0
  196.                                         form->vis->D1_name = 1
  197.                                         form->vis->value_D1 = 1
  198.                                 )
  199.                                 (form->var->cir_oval_hole
  200.                                         form->vis->D1_name = 1
  201.                                         form->vis->value_D1 = 1
  202.                                 )
  203.                                 (form->var->oval_oval_hole
  204.                                         form->vis->D1_name = 1
  205.                                         form->vis->value_D1 = 1
  206.                                         form->vis->D2_name = 1
  207.                                         form->vis->value_D2 = 1
  208.                                 )
  209.                                 (form->var->nth_hole
  210.                                         form->vis->W_name = 0
  211.                                         form->vis->value_W = 0
  212.                                         form->var->H_name = "D1"
  213.                                 )
  214.                         )
  215.                 )
  216.                 ("padtype_via"
  217.                         form->var->W_name = "D0"
  218.                         form->var->H_name = "D1"
  219.                 )
  220.         )
  221.        
  222.         create_pad_RenamePad(form)
  223.         foreach(n0 form->vis->?
  224.                 tt = member(n0 form->vis)
  225.                 axlFormSetFieldVisible(form symbolToString(car(tt)) cadr(tt))
  226.         )
  227.         foreach(n0 form->pop->?
  228.                 tt = member(n0 form->pop)
  229.                 axlFormBuildPopup(form symbolToString(car(tt)) cadr(tt))
  230.         )
  231.         foreach(n0 form->var->?
  232.                 tt = member(n0 form->var)
  233.                 axlFormSetField(form symbolToString(car(tt)) cadr(tt))
  234.         )
  235.         handle = axlGRPDrwInit(form "pad_view" 'create_pad_GrawView)
  236.         handle->form = form
  237.         unless(member(form->curField list("pad_name" "unitsel" "value_W" "value_H" "value_D1" "value_D2" "sold_val" "cpad"))
  238.                 axlGRPDrwUpdate(handle)
  239.         )
  240.         axlFormAutoResize(form)
  241.         axlFormDisplay(form)

  242. )

  243. )


  244. procedure( create_pad_GrawView(handle)
  245. let((form s_xy xy_l xy_r)
  246.         form = handle->form
  247.         cond(
  248.                 (form->var->padtype == "padtype_smd"
  249.                         axlGRPDrwmapWindow(handle 200 200)
  250.                         putprop(handle "white" 'color)
  251.                         putprop(handle "filled" 'fill)
  252.                         axlGRPDrwRectangle(handle '(0 0) '(200 200))
  253.                         cond(
  254.                                 (form->var->rec_pad
  255.                                         putprop(handle "red" 'color)
  256.                                         axlGRPDrwRectangle(handle 40:60 160:140)
  257.                                         putprop(handle "black" 'color)
  258.                                         axlGRPDrwLine(handle list(40:50 40:30))
  259.                                         axlGRPDrwLine(handle list(160:50 160:30))
  260.                                         axlGRPDrwText(handle 90:30 "W")
  261.                                         axlGRPDrwLine(handle list(170:60 190:60))
  262.                                         axlGRPDrwLine(handle list(170:140 190:140))
  263.                                         axlGRPDrwText(handle 175:90 "H")
  264.                                 )
  265.                                 (form->var->cir_pad
  266.                             putprop(handle "red" 'color)
  267.                             axlGRPDrwCircle(handle 100:100 65)
  268.                                         putprop(handle "black" 'color)
  269.                                         axlGRPDrwLine(handle list(35:70 35:10))
  270.                                         axlGRPDrwLine(handle list(165:70 165:10))
  271.                                         axlGRPDrwText(handle 90:10 "W")
  272.                                 )
  273.                                 (form->var->obl_pad
  274.                                         putprop(handle "red" 'color)
  275.                                         axlGRPDrwCircle(handle 70:100 30)
  276.                                         axlGRPDrwRectangle(handle 70:70 130:130)
  277.                                         axlGRPDrwCircle(handle 130:100 30)
  278.                                         putprop(handle "black" 'color)
  279.                                         axlGRPDrwLine(handle list(40:60 40:30))
  280.                                         axlGRPDrwLine(handle list(160:60 160:30))
  281.                                         axlGRPDrwText(handle 90:40 "W")
  282.                                         axlGRPDrwLine(handle list(170:70 190:70))
  283.                                         axlGRPDrwLine(handle list(170:130 190:130))
  284.                                         axlGRPDrwText(handle 175:90 "H")
  285.                                 )
  286.                         )
  287.                 )
  288.                 (form->var->padtype == "padtype_hole"
  289.                         axlGRPDrwMapWindow(handle 200 200)
  290.                         putprop(handle "white" 'color)
  291.                         putprop(handle "filled" 'fill)
  292.                         axlGRPDrwRectangle(handle 0:0 200:200)
  293.                         cond(
  294.                                 (form->var->cir_cir_hole
  295.                                         putprop(handle "red" 'color)
  296.                                         axlGRPDrwCircle(handle 100:100 60)
  297.                                         putprop(handle "black" 'color)
  298.                                         axlGRPDrwCircle(handle 100:100 30)
  299.                                         axlGRPDrwLine(handle list(40:60 40:10))
  300.                                         axlGRPDrwLine(handle list(160:60 160:10))
  301.                                         axlGRPDrwText(handle 90:10 "D0")
  302.                                         axlGRPDrwLine(handle list(80:170 80:190))
  303.                                         axlGRPDrwLine(handle list(120:170 120:190))
  304.                                         axlGRPDrwText(handle 90:170 "D1")
  305.                                 )
  306.                                 (form->var->cir_Rec_hole
  307.                                         putprop(handle "red" 'color)
  308.                                         axlGRPDrwRectangle(handle 40:40 160:160)
  309.                                         putprop(handle "black" 'color)
  310.                                         axlGRPDrwCircle(handle 100:100 30)
  311.                                         axlGRPDrwLine(handle list(40:30 40:10))
  312.                                         axlGRPDrwLine(handle list(160:30 160:10))
  313.                                         axlGRPDrwText(handle 90:10 "W")
  314.                                         axlGRPDrwLine(handle list(80:170 80:190))
  315.                                         axlGRPDrwLine(handle list(120:170 120:190))
  316.                                         axlGRPDrwText(handle 90:170 "D1")
  317.                                 )
  318.                                 (form->var->cir_oval_hole
  319.                                         putprop(handle "red" 'color)
  320.                                         axlGRPDrwCircle(handle 60:100 30)
  321.                                         axlGRPDrwCircle(handle 140:100 30)
  322.                                         axlGRPDrwRectangle(handle 60:70 140:130)
  323.                                         putprop(handle "black" 'color)
  324.                                         axlGRPDrwCircle(handle 100:100 20)
  325.                                         axlGRPDrwLine(handle list(30:60 30:40))
  326.                                         axlGRPDrwLine(handle list(170:60 170:40))
  327.                                         axlGRPDrwText(handle 90:40 "W")
  328.                                         axlGRPDrwLine(handle list(180:70 200:70))
  329.                                         axlGRPDrwLine(handle list(180:130 200:130))
  330.                                         axlGRPDrwText(handle 180:90 "H")
  331.                                         axlGRPDrwLine(handle list(80:140 80:160))
  332.                                         axlGRPDrwLine(handle list(120:140 120:160))
  333.                                         axlGRPDrwText(handle 90:140 "D1")
  334.                                 )
  335.                                 (form->var->oval_oval_hole
  336.                                         putprop(handle "red" 'color)
  337.                                         axlGRPDrwCircle(handle 60:100 30)
  338.                                         axlGRPDrwCircle(handle 140:100 30)
  339.                                         axlGRPDrwRectangle(handle 60:70 140:130)
  340.                                         putprop(handle "black" 'color)
  341.                                         axlGRPDrwCircle(handle 80:100 20)
  342.                                         axlGRPDrwCircle(handle 120:100 20)
  343.                                         axlGRPDrwRectangle(handle 80:80 120:120)
  344.                                         axlGRPDrwLine(handle list(30:60 30:40))
  345.                                         axlGRPDrwLine(handle list(170:60 170:40))
  346.                                         axlGRPDrwText(handle 90:40 "W")
  347.                                         axlGRPDrwLine(handle list(180:70 200:70))
  348.                                         axlGRPDrwLine(handle list(180:130 200:130))
  349.                                         axlGRPDrwText(handle 180:90 "H")
  350.                                         axlGRPDrwLine(handle list(20:80 0:80))
  351.                                         axlGRPDrwLine(handle list(20:120 0:120))
  352.                                         axlGRPDrwText(handle 0:90 "D1")
  353.                                         axlGRPDrwLine(handle list(60:140 60:160))
  354.                                         axlGRPDrwLine(handle list(140:140 140:160))
  355.                                         axlGRPDrwText(handle 90:140 "D2")
  356.                                 )
  357.                                 (form->var->nth_hole
  358.                                         putprop(handle "black" 'color)
  359.                                         axlGRPDrwCircle(handle 100:100 30)
  360.                                         axlGRPDrwLine(handle list(140:70 160:70))
  361.                                         axlGRPDrwLine(handle list(140:130 160:130))
  362.                                         axlGRPDrwText(handle 140:90 "D1")
  363.                                 )
  364.                         )
  365.                 )
  366.                 (form->var->padtype == "padtype_via"
  367.                         axlGRPDrwMapWindow(handle 200 200)
  368.                         putprop(handle "white" 'color)
  369.                         putprop(handle "filled" 'fill)
  370.                         axlGRPDrwRectangle(handle 0:0 200:200)
  371.                         putprop(handle "blue" 'color)
  372.                         axlGRPDrwCircle(handle 100:100 60)
  373.                         putprop(handle "black" 'color)
  374.                         axlGRPDrwCircle(handle 100:100 30)
  375.                         axlGRPDrwLine(handle list(40:60 40:10))
  376.                         axlGRPDrwLine(handle list(160:60 160:10))
  377.                         axlGRPDrwText(handle 90:10 "D0")
  378.                         axlGRPDrwLine(handle list(170:70 190:70))
  379.                         axlGRPDrwLine(handle list(170:130 190:130))
  380.                         axlGRPDrwText(handle 170:90 "D1")
  381.                 )
  382.                
  383.         )
  384. )
  385. )


  386. procedure( create_pad_RenamePad(form)
  387. let((ttW ttH ttD1 ttD2)
  388.         case(form->var->padtype
  389.                 ("padtype_smd"
  390.                         if(form->var->unitsel == "mm" then
  391.                                 ttW = parseString(sprintf(nil "%.2f" form->var->value_W) ".")
  392.                                 ttH = parseString(sprintf(nil "%.2f" form->var->value_H) ".")
  393.                         else
  394.                                 ttW = parseString(sprintf(nil "%L" form->var->value_W) ".")
  395.                                 ttH = parseString(sprintf(nil "%L" form->var->value_H) ".")
  396.                         )
  397.                         cond(
  398.                                 (form->var->rec_pad
  399.                                         if(form->var->unitsel == "mm" then
  400.                                                 form->var->pad_name = sprintf(nil "smd%sm%s_%sm%s" car(ttW) cadr(ttW) car(ttH) cadr(ttH))
  401.                                         else
  402.                                                 form->var->pad_name = sprintf(nil "smd%s_%s" car(ttW) car(ttH))
  403.                                         )
  404.                                 )
  405.                                 (form->var->cir_pad
  406.                                         if(form->var->unitsel == "mm" then
  407.                                                 form->var->pad_name = sprintf(nil "ball%sm%s" car(ttW) cadr(ttW))
  408.                                         else
  409.                                                 form->var->pad_name = sprintf(nil "ball%s" car(ttW))
  410.                                         )
  411.                                 )
  412.                                 (form->var->obl_pad
  413.                                         if(form->var->unitsel == "mm" then
  414.                                                 form->var->pad_name = sprintf(nil "smd%sm%s_%sm%sob" car(ttW) cadr(ttW) car(ttH) cadr(ttH))
  415.                                         else
  416.                                                 form->var->pad_name = sprintf(nil "smd%s_%sob" car(ttW) car(ttH))
  417.                                         )
  418.                                 )
  419.                         )
  420.                 )
  421.                 ("padtype_hole"
  422.                         if(form->var->unitsel == "mm" then
  423.                                 ttW = parseString(sprintf(nil "%.2f" form->var->value_W) ".")
  424.                                 ttH = parseString(sprintf(nil "%.2f" form->var->value_H) ".")
  425.                                 ttD1 = parseString(sprintf(nil "%.2f" form->var->value_D1) ".")
  426.                                 ttD2 = parseString(sprintf(nil "%.2f" form->var->value_D2) ".")
  427.                         else
  428.                                 ttW = parseString(sprintf(nil "%L" form->var->value_W) ".")
  429.                                 ttH = parseString(sprintf(nil "%L" form->var->value_H) ".")
  430.                                 ttD1 = parseString(sprintf(nil "%.2f" form->var->value_D1) ".")
  431.                                 ttD2 = parseString(sprintf(nil "%.2f" form->var->value_D2) ".")
  432.                         )
  433.                         cond(
  434.                                 (form->var->cir_cir_hole
  435.                                         if(form->var->unitsel == "mm" then
  436.                                                 form->var->pad_name = sprintf(nil "pad%sm%scir%sm%sd" car(ttW) cadr(ttW) car(ttH) cadr(ttH))
  437.                                         else
  438.                                                 form->var->pad_name = sprintf(nil "pad%scir%sd" car(ttW) car(ttH))
  439.                                         )
  440.                                 )
  441.                                 (form->var->cir_Rec_hole
  442.                                         if(form->var->unitsel == "mm" then
  443.                                                 form->var->pad_name = sprintf(nil "pad%sm%ssq%sm%sd" car(ttW) cadr(ttW) car(ttH) cadr(ttH))
  444.                                         else
  445.                                                 form->var->pad_name = sprintf(nil "pad%ssq%sd" car(ttW) car(ttH))
  446.                                         )
  447.                                 )
  448.                                 (form->var->cir_oval_hole
  449.                                         if(form->var->unitsel == "mm" then
  450.                                                 form->var->pad_name = sprintf(nil "pad%sm%sx%sm%sob%sm%sd" car(ttW) cadr(ttW) car(ttH) cadr(ttH) car(ttD1) cadr(ttD1))
  451.                                         else
  452.                                                 form->var->pad_name = sprintf(nil "pad%sx%sob%sd" car(ttW) car(ttH) car(ttD1))
  453.                                         )
  454.                                 )
  455.                                 (form->var->oval_oval_hole
  456.                                         if(form->var->unitsel == "mm" then
  457.                                                 form->var->pad_name = sprintf(nil "pad%sm%sx%sm%sob%sm%sx%sm%sd" car(ttW) cadr(ttW) car(ttH) cadr(ttH) car(ttD1) cadr(ttD1) car(ttD2) cadr(ttD2))
  458.                                         else
  459.                                                 form->var->pad_name = sprintf(nil "pad%sx%sob%sx%sd" car(ttW) car(ttH) car(ttD1) car(ttD2))
  460.                                         )
  461.                                 )
  462.                                 (form->var->nth_hole
  463.                                         if(form->var->unitsel == "mm" then
  464.                                                 form->var->pad_name = sprintf(nil "npad%sm%scir" car(ttH) cadr(ttH))
  465.                                         else
  466.                                                 form->var->pad_name = sprintf(nil "npad%scir" car(ttH))
  467.                                         )
  468.                                 )
  469.                         )
  470.                 )
  471.                 ("padtype_via"
  472.                         if(form->var->unitsel == "mm" then
  473.                                 ttW = parseString(sprintf(nil "%.2f" form->var->value_W) ".")
  474.                                 ttH = parseString(sprintf(nil "%.2f" form->var->value_H) ".")
  475.                                 form->var->pad_name = sprintf(nil "via%sm%s_%sm%s" car(ttW) cadr(ttW) car(ttH) cadr(ttH))
  476.                         else
  477.                                 ttW = parseString(sprintf(nil "%L" form->var->value_W) ".")
  478.                                 ttH = parseString(sprintf(nil "%L" form->var->value_H) ".")
  479.                                 form->var->pad_name = sprintf(nil "via%s_%s" car(ttW) car(ttH))
  480.                         )
  481.                 )
  482.         )
  483. )
  484. )

  485. procedure( create_pad_CreateAction(form)
  486. let((ttW ttH ttD1 ttD2 ttS figure file)
  487.         file = nil
  488.         case(form->var->padtype
  489.                 ("padtype_smd"
  490.                         if(form->var->unitsel == "mm" then
  491.                                 ttW = axlMKS2UU(sprintf(nil "%.2f mm" form->var->value_W))
  492.                                 ttH = axlMKS2UU(sprintf(nil "%.2f mm" form->var->value_H))
  493.                                 ttS = axlMKS2UU(sprintf(nil "%.2f mm" form->var->sold_val))
  494.                         else
  495.                                 ttW = axlMKS2UU(sprintf(nil "%L mil" form->var->value_W))
  496.                                 ttH = axlMKS2UU(sprintf(nil "%L mil" form->var->value_H))
  497.                                 ttS = axlMKS2UU(sprintf(nil "%L mil" form->var->sold_val))
  498.                         )
  499.                         cond(
  500.                                 (form->var->rec_pad
  501.                                         figure = 'RECTANGLE
  502.                                         when(ttH == ttW
  503.                                                 figure = 'SQUARE
  504.                                         )
  505.                                 )
  506.                                 (form->var->cir_pad
  507.                                         figure = 'CIRCLE
  508.                                         ttH = ttW
  509.                                 )
  510.                                 (form->var->obl_pad
  511.                                         figure = 'OBLONG_X
  512.                                 )
  513.                         )
  514.             pad_list = cons(make_axlPadStackPad(?layer "TOP" ?type 'REGULAR       
  515.                     ?figure figure ?figureSize (ttW:ttH)) nil
  516.             )
  517.             pad_list = cons(make_axlPadStackPad(?layer "SOLDERMASK_TOP" ?type 'REGULAR
  518.                     ?figure figure ?figureSize (ttW+ttS):(ttH+ttS)) pad_list
  519.             )
  520.             pad_list = cons(make_axlPadStackPad(?layer "PASTEMASK_TOP" ?type 'REGULAR       
  521.                     ?figure figure ?figureSize (ttW:ttH)) pad_list
  522.             )
  523.             axlDBCreatePadStack(form->var->pad_name nil pad_list t)
  524.                         when(axlPadstackToDisk(form->var->pad_name)
  525.                        
  526.                         file = strcat(form->var->pad_name ".pad")
  527.                        
  528.                                 PLACEPIN = axlFormGetField(form "PLACEPIN")
  529.                                 if(axlDBGetDesign()->symbols == nil then
  530.                                 place_pin(form->var->pad_name)
  531.                                 else
  532.                                 axlMsgPut("This Place Mode only can use in dra file")
  533.                                 )
  534.                                         axlMsgPut("Create Done!")               
  535.                         )
  536.                 )
  537.                 ("padtype_hole" | "padtype_via"
  538.                         if(form->var->unitsel == "mm" then
  539.                                 ttW = axlMKS2UU(sprintf(nil "%.2f mm" form->var->value_W))
  540.                                 ttH = axlMKS2UU(sprintf(nil "%.2f mm" form->var->value_H))
  541.                                 ttD1 = axlMKS2UU(sprintf(nil "%.2f mm" form->var->value_D1))
  542.                                 ttD2 = axlMKS2UU(sprintf(nil "%.2f mm" form->var->value_D2))
  543.                                 ttS = axlMKS2UU(sprintf(nil "%.2f mm" form->var->sold_val))
  544.                         else
  545.                                 ttW = axlMKS2UU(sprintf(nil "%L mil" form->var->value_W))
  546.                                 ttH = axlMKS2UU(sprintf(nil "%L mil" form->var->value_H))
  547.                                 ttD1 = axlMKS2UU(sprintf(nil "%L mil" form->var->value_D1))
  548.                                 ttD2 = axlMKS2UU(sprintf(nil "%L mil" form->var->value_D2))
  549.                                 ttS = axlMKS2UU(sprintf(nil "%L mil" form->var->sold_val))
  550.                         )
  551.                         drill_data = make_axlPadStackDrill(?drillDiameter ttD1 ?figure 'CIRCLE
  552.                                 ?drillChar sprintf(nil "%L" ttD1) ?figureSize ttD1:ttD1 ?plating 'PLATED
  553.                         )
  554.                         cond(
  555.                                 (form->var->cir_cir_hole || form->var->padtype == "padtype_via"
  556.                                         figure = 'CIRCLE
  557.                                         ttH = ttW
  558.                                 )
  559.                                 (form->var->cir_Rec_hole
  560.                                         figure = 'SQUARE
  561.                                         ttH = ttW
  562.                                 )
  563.                                 (form->var->cir_oval_hole
  564.                                         figure = 'OBLONG_X
  565.                                 )
  566.                                 (form->var->oval_oval_hole
  567.                                         figure = 'OBLONG_X
  568.                             drill_data = make_axlPadStackDrill(?holeType 'OVAL_SLOT ?slotSize ttD2:ttD1
  569.                                     ?figure 'OBLONG_X ?drillChar sprintf(nil "%L" ttD1) ?plating 'PLATED
  570.                                   )
  571.                                 )
  572.                                 (form->var->nth_hole
  573.                                         drill_data = make_axlPadStackDrill(?drillDiameter ttD1 ?figure 'CIRCLE
  574.                                                 ?drillChar sprintf(nil "%L" ttD1) ?figureSize ttD1:ttD1 ?plating 'NON_PLATED
  575.                                         )
  576.                                         figure = 'CIRCLE
  577.                                         ttD1 = ttH
  578.                                         ttW = ttH
  579.                                 )
  580.                         )
  581.                         pad_list = cons(make_axlPadStackPad(?layer "TOP" ?type 'REGULAR       
  582.                                 ?figure figure ?figureSize ttW:ttH) nil
  583.                         )
  584.                         pad_list = cons(make_axlPadStackPad(?layer "DEFAULT INTERNAL" ?type 'REGULAR
  585.                                 ?figure figure ?figureSize ttW:ttH) pad_list
  586.                         )
  587.                         pad_list = cons(make_axlPadStackPad(?layer "BOTTOM" ?type 'REGULAR
  588.                                 ?figure figure ?figureSize ttW:ttH) pad_list
  589.                         )
  590.                         unless(ttS == 0
  591.                                 pad_list = cons(make_axlPadStackPad(?layer "SOLDERMASK_TOP" ?type 'REGULAR
  592.                                         ?figure figure ?figureSize (ttW+ttS):(ttH+ttS)) pad_list
  593.                                 )
  594.                                 pad_list = cons(make_axlPadStackPad(?layer "SOLDERMASK_BOTTOM" ?type 'REGULAR       
  595.                                         ?figure figure ?figureSize (ttW+ttS):(ttH+ttS)) pad_list
  596.                                 )
  597.                         )
  598.                         axlDBCreatePadStack(form->var->pad_name drill_data pad_list t)
  599.                         when(axlPadstackToDisk(form->var->pad_name)
  600.                        
  601.                                 file = strcat(form->var->pad_name ".pad")
  602.                                 axlMsgPut( "Pad create down" ) ;;;;;;<<

  603.                                 PLACEPIN = axlFormGetField(form "PLACEPIN")
  604.                                 if(axlDBGetDesign()->symbols == nil then
  605.                                 place_pin(form->var->pad_name)
  606.                                 else
  607.                                 axlMsgPut("This Place Mode only can use in dra file")
  608.                                 )
  609.                                 axlMsgPut("Create Done!")       
  610.                                
  611.                         )
  612.                 )
  613.         )
  614.         file
  615. )
  616. )

  617. procedure( place_pin(pin_name)

  618.                                 ScriptFileName=axlTempFile()
  619.                                 Script_File=axlDMOpenFile("Grid_SCRIPT", ScriptFileName, "w")

  620.                                 fprintf(Script_File "scriptmode +i\n\n")
  621.                                 fprintf(Script_File "setwindow pcb\n")
  622.                                 fprintf(Script_File "add pin\n")
  623.                                 fprintf(Script_File "setwindow form.mini\n")
  624.                                 fprintf(Script_File "FORM mini pad_browse\n")
  625.                                 fprintf(Script_File "fillin %L\n" pin_name)
  626.                                 fprintf(Script_File "setwindow pcb\n")

  627.                                 axlDMClose(Script_File)
  628.                                 sprintf(runScript,"replay %s",ScriptFileName)
  629.                                 axlShell(runScript)
  630.                                 deleteFile(ScriptFileName)
  631.                                 axlMsgPut(strcat(">> " pin_name " placed done!"))

  632. )
复制代码

以下为视窗文件
  1. #档名请命名为 create_pad_form.il

  2. FILE_TYPE=FORM_DEFN VERSION=2
  3. FORM
  4. FIXED
  5. PORT 60 35
  6. HEADER "Pad Creater"

  7. TILE

  8. GROUP "Pad Info:"
  9. GLOC 1 3
  10. GSIZE 37 25
  11. ENDGROUP


  12. TEXT "Pad Type"
  13. TLOC 3 1
  14. ENDTEXT
  15. POPUP <padtype_pop> "" ""
  16. FIELD padtype
  17. FLOC 11 1
  18. ENUMSET 8
  19. POP "padtype_pop"
  20. ENDFIELD

  21. TEXT "Unit"
  22. TLOC 23 1
  23. ENDTEXT
  24. POPUP <unitsel_pop> "mm" "mm","mil" "mil"
  25. FIELD unitsel
  26. FLOC 27 1
  27. ENUMSET 4
  28. POP "unitsel_pop"
  29. ENDFIELD


  30. FIELD pad_view
  31. THUMBNAIL
  32. FLOC 3 6
  33. FSIZE 15 10
  34. ENDFIELD


  35. FIELD rec_pad
  36. FLOC 20 7
  37. CHECKLIST "Rectangle" "smd"
  38. ENDFIELD

  39. FIELD cir_pad
  40. FLOC 20 10
  41. CHECKLIST "Circle" "smd"
  42. ENDFIELD

  43. FIELD obl_pad
  44. FLOC 20 13
  45. CHECKLIST "Oblone" "smd"
  46. ENDFIELD

  47. FIELD cir_cir_hole
  48. FLOC 20 6
  49. CHECKLIST "metal_round(Circle)" "hole"
  50. ENDFIELD

  51. FIELD cir_Rec_hole
  52. FLOC 20 8
  53. CHECKLIST "metal_round(Rec)" "hole"
  54. ENDFIELD

  55. FIELD cir_oval_hole
  56. FLOC 20 10
  57. CHECKLIST "metal_round(Oblone)" "hole"
  58. ENDFIELD

  59. FIELD oval_oval_hole
  60. FLOC 20 12
  61. CHECKLIST "metal_oblone(Oblone)" "hole"
  62. ENDFIELD

  63. FIELD nth_hole
  64. FLOC 20 14
  65. CHECKLIST "Not_metal_round" "hole"
  66. ENDFIELD

  67. TEXT "Pad Name:"
  68. TLOC 2 18
  69. ENDTEXT
  70. FIELD pad_name
  71. FLOC 10 18
  72. STRFILLIN 20 50
  73. ENDFIELD

  74. TEXT "W"
  75. TLOC 3 21
  76. INFO W_name 7
  77. ENDTEXT
  78. FIELD value_W
  79. FLOC 5 21
  80. REALFILLIN 5 5
  81. ENDFIELD


  82. TEXT "H"
  83. TLOC 12 21
  84. INFO H_name 7
  85. ENDTEXT
  86. FIELD value_H
  87. FLOC 14 21
  88. REALFILLIN 5 5
  89. ENDFIELD

  90. TEXT "D1"
  91. TLOC 3 24
  92. INFO D1_name 7
  93. ENDTEXT
  94. FIELD value_D1
  95. FLOC 6 24
  96. REALFILLIN 4 4
  97. ENDFIELD

  98. TEXT "D2"
  99. TLOC 12 24
  100. INFO D2_name 7
  101. ENDTEXT
  102. FIELD value_D2
  103. FLOC 15 24
  104. REALFILLIN 4 4
  105. ENDFIELD

  106. TEXT "SolderMask + "
  107. TLOC 21 21
  108. ENDTEXT
  109. FIELD sold_val
  110. FLOC 32 21
  111. REALFILLIN 4 4
  112. ENDFIELD

  113. FIELD cpad
  114. FLOC 27 30
  115. MENUBUTTON "Create" 10 4
  116. ENDFIELD

  117. FIELD PLACEPIN
  118. FLOC 15 31
  119. CHECKLIST "Place Pin"
  120. ENDFIELD

  121. ENDTILE
  122. ENDFORM
复制代码


发表于 2024-3-27 10:40:08 | 显示全部楼层
*Error* eval: unbound variable - \302\240    用不了哦
 楼主| 发表于 2024-4-12 11:35:50 | 显示全部楼层
sh_michael 发表于 2024-3-27 10:40
*Error* eval: unbound variable - \302\240    用不了哦

你没有去allegro.ilinit里新增
load("create_pad.il")

不知道allegro.ilinit在哪,可以于allegro内输入
echo $localenv
即可查看skill目录,例如: C:/SPB_Data
那skill主目录通常就是 C:/SPB_Data/pcbenv

> 也请将两个档案也放置于/pcbenv目录下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-4-27 23:26 , Processed in 0.149470 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表