4 程序设计总体思路和关键技术
本程序所要操作的是产品文件中的产品树,各种零件文件在建立后就添加了自定义属性,并通过装配引入到产品文件中,为了便于管理,通常会在根产品节点下面建立若干子产品节点,并将零件分类装配到各个子产品节点中。同理,可以再子产品节点下在建立子产品节点,对节点内的装配零件进行分类。在提取过程中程序要处理任意层数的产品节点,并要在访问过程中统计相同零件的个数,据此本程序利用了以下方法来实现提取BOM的目的。
4.1 基于递归访问策略的提取方法
当访问到一个节点,先判断其是否一个终端节点,若是终端节点,则对其进行提取属性的操作,若是中间节点,则递归地调用该过程,由此达到处理任意层数产品树的目的。
4.2 终端节点的判断方式
零件的属性都定义在终端节点中,终端节点是通过装配导入到产品树的,由于终端节点是一个对零件的简单包装的产品节点,该节点必定没有子节点,故本程序以此作为判断终端节点的条件。
4.3 提取一个终端节点中的属性
提取并统计单个零件的BOM信息的工作由一个函数extract_single_bom完成,首先通过参数的Parameters方法获得要提取的属性对的集合。其中选取出类型参数,与预先在界面上选取的类型比较,若不是则不提取该节点中的属性。在统计过程中,建立以零件编号为键值,网格中显示的行号作为值的hash表全局变量,提取属性时提取出零件编号,在建立的hash表中检索。若已经在表中存在,则认为是已经出现过类型的零件,可以从对应的值取出行号,将对应单元格的值加一;若获在表中没有,则将当前行值加一,并将键值对添加到hash表中,以便后续重复元素统计修改对应行的值。
程序运行结果如图2。
图2 运行结果
5 结束语
本文在行为流概念的基础上,提出一种基于行为流知识库的功能结构智能映射框架,该框架可在较高层次实现设计知识重用。此外,该框架可用于开发计算机辅助设计工具,用来辅助设计者进行新产品概念设计。