李遵伟,陈建涛,王艳龙,王侨,王桂云(山东省科学院海洋仪器仪表研究所,山东青岛266001)摘要:提出基于Maxsurf二次开发的船体型值表建立方法,利用Maxsurf完成型线设计后,需要导出船体型值表.
以VB.
NET作为程序设计语言,以MicrosoftAccess作为数据库,对MaxsurfModeler模块进行二次开发从而得到型值表,通过实例证明该方法是可行的、快捷的.
关键词:Maxsurf二次开发;VB.
NET;MicrosoftAccess;型值表中图分类号:U662.
2文献标志码:A【DOI】10.
13788/j.
cnki.
cbgc.
2015.
Z.
005BuildingShipOffsetTableBasedonRe-developmentofMaxsurfLIZun-wei,WANGYan-long,WANGQiao,WANGGuiyun(ScienceandTechnologyCenterofOceanographicInstrumentofShandongProvince,ShandongQingdao266001,China)Abstract:Amethodofbuildingoffsettablebasedonre-developmentofMaxsurfispresentedinthispaper.
ItisnecessarytobuildoffsettableafterlinesdesigningusedMaxsurf.
TheprogramisproducedinVB.
NET.
AccessdatabaseareusedtostoretheoffsetwhichisgotfromMaxsurfmodel.
Anexampleiscompletedinthe`program,andthesimulationresultsdemonstratethefeasibilityandeffectivenessoftheproposedmethodinthispaper.
Keywords:Re-developmentofMaxsurf;VB.
NET;Access;OffsetTable0引言Maxsurf软件是由澳大利亚FormationDesignSystems公司为船舶设计和建造者开发的,适用于各种船舶设计、分析和建造的一套非常完整的计算机辅助船舶设计和建造软件.
用户借助Maxsurf可以为船体外型建模、评估稳性和强度、预测性能以及展开初始结构定义与分析.
Maxsurf软件目前在全球已拥有广泛分布在澳大利亚、中国、日本、德国、荷兰、新加坡、美国等国家的1000多个船舶设计和建造用户,在各种船舶设计和建造领域都得到了非常普遍的应用[1].
Maxsurf系统由船体模型生成(MaxsurfModeler)模块、船舶阻力及有效马力计算(MaxsurfResistance)模块、船舶水动力性能计算分析(MaxsurfStability)模块、船体结构生产放样(MaxsurfStructure)模块、船舶耐波性能分析(MaxsurfMotions)模块、空间实体自动拟合(MaxsurfFitting)模块、帆船性能分析(MaxsurfVPP)模块和数据转换(MaxsurfLink)模块等模块组成.
一般在船舶设计时主要使用MaxsurfModeler模块和MaxsurfStability模块.
MaxsurfModeler模块是Maxsurf软件包的核心部分.
MaxsurfModeler模块包括一整套用一个或多个真正的三维NURBS曲面,进行三维船体建模的工具[2].
MaxsurfModeler在完成船体三维建模后,无法导出型值表,这就给设计工作带来一定的困难.
本文针对MaxsurfModeler模块进行二次开发,对该模块的相关数据进行访问、抽取和重构,快速地输出型值表.
1Maxsurf开发环境Maxsurf的开发环境是MaxsurfActiveXAutomation.
ActiveXAutomation是微软公司开发的、跨应用程序的、通用的客户化和集成化技术.
通过ActiveXAutomation,Maxsurf和其他Windows应用程序之间的数据交互变得十分方便.
其另外一个强大的特性是用户可以使用常见的客户化编程工具,如VB.
NET(VisualBasic.
NET)、VC(VisualC++)和JAVA等编写MAXSURFActiveX应用程序.
对Maxsurf的二次开发可以通过两种方式实现:其一,Maxsurf用户可以选择VB.
NET(或VC、JAVA等)作为Maxsurf应用程序的开发工具,通过ActiveXAutomation接口在VB.
NET开发环境中实现Maxsurf的数据获取与操作;其二,可以把Maxsurf与其他标准的Windows应用程序(MicrosoftExcel、MicrosoftWord、MicrosoftAccess、AutoCAD2000及更新版本)通过VBA相集成[3],直接在Windows应用程序的VBA中实现数据的访问,但这种方式的不足是只针对特定的Windows应用程序.
VB.
NET是VisualStudio.
NET的一部分,是一种简单易学、功能强大的程序设计语言.
在保留VisualBasic6.
0传统优点的基础上,它提供了很多方便程序开发人员快速开发应用程序的新功能.
本文中选择VB.
NET作为Maxsurf二次开发工具,通过ActiveXAutomation接口在VB.
NET开发环境中实现Maxsurf的数据获取与操作.
2Maxsurf对象访问方式本文以VB.
NET为工具来开发Maxsurf,就是通过操纵Maxsurf对象模型来实现的.
Maxsurf对象模型中的大部分对象都是用来描述曲面、标记点或者网格,或者用来从Maxsurf模型中查找特性参数的.
其中,每一个对象分别都有各自独立的属性和方法.
每种特定类型的对象都是包含了同样特性的一系列对象的集合,例如Design对象中Markers集合包含了所有Marker的信息.
集合(Collection)、列表对象(Lists)和项(Item)是Maxsurf对象模型库中三个重要的概念.
集合是一个存储了有序对象的容器,相当于程序开发中的数组;表对象提供了仅通过调用很少的子程序就可快速访问和修改一组对象数据的方式;一个项代表了一个实体,如Surface或Grids.
无论是集合,还是列表对象,抑或是具体的项,本身都带有属性(properties)和方法(methods).
属性是一些变量,其中存储了对象的具体信息,例如名称、高度和数量等.
不同类型的对象属性类型和名称都有所不同.
方法是一些函数,可以操纵对象,例如增加、删除和修改对象的变量等.
3Maxsurf对象模型库MaxsurfModeler的对象模型库,主要包含八种类型:Application对象模型、Design对象模型、FrameofReference对象模型、Grids对象模型、Surface对象模型、Hydrostatics对象模型、Markers对象模型、Preference对象模型等.
在船舶设计过程中,有些对象经常要使用,而有些对象不经常接触,本文仅对开发过程中用的Application对象模型、Design对象模型、Grids对象模型和Markers对象模型进行详细阐述.
3.
1Application对象模型Maxsurf对象模型的根节点是Application对象.
所有其他对象都是直接或间接通过Application对象实现访问的.
Application对象提供了访问Design和Preference对象、六种Maxsurf属性以及两种方法的途径,如图1所示.
例如,如果访问Design对象,则必须要先引用Application对象,才能获得Design对象的信息和操作.
在Application中,所有的对象、属性和方法都是全局的.
图1Application对象模型结构3.
2Design对象模型Design对象描绘Maxsurf的当前设计的所有方面.
在Design对象中包含一些对象和操作方法,它也是访问其他对象必须要经过的对象,如Markers对象(图2).
访问模型和对象的代码如下:msApp.
Design.
SaveI=msApp.
Design.
Markers(1).
Height图2Design对象模型结构3.
3Grids对象模型Grids对象可用于生成、获取或者编辑MaxsurfModeler中的格子线,除了不支持设置补步长外,支持MaxsurfModeler中的格子线设置的其他所有功能.
Grids对象模型结构如图3所示.
访问模型和对象的代码如下:msApp.
Design.
Grids.
AddGridLinemsGTButtocklines,_Butt_01,4,0i=msApp.
Design.
Grids.
LineCountmsGTButtocklines图3Grids对象模型结构3.
4Markers对象模型Markers对象可用于获取MaxsurfModeler的Markers窗口中标记点的属性,包括标记点的长度、宽度和高度值.
Markers对象模型也能获得标记点的站位信息和相关联的曲面.
Markers对象模型结构如图4所示.
访问模型和对象的代码如下:i=msApp.
Design.
Markers(i).
Heightj=msApp.
Design.
Markers.
Count图4Markers对象模型结构4程序间的接口4.
1VB.
NET调用MicrosoftAccess数据库VB.
NET应用程序可以访问MicrosoftAccess数据库,但VB.
NET自身并不具备对数据库进行操作的功能,进行数据库编程主要利用的是ADO.
NET,ADO.
NET(AcciveXDataOblects)是.
NETFramework中的一系列类库,他能让程序员更加方便地在应用程序中使用和操作数据.
在ADO.
NET中,大量的复杂的数据操作的代码被封装起来,所以在应用程序开发中,只需要编写少量的代码就可以处理大量的操作.
ADO.
NET有效地从数据操作中将数据访问分解为多个可以单独使用或一前一后使用的不连续组件.
ADO.
NET包含用于连接到数据库、执行命令和检索结果等操作的.
NET数据提供程序.
在.
NET应用程序开发中,ADO.
NET可以被看做是一个数据源和数据使用者之间的转换器.
ADO.
NET接收使用者语言中的命令,如连接数据库、返回数据集之类,然后将会这些命令转换成数据源中可以正确执行的语句[4].
ADO.
NET连接MicrosoftAccess数据库的数据提供程序包括ODBC和OLEDB两种方法,ODBC是比OLEDB更早的技术,适合于使用ODBC公开的数据源.
二者都在自己的命名空间中实现,都有自己的类.
ODBC的命名空间是System.
Data.
Odbc,OLEDB的命名空间是System.
Data.
OleDb,在使用之前必须首先引入相应的命名空间[5].
VB.
NET为程序员连接数据源提供了向导,通过向导可以方便快捷地连接数据源,检索和更新数据.
但是由于连接信息不可更改,所以不利于程序发布.
通过动态连接可以解决这个问题.
在下面的程序设计中,就是利用VB.
NET动态链接的MicrosoftAccess数据库.
4.
2VB.
NET调用MicrosoftExcel在应用程序中使用MicrosoftExcel对象,必须首先在项目中加入对该对象的引用.
VB.
NET中编程操纵MicrosoftExcel对象的过程集中体现为对四个常用的对象,即应用对象、工作簿对象、工作表对象和区域对象的操作.
应用对象是MicrosoftExcel对象模型中的顶级对象,使用应用对象可确定应用程序级属性或执行应用程序级方法.
也是访问MicrosoftExcel对象模型的其它部分的入手点;在MicrosoftExcel对象模型中,工作簿对象出现在应用对象的下面,它表示一个工作簿文件.
使用工作簿对象可以处理单个MicrosoftExcel工作簿,而使用工作簿集合可以处理所有当前打开的工作簿对象;工作表对象是工作薄对象的下一级对象,工作薄对象的Sheets属性可以返回当前工作簿中所有工作表和图表工作表的集合.
工作簿与工作表的关系是:每个MicrosoftExcel工作簿可以包含多个工作表,也可以包含多个图表工作表;在MicrosoftExcel中,区域对象是功能最强大、最动态的对象,充分了解区域对象并掌握如何在VB.
NET中有效地使用它,便可以自如地利用Excel的功能了,除了区域对象外,单元格属性Cells也是非常重要的,单元格属性返回表示一个区域对象,包含工作表中某个指定单元格.
要处理某个单元格,可以使用Cells属性返回的Range对象的item属性来指定特定单元格的索引[6].
5程序设计本程序中以MicrosoftVisualStudio2010为开发环境,VB.
NET为程序设计语言,MicrosoftAccess2010为数据库.
利用VB.
NET操纵Maxsurf对象模型获取模型数据信息,再将获取的模型信息存到MicrosoftAccess数据库中,最后将数据库中的模型信息进行整理写到MicrosoftExcel中.
其程序框架如图5所示.
图5程序框架本程序在得到一个模型后,首先打开模型,设置模型的原点、横剖面、纵剖面及水线面;然后计算模型的型值,同时计算出标记点的值,并将计算的值存入到数据库中;最后将将数据库中的型值信息导入Excel表格中.
程序的流程图如图6所示.
为了便于更快捷方便地对型值进行操作,使之按照型值表的格式顺利导出,本程序将从模型中获得型值存入到MicrosoftAccess数据库中,该数据库的数据结构如图7所示.
图6程序流程图7数据结构6应用实例以一个集装箱船模型为应用实例.
用户界面如图8所示.
首先打开模型,设置尾垂线、基平面和中线面的交点为原点,垂线间长间设置20站,设置0mm纵剖线、1200mm纵剖线、2400mm纵剖线、3600mm纵剖线、4800mm纵剖线、6000mm纵剖线、7200mm纵剖线,设置0mm水线、设置2000mm水线、设置4000mm水线、设置6000mm水线、设置8000mm水线、设置10000mm水线;然后计算模型的型值,然后保存到数据库中;最后获取数据,并导出型值表,导出的型值表如图9所示.
图8用户界面图9型值表7总结Maxsurf软件广泛应用于船舶设计工作中.
本文针对Maxsurf软件无法导出型值表这一缺陷,对MaxsurfModeler模块进行二次开发.
文中以VB.
NET为工具来开发MaxsurfModeler,通过操纵MaxsurfModeler对象模型获取型值,然后把型值存到Access数据库中,最后导入到Excel表中.
通过实例证明该方法能够快速获得型值表,大大方便了船舶设计工作.
wordpress简洁英文主题,wordpress简洁通用大气的网站风格设计 + 更适于欧美国外用户操作体验,完善的外贸企业建站功能模块 + 更好的移动设备特色模块支持,更高效实用的后台自定义设置 + 标准高效的代码程序功能结构,更利于Goolge等国际搜索引擎的SEO搜索优化和站点收录排名。点击进入:wordpress简洁通用型高级外贸主题主题价格:¥3980 特 惠 价:¥1280安装环境:运...
日前,国内知名主机服务商阿里云与国外资深服务器面板Plesk强强联合,推出 阿里云域名注册与备案、服务器ECS购买与登录使用 前言云服务器(Elastic 只需要确定cpu内存与带宽基本上就可以了,对于新手用户来说,我们在购买阿里云服务申请服务器与域名许多云服务商的云服务器配置是弹性的 三周学会小程序第三讲:服务 不过这个国外服务器有点慢,可以考虑国内的ngrokcc。 ngrokcc...
有一段时间没有分享Gcore(gcorelabs)的信息了,这是一家成立于2011年的国外主机商,总部位于卢森堡,主要提供VPS主机和独立服务器租用等,数据中心包括俄罗斯、美国、日本、韩国、新加坡、荷兰、中国(香港)等多个国家和地区的十几个机房,商家针对不同系列的产品分为不同管理系统,比如VPS(Hosting)、Cloud等都是独立的用户中心体系,部落分享的主要是商家的Hosting(Virtu...