找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 285|回复: 13
打印 上一主题 下一主题

Voidadd for silk

[复制链接]

5

主题

33

帖子

2317

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2317
跳转到指定楼层
1#
发表于 2016-12-19 21:53 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
axlCmdRegister("Voidadd" 'void_C)

procedure(void_C()

(prog ()


axlSetFindFilter(?enabled list("noall" "shapes")
                  ?onButtons list("noall" "shapes"))
                  
  _shape=axlGetSelSet(axlSelect(?prompt "Select shape ."))               
     shapeID = car(_shape)
when( _shape
     axlSetFindFilter(?enabled list("noall" "pins")
                  ?onButtons list("noall" "pins"))
  
     pinSlect = axlGetSelSet(axlSelect())
   
;axlClearSelSet()
foreach(pin pinSlect

            when( car(pinSlect)->objType="pin"
                s=5.0
                polydbid = axlPolyFromDB(car(pinSlect), ?layer car(car(pinSlect)->startEnd) ?padType 'REGULAR)
                exp_poly = (axlPolyExpand polydbid s 'ALL_ARC)
                a=car(exp_poly)->bBox
               

   
    if(axlGeoPointInShape(car(a) shapeID) && axlGeoPointInShape(cadr(a) shapeID)
       then  axlHighlightObject(pin)
       a=car(exp_poly)->bBox
                 ll  = car(a)
                ur  = cadr(a)
                llx = caar(a)
                lly = cadar(a)
                urx = caadr(a)
                ury = cadadr(a)
                path = axlPathStart(list(ll (urx:lly) ur (llx:ury) ))
                voidpath = axlPathLine(path, 0.0, ll)
               
               
                axlDBCreateVoid(shapeID voidpath)
          return(voidpath)
       )
)      
)      
)

axlDBCreateVoid(shapeID voidpath)

)
)   
目前只能是点中shape后再点击pin做出一块void,如何实现当选择shape时,程式自己判断shape上面的pin是否在上面,并自动全部做出void @[url=][url=mailto:void@@deargds]@deargds[/url][/url]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

117

主题

2352

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
13799

最佳敬业奖

推荐
发表于 2016-12-23 17:34 | 只看该作者
本帖最后由 deargds 于 2016-12-24 11:39 编辑

仅供参考
  1. procedure(void_C()

  2. (prog ()


  3. axlSetFindFilter(?enabled list("noall" "shapes")
  4.                   ?onButtons list("noall" "shapes"))
  5.                   
  6.   _shape=axlGetSelSet(axlSelect(?prompt "Select shape ."))               
  7.      shapeID = car(_shape)
  8. when( _shape
  9.      axlSetFindFilter(?enabled list("noall" "pins")
  10.                   ?onButtons list("noall" "pins"))
  11.   
  12.     axlVisibleLayer("PIN/TOP" t);此处可以根据SHAPE进行判断
  13.         axlClearSelSet()
  14.         pinSlect = axlGetSelSet(axlSingleSelectBox(shapeID->bBox))
  15.         axlClearSelSet()
  16.    
  17. ;axlClearSelSet()
  18. foreach(pin pinSlect
  19.         when( pin->objType="pin"
  20.                
  21.                 s=5.0
  22.                 polydbid = axlPolyFromDB(pin, ?layer car(pin->startEnd) ?padType 'REGULAR)
  23.                 println(polydbid)
  24.                 exp_poly = (axlPolyExpand polydbid s 'ALL_ARC)
  25.                 a=car(exp_poly)->bBox
  26.            
  27.                 axlHighlightObject(pin)
  28.                 a=car(exp_poly)->bBox
  29.                  ll  = car(a)
  30.                 ur  = cadr(a)
  31.                 llx = caar(a)
  32.                 lly = cadar(a)
  33.                 urx = caadr(a)
  34.                 ury = cadadr(a)
  35.                 voidpath = axlPathStart(list(ll (urx:lly) ur (llx:ury) ))
  36.                 voidpath = axlPathLine(voidpath, 0.0, ll)               
  37.                 axlDBCreateVoid(shapeID voidpath)
  38.                 shapeID = car(axlDBCreateCloseShape( shapeID))
  39. )      
  40. )      
  41. )
  42. )
  43. )
复制代码


点评

我想新增模式选择进行操作,请帮忙看看怎么修改,@deargds@XYX365 1.选择一个丝印层进行挖空 2.选择模式等待挖空 3.按钮执行  详情 回复 发表于 2017-1-9 11:13
感谢deargds  详情 回复 发表于 2016-12-23 18:07
谁画出这天地 又画下我和你

5

主题

33

帖子

2317

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2317
14#
 楼主| 发表于 2017-1-9 11:13 | 只看该作者
  1. axlCmdRegister("voidcreate" 'create_void)

  2. procedure(create_void()
  3. create_void_form()
  4. axlSetFindFilter(?enabled `("NOALL" "shapes") ?onButtons `("shapes"))
  5. axlClearSelSet()

  6. cline_list=nil
  7. while( axlSelect()
  8. ls=axlGetSelSet()
  9. a=car(ls)
  10. if( a->objType=="poly" then
  11. a=nthelem(2 parseString(a->layer "/"))
  12. else
  13. a=nthelem(2 parseString(car(a->startEnd) "/"))
  14. )
  15. if( a=="Silkscreen_Top" then
  16. layer=nthelem(2 layer_list)
  17. axlFormListSelect(fs "layer_name" layer)
  18. else
  19. if( a=="Silkscreen_Bottom" then
  20. layer=nthelem(length(layer_list)-1 layer_list)
  21. axlFormListSelect(fs "layer_name" layer)
  22. )
  23. )
  24. )
  25. axlFinishEnterFun()

  26. )



  27. defun( create_void_form ()
  28. create_void_file="./create_void_form.form"
  29. voidport=outfile(create_void_file "w")
  30. if( car(axlDBGetDesignUnits())=="mils" then
  31. s="mil"
  32. else
  33. s="mm"
  34. )
  35. if(voidport != nil then
  36. fprintf(voidport "FILE_TYPE=FORM_DEFN VERSION=2\n")
  37. fprintf(voidport "FORM\n")
  38. fprintf(voidport "FIXED\n")
  39. fprintf(voidport "PORT 40 60\n")
  40. fprintf(voidport "HEADER \"fanout BBvia\"\n")
  41. fprintf(voidport "TILE\n")
  42. fprintf(voidport "\n")

  43. fprintf(voidport "TEXT \"Select Layer\"\n")
  44. fprintf(voidport "TLOC 1 1\n")
  45. fprintf(voidport "ENDTEXT\n")
  46. fprintf(voidport "\n")

  47. fprintf(voidport "FIELD layer_name\n")
  48. fprintf(voidport "FLOC 10 1\n")
  49. fprintf(voidport "LIST \"\" 18 5\n")
  50. fprintf(voidport "ENDFIELD\n")
  51. fprintf(voidport "\n")


  52. fprintf(voidport "GROUP \"Select One Model\"\n")
  53. fprintf(voidport "GLOC 1 11\n")
  54. fprintf(voidport "GSIZE 20 7\n")
  55. fprintf(voidport "ENDGROUP\n")
  56. fprintf(voidport "\n")
  57. fprintf(voidport "FIELD ByPin\n")
  58. fprintf(voidport "FLOC 2 13\n")
  59. fprintf(voidport "CHECKLIST \" ByPin\" \"model\"\n")
  60. fprintf(voidport "ENDFIELD\n")
  61. fprintf(voidport "\n")
  62. fprintf(voidport "FIELD BySymbol\n")
  63. fprintf(voidport "FLOC 10 13\n")
  64. fprintf(voidport "CHECKLIST \" BySymbol\" \"model\"\n")
  65. fprintf(voidport "ENDFIELD\n")
  66. fprintf(voidport "\n")

  67. /* fprintf(voidport "FIELD xw\n")
  68. fprintf(voidport "FLOC 5 13\n")
  69. fprintf(voidport "REALFILLIN 6 3\n")
  70. fprintf(voidport "ENDFIELD\n")
  71. fprintf(voidport "\n")
  72. */
  73. fprintf(voidport "FIELD um\n")
  74. fprintf(voidport "FLOC 2 15\n")
  75. fprintf(voidport "REALFILLIN 6 6\n")
  76. fprintf(voidport "ENDFIELD\n")
  77. fprintf(voidport "\n")
  78. /*
  79. fprintf(voidport "TEXT \"W\"\n")
  80. fprintf(voidport "TLOC 13 13\n")
  81. fprintf(voidport "ENDTEXT\n")
  82. fprintf(voidport "\n")
  83. */
  84. fprintf(voidport "TEXT \"%s\"\n" s)
  85. fprintf(voidport "TLOC 13 15\n")
  86. fprintf(voidport "ENDTEXT\n")
  87. fprintf(voidport "\n")

  88. fprintf(voidport "FIELD add_void\n")
  89. fprintf(voidport "FLOC 1 19\n")
  90. fprintf(voidport "MENUBUTTON \"add void\" 15 3\n")
  91. fprintf(voidport "ENDFIELD\n")
  92. fprintf(voidport "\n")

  93. /* fprintf(voidport "FIELD add_L\n")
  94. fprintf(voidport "FLOC 1 22\n")
  95. fprintf(voidport "MENUBUTTON \"add line keepout\" 15 3\n")
  96. fprintf(voidport "ENDFIELD\n")
  97. fprintf(voidport "\n")
  98. */
  99. fprintf(voidport "ENDTILE\n")
  100. fprintf(voidport "ENDFORM\n")
  101. else
  102. printf("ERROR,can't create form file!")
  103. )
  104. close(voidport)
  105. ;axlFormCreate('fs clear_RF_file '("msgLines" 0) 'do_clear_RF nil nil )
  106. axlMiniStatusLoad( 'fs create_void_file 'do_create_void t )

  107. a=axlLayerGet("Board Geometry/Silkscreen_Top")
  108. s=""
  109. layer_list=nil
  110. while( s!=nil
  111. s=a->name
  112. layer_list=append1(layer_list s)
  113. s=a->nextLayer
  114. if( s!=nil then
  115. nextlayer=strcat("Board Geometry" "/" s)
  116. a=axlLayerGet(nextlayer)
  117. )
  118. )


  119. layer=nthelem(2 layer_list)
  120. axlFormListDeleteAll(fs "layer_name")
  121. axlFormSetField(fs "layer_name" layer_list)
  122. axlFormListSelect(fs "layer_name" layer)
  123. axlFormSetField(fs "xws" t)
  124. if( boundp('xs)==nil then
  125. xs="2.0"
  126. xum="5"
  127. )
  128. axlFormSetField(fs "xw" xs)
  129. axlFormSetField(fs "um" xum)
  130. axlFormDisplay(fs)
  131. if(isFile( create_void_file) then
  132. deleteFile(create_void_file)
  133. )
  134. )

  135. defun( do_create_void (voidport)
  136. case( voidport->curField
  137. ("layer_name"
  138. layer=voidport->curValue
  139. )
  140. ("xw"
  141. xs=voidport->curValue
  142. )
  143. ("um"
  144. xum=voidport->curValue
  145. )
  146. ("BySymbol"

  147. (prog ()


  148. axlSetFindFilter(?enabled list("noall" "shapes")
  149. ?onButtons list("noall" "shapes"))

  150. _shape=axlGetSelSet(axlSelect(?prompt "Select shape ."))
  151. shapeID = car(_shape)
  152. when( _shape
  153. axlSetFindFilter(?enabled list("noall" "symbols")
  154. ?onButtons list("noall" "symbols"))

  155. axlVisibleLayer("PIN/TOP" t)
  156. axlClearSelSet()
  157. symbolSelect = axlGetSelSet(axlSingleSelectBox(shapeID->bBox))
  158. ;symbolID = car(symbolSelect)
  159. axlClearSelSet()

  160. ;axlClearSelSet()
  161. foreach(symbol symbolSelect
  162. when( symbol->objType="symbol"
  163. sym_bBox = axlDBGetSymbolBodyExtent(symbol)
  164. mypath = axlPathStart( list(car(sym_bBox) caadr(sym_bBox):cadar(sym_bBox) cadr(sym_bBox) caar(sym_bBox):cadadr(sym_bBox)))
  165. mypath = axlPathLine(mypath, 0.0, car(sym_bBox))
  166. ss=0
  167. polydbid = axlPolyFromDB(mypath )
  168. println(polydbid)
  169. exp_poly = (axlPolyExpand polydbid ss 'ALL_ARC)
  170. a=car(exp_poly)->bBox

  171. ;axlHighlightObject(pin)
  172. ;a=car(exp_poly)->bBox
  173. ll = car(a)
  174. ur = cadr(a)
  175. llx = caar(a)
  176. lly = cadar(a)
  177. urx = caadr(a)
  178. ury = cadadr(a)



  179. voidpath = axlPathStart(list(ll (urx:lly) ur (llx:ury) ))
  180. voidpath = axlPathLine(voidpath, 0.0, ll)
  181. axlDBCreateVoid(shapeID voidpath)
  182. shapeID = car(axlDBCreateCloseShape( shapeID))
  183. )
  184. )
  185. )
  186. )
  187. )
  188. )
  189. )
复制代码
我想新增模式选择进行操作,请帮忙看看怎么修改,@deargds@XYX365
1.选择一个丝印层进行挖空
2.选择模式等待挖空
3.按钮执行



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

5

主题

33

帖子

2317

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2317
13#
 楼主| 发表于 2017-1-3 14:03 | 只看该作者
gdm0121 发表于 2017-1-3 12:00
请问这个skill调用的指令是什么?

axlCmdRegister("Voidadd" 'void_C)

21

主题

134

帖子

1182

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1182
12#
发表于 2017-1-3 12:00 | 只看该作者
请问这个skill调用的指令是什么?

点评

axlCmdRegister("Voidadd" 'void_C)  详情 回复 发表于 2017-1-3 14:03

0

主题

198

帖子

384

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
384
11#
发表于 2016-12-27 22:56 | 只看该作者
谢谢分享

47

主题

133

帖子

-1万

积分

未知游客(0)

积分
-14817
10#
发表于 2016-12-26 12:34 | 只看该作者
谢谢分享

5

主题

33

帖子

2317

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2317
9#
 楼主| 发表于 2016-12-23 18:07 | 只看该作者

0

主题

198

帖子

384

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
384
7#
发表于 2016-12-22 22:11 | 只看该作者
谢谢分享。。。

5

主题

33

帖子

2317

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2317
6#
 楼主| 发表于 2016-12-20 23:12 | 只看该作者
chrysalis 发表于 2016-12-20 13:43
那就把findfilter设置为pins,以shape的bbox框选一次,就可以得到一堆pin,再一个个判断筛选处理

可以写代码出来吗,我写的有问题,执行不出来啊

8

主题

468

帖子

2639

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2639
5#
发表于 2016-12-20 13:43 | 只看该作者

那就把findfilter设置为pins,以shape的bbox框选一次,就可以得到一堆pin,再一个个判断筛选处理

点评

可以写代码出来吗,我写的有问题,执行不出来啊  详情 回复 发表于 2016-12-20 23:12

5

主题

33

帖子

2317

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2317
4#
 楼主| 发表于 2016-12-20 11:56 | 只看该作者
chrysalis 发表于 2016-12-20 10:41
这个代码的功能是选择被shape覆盖的pin,然后以pin边缘扩展5mil在shape上面开窗吧?
有没有考虑到shape和p ...

从简单的开始

点评

那就把findfilter设置为pins,以shape的bbox框选一次,就可以得到一堆pin,再一个个判断筛选处理  详情 回复 发表于 2016-12-20 13:43

8

主题

468

帖子

2639

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2639
3#
发表于 2016-12-20 10:41 | 只看该作者
这个代码的功能是选择被shape覆盖的pin,然后以pin边缘扩展5mil在shape上面开窗吧?
有没有考虑到shape和pin都是异形时候的情况?

点评

从简单的开始  详情 回复 发表于 2016-12-20 11:56

93

主题

645

帖子

3395

积分

五级会员(50)

Rank: 5

积分
3395
2#
发表于 2016-12-20 09:48 | 只看该作者
Good idea
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-26 13:38 , Processed in 0.066783 second(s), 37 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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