|
近日用Vitess做一个船体模型修改的东西。
首先使用kcs_dex抽取各个零件的COMP_ID,即component id。用如下语句:-
- HULL.PANEL('123-'*).PLATE(1:100).COMP_ID
- HULL.PANEL('123-'*).BRACKET(1:200).COMP_ID
- HULL.PANEL('123-'*).STIF(1:200).COMP_ID
- ......
复制代码 上面的意思是,抽取以"123-"开头的板架的所有板、肘板、型材的零件内部ID号。少数板架内stiffener或bracket过多,超过200,就把200这个数字再往上加,tribon会自动识别最后一个零件并退出抽取。
获得comp_id后,再用kcs_hullpan.group_get(panelname,comp_id)来取得此零件在对应的sch文件内的行值。
取得groupid后,就能取得零件的sch语句:-
- st=kcs_hullpan.stmt_get(panel,group)
- #修改st
复制代码 执行修改后的sch语句,就完成了修改模型的任务了。
问题出现在group_get这个阶段,经我测试,除了肘板,所有零件的comp_id均能正常取得goupid。数据抽取出的肘板的comp_id为1001,1002,1003...等的int型数字,但对这串数字使用group_get,总会报出modelnotfound的错误。
这个问题困扰了我几天,我判断为tribon本身的bug,但我认为正确的comp_id肯定是存在的。我为此特别编写循环了一千万次的程序,试图获得正确的comp_id。仍然无法取到。
偶然的机会,我把测试程序用的数字倒转了一下,从负数开始测试,奇迹出现了,在-1001,-1002,-1003这个地方,groupid被正确读取出来了。。。
so....把这个经验与后来者分享,请在肘板的comp_id前加个负号,你的程序就成功了。 |
|