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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: zhaon1129

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

[复制链接]
发表于 2012-2-27 10:01:31 | 显示全部楼层
不清楚你geSingleSelectBox(hiGetCurrentWindow() nil list(xl-1000:y1 xu-1000:yu))中减去1000是干什么。
我以为你只是要在两层金属线的交叉处打孔,只是想自定义间距而已,因工艺不同,在你程序基础上改了些参数和我不太理解的地方,实测仅可用于任意两层邻接金属。
 楼主| 发表于 2012-2-27 10:10:32 | 显示全部楼层
回复 11# babmb


    请问你改的是哪里?我可以看看试试吗,我的这个code也是别人帮我写的
我只是在调试使用。目的就是在两层临接金属打孔的。不是要打一个,而是根据得到的
线宽尽可能多的打孔。
能否将你改好的发给我试一下?谢谢
发表于 2012-2-27 10:32:29 | 显示全部楼层
)   
   )     
        
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_xu=caadr(list_bottom)      
else      
contact_xu=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_yu=cadadr(list_bottom)      
else      
contact_yu=cadadr(list_top)      
)      
        
        
xabs=contact_xu-contact_xl   
yabs=contact_yu-contact_yl   
        
x=xabs/2+contact_xl      
y=yabs/2+contact_yl      



rows=truncate(yabs/0.22)     
cols=truncate(xabs/0.22)
        
for(i bottom+1 top      
if(i==2 then      
leCreateContact(geGetEditRep() "V2_M1" x:y "R0" 0.1 0.1 rows cols 0.22 0.22 "center" "center")      
)      
if(i==3 then      
leCreateContact(geGetEditRep() "V3_M2" x:y "R0" 0.1 0.1 rows cols 0.22 0.22 "center" "center")      
)      
if(i==4 then      
leCreateContact(geGetEditRep() "V4_M3" x:y "R0" 0.1 0.1 rows cols 0.22 0.22 "center" "center")      
        
)      
        
;leHiDelete()      
)      
        
hiSetBindKey(Layout" "Alt<key>p" "hw")
发表于 2012-2-27 10:39:47 | 显示全部楼层
额,竟然没有复制完。下面这个才是。因为工艺不同,相应名字也不一样,没发我改过的,直接在你的代码上修改了相应的部分,应该可以直接用。没调试过,有问题再讨论。
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
contact_yu=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_top=list_m4      
top=4      
   else if(list_m3!=nil then     
   list_top=list_m3     
   top=3     
    else if(list_m2!=nil then   
    list_bottom=list_m2   
    top=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_xu=caadr(list_bottom)      
else      
contact_xu=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_yu=cadadr(list_bottom)      
else      
contact_yu=cadadr(list_top)      
)      
        
        
xabs=contact_xu-contact_xl   
yabs=contact_yu-contact_yl   
        
x=xabs/2+contact_xl      
y=yabs/2+contact_yl      



rows=truncate(yabs/0.22)     
cols=truncate(xabs/0.22)
        
for(i bottom+1 top      
if(i==2 then      
leCreateContact(geGetEditRep() "V2_M1" x:y "R0" 0.1 0.1 rows cols 0.22 0.22 "center" "center")      
)      
if(i==3 then      
leCreateContact(geGetEditRep() "V3_M2" x:y "R0" 0.1 0.1 rows cols 0.22 0.22 "center" "center")      
)      
if(i==4 then      
leCreateContact(geGetEditRep() "V4_M3" x:y "R0" 0.1 0.1 rows cols 0.22 0.22 "center" "center")      
        
)      
        
;leHiDelete()      
)      
        
hiSetBindKey(Layout" "Alt<key>p" "hw")
 楼主| 发表于 2012-2-27 11:25:12 | 显示全部楼层
回复 14# babmb


    非常感谢啊!~~根据你修改的内容已经调试好了,结果也出来了。我只是根据结果又稍作了一点修改,我再贴一下吧,有需要的人会用到。

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
contact_yu=0      
bottom=0      
top=0      
        
p()      
;load("1");这里load的内容为{leHiYank()  addPoint(xl:yl)  addPoint(xu:yu)  leHiPaste()  addPoint(xl-1000:yl) cancelEnterFun()}  这里需要将大括号里得内容新建一个文件,用来load。     
;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_top=list_m4      
top=4      
   else if(list_m3!=nil then     
   list_top=list_m3     
   top=3     
    else if(list_m2!=nil then   
    list_bottom=list_m2   
    top=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_xu=caadr(list_bottom)      
else      
contact_xu=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_yu=cadadr(list_bottom)      
else      
contact_yu=cadadr(list_top)      
)      
        
        
xabs=contact_xu-contact_xl   
yabs=contact_yu-contact_yl   
        
x=xabs/2+contact_xl      
y=yabs/2+contact_yl      



rows=truncate(yabs/0.22)     
cols=truncate(xabs/0.22)
        
for(i bottom+1 top      
if(i==2 then      
leCreateContact(geGetEditRep() "V2_M1" x+1000:y "R0" 0.1 0.1 rows cols 0.22 0.22 "center" "center")      
)      
if(i==3 then      
leCreateContact(geGetEditRep() "V3_M2" x+1000:y "R0" 0.1 0.1 rows cols 0.22 0.22 "center" "center")      
)      
if(i==4 then      
leCreateContact(geGetEditRep() "V4_M3" x+1000:y "R0" 0.1 0.1 rows cols 0.22 0.22 "center" "center")      
        
)      
        
leHiDelete()  ;这句还是需要留着的,应该是为了删除load里面的结果   
)      
        
hiSetBindKey(Layout" "Alt<key>p" "hw")
发表于 2012-3-6 17:39:43 | 显示全部楼层
呵呵,今天刚好看到哦,正需要,谢谢楼主!
发表于 2012-6-24 12:03:44 | 显示全部楼层
楼主好人 babmb好人
发表于 2012-6-27 16:48:59 | 显示全部楼层
正需要 謝謝樓主
发表于 2012-8-27 15:56:46 | 显示全部楼层
请问不同的工艺下,需要改那些内容?
发表于 2012-10-15 15:39:57 | 显示全部楼层
好文,好人,顺便同问“请问不同的工艺下,需要改那些内容?”
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-29 02:07 , Processed in 0.031211 second(s), 6 queries , Gzip On, Redis On.

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