哈喽铁子们,今天分享的是批量导出点坐标的第四种方法,使用知识工程ekl语言,但是运行速度相对缓慢,完全是为了让朋友们了解一下这个knowledge的存在,需要进入到如下的知识工程顾问模块。
▼ 知识工程顾问模块
将零件中所有要导出坐标的点添加到一个列表Points中,同时创建一个设计表.1并将其与本地excel文档Point coordinates建立关联,然后创建一个工作指令.1,双击其打开指令编辑器,并输入批量导出点坐标的ekl代码。(下文中已经给出代码及关于代码的解释,比较容易理解,有需要的话可以直接复 制粘贴使用)
x▼ 创建设计表与本地excel的关联
▼ 指令编辑器中输入ekl代码
关于代码的解释(/*XXX*/用于注释说明)
let i (integer)/*声明一个循环变量i*/ let F (Feature)/*声明一个feature型变量F*/ let lista (List)/*声明一个列表型变量lista*/ let x, y, z (Length)/*声明三个Length型变量x y z*/ lista = Points/*将结构树上的名字为Points的列表赋给lista*/ i=1/*给循环变量赋予一个初始值1*/ for F inside lista/*执行for循环语句*/ { x=lista->GetItem(i)->coord(1) /*将lista列表中的第i个点的x坐标赋给x变量*/ y=lista->GetItem(i)->coord(2)/*将lista列表中的第i个点的y坐标赋给y变量*/ z=lista->GetItem(i)->coord(3)/*将lista列表中的第i个点的z坐标赋给z变量*/ F=lista->GetItem(i)/*获取列表中的第i个点*/ `关系\设计表.1\图纸` ->SetCell(i,1,F.Name) /*将第i个点的名字赋给工作表的第i行,第1列*/ `关系\设计表.1\图纸` ->SetCell(i,2,x) /*将第i个点的x坐标值赋给工作表的第i行,第2列*/ `关系\设计表.1\图纸` ->SetCell(i,3,y) /*将第i个点的y坐标值赋给工作表的第i行,第3列*/ `关系\设计表.1\图纸` ->SetCell(i,4,z) /*将第i个点的z坐标值赋给工作表的第i行,第4列*/ i=i+1/*循环变量加1,以备下次循环取点*/ } |
运行工作指令,代码执行循环,依次从列表中读取每一个点的xyz坐标并将其存入设计表中。运行程序结束后,打开本地的excel文件Point coordinates,点坐标已经被导入其中,需要注意的是在运行指令之前,需要将设计表取消激活,要么会出现下图三的错误提示。
▼ 执行工作指令
▼ 打开导入点坐标的本地关联文件
▼ 取消激活设计表才可以执行工作指令