Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: vivienluo

[原创] 给过孔、通孔焊盘创建Anti Etch的SKILL

  [复制链接]
发表于 2014-1-23 15:08:16 | 显示全部楼层
padLayer = strcat("route keepout/" createLayer)
while(axlSelect() axlDBCreateShape( car(axlPolyExpand(axlPolyFromDB( car(axlGetSelSet())) clearance 'NONE )), t,padLayer,nil,nil ))


這個已經成功了 ,double mode的時候有點麻煩, 不好做routekeepout   考慮了一下,感覺電容的pin做routekeepout還有希望,做一個矩形就行, 具體怎麼寫希望指點
 楼主| 发表于 2014-1-23 15:35:17 | 显示全部楼层
mmmmyuitian 发表于 2014-1-23 15:08
padLayer = strcat("route keepout/" createLayer)
while(axlSelect() axlDBCreateShape( car(axlPolyExpa ...

其实还是对Poly的操作。你可以通过axlPolyOperation函数,使用`AND参数将Ploy合并。做三个Poly,每个PIN 做一个,然后在两个PIN之间的空间做一个。再合并在一起。
到时候写好的时候分享一下哈。。。
发表于 2014-1-23 15:42:08 | 显示全部楼层
兩個pin中間的shape 不好定位置,請教如何定位置,如果獲取兩pin的中間坐標,  和獲取pin的長和寬?分別用什麼函數
发表于 2014-1-23 15:54:05 | 显示全部楼层
中間一個shape如何獲取位置,和長寬,求函數
 楼主| 发表于 2014-1-23 16:07:16 | 显示全部楼层
mmmmyuitian 发表于 2014-1-23 15:54
中間一個shape如何獲取位置,和長寬,求函數

没有现成的函数,可结合两个PIN的参数,自己创建一个POLY
发表于 2014-1-23 16:50:50 | 显示全部楼层
        startPoint = car(padList)->xy
                           poly1_list=axlDBCreateShape( car(axlPolyExpand(axlPolyFromDB( car(axlGetSelSet())) clearance 'NONE )), t,padLayer,nil,nil ))
                        
                                endPoint = cadr(padList)->xy
                                poly2_list=axlDBCreateShape( car(axlPolyExpand(axlPolyFromDB( cadr(axlGetSelSet())) clearance 'NONE )), t,padLayer,nil,nil ))
                          
                                if(createLayer == "ALL"
                                then
                                        foreach(pad car(padList)->pads
                                                when(pad->type == "REGULAR" && pad->layer == "ETCH/TOP"
                                                padRadius = xCoord(cadr(pad->bBox))
                                         
                                                )
                                        );end foreach
                                else
                                        foreach(pad car(padList)->pads
                                                when(pad->type == "ANTI" && pad->layer == padLayer
                                                padRadius = xCoord(cadr(pad->bBox))
                                       
                                                )
                                        );end foreach
                                );end if
                           
                          
                                antiPath = axlDBCreateRectangle(list(startPoint endPoint) t)
                                poly3_list=axlDBCreateShape( car(axlPolyExpand(axlPolyFromDB(antiPath) clearance 'NONE )), t,padLayer,nil,nil ))
                                axlPolyOperation(poly1_list poly2_list poly3_list 'AND)
請教下第三塊怎麼做
发表于 2014-1-23 17:37:10 | 显示全部楼层
startPoint = car(padList)->xy
                           endPoint = cadr(padList)->xy
                                antiPath = axlDBCreateRectangle(list(startPoint endPoint) t)
                                axlDBCreateShape( car(axlPolyExpand(axlPolyFromDB(antiPath) clearance 'NONE )), t,padLayer,nil,n提取了2個pin的坐標,但是左下角和右上角的坐標 不知道怎麼提取?
 楼主| 发表于 2014-1-23 21:41:05 | 显示全部楼层
mmmmyuitian 发表于 2014-1-23 17:37
startPoint = car(padList)->xy
                           endPoint = cadr(padList)->xy
                                antiPath ...

你可以直接使用axlPolyFromDB获取PAD的外形。没必要自己去创建一个Poly
发表于 2014-1-24 08:48:26 | 显示全部楼层
請教下第三塊怎麼做
发表于 2014-1-24 16:15:12 | 显示全部楼层
怎麼使兩塊合併在一起
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-1 09:33 , Processed in 0.240588 second(s), 14 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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