CAXA图文档技术白皮书(三)

来源:百科故事网 时间:2020-12-18 属于: CAD制图技巧大全
四、CAXA图文档二次开发工具4.1 FormDesigner使用说明    FormDesigner表单定义器是CAXA图文档的辅助工具,其形式为一个独立的工具,由CAXA图文档技术人员在进行客户化定制工作时使用。    在CAXA图文档系统中,数据模型中包含多种实体类,如产品、零部件、文档、图纸页、版本等。这些类的属性由FormDesigner定义,提供一种类似于VC++环境中对话框的定义模式,可以在这个对话框设置多种风格的文本框、编辑框和检查框等。对应的文本框表示对象的属性,编辑筐、检查框等表示属性的显示形式。在所有的控件上可以双击弹出属性编辑框,在这里确定控件的基本属性,如名称、数据类型,数据长度等。另外,FormDesigner中提供对话框中所有控件进行布局的工具,如编辑框等高、等宽、左对齐、右对齐、水平等距、垂直等虻取    对话框编辑完成后,保存成XML文件,这些定义文件存放在CAXA图文档客户端的OBJDEFINE目录下,即可被CAXA图文档所调用。另一方面,定义的对象属性要能转换成数据库相应表的字段,这可在系统菜单中选择“刷新数据表”来修改对象蛴Φ谋怼    在CAXA图文档中,所有对象属性的显示、编辑、处理都是通过加载相应的XML文件实现的。在显示界面中的,对象属性的外观显示形式与FormDesigner中完全一致,在对属性的进行有关的选择操作时,列表框中列出的是FormDesigner定义的有关对象的所有属性。FormDesigner 用于表单定制。CAXA图文档技术白皮书(三) title=图4-1 FormDesigner定义工具4.2 MenuDesigner使用说明    MenuDesigner 用于菜单定制。    MenuDesigner可以定义系统菜单,以及定义界面中的浮动菜单。CAXA图文档技术白皮书(三) title=图4-2 菜单定义工具    利用MenuDesigner可以对图文档中所有菜单项进行设置并可以增加删除菜单项,点击菜单项选择属性可以设置菜单的各种属性并挂接执行脚本。定义后的菜单文件存放在CAXA图文档客户端安装目录下。    系统菜单——SysMenu.xml    浮动菜单——PopMenu.xml    因此,每个客户端通过不同的配置,可以有不同的菜单展现,可以根据功能需要增加菜单项,也可以隐藏不需要的功能项。4.3 RelDesigner使用说明    RelDesigner 用于关系定制。关系指图文档系统两个实体类之间的关系。CAXA图文档技术白皮书(三) title=图4-3 关系定义工具    关系发生在两个实体类之间,或者同一类下的两个实例之间。如上图中的AssemblyUsage,用于表示产品结构数中的上下级关系,这种关系发生在零部件类(PdemPartRevision)的两个实例之间,装配件的角色名是Assembly,子件的角色名是Component。    利用RefDesigner可以对图文档中的关系进行编辑,如可以改变关系Assemblyusage的类A和类B,允许借用等。    关系定义的结果保存在图文档客户端安装目录,位于\commondefine子目录下,文件名称为RelDef.xml。4.4脚本编程    脚本编程主的康氖鞘褂τ贸绦蛟诓槐恍薷牡那榭鱿拢为各种脚本语言所控制。在软件交互性不断提高的今天,仅仅提供菜单或工具箱的界面已经不能满足用户的需要了,软件的可定制特性已经成为当今软件的一项基本特征,尤其对于一些通用的软件更为如此。CAXA图文档中提供了方便的脚本编程能力涤没Э梢酝ü编写脚本实现较为复杂的功能扩充。    脚本编程可使软件扩充变得非常简单,软件开发商利用脚本引擎(Script Engine)支持脚本语言的解释和执行操作,而软件用户可以根据需要编写自己的脚本代码,交由软件处理,对于用户来说,就好象自己在编写程序控制应用程序,以完成自己所期望的功能。而应用软件并不需要自己去解释执行用户的脚本代码,只要利用脚本引擎就可以很方便地实现对用户脚本语言的支持。应用系统也可以利用这种技术来提供二次开发的特性。图文档中脚本控制点及编程实例如下。4.4.1 BOM输出1. BOM过滤脚本文件名:图文档客户端\Script\BOM\filter\OnFilter.txtScript脚本原型:Function Filter(ByRef bom_item)返回值为BOOL型,Filter = TRUE :需要输>该条记录 Filter = FALSE :该条记录不用输出。2. BOM输出脚本文件名:图文档客户端\Script\BOM\output\OnOutput.txtScript脚本原型:Function Output(ByRef bom_result_iterator, ByRef xls_file)bom_result_iterator:bom输出结果的迭代器xls_file: bom输出到Excel的文件名。4.4.2 BOM的xls模板设置1.  总页数脚本文件名:图文档客户端\Script\BOM\xls模板名称\ TotalPage.txtScript脚本原型:Function TotalPage(npages)                              npages: 共有的页数  返回值:根据脚本格式定义好的总页数输出值。2.  当前页脚本文件名:图文档客户端\Script\BOM\xls模板名称\ CurPage.txtScript脚本原型:Function CurPage(npages)                              npages: 当前是第几页返回值:根据脚本格式定义好的当前页数输出值。3.  产品信息脚本文件名:图文档客户端\Script\BOM\xls模板名称\ product_+产品属性名.txtScript脚本原型:PropName(obj)                              Obj:当前输出bom选中的产品或部件对象  返回值:通过脚本查询obj属性得到的属性值。4.  零部件信息    脚本文件名:图文档客户端\Script\BOM\xls模板名称\ part_对象moniker_对象属性名.txt    Script脚本原型:PropName(bom_item)    bom_item:要输出的零部件的BomItem    返回值:通过脚本查询bom_item属性得到的属性值。 4.4.3 批量入库    如属性值过滤:    脚本文件名:图文档客户端\Script \LotInput\filter.txt    Script脚本原型:function Filter(name,value)                              Name:提取到的零部件属性名Value :属性名name对应的属性值返回值:新的属性值。示例:如将所有提取到的零部件的代号在原来的基础上加上000  function Filter(name,value)      if name = "代号" then              Filter = value & "000"      else              Filter = value      end ifend function 4.4.4 生成新版本1.   版本号生成脚本文件名:图文档s户端\ Script\RevNo\nextrevno.txtScript脚本原型:Function NextRevNo(prev_revno,bNewRelease,pWorkRev)                            prev_revno :前一个版本号     bNewRelease:True表示重发布表示出库     pWorkRev   :保留参数   返回值:新的版本号 4.4.5 Fomdesign中菜单脚本1.   菜单执行函数脚本文件名:图文档客户端\ Script\menu\菜单ID号.txtScript脚本原型:function MenuCommand(objs)                             Objs:当前选中的对象的数组。实例: 物料代码自动生成需求说明:    对于客户要求的物料代码生成的问题,由于在图文档中批量入库时无法自动根据零部件的其它属性来自动生成物料代吗,现在修改在产品结构树的产品的右键菜单上,新增一个菜单“生产物料代码”来使零部件的物料代码根据其它的属性来自动生成。物料代码的生成规则如下:如果零部件是标准件,则物料代码=代号+规格      否则,物料代码=代号。CAXA图文档技术白皮书(三) title=上述需求可在菜单定义工具中,通过菜单项对应的脚本完成。具体脚本内容从略。4.4.6 权限检测1.  权限检测脚本:脚本文件名:由set_script设置脚本文件名Script脚本原型:function CheckSecurity(secu_val,func_name,role_id,person_id)                              secu_val:权限值func_name:功能名role_id: 角色IDperson_id:用户ID返回值:字符串如果为空,则代表有权限如果不为空,则代表没有权限,字符串是没有权限的原因。4.4.7 系<1.   系统保存脚本(当新建产品,零部件,图纸等对象保存时运行)脚本文件名:图文档客户端\ \script\system\OnSave.txtScript脚本原型:Function Save(parent_obj, prop_set, moniker)                              parent_obj:新建对象的父对象               prop_set:新建对象的属性moniker:新建对象的moniker返回值(BOOL): = TRUE 表示可以继续保存                  = FALSE表示验证没有通过,不能保存。4.4.8 相关列表1.  在相关的列表中,可以定义列的显示属性值脚本脚本文件名:图文档客户端\ \script\在listtabdefine.xml中定义的脚本文件名Script脚本原型:Function  GetColumnFunc(rel_obj,obj,parent_obj,col_name)                             rel_obj:关系对象                             obj: 当前对象parent_obj:obj的父对象col_name:列名返回值:当前列显示的属性值。4.4.9 排序       在产品结构树或文档树上的排序脚本文件名:图文档客户端\ \script\好称\ OnSort.txtScript脚本原型:Function Sort(obj1,obj2,propname)零部件拷贝  脚本文件名:图文档客户端\ \script\ CopyPart\\copypart.txtScript脚本原型:CopyPart(prop_set)