




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Word文档 基于达索CAA架构的桥梁缺口BIM设计程序开发 为了实现三维BIM环境下的全线桥梁缺口设计,使用达索/组件应用架构(CAA)语言,开发出嵌入到达索软件内部的桥梁缺口正向设计程序 在传统二维环境下进行铁路工程设计时,桥梁缺口设计是依靠工程师对平、纵断面图纸中的地形、线位、平立交进行综合分析完成的,存在效率低下的缺陷。 针对这一问题,为了降低软件开发难度,提高开发效率,本文充分利用现有三维设计软件的强大参数化建模功能,使用达索/组件应用架构(CAA)语言,开发出一款嵌入到达索软件内部的桥梁缺口正向设计程序。本程序使设计人员能够在三维交互操作环境下协同考虑地形、平立交、空间线位等因素完
2、成全线全部桥梁缺口的一体化设计,大幅提高了设计效率。 程序特性及流程设计 该人机交互的桥位缺口设计工具具备以下几个特点:嵌入到达索零件设计(Part Design)模块中;程序依据缺口设计表格中的内容生成虚拟的空间缺口平面,用户可沿空间线位手动拖动这些虚拟平面;用户对虚拟平面的手动拖动过程结束后,程序自动更新缺口设计表格的里程值,并生成最新的空间平面。 功能按钮位置 本程序的工作流程如下图所示。其中的拖动单独缺口平面操作,仅表示计算机可以识别的微小鼠标位置移动,对该操作执行循环可用于表示用户对虚拟桥梁缺口平面的连续手动拖动。 工作流程设计 程序运行前,初步拟定缺口里程表,程序依据其中存储的里程
3、值自动生成可供用户手动拖动的临时显示平面。选择需要修改位置的缺口,所选择的平面会随用户鼠标位置沿空间线位移动。当用户在三维环境下将其移动至所需位置后,右键单击,当前缺口操作过程结束。 用户交互界面 程序运行结束时,在Result几何图形集内生成反应最新设计结果的全部桥梁缺口平面,同时,缺口里程表格的内容也被更新。 二次开发策略和思路 本文将从模块设计的角度介绍此桥梁缺口设计工具的开发策略和思路,该桥梁缺口设计工具包含数据存储模块、组件模块和界面模块三个部分。 模块设计 其中,数据存储模块相当于程序的全局变量,存储了断链表信息;同时,由于本程序的运行是一个交互过程,还包含了对用户当前正在编辑的桥
4、梁缺口信息的存储;本模块的第三部分是全线全部桥梁的缺口信息,是程序运行和用户交互的最终结果。 组件模块定义了BridgeBoundary 和BridgeSingleBoundary两个组件。 界面模块的作用是综合运用数据存储模块开发出来的数据结构以及组件模块开发出来的接口,实现用户操作流程。以下各节将依次对这些模块进行具体的介绍。 数据存储模块 断链表信息和全线桥梁缺口信息均使用CAA自带的不定长数组类型ListPV存储,数组元素的类型以结构体的形式表达,在这些结构体中,分别以数值和字符串类型的成员变量表示里程、长度或里程字头等信息。当前缺口信息使用若干个单独的数值和字符串类型变量表示。 组件
5、模块 BridgeSingleBoundary组件 每座桥梁包含大里程和小里程共两个缺口,该组件用于存储一个单独桥梁缺口的信息,并帮助用户交互操作和临时显示。 桥梁缺口在程序运行过程中使用了CAA的ISO(Interactive Set of Objects)临时显示机制。 ISO从本质上说是一个组件包,一个程序在运行过程中只存在唯一的一个ISO类型对象。当把其他组件放入ISO组件包以后,用户就可以看到这些组件包含的CATRep类型临时显示对象,并能对其交互操作,但前提条件是这些组件须 实现CATI3DVisu接口,并在此接口中定义一个能够返回CATRep类型对象的方法。因此,为了实现用户对桥
6、梁缺口的编辑,需要借助ISO对象。 BridgeSingleBoundary组件架构如下图所示。类型接口BridgeISingleBoundary通过Get系列函数猎取组件属性值,例如平面线位、空间线位、断链表、桥梁编号、名义里程、投影面等,通过Set系列函数为组件属性赋值。 BridgeESingleBoundaryVisu 是组件的一个扩展类,该类执行CATI3DGeoVisu接口,此扩展类供应BuildRep()方法,用于生成CAT3DCustomRep类型的几何体。 BridgeESingleBoundaryCreateInstance是组件的一个扩展类,该类执行CATICreateI
7、nstance接口,此扩展类供应的CreateInstance()方法用于组件实例化。 BridgeESingleBoundaryGeoEvents是组件的一个扩展类,该类执行CATIModelEvents接口。当在ISO中添加组件或者更新组件时,CATISO对象向CATVisManager对象发出CATCreate讯号,CATVisManager对象收到此讯号后通知ISO对象临时显示出组件的几何外形。而CATIModelEvents接口的实现正是CATISO对象发出讯号的前提条件。 BridgeBoundary组件 一条空间线位包含多座桥梁,该组件用于表达一条空间线位上全部桥梁的缺口信息,其
8、架构如下图所示。 组件本身执行其类型接口BridgeIBoundary,该接口的Get、Set系列函数用于猎取属性值以及为属性赋值,其中的GetSingleBoundaryElements()函数用于猎取全线全部桥梁缺口对象,每一个对象都以BridgeSingleBoundary类型的组件表达。 BridgeEBoundaryCreateInstance 是组件的一个扩展类,其供应的CreateInstance()方法用于组件实例化。 界面模块 界面模块的作用是综合运用数据存储模块以及组件模块实现用户操作流程。详细包括:添加工具条,实现用户交互窗口,显示临时缺口对象,拖动缺口临时显示平面,保存
9、用户交互结果。本节将依次介绍这些内容。 添加工具条 工具条采纳Add-in的方式添加,由于该程序嵌入到零件设计(Assembly Design)模块,因此,需要实现CATIPrtCfgAddin接口。 用户交互窗口 首先创建用户交互窗口Dialog文件,再通过对CATMmrPanelStateCmd类的派生、重载GiveMyPanel()方法,使派生类与用户交互对话窗口Dialog文件关联。重载BuildGraph()方法,从而完成传统交互窗口无法实现的对话流程操作。 BuildGraph()方法通过命令状态(CommandState)和代理(Agent)两个关键元素实现用户与界面的交互响应。
10、代理分为三种:CATDialogAgent代理用来猎取界面控件响应;CATPathElementAgent继承自CATDialogAgent,用于猎取鼠标下的对象路径,并存储该路径值;CATIndicationAgent继承自CATDialogAgent,该代理表示鼠标所在的空间位置。 桥梁边界临时对象的显示 BridgeSingleBoundary作为组件模块的一个重要成员,用于临时显示桥梁缺口。 用户选择几何图形集后,程序提取其中的骨架元素、桥梁缺口数据表、断链表,处理后转化为内部数据格式,继而执行CATInstantiateComponent()方法,实例化BridgeBoundary组
11、件。 桥梁边界临时对象显示流程 BridgeBoundary组件代表一条线位上全部桥梁的缺口平面,每一个单独的缺口平面属于BridgeSingleBoundary组件类型。实例化出来的BridgeBoundary组件通过GetSingleBoundaryElements()方法猎取它包含的全部单独缺口对象。 AddElement()方法把这些单独缺口放入ISO组件包中,从而实现了缺口平面的临时显示。 桥梁缺口平面的用户交互操作 用于表示鼠标位置的代理CATIndication Agent包含一个属性ProjectPlane,它的作用如下图所示。用户所能看到的鼠标位置是相对于显示器平面的,而它的
12、真实位置位于代理的投影面上,将视点和鼠标连成直线,该直线与投影面的交点P2即是鼠标在三维空间中的真实位置。 从BridgeISingleBoundary类型接口的Set系列函数可以看出,代表桥梁单独缺口的组件BridgeSingleBoundary包含几个关键属性:平面线位、空间线位、里程值。要想实现桥梁缺口临时显示平面在被选中以后随鼠标移动,其前提是这三个属性被重新赋值,由于平面和空间线位与鼠标位置无关,所以实现此操作的关键就是在鼠标移动过程中实时更新桥梁单独缺口组件的里程属性值。 假设用户手动选择的桥梁缺口平面初始位于P1点,程序通过其类型接口的GetProjectPlane()方法猎取一
13、个通过P1点并与水平线位相切的竖直面,并将这个竖直面给予CATIndicationAgent代理的ProjectPlane属性,作为投影面。在鼠标移动过程中,P2点随之在投影面的范围内移动,使用CATIndicationAgent 代理的GetValue()方法猎取一个以CATMathPoint2D 表示的P2,再转化为CATMathPoint类型。 以P2为输入参数使用SetOrigin()方法,以投影面的法向量和竖直向量为输入参数使用SetVectors()方法,创建一个通过P2点并与投影面垂直的CATMathPlane类型的竖直面。使用CATCGMCreateIntersect()命令生
14、成竖直面与水平线位的交点集,并依据与P2距离最小的原则猎取P3点。 借助CATCGMCreateTopSplitWire()命令,使用P3点切割水平线位,GetLength()命令能够测量出作为切割结果的线位长度,此长度即是P3点的实际里程值,也就是单独缺口组件的里程属性。 使用ISO组件包的UpdateElement()方法,依据BridgeSingleBoundary 桥梁缺口组件的最新里程属性值,将当前正在拖动的桥梁缺口临时显示平面更新至最新的位置。通过这种方法,实现了对单独桥梁缺口平面的选择、拖动。 保存用户交互结果 每完成一个桥梁缺口的修改,数据存储模块中的全线桥梁缺口信息不定长数组
15、BoundaryResultInfoList即随之更新,当用户完成对全线全部桥梁缺口的交互操作后,BoundaryResultInfoList就存储了最终的设计成果。 OK 按钮被点击后,程序对BoundaryResultInfoList代表的全部桥梁缺口循环操作,流程如下图所示。 首先,从结构体中猎取缺口里程值,使用CATCGMCreateComputePointOnWire()命令,以此实际里程值为输入参数生成平面线位点1,以及与其沿线位相距1cm的平面线位点2,以平面线位点1和竖直向量为输入参数,使用CATCGMCreateTopLineFromDirection()命令生成竖直线,再使用CATCGMCreat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物医药研发项目融资及成果转化合同
- 高端电商品牌专供瓦楞纸箱长期采购协议书
- 智能驾驶体验场租赁及配套设施服务协议
- 支付材料款协议书
- 抖音账号运营权分割及收益分配合作协议
- 普洱茶订货协议书
- 周星驰签下协议书
- 电商平台商品展示与大数据分析应用合作协议
- 承包建猪场协议书
- 给饭店供货协议书
- 公司车辆驾驶扣分违章处理证明 模板
- 2023年海南省中考英语试题
- (中职)车削加工技术全册实训课教案完整版
- 智慧海南总体方案(2020-2025年)
- DG-TJ 08-2122-2021 保温装饰复合板墙体保温系统应用技术标准
- SFR-SE-ARC-0031激光跟踪设置-作业指导书
- 录音棚、摄影棚、直播室设计方案
- 安全生产隐患排查概述PPT课件
- CRCC认证目录
- 稻谷加工毕业设计日加工籼稻400吨免淘洗大米生产线设计
- 因式分解—完全平方公式
评论
0/150
提交评论