找回密码
 注册
关于网站域名变更的通知
查看: 3756|回复: 37
打印 上一主题 下一主题

請各位大神幫幫忙寫CHECK裸銅SKILL

[复制链接]
  • TA的每日心情
    慵懒
    2019-11-18 15:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    #
    发表于 2022-1-27 08:49 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x
    本帖最后由 Pkron 于 2022-1-27 08:52 编辑

    有沒有skill可以幫忙檢查SOLDERMASK層別檢查

    一塊SOLDERMASK有兩種訊號的時候被檢查出來DRC的小SKILL幫手
    如圖

    拜託我可以貢獻全部48個貢獻直


    2022-01-27_08-45-59.png (15.32 KB, 下载次数: 7)

    2022-01-27_08-45-59.png
  • TA的每日心情
    无聊
    2026-3-11 15:08
  • 签到天数: 95 天

    [LV.6]常住居民II

    推荐
    发表于 2022-1-27 11:08 | 只看该作者
    本帖最后由 db-_- 于 2022-1-28 09:07 编辑

    给你写了一个。
    只能检查“BOARD GEOMETRY/SOLDERMASK和PACKAGE GEOMETRY/SOLDERMASK”层的shape与“ETCH/top和ETCH/bottom”层的shape和cline的重合。
    希望能帮到你。
    我没有详细测试,有问题请反馈。
    命令chksmn

    check_solder_of_mul_net.rar (1.55 KB, 下载次数: 20)
    未加密。源码


    点评

    db大:剛剛嘗試了~大致上很好使用!需要請您在幫忙2點增加 1.除了給座標旁邊可以顯示net name嗎? 2.2個不同net shapes在同一處soldermask也可以抓出來嗎?不需要過濾!  详情 回复 发表于 2022-1-27 12:06
    非常感謝您!!!我試試看  详情 回复 发表于 2022-1-27 11:44
  • TA的每日心情
    无聊
    2026-3-11 15:08
  • 签到天数: 95 天

    [LV.6]常住居民II

    推荐
    发表于 2023-10-12 16:52 | 只看该作者
    很久以前写的了,效率有点低,但是多等会儿还是能检查出来的,有能力的可以自己优化一下。

    v1.4.1 显示via层,修增length计数问题
    v1.4 增加via
    check_solder_of_mul_net.rar (1.62 KB, 下载次数: 10)

    1. ;;v1.4.1 显示via层,修增length计数问题
    2. ;;v1.4 增加via
    3. ;;v1.3 修正net网络名显示
    4. ;;v1.2 显示所有重叠的元素
    5. ;;v1.1 增加shape比对,增加net名/当前层显示
    6. ;;v1.0 初稿
    7. ;;check_solder_of_mul_net.il
    8. ;;指令: chksmn
    9. ;;功能:检测一个solder是否覆盖多个net(cline、shape、via)
    10. ;;描述:v1.4.1
    11. ;;  

    12. axlCmdRegister("chksmn" 'dbCheckSolderOfMulNet)

    13. procedure(dbCheckSolderOfMulNet()
    14. (let (visList tmpFile res1 res2)

    15.         visList = axlVisibleGet()        ;保存视图
    16.         tmpFile = axlTempFile()
    17.         res1 = _dbCheckSolderOfMulNet("TOP" tmpFile)
    18.         res2 = _dbCheckSolderOfMulNet("BOTTOM" tmpFile)
    19.         if(res1 || res2 then
    20.                 axlVisibleDesign(nil)                ;关闭全部层
    21.                 axlVisibleLayer("ETCH/TOP" t)        ;开启这层
    22.                 axlVisibleLayer("VIA CLASS/TOP" t)        ;开启这层
    23.                 axlVisibleLayer("BOARD GEOMETRY/SOLDERMASK_TOP" t)                ;开启这层
    24.                 axlVisibleLayer("PACKAGE GEOMETRY/SOLDERMASK_TOP" t)        ;开启这层
    25.                 axlVisibleLayer("ETCH/BOTTOM" t)        ;开启这层
    26.                 axlVisibleLayer("VIA CLASS/BOTTOM" t)        ;开启这层
    27.                 axlVisibleLayer("BOARD GEOMETRY/SOLDERMASK_BOTTOM" t)                ;开启这层
    28.                 axlVisibleLayer("PACKAGE GEOMETRY/SOLDERMASK_BOTTOM" t)        ;开启这层
    29.                 axlUIWExpose(axlUIViewFileCreate(tmpFile "Solder of multi net CHECK" t))        ;显示文件
    30.                 axlTempFileRemove(tmpFile)        ;删除临时文件
    31.         else
    32.                 axlVisibleSet(visList)        ;还原视图
    33.                 printf("No intersectional shapes, vias or lines.")
    34.         )
    35.         axlVisibleUpdate(nil)                ;显示生效
    36. ))

    37. procedure(_dbCheckSolderOfMulNet(layer tmpFile)
    38. (let (i j clinePoly clinePolys shapePoly intersectionPoly pf pt1 pt2 etchLayer viaLayer boardLayer packageLayer res pointList netCnt)
    39.        
    40.         pf = outfile(tmpFile "a")                ;创建临时文件,并打开       

    41.         ;;获取所有cline,shape,via
    42.         etchLayer = strcat("ETCH/" layer)
    43.         viaLayer = strcat("VIA CLASS/" layer)
    44.        
    45.         axlVisibleDesign(nil)                ;关闭全部层
    46.         axlVisibleLayer(etchLayer t)        ;开启这层
    47.         axlVisibleLayer(viaLayer t)        ;开启这层
    48.         axlClearSelSet()                ;清空选择
    49.         axlSetFindFilter(?enabled `("noall" "CLINES" "SHAPES" "VIAS") ?onButtons `("noall" "CLINES" "SHAPES" "VIAS"))        ;设置find过滤器
    50.         axlAddSelectAll()        ;添加所有元素       
    51.         foreach(i axlGetSelSet()        ;所有cline/shapes转成多边形
    52.                 clinePoly = axlPolyFromDB(i)
    53.                 foreach(j clinePoly
    54.                         clinePolys = cons(j clinePolys)        ;存储cline的所有poly
    55.                 )
    56.         )
    57.        
    58.         ;;获取所有shape
    59.         boardLayer = strcat("BOARD GEOMETRY/SOLDERMASK_" layer)
    60.         packageLayer = strcat("PACKAGE GEOMETRY/SOLDERMASK_" layer)
    61.         axlVisibleDesign(nil)                ;关闭全部层
    62.         axlVisibleLayer(boardLayer t)        ;开启这层
    63.         axlVisibleLayer(packageLayer t)                ;开启这层
    64.         axlClearSelSet()                ;清空选择
    65.         axlSetFindFilter(?enabled `("noall" "SHAPES") ?onButtons `("noall" "SHAPES"))        ;设置find过滤器
    66.         axlAddSelectAll()        ;添加所有元素
    67.         axlVisibleDesign(nil)                ;关闭全部层
    68.         axlVisibleLayer(etchLayer t)        ;开启这层
    69.         axlVisibleLayer(viaLayer t)        ;开启这层
    70.         axlSetFindFilter(?enabled `("noall" "CLINES" "SHAPES" "VIAS") ?onButtons `("noall" "CLINES" "SHAPES" "VIAS"))        ;设置find过滤器
    71.         fprintf(pf "%s LAYER:\n" layer)
    72.         foreach(i axlGetSelSet()
    73.                 shapePoly = axlPolyFromDB(i)        ;每个shape转成多边形
    74.                 intersectionPoly = axlPolyOperation(shapePoly clinePolys 'AND)        ;shape与cline进行与操作
    75.                 when(length(intersectionPoly) >= 2        ;数量大于2,就检查net名
    76.                         axlClearSelSet()
    77.                         pointList = nil
    78.                         foreach(j intersectionPoly
    79.                                 axlAddSelectPoint(caar(j->vertices))        ;有重叠的地方,通过选择来确定坐标和网络名
    80.                                 pointList = cons(caar(j->vertices) pointList)        ;坐标存起来
    81.                         )
    82.                         pointList = reverse(pointList)
    83.                         when(length(unique(axlGetSelSet()~>net~>name)) != 1        ;如果所有重叠的cline和shape网络名一样就不处理
    84.                                 netCnt = 1
    85.                                 foreach(j axlGetSelSet()
    86.                                         fprintf(pf "net%d: %-20s %-20s " netCnt sprintf(nil "%L" car(pointList))  j->net->name || "nil")        ;打印网络名和坐标
    87.                                         pointList = cdr(pointList)        ;坐标同步
    88.                                         netCnt++
    89.                                         res = t        ;返回值,决定是否找到重叠点
    90.                                 )
    91.                                 fprintf(pf "\n")
    92.                         )
    93.                 )
    94.                
    95.         )
    96.         fprintf(pf "\n")
    97.         axlClearSelSet()                ;清空选择
    98.         close(pf)                ;关闭文件
    99.         res
    100. ))
    复制代码


    头像被屏蔽
  • TA的每日心情
    开心
    2025-1-23 15:05
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    推荐
    发表于 2022-2-10 01:33 | 只看该作者
    提示: 作者被禁止或删除 内容自动屏蔽

    该用户从未签到

    34#
    发表于 2023-10-12 17:42 | 只看该作者
    感谢大佬的修改,牛牛牛!!
  • TA的每日心情
    开心
    2026-4-17 15:53
  • 签到天数: 99 天

    [LV.6]常住居民II

    33#
    发表于 2023-9-22 15:56 | 只看该作者
    謝謝分享謝謝

    该用户从未签到

    32#
    发表于 2022-11-2 20:39 | 只看该作者
    db大大您好
    我下載了您這skill覺得非常實用

    但是我想請您幫忙在增加check via的部分

    這樣一來就更完善了 謝謝您的熱情幫忙

    感謝

    “来自电巢APP”

    该用户从未签到

    31#
    发表于 2022-10-29 18:59 | 只看该作者
    請問也下載來學習 謝謝樓主與db大大

    “来自电巢APP”

  • TA的每日心情
    开心
    2023-1-16 15:50
  • 签到天数: 43 天

    [LV.5]常住居民I

    30#
    发表于 2022-9-29 11:25 | 只看该作者
    非常感謝DB大大,剛好也遇到相同問題,很實用的SKILL!
  • TA的每日心情
    无聊
    2026-3-11 15:08
  • 签到天数: 95 天

    [LV.6]常住居民II

    29#
    发表于 2022-2-11 19:19 | 只看该作者
    我还以为你们两是同事呢
  • TA的每日心情
    无聊
    2026-3-11 15:08
  • 签到天数: 95 天

    [LV.6]常住居民II

    28#
    发表于 2022-2-10 09:27 | 只看该作者

    4楼。不知道为啥下载附件这么贵噢。
  • TA的每日心情
    无聊
    2026-3-11 15:08
  • 签到天数: 95 天

    [LV.6]常住居民II

    27#
    发表于 2022-2-10 09:24 | 只看该作者
    aarom 发表于 2022-2-10 01:33
    朋友拿三個SKILL問我.
    1.SOLDERMASK有兩種訊號的時候被檢查.
    有坐標,能直接到位置,沒DRC標誌,沒違規說明, ...

    1、我没画过PCB,第一条没看明白。

    2、文字置中好弄。但是源码不是我写的,在别人的基础上修改需要花点时间看看别人的代码。

    3、测试点避让,加上pin的过滤即可。

    该用户从未签到

    26#
    发表于 2022-2-10 08:31 | 只看该作者
    db-_- 发表于 2022-1-27 16:46
    测试的太细致了。强!V1.3已同步上传

    V1.3已同步上传  版本在哪里?

    点评

    4楼。不知道为啥下载附件这么贵噢。  详情 回复 发表于 2022-2-10 09:27
  • TA的每日心情
    无聊
    2026-3-11 15:08
  • 签到天数: 95 天

    [LV.6]常住居民II

    23#
    发表于 2022-1-27 16:46 | 只看该作者
    测试的太细致了。强!V1.3已同步上传
  • TA的每日心情
    慵懒
    2019-11-18 15:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    22#
     楼主| 发表于 2022-1-27 15:13 | 只看该作者
    db-_- 发表于 2022-1-27 15:11
    id db-_-
    看看能不能加上~

    line id:pkron0512

    或是給我您的!!

    line 或 skype

    感謝!
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2026-4-19 00:18 , Processed in 0.109375 second(s), 31 queries , Gzip On.

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

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

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