Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8636|回复: 8

前段时间应LEADER要求写个出bom的批处理,代码运行有疑问,请大家帮忙分析一下。

[复制链接]
发表于 2013-5-18 21:18:37 | 显示全部楼层 |阅读模式
本帖最后由 chuankay 于 2013-6-20 11:25 编辑

事出有因——
由于brd文件数量几百个,因此花了一个下午写个批处理的代码,就是打开一个文件夹下的brd文件,敲个命令就会出当前文件下所有的报告(当然也可以是其他路径的文件)。代码是用函数命令行scr脚本文件结合实现功能的,出现错误我也不清楚。

问题1——当在CIW环境执行‘bom命令时出现如下错误:
QQ截图20130518210725.png
出现错误,如下,window;text是脚本中的语句。
W- Cannot exit current applicationE- Can't find window; text


问题2——当在development环境下执行’bom命令后
QQ截图20130518210853.png
竟然无错,并可出xls报表,谁能解释一下是什么原因?
目前代码也就将就用了 只是代码命令变为 开发包模式的 ‘skill bom

代码——

axlCmdRegister("bom" , 'bom)
defun(bom ()
        suff = nil
        file_name = nil
        xls_name = nil
        file_list = nil
        file_list1 = nil

        file_list = getDirFiles("./")
        foreach(db file_list
                suff = last(parseString( db "." ))
                if( car(suff) == "brd"
                        then
                        file_list1 = tconc(file_list1 db)
                )
        )        
        file_list1 = car(file_list1)               
        foreach(db0 file_list1
                curren_design = axlCurrentDesign()
                curren_design = buildString(list(curren_design ".brd") "")
                unless(db0 == curren_design
                                axlOpenDesignForBatch( db0  "wf")
                                file_name = axlCurrentDesign()
                                xls_name  = buildString( list("fillin" " " "\"" file_name "." "xls" "\"" "\n") "")
                                script_write(xls_name)
                                axlShell("replay ./123.scr" )
                                ;deleteFile(Path)
                )
        );foreach
);defun

defun( script_write (xls_name)
Path = "./123.scr"
        pOut = outfile(Path "w")
        fprintf( pOut "version 16.5\n")
        fprintf( pOut "setwindow pcb\n")
        fprintf( pOut "trapsize 974584\n")
        fprintf( pOut "generaledit\n")
        fprintf( pOut "reports \"Bill of Material Report\"\n")
        fprintf( pOut "generaledit\n")
        fprintf( pOut "setwindow text\n")
        fprintf( pOut "save\n")
        fprintf( pOut xls_name)
        fprintf( pOut "setwindow text\n")
        fprintf( pOut "close\n")
        fprintf( pOut "setwindow pcb\n")
        close(pOut)
);
发表于 2013-5-19 01:16:33 | 显示全部楼层
请将命令注册改为以下内容,问题即可解决
  1. axlCmdRegister("bom" 'bom ?cmdType "general")
复制代码
在需要调用script中,最好使用"general" ,"general" 是立即执行命令。你那个出现的错误主要就是由于没有将report窗口打开。

你可以参看下axlCmdRegister函数。。。。

{:soso_e113:}

有问题多多交流哈。。。。
 楼主| 发表于 2013-5-19 10:17:30 | 显示全部楼层
vivienluo 发表于 2013-5-19 01:16
请将命令注册改为以下内容,问题即可解决在需要调用script中,最好使用"general" ,"general" 是立即执行命 ...

{:soso_e179:}  多谢多谢! vivenluo见解独到 !
刚是了一下,果然问题解决,而且可以顺利出xls bom,一直以为是skill命令与脚本不和,看来我想的不全面。
解决了困扰我一个多月的疑问,不仅是这一段短代码,本来可以用脚本更简单实现的代码都因此而放弃使用了。
发表于 2013-5-19 11:07:01 | 显示全部楼层
{:soso_e100:}
发表于 2015-2-7 23:34:44 | 显示全部楼层
都现在了,我很刻苦啊
发表于 2015-8-27 13:19:33 | 显示全部楼层
vivienluo 发表于 2013-5-19 01:16
请将命令注册改为以下内容,问题即可解决在需要调用script中,最好使用"general" ,"general" 是立即执行命 ...

真厉害,学习了
发表于 2016-5-30 01:28:42 来自手机 | 显示全部楼层
真的是解决了现实中的问题
发表于 2018-3-3 12:08:42 | 显示全部楼层
马克一下,多谢分享
发表于 2019-5-17 08:22:37 | 显示全部楼层
学习了, 谢谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-20 12:12 , Processed in 0.148644 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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