PCB论坛网

 找回密码
 注册
查看: 2061|回复: 16

SCRIPT 求救

[复制链接]
发表于 2008-12-31 17:47:00 | 显示全部楼层 |阅读模式

见图片,写一个封边加板边的Script,红色为出错的提示,X是GUI输入的X方向的长度变量,见下面的程序,当程序执行到这里的时候,就出现这样的错误(X的值502.006也出来了),但是如果再执行,就没有问题了,程序能正常运行,也就是说这个程序,只要新开了GENESIS,第一次执行都会这样,出现后,再怎么执行都OK了,哪位大侠来指点下啊。贴部分代码

set gui_out = /tmp/gui_out.$$
set gui_in = /tmp/gui_in.$$
echo "WIN 200 200" > $gui_in
echo "FG 000000" >>$gui_in
echo "BG 328068" >>$gui_in
echo "LABEL this panel gui:" >>$gui_in
echo "TEXT wenzi WENZI :" >>$gui_in
echo "TEXT lengthx X-- :" >>$gui_in
echo "TEXT lengthy Y-- :" >>$gui_in
echo "CLABEL OK" >>$gui_in
/GENESIS/E91/ALL/GUI $gui_in >$gui_out
source $gui_out
set mkx = `echo "scale=10;$lengthx + 2.006" | bc`
set mky = `echo "scale=10;$lengthy + 2.006" | bc`
set zzz = `echo "scale=10;$lengthx/2+ 3" | bc`
COM add_pad,attributes=no,x=-5.08,y=-5.08,symbol=donut_r5000x4000,\
polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,\
yscale=1
COM add_pad,attributes=no,x=-5.08,y=0,symbol=donut_r5000x4000,\
polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,\
yscale=1
COM add_pad,attributes=no,x=-2.0066,y=-2.0066,symbol=donut_r1500x1200,\
polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,\
yscale=1
COM add_pad,attributes=no,x=$mkx,y=-2.0066,symbol=donut_r1500x1200,\
polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,\
yscale=1   (到了$MKX这个变量就开始报错)

另外  set mkx = `echo "scale=10;$lengthx + 2.006" | bc`  这个格式代表具体的每个词含义还请高手能解释下,小弟新学的


本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2009-1-1 07:38:00 | 显示全部楼层

你的变量定义无误,有两方面的可能性导致以上结果,其一你用的是WINXP系统,其二,你用的D版GEN。你可以进入程序后直接试一下DRILL TOOL MANAGER中的USER PARAMETERS项,第一次运行后也会有此提示,我得出的结论是BC计算器的问题,但与别人交流时,别人不同类型的机器没有出现这种情况。

[此贴子已经被作者于2009-1-1 9:15:09编辑过]
回复 支持 反对

使用道具 举报

发表于 2009-1-1 14:22:00 | 显示全部楼层

今天心情好,教你一招.以后脚本卡住了找我.发到salemso@163.com即可

用以下的方法,可解决Invalid keyboard code specified

原理:将脚本的第一个计算值,设一临时变量.如果是Invalid keyboard code specified

就切掉这个东东.脚本照常运行OK

set mkx = `echo "scale=10;$lengthx + 2.006" | bc`

set error_yesno = `echo $mkx | grep "Invalid keyboard code specified" `
if ($#error_yesno == "5") then
set tmp_silk = `echo "$tmp_silk" | cut -c 32- `
endif

bc是计算用的,scale上精确到小数点第几位

回复 支持 反对

使用道具 举报

发表于 2009-1-1 14:23:00 | 显示全部楼层

set mkx = `echo "scale=10;$lengthx + 2.006" | bc`

set error_yesno = `echo $mkx | grep "Invalid keyboard code specified" `
if ($#error_yesno == "5") then
set mkx = `echo "$mkx" | cut -c 32- `
endif

回复 支持 反对

使用道具 举报

发表于 2009-1-1 16:26:00 | 显示全部楼层

楼上解析有误

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-1 20:19:00 | 显示全部楼层

mine579

说的完全正确啊。。真的是这样啊

salem  大哥的,小弟要试试啊。。我还发了个镜像字的问题,就在本页的贴中,希望能不惜解答,拜谢

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-4 20:06:00 | 显示全部楼层

salem  大哥,这样弄了是没有报错了,太有才了啊

回复 支持 反对

使用道具 举报

发表于 2009-1-4 23:12:00 | 显示全部楼层

set error_yesno = `echo $mkx | grep "Invalid keyboard code specified" `

看的不是很明白啊!

能否讲解下error_yesno是个什么 变量呢? grep的是什么东西?

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-6 01:08:00 | 显示全部楼层
太高深了啊。。只懂点皮毛啊
回复 支持 反对

使用道具 举报

发表于 2009-1-6 11:29:00 | 显示全部楼层

[此贴子已经被作者于2009-1-6 11:47:03编辑过]

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|小黑屋|手机版|PCB设计论坛|EDA论坛|PCB论坛网 ( 沪ICP备05006956号-1 )

GMT+8, 2024-5-16 10:34 , Processed in 0.129270 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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