EDA365电子工程师网

标题: 『原创』公开源码——丝印压焊盘的SKILL源码 [打印本页]

作者: whh5118    时间: 2013-10-20 12:17
标题: 『原创』公开源码——丝印压焊盘的SKILL源码
下面是丝印压焊盘的检查源码。
说明确一点就是 Soldermast开窗上有silkscreen的东西。
源码不做注释,大家自己去理解吧。

  1. /*
  2. ------------------------------------------------------
  3. 函数:SilkOnSold()
  4. 输入:无
  5. 说明:白油压开窗
  6. 规范:焊盘Soldermast中不能有Silkscreen
  7. ------------------------------------------------------
  8. */
  9. defun(SilkOnSold ()
  10. let((SilkID VisList Silk_Vis PinID SymID)
  11.         Silk_Vis = '(       
  12.                 (nil class "PLAN" visible nil subclassinfo nil)
  13.                 (nil class "CONSTRAINT REGION" visible nil subclassinfo nil)
  14.                 (nil class "BOUNDARY" visible nil subclassinfo nil)
  15.                 (nil class "ANTI ETCH" visible nil subclassinfo nil)
  16.                 (nil class "VIA KEEPOUT" visible nil subclassinfo nil)
  17.                 (nil class "VIA CLASS" visible nil subclassinfo nil)
  18.                 (nil class "USER PART NUMBER" visible nil subclassinfo nil)
  19.                 (nil class "TOLERANCE" visible nil subclassinfo nil)
  20.                 (nil class "ROUTE KEEPOUT" visible nil subclassinfo nil)
  21.                 (nil class "ROUTE KEEPIN" visible nil subclassinfo nil)
  22.                 (nil class "REF DES" visible -1 subclassinfo (("ASSEMBLY_TOP" nil) ("ASSEMBLY_BOTTOM" nil) ("SILKSCREEN_TOP" t) ("SILKSCREEN_BOTTOM" t) ("DISPLAY_TOP" nil) ("DISPLAY_BOTTOM" nil)))
  23.                 (nil class "PIN" visible nil subclassinfo nil)
  24.                 (nil class "PACKAGE KEEPOUT" visible nil subclassinfo nil)
  25.                 (nil class "PACKAGE KEEPIN" visible nil subclassinfo nil)
  26.                 (nil class "PACKAGE GEOMETRY" visible -1 subclassinfo (("ASSEMBLY_TOP" nil) ("ASSEMBLY_BOTTOM" nil) ("PLACE_BOUND_TOP" nil) ("PLACE_BOUND_BOTTOM" nil) ("PIN_NUMBER" nil) ("PAD_STACK_NAME" nil) ("SILKSCREEN_TOP" t) ("SILKSCREEN_BOTTOM" t) ("BODY_CENTER" nil) ("SOLDERMASK_TOP" nil) ("SOLDERMASK_BOTTOM" nil) ("DISPLAY_TOP" nil) ("DISPLAY_BOTTOM" nil) ("MODULES" nil) ("DFA_BOUND_TOP" nil) ("DFA_BOUND_BOTTOM" nil) ("PASTEMASK_TOP" nil) ("PASTEMASK_BOTTOM" nil)))
  27.                 (nil class "ANALYSIS" visible nil subclassinfo nil)
  28.                 (nil class "MANUFACTURING" visible nil subclassinfo nil)
  29.                 (nil class "ETCH" visible nil subclassinfo nil)
  30.                 (nil class "DRC ERROR CLASS" visible nil subclassinfo nil)
  31.                 (nil class "DRAWING FORMAT" visible nil subclassinfo nil)
  32.                 (nil class "DEVICE TYPE" visible nil subclassinfo nil)
  33.                 (nil class "COMPONENT VALUE" visible nil subclassinfo nil)
  34.                 (nil class "BOARD GEOMETRY" visible -1 subclassinfo (("OUTLINE" nil) ("PLATING_BAR" nil) ("ASSEMBLY_NOTES" nil) ("TOOLING_CORNERS" nil) ("DIMENSION" nil) ("PLACE_GRID_TOP" nil) ("PLACE_GRID_BOTTOM" nil) ("TOP_ROOM" nil) ("BOTTOM_ROOM" nil) ("BOTH_ROOMS" nil) ("SWITCH_AREA_TOP" nil) ("SWITCH_AREA_BOTTOM" nil) ("SILKSCREEN_TOP" t) ("SILKSCREEN_BOTTOM" t) ("ASSEMBLY_DETAIL" nil) ("SOLDERMASK_TOP" nil) ("SOLDERMASK_BOTTOM" nil) ("OFF_GRID_AREA" nil) ("WB_GUIDE_LINE" nil) ("PANEL" nil) ("BOTTOM_DXF" nil) ("TOP_DXF" nil) ("NCROUTE_PATH" nil)))
  35.         )
  36.         List_Error = '()
  37.         VisList = axlVisibleGet()
  38.         axlVisibleSet(Silk_Vis)
  39.         axlSetFindFilter(?enabled '("lines" "shapes") ?onButtons '("lines" "shapes"))
  40.         axlAddSelectAll()
  41.         SilkID = axlGetSelSet()
  42.         axlClearSelSet()
  43.         axlVisibleSet(VisList)
  44.         SymID = axlDBGetDesign()->symbols
  45.         PinID = '()
  46.         foreach(n2 SymID
  47.                 when(n2->pins
  48.                         PinID = append(PinID n2->pins)
  49.                 )
  50.         )
  51.         foreach(n0 SilkID
  52.                 foreach(n1 PinID
  53.                         if(axlAirGap(n0 n1 "PIN/SOLDERMASK_TOP") then
  54.                                 List_Error = append1(List_Error n1->parent->refdes)
  55.                         )
  56.                 )
  57.         )

  58. )
  59. )
复制代码

作者: whh5118    时间: 2013-10-20 12:20
List_Error 为问题器件的位号。
作者: 笨笨猪    时间: 2014-1-3 14:24
谢谢分享
作者: newcomsky    时间: 2014-1-4 08:43
请问没命令输入??加载进去没什么反应呢?该怎么用?
作者: x68049    时间: 2014-1-6 11:01
請問怎麼使用??
作者: bingshuihuo    时间: 2014-5-3 03:45

請問怎麼使用??
作者: xiaoxiaosky    时间: 2014-5-14 09:59
tks a lot
作者: hukee    时间: 2014-5-16 15:48
那位能吧它封装成一个il文件使用呀。
作者: sunfuwen    时间: 2014-10-27 23:45
很好,已阅
作者: chuchiwolong    时间: 2014-11-12 14:08
楼主这方法有点低端啊,先把所有丝印全选,然后挨个跟每个pin对比检查丝印与pin之间的airGap。效率很低,就像冒泡排序似的。目测速度得几秒到十几秒才能出结果吧。
作者: qqtolm    时间: 2015-1-22 13:47
学习一下
作者: layout小二    时间: 2015-4-9 15:21

作者: hunterwang    时间: 2015-7-15 18:32
用Box方式选择
作者: selina_05    时间: 2015-7-19 13:43
试试,谢谢啦
作者: bashao    时间: 2015-8-2 23:36
太好啊
作者: liu2290    时间: 2015-8-3 10:22
挺好。。。
作者: 王开鑫55    时间: 2017-5-28 10:40
hunterwang 发表于 2015-7-15 18:32
用Box方式选择

你有这个方法的skill,发一份谢谢@1151615095@qq.com

作者: 渐行渐远渐无书    时间: 2017-6-5 17:32
赞一个,
作者: 王开鑫55    时间: 2017-7-25 17:34
chuchiwolong 发表于 2014-11-12 14:08
楼主这方法有点低端啊,先把所有丝印全选,然后挨个跟每个pin对比检查丝印与pin之间的airGap。效率很低,就 ...

我是把所有pin取出bbox,在一个个bbox判断是否有丝印,这样的结果发现20s左右,时间太长了。我猜测对每个pin进行bbox时间不短呀。这里的时间能压缩?或者整体的时间怎样压缩。
作者: 大魔王_h2999    时间: 2017-7-28 09:25
谢谢分享

作者: angelly    时间: 2017-8-24 17:46
谢谢分享
作者: 王开鑫55    时间: 2017-9-27 09:12
hunterwang 发表于 2015-7-15 18:32
用Box方式选择

box方法不准,会放大焊盘





欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2