在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 23582|回复: 35

[原创] 谁能帮我看看这个自动打孔的skill脚本错在哪里啊~(已解决正确code贴在脚本程序区)

[复制链接]
发表于 2012-2-23 17:03:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
本帖最后由 zhaon1129 于 2012-2-29 13:35 编辑

求大家帮帮忙~~~我没查出来
procedure(p()      
enterBox(?prompts      
list("enter a Bbox")      
?doneProc "pointdonehw"      
)    ;enterBox end   
)    ;p() end   
      
      
procedure(pointdonehw(w done pts)      
if(done then      
xl=xCoord(lowerLeft(pts))      
yl=yCoord(lowerLeft(pts))      
xu=xCoord(upperRight(pts))      
yu=yCoord(upperRight(pts))      
)    ;if end   
)    ;pointdonehw  end
      
      
procedure(hw()      
geDeselectAllFig()      
xl=0      
yl=0      
xu=0      
yu=0        
list_m1=list()      
list_m2=list()      
list_m3=list()      
list_m4=list()      
list_top=list()      
list_bottom=list()      
contact_xl=0      
contact_yl=0      
contact_xu=0      
bottom=0      
top=0      
      
p()      
load("1");这里load的内容为{leHiYank()  addPoint(xl:yl)  addPoint(xu:yu)  leHiPaste()  addPoint(xl-1000:yl)}      
geDeselectAllFig()      
      
geSingleSelectBox(hiGetCurrentWindow() nil list(xl-1000:y1 xu-1000:yu))      
      
w=geGetSelectedSet()      
      
for(i 0 (length(w)-1)      
if((nth(i  w)~>layerName=="M1"&&nth(i  w)~>purpose=="logic")!=nil      
then      
list_m1=nth(i  w)~>bBox      
)      
      
if((nth(i  w)~>layerName=="M2"&&nth(i  w)~>purpose=="logic")!=nil      
then      
list_m2=nth(i  w)~>bBox      
)      
      
if((nth(i  w)~>layerName=="M3"&&nth(i  w)~>purpose=="logic")!=nil      
then      
list_m3=nth(i  w)~>bBox      
)      
      
if((nth(i  w)~>layerName=="M4"&&nth(i  w)~>purpose=="logic")!=nil      
then      
list_m4=nth(i  w)~>bBox      
)      
      
)      
      
if(list_m1!=nil then   
list_bottom=list_m1      
bottom=1      
  else if(list_m2!=nil then     
  list_bottom=list_m2     
  bottom=2     
   else if(list_m3!=nil then   
   list_bottom=list_m3   
   bottom=3   
      
   else printf("no bottom layer")   
    )   
   )   
  )     
      
      
if(list_m4!=nil then      
list_bottom=list_m1      
top=4      
  else if(list_m3!=nil then     
  list_bottom=list_m3     
  bottom=3     
   else if(list_m2!=nil then   
   list_bottom=list_m2   
   bottom=2   
      
   else printf("no top layer")   
    )   
   )   
  )     
      
if(      
caar(list_bottom)>caar(list_top)      
then      
contact_xl=caar(list_bottom)      
else      
contact_xl=caar(list_top)      
)      
      
if(      
caadr(list_bottom)>caadr(list_top)      
then      
contact_yl=caadr(list_bottom)      
else      
contact_yl=caadr(list_top)      
)      
      
if(      
cadar(list_bottom)>cadar(list_top)      
then      
contact_yl=cadar(list_bottom)      
else      
contact_yl=cadar(list_top)      
)      
      
if(      
cadadr(list_bottom)>cadadr(list_top)      
then      
contact_yl=cadadr(list_bottom)      
else      
contact_yl=cadadr(list_top)      
)      
      
      
xabs=abs(contact_xu-contact_xl)      
yabs=abs(contact_yu-contact_yl)      
      
x=xabs/2+xl      
y=yabs/2+yl      
      
rows=float(truncate((yabs-0.14+1e-6)/0.22)+1)      
cols=float(truncate((xabs-0.14+1e-6)/0.22)+1)      
      
for(i bottom+1 top      
if(i==2 then      
leCreatContact(geGetEditRep() "V2_M1" x+1000:y "R0" 0.1 0.1 rows cols 0.22 0.22 "center" "center")      
)      
if(i==3 then      
leCreatContact(geGetEditRep() "V3_M2" x+1000:y "R0" 0.1 0.1 rows cols 0.22 0.22 "center" "center")      
)      
if(i==4 then      
leCreatContact(geGetEditRep() "V4_M3" x+1000:y "R0" 0.1 0.1 rows cols 0.22 0.22 "center" "center")      
      
)      
      
leHiDelete()      
)      
      
hiSetBindKey(Layout" "Alt<key>p" "hw")
发表于 2012-2-24 13:33:37 | 显示全部楼层
回复 1# zhaon1129


    发你的一个能用的,根据自己的工艺增添或修改前几行的LibList,LibSelect中对应的process即可。

autovia.rar

3.29 KB, 下载次数: 478 , 下载积分: 资产 -2 信元, 下载支出 2 信元

 楼主| 发表于 2012-2-24 14:33:49 | 显示全部楼层
回复 2# cxl666


    感谢这位同仁,这个我在网上也下载过。试验之后发现,这个脚本是实现自动划线然后在换线时自动将孔加上。

我是希望在我将线画好之后点击这两根线或者框选这两根线的交叉地方就会自动将孔打上,不需要画线这一步了。
发表于 2012-2-29 11:12:27 | 显示全部楼层
回复 3# zhaon1129
你的目的是点一下两层金属的地方,自动加上via,是吧。
可以用 “Create Contact"命令,一般快捷键是o,
选择”Auto contact",就可以了。
前提是这两条线都是path线才行。

   

                               
登录/注册后可看大图
 楼主| 发表于 2012-2-29 12:36:12 | 显示全部楼层
回复 4# oxo


    你说的只能打相邻两层金属,我的这个可以打多层,隔层
发表于 2012-3-2 08:56:13 | 显示全部楼层
我来学习,帮顶
发表于 2012-9-25 16:23:25 | 显示全部楼层
回复 5# zhaon1129

可以在间隔多层金属之间自动打孔
发表于 2012-12-1 17:30:11 | 显示全部楼层
谢谢了。。。。。。。。
发表于 2013-12-13 19:45:43 | 显示全部楼层
学习学习
发表于 2013-12-31 10:07:41 | 显示全部楼层
有没有修改好了的脚本啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-29 02:28 , Processed in 0.028040 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表