毕业设计(论文)基于solidworks二次开发技术的型线插值设计.doc

上传人:仙人指路1688 文档编号:2926255 上传时间:2023-03-03 格式:DOC 页数:31 大小:695KB
返回 下载 相关 举报
毕业设计(论文)基于solidworks二次开发技术的型线插值设计.doc_第1页
第1页 / 共31页
毕业设计(论文)基于solidworks二次开发技术的型线插值设计.doc_第2页
第2页 / 共31页
毕业设计(论文)基于solidworks二次开发技术的型线插值设计.doc_第3页
第3页 / 共31页
毕业设计(论文)基于solidworks二次开发技术的型线插值设计.doc_第4页
第4页 / 共31页
毕业设计(论文)基于solidworks二次开发技术的型线插值设计.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《毕业设计(论文)基于solidworks二次开发技术的型线插值设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于solidworks二次开发技术的型线插值设计.doc(31页珍藏版)》请在三一办公上搜索。

1、学号:200910414042基于solidworks二次开发技术的型线插值设计摘 要造船生产设计涉及的方面和内容很多,本文主要对船厂生产设计方面的重点内容进行研究和设计,并与船舶生产设计工作的实际相吻合。为了使重复性较大的船舶绘图工作量减小和更加规范,本文使用VB开发语言对Solidworks绘图软件进行二次开发。对型线进行插值,并将型值点坐标排序保存到表格中,以便下次绘图或光顺计算时所用。关键词:现代船舶设计,Solidworks,二次开发,型线插值AbstractThere are many aspects and contents of shipbuilding production

2、design, we focus on the shipyard production design research and design, and the actual match and ship production design work. In order to make the repeatability of vessels drawing workload reduced and more standardized, this article uses the VB language for secondary development of SolidWorks drawin

3、g software. To single type line interpolation, and data points coordinate,and save the points data to the table for the next drawing.Keywords:modern shipbuilding mode,Solidworks,secondary development single,type line interpolation目 录前言1一、现代船舶的设计及发展现状1(一)船舶设计各阶段11.船舶设计各阶段12.船舶型线插值设计3(二)国内外发展现状41.国外发展

4、现状42.国内发展现状5(三)论文研究内容51论文研究主要内容52.论文结构与安排5二、Solidworks与VB6(一)Solidworks绘图软件6(二)VB程序开发软件7(三)VB与Solidworks二次开发技术81.二次开发技术82、VB开发Solidworks9三、VB开发Solidworks设计10(一)API技术与宏命令10(二)VB开发Solidworks程序开发11四、插值法设计型线13(一)B样条曲线方程建立13(二)三次B样条插值13(三)算法设计14五、型线插值程序设计19(一)插值算法程序代码19(二)、程序界面与运行实例24结论26参考文献27附录:程序代码27前

5、言我国的劳动力资源丰富,工业发展迅速,我国许多城市漫长的海岸线适宜造船,船舶工业的发展具有较强的优势。与此同时,我国进出口贸易的迅速增长,使得对交通运输工具的需求量提高,为船舶工业的发展提供了良好的机遇。现今,全球船舶工业正在亚洲区域转移,我国要抓住这个机遇。想要在激烈的船舶制造业竞争中站稳脚跟,只有靠先进的技术才能提高造船质量、且降低造船成本,在追求“量”的同时,做到利润最大化,这样我国的船舶工业才有希望成为富有竞争力的产业。在船舶制造业中,一艘船的诞生首先要从设计开始,本文主要对船厂生产设计方面的重点内容进行研究和设计,并与船舶生产设计工作的实际相吻合,型线放样对于船舶生产设计是一项非常重

6、要的环节,如何将较小的图纸中的型线准确的放样为实际生产中的样子,就需要对型线进行拟合插值,通过获得更多的点坐标来更加准确的表达型线的形状。Solidworks是一套基于windows的CAD/CAE/CAM/PDM桌面集成系统,现多用于零件开发,但是它强大的功能和易用的界面也同样适用于船舶设计。因此本论文针对生产设计中型线插值问题,用VB二次开发Solidworks,实现将单根型线上点的坐标存入表格,以便于计算或放样使用。一、现代船舶的设计及发展现状(一)船舶设计各阶段1.船舶设计各阶段船舶是一种要在水上航行的物体,对于其结构建筑特点,要进行合理的设计。船舶的种类很多,例如较为常见的客船、集装

7、箱船、散货船、化学品船、拖船和军事用途的驱逐舰、航母、潜艇等,每一种船舶都有其自身的特点,因此船舶设计必须认真对待,慎重考虑。在现代船舶设计中,比较重要的几个设计环节依次是初步设计、详细设计和生产设计。每个环节中所考虑的问题是有所重复的,但是侧重点和详细程度不同。在不同设计阶段中对同一方面的工作不是简单的重复,而是一个逐步近似,螺旋式前进的过程,其中包括:设计要求、主要因素、航速,功率估算、型线、静水力、总布置、干舷、舱容、吨位、重量、重心、阻力、推进、破舱稳性、经济估算等。1.1初步设计阶段在这一阶段,设计人员对设计任务书、造船合同的调查研究,从整体出发,对船舶的总体性能做出一个定位,通过计

8、算、绘图和必要的模拟实验,得出船体的主要参数、主要结构、主要设备选型等。这一阶段要完成的主要技术文件包括:船体说明书、总布置图、型线图、航速,稳性,舱容,干舷等估算书或计算书、中剖面结构图及构件计算书、主要设备明细表等。在得出结果后,设计方应当交由船东审查,将此作为下一阶段设计的参考和依据。1.2详细设计详细设计是设计环节最重要的一个阶段,这个阶段的设计内容基于初步设计的结果,对各个板块进行深入分析,对每个项目进行详细的设计和计算,最终确定船舶的全部技术性能和船体结构。其中,会调整和解决船机电各方面的具体问题和矛盾,最终确定新船全部的技术性能、结构强度、各种设备、材料以及订货选型要求等等。在详

9、细设计阶段需要完成的文件有:船体说明书;详细的总布置图;正式的型线图;重量重心计算书;静水力曲线和各种装载情况下的稳性和浮态计算书;干舷计算书、吨位计算书、舱容曲线;航速计算书、螺旋桨设计图及强度计算书;船体构件规范计算书和总强度计算书;典型横剖面图、基本结构图、外板展开图、肋骨型线图;机舱结构图、首部结构图、尾部结构图、主要舱壁结构图、上层建筑结构图;防火控制图;锚泊、起货、舵、救生设备的计算书和布置图;各系统原理图;舱室内部舾装图;详细的设备、材料规格明细表;规范和法规有特殊要求的计算书和实验报告等。1.3生产设计在详细设计之后,基于前者的基础上,设计人员开始安排生产设计。在安排生产设计时

10、,要结合船厂和工人的实际生产情况,根据船厂的工艺装备条件、施工方案、工艺要求和生产管理情况,做出合理的安排。设计出的施工图纸以及施工工艺等文件必须满足以下基本要求:船体生产设计应立足于造船企业的全部产品和各个专业中的全面实施;应贯彻建造方针、施工要领等文件所提出的要求;应根据工艺阶段和生产区域,包括车间生产活动的需要,绘制施工图、管理表并提供有关施工信息。最后按照具体情况分析后确定是按工序出图还是按分段出图。综上所述,设计过程中每个不同的阶段都有其独立性,但是每个阶段又不可分离。前一阶段的设计结果对下一阶段的设计有着依据作用,后一阶段是对上一阶段进一步的分析。2.船舶型线插值设计船舶型线在船舶

11、总体设计中占据着非常重要的地位,因为型线直接影响到船舶的结构、性能,作为设计工作的重要环节,型线设计也占据着大量的设计时间,因此船舶型线设计所耗时间直接影响船舶的整个制造周期。船舶型线包含了直线、二次曲线、自由曲线等,十分复杂,如何进一步加快型线设计速度及提高设计水平一直作为船舶发展的一个重要参考依据。在船舶制造中,船体的几何形状是以船体型线图来表达的,从图中量取的数据,通常被制成型值表,用于表达船体的尺寸。但在绘制型线图的过程中,由于反复量取数据,不可避免的存在误差,加上型线图是一种缩小了的图形,使隐含的误差更难显露。因此必须放大型线图,并经过光顺、保证剖面线上各对应点的一致性后,才能作为施

12、工依据。由设计所提供的型值表,暂且不说制图工具以及人工所造成的误差,就单单是型值表中型值的个数,也远远不够确定构架轮廓形状的需要。型线图上的站线间距比肋骨间距要大若干倍,这必将产生误差,所以必须根据为数较少的型值来精确地找出那些介于站线间的肋骨框架的型值,从而确定船体纵向的线型,保证船体的光顺性。从数学上说,型值是船体模曲面在三维直角坐标系中按一定规律分布的一系列离散点,因而型值表是船体模曲面函数的一种表达式。当然,船体模曲面的值域是由一些边界条件来限定的。根据满足某曲面函数的一些已知离散点的坐标,来寻找该曲面上其他点的坐标,这在数学上称之为插值问题。插值法是函数逼近的一种重要方法,是数值计算

13、的基本课题。概括地讲,当线性函数f(x)在区域上的若干个互异点xj=(x1, x2, x3, xn)的函数值f(xj),j=1,2,3,n,或给出函数f(x)的一个数据表,现要寻求一个函数q(x)来近似的替代(或逼近)f(x),使得它们在相应节点处的函数值(或导数值)相等,而对非节点处的(x,xxj)函数值,则用f(x)q(x)来替代。这就是插值问题的一般定义。q(x)称为f(x)的插值函数,xj称为插值节点。插值问题通常涉及到一下三个方面的数学内涵:(1)插值问题是否有解(即能否找到插值函数q(x)),如果有解,解是否唯一;(2)插值函数q(x)逼近于f(x)的误差,及q(x)-f(x)如何

14、估计;(3)当插值节点无限加密时,插值函数q(x)是否收敛于f(x)。工程技术人员关心的只是应用问题,即根据实际情况恰当的选择插值函数并希望计算方便,使逼近误差在可接受范围内。(二)国内外发展现状1.国外发展现状在船舶制造领域,最先由欧州国家兴起,例如挪威、德国等,随着经济发展,亚洲国家也开始进入船舶设计领域,尤其在船舶生产设计领域,日本和韩国已取得重大进步。计算机辅助设计和制造兴起于60年代,在这几十年中,船舶设计领域对计算机设计的开发投入了相当大的精力和时间,同时这一科学技术的使用更加广泛,在对产品进行设计、制造、测试领域中都离不开计算机辅助设计和制造。这一技术不仅提高了生产过程的自动化程

15、度,同时在改进质量、缩短设计到生产的周期时也产生了巨大的作用。在计算机辅助设计中,较为常见的有AUTOCAD、TRIBON、NAPA、CATIA。ATUOCAD是最普遍使用的绘图软件,不过其功能有限,若要做到绘图以外的工作还需要大量的二次开发。TRIBON是目前大多数东亚船厂和设计单位使用的软件,做设计很方便的。不过该软件属于船舶行业的专用软件,即使是专业人员也需要比较长时间的学习才能掌握。韩国在使用该软件方面比较成熟,还有许多相关的二次开发。NAPA同样是专用的船舶设计软件,其在型线设计方面的功能非常强大。特别是在设计大型船舶方面,NAPA的优势很明显。不过目前国内用NAPA的还不是很多。C

16、ATIA是一个很优秀的生产设计软件,但目前在船舶行业的应用还不是很普遍。虽然TRIBON和NAPA都能做三维模型,但CATIA能让三维模型动起来。CATIA做仿真功能非常强大,但CATIA对计算机性能要求很高,一般都只能在配置非常好的PC或比较高档的图形工作站上运行。2.国内发展现状我国船舶设计起步晚,但是由于世界制造业的发展,目前亚洲是世界上船舶制造的大头,我国作为一个制造业大国,在船舶制造上的发展也非常迅速,国内船舶设计主要用的软件有TRIBON、CADSS5、上海船舶工艺研究所与上海船厂联合开发的SB3DS三维造船软件,以及沪东船厂自主开发的东欣软件。在船舶型线插值领域,我国主要还是依赖

17、于对AUTOCAD的二次开发。如今,中国造船量全球领先,但基本都是制造一些低端科技产品,例如散货船、集装箱船等,高科技船舶例如LNG船等,只有几个大型船舶企业有能力建造。此外在造船周期上我国也比日本和韩国长许多,以至于我国造船的利润远比不上其他先进造船国家。我国船厂研究设计水平较低,生产工艺落后,生产管理精度跟不上,此外随着中国经济转型,劳动力的成本也随之上升,导致利润空间更加少。所以发展国内设计生产水平是我国造船业发展所关注的重要方面。(三)论文研究内容1论文研究主要内容在船舶设计中需要将船型曲面上的线作为构件的形状约束或理论参考线,这些线分为两类,一类是平面曲线,第二类是空间曲线,这些线条

18、将作为放样曲面的截面线或轨迹线,是船舶放样的重要依据。本论文要通过对型线进行拟合逼近,所采用的方法是三次B样条插值法,建立型线的方程,获得插值点的坐标。并且要利用VB对Solidworks进行二次开发,即利用VB程序来对型线进行插值,并获取点坐标。本文的重点工作有两个方面,一是如何建立型线的方程,二是如何通过程序来实现这一步骤。2.论文结构与安排论文首先对船舶设计各阶段及其国内外发展现状做一简单介绍,并选取Solidworks这一三维软件进行研究。接着分析Solidworks和VB软件的优缺点,并对二次开发进行探讨,通过比较各个二次开发程序的优缺点,最后选取VB来进行二次开发,在Solidwo

19、rks二次开发中,API与宏命令是非常重要的一个部分,因此会在论文中进行介绍。对于型线插值,首先建立B样条曲线方程,并引入三次B样条插值方法,通过多段B样条来拟合型线,得出插值方程。最后就是将前面内容转化为程序代码,这里需要利用Solidworks自带的一些宏命令来简化程序开发难度,论文会对此进行介绍。在论文的最后部分会对程序运行结果进行分析和举例,并得出相应结论。二、Solidworks与VB(一)Solidworks绘图软件SolidWorks软件是世界上第一个基于Windows开发的三维CAD系统,SolidWorks所遵循的易用、稳定和创新三大原则得到了全面的落实和证明,使用它,设计师

20、可以大大减少了设计时间,使产品快速、高效地投向了市场。功能强大、易学易用和技术创新是SolidWorks 的三大特点,这三大特点使得SolidWorks 成为领先的、主流的三维CAD解决方案。SolidWorks 能够提供丰富多样的的设计方案、降低设计过程中的出错率以及提高产品质量。在目前所有的三维CAD设计软件中,SolidWorks是设计过程比较简便而方便的软件之一。使用SolidWorks 时,可以直接在装配环境中方便地设计和修改零部件。2011年9月20日,DS SolidWorks推出SolidWorks 2012新品,这也是SolidWorks的CAD软件史上发布的第20 个版本。

21、在SolidWorks 2012 中,增加和改进了许多项目,可以更好的帮助设计者加快工作效率,并且完善设计环境。Solidworks2012的亮点可以归纳为以下几点:1)新添加成本计算模块;2)钣金模块;3)成型工具优化后,操作更方便;4)增加了扫描法兰工具。本次论文主要使用此版本的Solidworks。图2.1是Solidworks的用户界面。图2.1.Solidworks用户界面(二)VB程序开发软件Visual Basic是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。从任何标准来说,VB都是世界上使用人数最多的编程语言,它由BASIC编程语言演变而来。VB中含有图形用户界面和

22、快速应用程序开发系统,用户可以很容易地使用DAO、RDO、ADO连接到数据库,或者方便地创建ActiveX控件。编程人员可以通过使用VB提供的组件轻松地创建应用程序。Visual Basic 通过COM/COM+的强大功能,N-层结构的分布式应用程序可以被开发。并且,通过使用Visual Basic,程序员也能够在IIS平台上开发强大的Web应用程序。Visual Basic 6.0并未在语言方面和IDE方面做大改进,但是许多新添加的组件成为Visual Basic开发人员可以利用的工具,如文件系统对象等。新的字符串函数分割和替换等也为Visual Basic的编程人员提供很多便捷。总之 Vi

23、sual Basic 6.0 已经是一个非常稳定成熟的开发系统,可以使让使用者轻松创建多层的系统以及 Web 应用程序。图2.2是VB的用户界面,左侧是控制命令栏,右侧是信息栏。图2.2.VB6.0用户界面(三)VB与Solidworks二次开发技术1.二次开发技术Solidworks二次开发简单来说就是利用类似VB、C+、C#等支持OLE的编程语言作为开发平台,调用Solidworks API函数实现相应的功能,从而实现一些特殊的要求。同时,由于Solidworks API及其有关文档包括在Solidworks软件中,任何用户都可以对其进行二次开发。SolidWorks API 接口使用面向

24、对象的方法 ,所有的函数都是有关对象的方法或属性。用户通过调用对这些对象的方法和属性,就可以通过自己开发的程序,对 SolidWorks 软件进行各种操控。SolidWorks 有两种API接口:一种是基于OLE Automation 的IDispatch 技术; 另一种是基于Windows 基础的COM的开发方式。基于OLE Automation 的IDispatch 技术是一种快速开发的手段,通常多用于 VB、Delphi 编程语言,通过 IDispatch 接口将对象的属性和方法暴露,从而使客户在使用这些程序时,可以调用它所支持的方法。COM 是 Microsoft 公司提出的一种标准协

25、议,它是一种组件开发技术,通过连接两个软件模块,在这种连接建立之后,二者之间就可以通过接口来进行通讯。一般情况下,由VC+编写此方法。2、VB开发Solidworks对Solidworks的开发中,较为常见的有VB、C+、VC和VBA。其中VB开发的最大特点就是简单,使用VB开发周期短,代码效率高。Visual Basic(VB)是windows环境下可视化快速应用开发工具。通过动态数据交换编程技术,VB可以在应用程序中与其他windows应用程序进行数据交换,并且可以在不同的应用程序之间通信。VB环境下建立的客户端可以直接访问Solidworks中的对象。Solidworks支持OLE标准,

26、将OLE自动化。作为OLE服务器,Solidworks提供了大量的OLE对象,以及这些对象的方法和属性,在客户应用程序环境中,用户通过操控对这些OLE对象及其方法和属性,可以开发相应的软件和各种功能。Solidworks对象为VB对Solidworks工作环境进行访问处理提供了接口。Solidworks对象包括Environment、Frame、ModelDoc、Modeler、AtrributeDef、SWPropertysheet,以及一些其他的对象。作为Solidworks API中的最高层对象的Solidworks对象,它可以直接或间接的访问Solidworks API中其他所有的对象

27、。利用它,可以实现应用程序最基本的操作,如生成、关闭、打开、结束文件、设置当前的激活文件、重排图标和窗口、生成属性定义,也可以对solidworks的系统环境进行设置。Solidworks中的API函数通过VB被调用,可以完成零件的建造和修改;零件各特征的建立、删除、修改等各项控制;提取零件特征信息;零件工程图纸中的各项信息;零件的装配信息等。基于VB的SolidWorks二次开发最重要的是程序代码的编写。开发者可以直接编写代码,即完全用程序实现三维模型的编辑以及参数化设计,这种方法非常复杂,但对具有复杂形体的零件造型实现度高。同时,开发者需要对Solidworks API函数十分了解,但是S

28、olidworks API函数非常之多,往往初学者不容易完全掌握。另外一个简单实用的方法是先录制使用Solidworks用户界面执行的操作,即录制宏,获得宏操作代码,将其复制添加到VB程序所需部分,然后编辑修改以达到程序要求,通过程序驱动设计变量实现模型的建立和更新,这种方法编程较简单,通用性好。三、VB开发Solidworks设计(一)API技术与宏命令在Solidworks API中,经常用到对象、属性、方法等术语,准确理解这些术语对进行二次开发很重要。对象是现实世界中的一个实体,其特性是:(1)每一个对象的名字不能与其他对象重复;(2)它的某些特征通过属性来确定;(3)有且只有一组操作可

29、以决定对象的一种行为。图3.1所示为Solidworks API部分对象体系,每一层又包括若干对象,每个对象又都有自己的属性、方法和事件。图中Solidworks对象是Solidworks API中的最高层的对象,它能够直接或间接地访问Solidworks API中的所有其他对象。通过该对象可以实现应用程序的最基本操作,如可以控制Solidworks软件的执行或退出,Solidworks文件的建立、打开、关闭等操作。每个特定的对象都具有“属性”和“方法”。 图3.1.Solidworks API部分对象体系宏是一系列命令的集合,相当于DOS下的批处理文件,或者AutoCAD中的脚本文件。编程人

30、员可以先录制Solidworks用户界面执行的操作,然后调用Solidworks宏重新执行这些操作。宏所包含的调用等同于使用用户界面执行操作时,对API的调用。通过记录宏,可以编辑在代码所需的命令和语法上获得飞跃。在写任何代码前,都是记录宏来用作程序基础。即当想在程序添加功能时,返回到Solidworks,记录添加的宏。然后剪贴和黏贴记录的宏到代码中,这样做,可以大大简化编程难度。1(二)VB开发Solidworks程序开发VB二次开发Solidworks最重要的部分就是如何编写程序代码。开发者可以选择直接编写代码,这种方法需要开发者非常熟悉Solidworks API函数,所以对于初学者而言

31、比较不可取。这里,我们选择一个较为简单且实用的方法,就是先使用Solidworks录制宏,获得宏操作的代码,再将其复制到VB中进行修改。下面就介绍一下本次论文的开发过程:(1)打开VB程序设计软件,根据要求创建主界面,如图,首先我们分别创建了两个标签、两个文本框两个命令按钮。对于第一行的文本框,这里供使用者输入表格名字,初定义了在E盘创建一个名为xxx的excel表格,使用者也可以在这里修改成其他名字,点击创建按钮创建。第二行的文本框是用于输入插值的型线名,在这里输入型线名后点击运行即可。 图3.2.VB程序界面(2)录制宏获得宏操作代码,这里需要先打开Solidworks,打开船舶型线图,点

32、击录制宏按钮,如图3.3所示。图3.3录制宏(3)在型线图中选择型线,并右键解除约束,对其进行简化样条曲线,插值完成后结束草图绘制,得到以下代码:Set swApp = CreateObject(SldWorks.Application)Set Part = swApp.ActiveDocboolstatus = Part.Extension.SelectByID2(Spline2, EXTSKETCHSEGMENT,16.0000000000175,9.40554604417026, 8.7959797972503, False, 0, Nothing, 0)boolstatus = Par

33、t.Extension.SelectByID2(Spline2, EXTSKETCHSEGMENT, 16.0000000000008, 9.32049347952514, 8.70330946323821, False, 0, Nothing, 0)Part.EditSketchboolstatus = Part.Extension.SelectByID2(Spline2, SKETCHSEGMENT, 91.000000057428, 9.17897203325775, 8.48255910582748, False, 0, Nothing, 0)Part.SimplifySpline 2

34、.22708951995174E-02boolstatus = Part.Extension.SelectByID2(Spline2, SKETCHSEGMENT, 91.000000057428, 9.17897203325775, 8.48255910582748, False, 0, Nothing, 0)Part.ClearSelection2 TruePart.SketchManager.InsertSketch True (4)将宏代码复制到VB程序中加以修改,并加入其它要求的代码,得到最后完整的代码(详见第五章),来实现这一步骤。四、插值法设计型线(一)B样条曲线方程建立在船舶的

35、结构设计中,需将船体曲面上的线作为结构的形状作为约束或理论参考线,一般为B样条形式。法国的 Bezier提出了一种新的参数曲线表示方法,称为Bezier曲线。后来又经过 Gordon、Forrest和 Riesenfeld等人的拓广、发展,提出了B样条曲线。Bezier曲线的形状是通过一组多边折线(特征多边形)的各顶点唯一地定义出来的。在这组顶点中:(1)只有第一个顶点和最后一个顶点在曲线上;(2)其余的顶点则用于定义曲线的导数、阶次和形状;(3)第一条边和最后一条边则表示了曲线在两端点处的切线方向。Bezier曲线是由多项式混合函数推导出来的,通常 n+1 个顶点定义一个 n次多项式。其数学

36、表达式为:F(i)=+Bi,n(t) (0 t 1)式中:Fi:为各顶点的位置向量;Bi,n(t):为伯恩斯坦基函数伯恩斯坦基函数的表达式为: Bi,n(t)=ti (1-t)n-i 式中:t0,1,i=1,2,3,n(二)三次B样条插值在1946年,样条函数的概念由美国数学家I.J.Schoenberg提出的,他定义了一种B样条函数。 三次B样条函数由相邻四点确定一段,在型线插值中,由n个点定义(n-3)段三次B样条曲线,且相邻两段必须满足连续性条件。假定在区域a,b上给定一个分段:a=x0x1xn-1xn=b,在a,b上的一个函数Q(x),如果满足下列条件:(1)每段小区域中xi-1,xi

37、(i=1,2,n)内Q(x)分别是三次多项式函数; (2)在节点xi(i1,2,n-1)处,Q(k)(xi-0)=Q(k)(xi-0),k=0,1,2成立:即小区域上的三次多项式函数,节点xi处二次连续。(3)满足插值条件yi=S(xi),i=0,1,n则称Q(x)在(a,b)区间上是插值三次样条函数。2由已知的伯恩斯坦基函数Bi,n(t)=(1-t)n-i,当n=3,则有三次B样条曲线的伯恩斯坦基函数如下:B0,3(t)=t0(1-t)3=(1-t)3B1,3(t)=t1(1-t)2=3t(1-t)2 B2,3(t)= t2(1-t) =3t2(1-t)B3,3(t)= t3(1-t)0=t

38、3 (1)由式(1)可把三次B样条曲线表示为F(t)=i,3(t)Fi = (1-t) 3 3t(1-t)2 3t2 (1-t) t3 ,0t1 (2)三次伯恩斯坦基函数图像如图4.1所示: 图4.1. 三次伯恩斯坦基函数图像(三)算法设计船体坐标系如下所示图4.2船体坐标系船体横剖面的视图如图4.3所示:图4.3船体横剖面图把船体外形曲面视为沿船长X方向无限密布的横剖线,构成了按一定的规律变化构成的空间曲面。 因此,首先用数学方程表达各横剖线,然后把一个个沿船长方向变化的横剖线,表达成剖面位置的函数,曲面方程表达为:. 式中: b(x)为参变量,是沿船长方向剖面位置的函数。船的横剖线沿中线可

39、以看作是对称两部分,所以在肋骨型线图中取一半,肋骨型线图的左半边是船尾,右半边是船首。但都可以看作是三次函数曲线。 在设计中没有考虑复杂的船型,只是选取简单的船体,其型线是一条光滑简单的曲线。因此在建立其数学模型时可简单地将其分为几个函数表达式进行描述,在每个分段中遇到特殊情况也可以再进行分段考虑。船中部型线如图4.4所示,根据其形状分为两段分别计算,分别为上部直线段和下部曲线段图4.4船中部分的型线两段中AB段为曲线段,BC为直线段,设型线的两段函数表达式如下: AB段:Z=f(y) BC段:y=y0函数部分采用三次多项式函数描述。型值表中的型值如表4.1所示:YZ9010111124124

40、01379142001533816799161700 表4.1将型线建立表达式如下:AB段:Z= (0y16)BC段:Y=16 对型值表中的肋骨型线线的型值进行分析得到方程式:AB段:Z= (0y16)BC段:Y=16 可以得到插值结果如表4.2所示,YZ90101110.611.04112411.424.36124012.553.82137913.5114.981420014.5200.051533815.5450.0915.7463.0815.9538.03表4.2首尾部的肋骨型线如图4.5所示,首尾部的型线较为复杂,我们可将其分为三段三次曲线,图4.5 首尾部分的型线AB、BC、CD曲线

41、设其函数表达式如下:f1(y) AB段Z= f2(y) BC段f3(y) CD段函数部分采用三次多项式函数描述。将型线建立表达式如下: (y1yy2)Z= (y2yy3) (y1xy3)同时为了光顺,还要满足一阶导相等,即f1(y2)= f2(y2)和f2(y3)= f2(y3)。由于在上述设计中只是选取简单的船体,所以模型有很大的局限性。而且数学模型表达中也会产生误差。希望以后工作可以弥补这些不足,建立更为完整的模型,使得对于型线的拟合更加精准,这样用插值后的值所绘出的型线才能保证与原型线一致。五、型线插值程序设计(一)插值算法程序代码启动VB6.0开始创建excel表格调用Solidwor

42、ks插值型线获取型值点坐标,保存退出Solidworks退出EXCEL退出VB结束图5.1程序流程图本程序的主要设计的主要目的是对型线插值,然后将型值点的坐标保存到表格,以便下次绘图或计算使用。程序的流程如图5.1所示,是通过VB界面的操作来创建excel表格,并通过代码调用Solidworks,插值指定型线获得型值点坐标,而后将其保存到excel表格中,最后退出程序。 (1) 程序的实现是通过代码,而VB是可视化操作的一款软件,非常适合做二次开发,创建一个VB界面,让用户通过简单的输入和操作来完成型线插值和保存型值点。在VB的程序界面中有一个文本框Text1.Text,这是用于输入保存表格的

43、路径和命名,给它的初定义为“e:xxx.xls”,其意义为保存在E盘名为xxx的表格,使用时可根据需要进行更改。命令按钮的代码如下,其意义为根据文本框输入的内容创建相应路径和名称的表格,若名字重复则会弹出提示为“文件已存在”,否则提示“创建成功”。Private Sub Command1_Click()Dim filename As Stringfilename = Text1.TextIf Dir(filename) = ThenOpen filename For Append As #1Close #1MsgBox 创建成功。, vbInformation, 成功。ElseMsgBox 文

44、件已存在., vbInformation, 已存在在文件.End IfEnd Sub(2) 每个程序代码都需要一定的对象和变量,所以要先定义相应参数。Dim excelapp As Object 定义excel表格对象Dim sheet1 As Object 定义一个表格,用于之后储存坐标值Dim sketchPointArray As Variant 定义一个数组,为型值点数组Dim theSketch As Object 定义草图对象Dim pointCount As Integer 定义坐标个数Dim i As Integer 定义i,j为整型,用于循环中Dim j As Integer

45、 Dim x As DoubleDim y As DoubleDim z As Double 定义x,y,z循环变量,作为坐标点的坐标值Dim n As Integer 定义n为循环个数,n将由Solidworks赋值Dim t As String 定义字符变量Dim boolstatus As Boolean 定义变量为Boolean型,表达式为数值型Dim longstatus As Long, longwarnings As Long(3)这部分代码由录制宏得到,在Solidworks中,对某根型线进行操作,首先将其接触约束,然后简化样条曲线,最后退出草图绘制。在录制好宏之后,试着在Solidworks中运行一遍,并证实这是可行的,再将其复制到VB中加以修改,把原本对特定一根型线激活的代码改成可以由操作者输入曲线名称,自己指定型线后激活。下面简单介绍一下代码主要作用,代码首先创建Solidworks应用程序对象。用CreatObject函数创建Solidworks应用程序对象的引用,激活Solidworks草图,对型线进行插值,插值完成后清除选择。Set swApp = CreateObject(SldWorks.Application) 获得Solidworks对象Set Part = swApp.Ac

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号