Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17445|回复: 12

求助:如何判断PCB中是否有slot槽孔存在?

[复制链接]
发表于 2013-7-1 09:10:30 | 显示全部楼层 |阅读模式
我的思路是:
1.先选中PCB中所有的pad,不知道用什么函数可以实现?
2.再筛选出pad中,属性为slot孔,不知道pad是否有相关的属性可以作判断?
请高手指点,谢谢!
发表于 2013-7-1 10:02:12 | 显示全部楼层
可使用axlAddSelectAll() 函数选择所有焊盘。
pinPadName = axlDBGetPad(Pad_pin pinLayer "REGULAR")
Pad_pin->isThrough && pinPadName->figureName != "CIRCLE"
即所选择的孔为通孔且非圆形。
具体你可以查找资料。这也只是我能记得的地方,不一定正确。仅供参考
 楼主| 发表于 2013-7-1 11:25:48 | 显示全部楼层
vivienluo 发表于 2013-7-1 10:02
可使用axlAddSelectAll() 函数选择所有焊盘。
pinPadName = axlDBGetPad(Pad_pin pinLayer "REGULAR")
Pa ...

用Regular参数好像无法判断出是否为slot孔,有可能PAD的焊盘为椭圆,但孔为圆形的情况。
打开Pad_designer->Parameters->Drill/slot hole->Hole type选项应该是决定是否为slot孔的因素,但不知道如何获取该参数的内容,再作判断。

发表于 2013-7-5 21:48:04 | 显示全部楼层
xieh_17 发表于 2013-7-1 11:25
用Regular参数好像无法判断出是否为slot孔,有可能PAD的焊盘为椭圆,但孔为圆形的情况。
打开Pad_design ...

你还可以通过判断其size x ,size y,如果为槽孔,那么肯定x y大小是不一样的。
pinPadName->definition->drillFigureWidth != pinPadName->definition->drillFigureHeight
说明其大小是非圆形的。

以下是选择所有焊盘。然后再筛选所有通孔,再判读是否为异型孔。
axlVisibleLayer("PIN/TOP" t)
axlVisibleLayer("PIN/BOTTOM" t)
axlClearSelSet()
axlSetFindFilter( ?enabled list("noall" "pins") ?onButtons list("noall" "pins"))
axlAddSelectAll()
allPins = axlGetSelSet()
 楼主| 发表于 2013-7-9 10:50:26 | 显示全部楼层
vivienluo 发表于 2013-7-5 21:48
你还可以通过判断其size x ,size y,如果为槽孔,那么肯定x y大小是不一样的。
pinPadName->definition ...

感谢大大的回复!
通过size x ,size y,确实可以判断是否为slot孔,但是参数:drillFigureWidth和drillFigureHeight并不能得到size x, size y ,而是获得以下位置的数值,Drill/slot symblol,width , Height,这个数值当孔为圆形时,也可以设置为不一样的值,如图所示:
另外,我想请教一下是如何查到drillFigureWidth和drillFigureHeight这两个参数,我在所有帮忙文档中,都没有找到。
drillFigure.JPG
发表于 2013-7-10 00:05:49 | 显示全部楼层
xieh_17 发表于 2013-7-9 10:50
感谢大大的回复!
通过size x ,size y,确实可以判断是否为slot孔,但是参数:drillFigureWidth和drillFi ...

design = axlDBGetDesign()
pads = design->padstacks
用于获取板上所有的盘
至于其属性,可以指定一个dbid,然后同过"?"来获取其属性。
比如:
design->? 可以获取到design下所有的属性
design->??可以获取到所有属性及属性的值。(建议别用design来测试,因为其有太多属性了)

至于获取其slot属性的函数,目前我也不知道。
发表于 2013-7-10 00:28:26 | 显示全部楼层
貌似16.5版本的可以直接通过
pin->definition ->holeType获取其过孔类型。
你可以测试下。
可能15版本的不行。
发表于 2013-7-10 08:19:09 | 显示全部楼层
xieh_17 发表于 2013-7-9 10:50
感谢大大的回复!
通过size x ,size y,确实可以判断是否为slot孔,但是参数:drillFigureWidth和drillFi ...

你可以試試看下面

axlClearSelSet()
axlSetFindFilter(?enabled '("noall" "pins" "vias") ?onButtons '("noall" "pins" "vias"))
axlAddSelectAll()
lAllPins = axlGetSelSet()
tPadName = " "
foreach(dOne lAllPins
    when(tPadName != dOne->name
        tPadName = dOne->name
        bThrough = dOne->isThrough
        tPlating = axlDBGetDrillPlating(tPadName)
        ;bIsMech = dOne->isMech
        dPadstack = dOne->definition ;此為Padstack 裡面所有的資料
      nDrillDiameter = dPadstack->drillDiameter
        tDrillName = dPadstack->drillFigureName
        tDrillChar = dPadstack->drillChar
        nDrillWidth = dPadstack->drillFigureWidth
        nDrillHeight = dPadstack->drillFigureHeight
        lPad = dPadstack->pads
    )
)               
   
 楼主| 发表于 2013-7-10 11:17:04 | 显示全部楼层
vivienluo 发表于 2013-7-10 00:28
貌似16.5版本的可以直接通过
pin->definition ->holeType获取其过孔类型。
你可以测试下。

15.X版本不能获得pin->definition ->holeType这个参数。
 楼主| 发表于 2013-7-10 11:21:19 | 显示全部楼层
XYX365 发表于 2013-7-10 08:19
你可以試試看下面

axlClearSelSet()

这些都不是判断是否为slot孔的关键参数,在有些情况下有bug,其它主要是判断Hole type参数,或者Slot size X/Slot size Y参数才是比较准确的,不知XYX365大大知道如何获得这两个参数的吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-13 09:51 , Processed in 0.149371 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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