温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
AVEVA_Marine
结构
零件
标注
二次开发
设计
冯建明
技术交流 Technical Communication 2023/1 船舶标准化工程师 53 AVEVA Marine 结构零件名标注结构零件名标注 二次开发设计二次开发设计1 1 冯建明,赵 锐(上海中远船务工程有限公司,上海 200231)摘 要:摘 要:为降低出错率,改善出图质量,基于船舶主流设计软件AVEVA Marine(AM),使用C#语言针对零件名的标注进行二次开发设计。结果表明:二次开发设计可根据需求自主定义标注样式,显著增强了结构图的出图效果。研究成果可为船舶设计提供一定参考。关键词:关键词:AVEVA Marine;生产设计;C#语言;二次开发 中图分类号:中图分类号:U662.9 文献标志码:文献标志码:A DOI:10.14141/j.31-1981.2023.01.010 Secondary Development and Design of AVEVA Marine Structural Part Name Marking FENG Jianming,ZHAO Rui(COSCO Shanghai Shipyard Co.,Ltd.,Shanghai 200231,China)Abstract:In order to reduce the error rate and improve the drawing quality,based on the mainstream ship design software AVEVA Marine(AM),C#language is used for the secondary development and design of the marking of part names.The results show that the secondary development and design can define the annotation style independently according to the requirements,which significantly enhances the drawing effect of the structural drawing.The research results can provide some references for ship design.Key words:AVEVA Marine;production design;C#language;secondary development 作者简介:冯建明(1985),男,工程师。研究方向:船舶与海洋工程结构设计。0 引言引言 在船舶结构生产设计中,零件名标注是非常重要的一环。由于船舶分段零件众多,零件名标注工作具有繁琐、重复性强、工作量大等特点,往往会占用生产设计工程师大量的时间和精力1。由于每个人的出图习惯不同,单凭手工操作难以保持图面样式统一,质量也很难得到保证。若能采用程序实现自动化,则可以在一定程度上降低出错率,改善图纸的出图质量。目前,使用比较广泛的船舶生产设计软件主要 包括TRIBON M3 和AVEVA Marine(AM),AM 作为TRIBON M3 的升级版本,具有更加强大的功能和友好的界面。然而,目前AM 软件的二次开发功能仍需完善。以零件号标注功能为例,虽然程序自带相关功能,但标注的信息样式较简单,操作较不便,返工率较高。因此,进行AVEVA Marine结构零件名标注二次开发设计十分必要。本文基于船舶主流设计软件 AVEVA Marine(AM),使用 C#语言针对零件名的标注进行二次开发设计,以期降低出错率,改善出图质量。54 船舶标准化工程师 2023/1 1 程序开发思路程序开发思路 为方便用户进行自定义开发,AM 提供了Vitesse、PML、.Net 等二次开发接口和工具,并内置了丰富的类库2-3。本文采用.Net 二次开发接口,基于C#语言编程,编译环境为Visual Studio 2017。1.1 AM 零件名的命名规则零件名的命名规则 零件名标注要有一套统一的命名规则,这是后期程序读取零件名信息的前提。在AM程序中,控制 零 件 命 名 的 环 境 变 量 有 2 个,分 别 为TB_PARTNAME_CTRL和TB_PARTNAME_LEVEL,TB_PARTNAME_CTRL定义不同的命名组,AM 至少需要 FULL 和 SHORT 这 2 个命名组,以便对应零件的长名和短名。TB_PARTNAME_LEVEL 定义同一零件在不同场合中命名组的应用情况。本文二次开发使用FULL 命名组,其名字一般由3 部分组成,如 BLOCK-PANEL-PART,其中,BLOCK 代表分段名,PANEL 代表组立名或板架名,PART 代表零件名。1.2 程序基本功能程序基本功能 根据生产设计的出图模式,零件名的标注样式见图 1。零件名标注样式包括引出点、引出线和零件名摆放位置线。零件名摆放位置线只有水平和垂直2种方位,以位置线为界共有2部分信息:1)零件名,用户在使用过程中可根据需要选择是否包括分段名信息;2)零件的大小、材质、规格等特征 信息。不同类型的零件需要标注的特征信息不同:1)型材和立柱需要标注规格和材质。2)肘板要标注大小、厚度、材质、折边尺寸。3)板材、补板和垫板要标注厚度和材质。4)面板要标注规格、材质和安装形式。图1 零件名标注样式 1.3 程序使用程序使用 程序的使用方法越简单越好,导出剖视图后,点击命令,提示用户选择要标注的零件,然后点击摆放位置和摆放方向即可完成一个零件的标注。为提高标注效率,在一个零件标注完成后会继续进入到下一个零件的标注工作中,直到用户选择中止命令才结束流程。2 主程序编写主程序编写 2.1 模型选取模型选取 模型选取步骤引导用户点击零件模型,并判断用户点击的位置是否为有效模型。若是,则继续进行下一步骤;若不是,则提示用户重新点击,直到用户点击到有效模型或退出按钮为止。模型选取步骤需要用到 Aveva.Marine.Geometry 命名空间下的MarModel 功能,包括 Name、PartId、PartType、ReflCode等属性。其中,Name 表示板架名称,PartId表示零件的内部代号,PartType 表示零件类型,RefCode 表示镜像信息。若某板架左右对称,则板架创建侧的RefCode 为0,镜像侧为1。2.2 抽取信息抽取信息 抽取信息步骤需要进一步提取零件名标注所需的有用信息并进行加工,得到图纸需要呈现出的数据。该步骤需要使用 Aveva.Marine.DataExtraction命名空间下的 MarDex 功能,在创建相应实例后,就可将 MarModel 模型的属性值作为输入条件进行数据抽取。MarDex功能的抽取流程如下:1)构建抽取命令语句,如 HULL.PAN(B01-GR0B).BRA(1001).PART_ID.SHO 为提取板架名为B01-GR0B,PartId为1001的肘板零件的命令语句。2)运用Extract 函数进行抽取。若Extract 的返回值为 0,则表示抽取成功;若返回其他数值,则表示抽取失败。3)运用NextResult 函数获得抽取到的数据类型。4)根据NextResult 函数的返回值,调用具体函数,获得抽取值,并赋值给相关的参数。NextResult 函数的返回值及需要调用的函数情况见表1。技术交流 Technical Communication 2023/1 船舶标准化工程师 55 表1 NextResult 函数返回值及调用函数 返回值 含义 调用函数 1 结束标志 0 结果为空 1 整数类型 GetInt()2 实数类型 GetReal()3 字符串类型 GetString()4 三维点 GetReavec3d()5 两个三维点 GetBox()6 二维点 GetReavec2d()10 长度为result-10的 实数数组 GetIndexedreal()本步骤主要抽取的属性有零件名、板厚、规格和材质,对应的抽取关键字为PART_ID、THI、DESI和QUA。提取完数据后,零件名属性作为第一行信息,其他属性为第二行信息,2 行信息通过“/n”连接符组合为一个字符串并输出,以便后续步骤 使用。2.3 图面标注图面标注 本步骤主要用于输出标注信息及辅助线,以模型选取步骤中的点为起始点,引导用户依次点击 1个摆放点和1 个方向点即可完成零件名的标注。可通过比较方向点与摆放点在 x 和 y 两个方向上坐标值差值的绝对值来判断零件摆放方向。若x 坐标差值的绝对值较大,则表示零件为水平摆放。文字分隔线的长度由上、下两行文字的长度确定。若不想显示分段名,仅需将首个“-”标注信息隐去即可。本步骤主要用到 Aveva.Marine.Drafting 命名空间下的 MarDrafting 功能和 Aveva.Marine.Geometry 命名空间下的MarContourPlanar 功能。MarDrafting 功能用于输出线段和文字等信息,MarContourPlanar 功能用于构建辅助线段。2.4 程序流程图程序流程图 AVEVA Marine 结构零件名标注二次开发设计程序流程图见图2。图2 程序流程图 3 程序框架及加载程序框架及加载 要将二次开发程序应用到 AM 中,需要设计 1个可视化框架,并经过编译及程序配置等步骤。3.1 通用程序框架通用程序框架 通用程序框架是AM提供给程序员使用编程软件开发各种插件的扩展框架,可理解为编程软件程序和 AM 之间的连接纽带。其基本功能由Aveva.AppliationFramework.dll 和 Aveva.Appliation Framework.Presentation.dll组件提供。N 56 船舶标准化工程师 2023/1 3.2 命令类命令类 用户在使用插件时,通常点击菜单栏或工具条上的按钮,在弹出的插件窗口中进行后续操作。命令 类 是 指 继 承Aveva.ApplicationFramework.Presentation 命名空间的 Command 基类。命令类需要定义 1 个窗口成员以便为基类的 Key 属性赋值,AM 可通过赋值大小追踪相应命令类。此外,命令类还需要具有实现基类的Execute()方法,每点一下命令插件按钮,就会执行一次Execute()方法,并显示窗口成员。3.3 插件窗口类插件窗口类 插件窗口类为插件的工作界面,用户的最终操作要在插件窗口类中完成。插件窗口类是通过添加C#用户控件来创建的。3.4 IAddin接口接口 IAddin是Aveva.AppliationFramework命名空间下的一个虚接口,在编写插件时需要类继承文件来实现此接口。在AM 程序加载和启动插件时,会启动该插件IAddin接口的实现类,创建该类的实例并调用其运行入口。3.5 模块文件模块文件 在二次开发程序编译通过后,项目的 DEBUG文件夹下会自动生成 1 个 dll 后缀名的动态链接库文件,这是二次开发的执行程序文件。要在AM 的启动时加载该程序,将插件加载文件与二次开发执行程序关联。配置文件的文件名格式为Addins.xml,其内容如下所示:ExplorerAddin DrawListAddin MyDataAddin HistoryAddin ReferenceListAddin OutputAddin FindAddin 每个 之间的字符串均代表1 个二次开发程序,其通常保持在默认的路径下。若插件没有保存在默认路径下,则要在文件名前给出完整的存放路径。3.6 自定义菜单自定义菜单 在二次开发程序加载后,还需要设置自定义菜单才能将程序中的命令展示出来。右击工具栏的任意位置,选择 Customize 会弹出自定义菜单窗口。在窗口的中间栏新建一个按钮,并将按钮的Command 属性值指向二次开发程序命令类的 Key值