亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VBA的結(jié)構(gòu)有限元建模命令流自動生成方法

        2016-03-18 10:17:29秦江濤
        造船技術(shù) 2016年1期
        關(guān)鍵詞:二次開發(fā)船體命令

        胡 江, 秦江濤

        (1.武漢理工大學(xué) 高性能艦船技術(shù)教育部重點(diǎn)實驗室, 湖北 武漢 430063; 2.武漢理工大學(xué) 交通學(xué)院, 船舶、海洋與結(jié)構(gòu)工程系, 湖北 武漢 430063)

        ?

        基于VBA的結(jié)構(gòu)有限元建模命令流自動生成方法

        胡江1,2, 秦江濤1,2

        (1.武漢理工大學(xué) 高性能艦船技術(shù)教育部重點(diǎn)實驗室, 湖北 武漢 430063; 2.武漢理工大學(xué) 交通學(xué)院, 船舶、海洋與結(jié)構(gòu)工程系, 湖北 武漢 430063)

        摘要針對目前船舶結(jié)構(gòu)有限元分析建模方法存在的不足,采用VBA編程方法對船舶設(shè)計軟件Maxsurf進(jìn)行二次開發(fā),能自動提取Maxsurf數(shù)據(jù)庫中肋骨、艙壁、甲板的空間位置坐標(biāo)數(shù)據(jù),并快捷地轉(zhuǎn)換為可在ANSYS、Patran等有限元軟件上執(zhí)行的APDL或PCL參數(shù)化建模命令流文件。相關(guān)實例表明該方法能顯著提高建模及相關(guān)修改工作的效率。

        關(guān)鍵詞結(jié)構(gòu)有限元建模二次開發(fā)命令流VBAMaxsurf

        Automatic Generation of Parametric Command Flow for FEM Modeling of Structure Based on VBA Method

        HU Jiang1,2, QIN Jiang-tao1,2

        (1.Key Laboratory of High Performance Ship Technology of Ministry of Education, Wuhan University of Technology, Wuhan Hubei 430063, China; 2.Departments of Naval Architecture, Ocean and Structural Engineering, School of Transportation, Wuhan University of Technology, Wuhan Hubei 430063, China)

        AbstractAiming at the problems existing in current FEM modeling of ship structure,secondary development work using VBA for the ship design software Maxsurf has been done, by which the space coordinate dat of frame shape points, bulkhead and deck can be automatic extracted and convered to the APDL or PCL command flow file which can be run on the FEM software like ANSYS or Patran. Related examples show that the method can significantly improve the efficiency of modeling and the related modification work.

        Keywords FEM modeling of ship structureSecondary developmentCommand flowVBAMaxsurf

        0引言

        由于精度高、實用性強(qiáng)以及行業(yè)的普遍認(rèn)可,船舶結(jié)構(gòu)有限元分析被廣泛應(yīng)用于各類船舶的結(jié)構(gòu)計算中。其中船體結(jié)構(gòu)建模是有限元分析最基礎(chǔ)的工作,但由于船體外形復(fù)雜、內(nèi)部構(gòu)件繁多,該工作耗時長且易出錯。因此采用編程手段,對建模工作進(jìn)行自動化處理就顯得尤為必要。

        目前船體結(jié)構(gòu)有限元建模一般采取兩種方法。第一種方法是利用初步設(shè)計或詳細(xì)設(shè)計階段在其他船舶設(shè)計軟件中建好的船體模型,將其轉(zhuǎn)換成IGS、STEP等標(biāo)準(zhǔn)格式導(dǎo)入有限元軟件中,再在模型上切割出肋骨線、縱桁線等結(jié)構(gòu)線段。該方法省時快捷,但要對船體面進(jìn)行多次切割,且在模型的轉(zhuǎn)換和切割過程中常會出現(xiàn)模型拓?fù)湫畔G失、幾何信息錯誤(如面的破損等)等情況,導(dǎo)致后續(xù)網(wǎng)格劃分、計算等無法進(jìn)行。第二種方法是在結(jié)構(gòu)有限元分析前處理模塊中,通過圖形界面或手工輸入命令流的建模方式生成船體模型。該方法生成的模型精度好且無需對模型進(jìn)行二次轉(zhuǎn)換處理,但由于需要手工輸入型值數(shù)據(jù),工作繁瑣、耗時長且容易出現(xiàn)錯誤。

        為了充分發(fā)揮上述方法各自的優(yōu)點(diǎn),克服其不足,本文采用VBA(Visual Basic for Applications,簡稱VBA)開發(fā)的程序?qū)崿F(xiàn)了既能充分利用船舶設(shè)計軟件Maxsurf中的船體三維模型數(shù)據(jù),又能自動生成相應(yīng)有限元計算所需的船體建模命令流文件的功能,從而達(dá)到了快捷參數(shù)化建模與修改的目的。

        1開發(fā)背景與思路

        1.1Maxsurf 簡介

        Maxsurf是澳大利亞Formation Design Systems公司開發(fā)的船舶設(shè)計建造軟件中的建模模塊。2011年該軟件成為Bently工程軟件中的一員,其主要優(yōu)勢在于強(qiáng)大的NURB(非均勻有理B樣條)曲面建模能力、與Word、AutoCAD、Excel等通用軟件良好的數(shù)據(jù)交換能力,以及實時快捷的水動力性能計算能力,在國內(nèi)外諸多高校、科研院所、制造企業(yè)中有著廣泛的應(yīng)用。

        1.2Maxsurf二次開發(fā)構(gòu)架與方法

        目前國內(nèi)外針對Maxsurf二次開發(fā)均展開了相關(guān)工作。國外主要是將各種多目標(biāo)遺傳優(yōu)化算法如NSGA-II、EASDS等通過二次開發(fā)嵌入Maxsurf中,進(jìn)行船型的水動力優(yōu)化工作[1、2];國內(nèi)則主要進(jìn)行數(shù)據(jù)轉(zhuǎn)換接口的二次開發(fā)[3、4]以及系列船型的仿射變換[4、5]。

        Maxsurf 自身并無二次開發(fā)的工具,但提供了二次開發(fā)的接口,使得其他程序如Excel、Access、AutoCAD可以通過接口得到所需要的數(shù)據(jù)。該方法核心是微軟所推行的COM(Component Object Model)組件對象模型技術(shù)[6],其實質(zhì)是允許一個應(yīng)用程序操作另一個應(yīng)用程序[2],[7]?;谠摷夹g(shù)開發(fā)的程序或系統(tǒng)具有開放性好、易升級、易維護(hù)、易擴(kuò)展、與平臺及語言無關(guān)等特點(diǎn)。

        COM是面對對象的軟件模型,因而對象是它的基本要素之一。本文的開發(fā)工作就是通過編程語言對應(yīng)用程序Maxsurf中對象(Object)的操控來實現(xiàn)的。在Maxsurf中,對象具體指代的是surface(面)、control point(控制點(diǎn))、marker(標(biāo)記點(diǎn))這些可以定義船體模型的元素,每一個對象都包含“特性”(Properties)和“方法”(Methods)兩種屬性,其中,“特性”是用來存儲類如名稱、型值之類的常量,“方法”是指一些允許對對象進(jìn)行操控的函數(shù)[6]。

        對象本身不可被外部程序直接訪問,但Maxsurf通過把開放對象的“特性”與“方法”給外部程序,就可以使用許多與COM組件技術(shù)兼容的程序語言(如Matlab、Visual Basic、C++和Java等)來定義、存取和修改對象,進(jìn)而達(dá)到控制船體模型、獲取相關(guān)數(shù)據(jù)信息的目的。

        Maxsurf是以層級結(jié)構(gòu)來組織對象的,其頂層對象是Application,其余所有對象都直接或間接與之關(guān)聯(lián)[6]。圖1以對象Application為例,展示了部分對象之間的層級結(jié)構(gòu)關(guān)系(限于篇幅,圖中只對對像Design作了展開)。

        圖1 “對象”層級結(jié)構(gòu)圖

        各對象之間的結(jié)構(gòu)關(guān)系,在開發(fā)代碼中語言的組織順序里也有體現(xiàn),下面以一段賦值代碼為例進(jìn)行說明。

        (1) Dim msApp as Maxsurf Modeler.Application;

        (2) Dim i%;

        (3) Set msApp=New Maxsurf Modeler.Application;

        (4) i=msApp.Design.FrameOfReference.DatumWL。

        其中(1)、(2)、(3)行代碼是基本的定義語句,代碼(4)實現(xiàn)了將水線高度值賦給參數(shù)i的功能,可以很清楚地看到代碼(4)中各對象與圖1中相關(guān)對象相一致的結(jié)構(gòu)層級關(guān)系。

        2命令流生成程序?qū)崿F(xiàn)過程

        2.1開發(fā)環(huán)境

        本文選擇了Excel VBA開發(fā)環(huán)境,主要基于以下幾點(diǎn):(1) VBA語言雖然在運(yùn)行速度上不及C++之類的語言,但初步設(shè)計或詳細(xì)設(shè)計階段船體模型數(shù)據(jù)類型單一,也不包含復(fù)雜的生產(chǎn)加工信息,VBA可勝任此類數(shù)據(jù)的提取和轉(zhuǎn)換工作;(2) 以Excel作為數(shù)據(jù)傳遞的媒介,符合日常工作習(xí)慣,也便于后續(xù)數(shù)據(jù)處理工作;(3) VBA語言相對簡單,且不用做封裝處理,便于使用者修改代碼,實現(xiàn)符合自身需求的功能。

        2.2程序開發(fā)簡述

        2.2.1庫文件的引用

        在Excel環(huán)境下要實現(xiàn)與Maxsurf數(shù)據(jù)庫的連接,可使用前期聯(lián)編方法或后期聯(lián)編方法。與后期聯(lián)編相比,前期聯(lián)編的代碼運(yùn)行速度更快且代碼錯誤在編譯階段就可以被自動識別,要使用前期聯(lián)編方法首先需在VB編輯器的引用中加Maxsurf 庫文件,即在引用對話框中對“Bentley Moderler 1.1 Automation Library”勾選,如圖2所示。

        圖2 Maxsurf庫文件的引用

        圖3 程序流程圖

        2.2.2程序主要步驟與流程圖

        程序主要的步驟與流程如下(流程圖見圖3)。

        (1) 載入Maxsurf模型并調(diào)整精度;

        (2) Mlist命令提取型值點(diǎn)空間坐標(biāo)數(shù)據(jù);

        (3) 空間坐標(biāo)數(shù)據(jù)遍歷賦值,輸出至Excel表格并轉(zhuǎn)換成命令流文件;

        (4) 命令流數(shù)據(jù)導(dǎo)入ANSYS或Patran生成模型。

        2.2.3程序關(guān)鍵代碼

        限于篇幅,下面只對提取型值數(shù)據(jù)的VBA代碼與生成命令流的VBA代碼進(jìn)行說明。

        (1) For i = 1 To count 'msDesign.markers.count;

        (2) Coord(0) = mList(i).Position;

        (3) Coord(1) = mList(i).Offset;

        (4) Coord(2) = mList(i).Height;

        (5) Range("A" & i + 1) =i;

        (6) Range("B"&i + 1) =Format(Coord(0), "#0.00";

        (7) Range("C"&i + 1) =Format(Coord(1), "#0.00";

        (8) Range("D"&i + 1) =Format(Coord(2), "#0.00" 。

        第(1)行代碼是對型值點(diǎn)進(jìn)行遍歷。第(2)、(3)、(4)行代碼分別將型值點(diǎn)的Position(縱向坐標(biāo))、Offset(橫向坐標(biāo))、Height(高度坐標(biāo))賦給含有3個元素的數(shù)組Coord(),由于mlist命令會自動對型值點(diǎn)按縱向坐標(biāo)和高度坐標(biāo)從小到大排列,因此我們不用另行編程對其進(jìn)行排序。第(5)行代碼是為了給型值點(diǎn)編號,以利于后續(xù)的命令流生成工作。第(6)、(7)、(8)行代碼則實現(xiàn)了將數(shù)組Coord()的三個元素依次填入Exel表格的功能。

        接下來要生成命令流文件,首先應(yīng)參照APDL或PCL命令流中創(chuàng)建型值點(diǎn)的格式,來決定如何在代碼中嵌入APDL或PCL命令。

        ANSYS軟件結(jié)構(gòu)模塊中創(chuàng)建型值點(diǎn)的命令流格式:/prep7;K,2,0,2.8,187.6……,其中,K命令后面第一位數(shù)字代表節(jié)點(diǎn)編號,后面三個數(shù)字代表型值點(diǎn)的三維坐標(biāo)。Patran軟件中結(jié)構(gòu)模塊創(chuàng)建型值點(diǎn)的命令流格式:asm_const_grid_xyz("1", "[-172 0 0]",……,中括號內(nèi)數(shù)字是型值點(diǎn)的三維坐標(biāo)。據(jù)此我們可以用下面的VBA代碼實現(xiàn)命令流的自動生成功能(以生成ANSYS APDL命令流為例):

        (1) Set sFile = fso.Create Text File (FileName);

        (2) sFile.WriteLine ("/prep7");

        (3) sFile.WriteBlankLines (1);

        (4) For s = 2 To _ Sheet1. Range("A65536"). End(xlUp). Row;

        (5) sFile. Write Line ("k") _ & "," & (Sheet1. Cells(s,1). Value _& "," & Sheet1. Cells(s, 2).Valu _& "," & Sheet1. Cells(s, 3).Value _& "," & Sheet1. Cells(s, 4). Value);

        (6) Next s。

        圖4 程序界面圖

        第(1)行代碼創(chuàng)建了一個記事本文件,第(2)行代碼嵌入了APDL命令中的進(jìn)入前處理器的命令,第(3)行代碼寫入了一個空白行作為間隔,第(4)、(5)、(6)行代碼則實現(xiàn)了將Exel表格中的第1至4列數(shù)據(jù)以及APDL命令中創(chuàng)建關(guān)鍵點(diǎn)命令K寫入記事本文件的功能。

        2.2.4程序界面

        在Excel中生成的程序界面如圖4所示。由5個面板組成,雙擊面板即可執(zhí)行相應(yīng)命令,如需修改或另行嵌入APDL或PCL命令,切換到Excel內(nèi)置的VB編輯器中對應(yīng)代碼進(jìn)行修改即可。

        3實例介紹

        下面以一條總長為108 m的橫骨架式散貨船的整船建模為例,對開發(fā)程序進(jìn)行說明。圖5是該船在Maxsurf中建好的三維模型,圖6是該船的肋骨型線圖。

        圖5 Maxsurf中的三維模型圖

        圖6 肋骨型線圖

        在圖4所示的界面中,點(diǎn)擊載入msd文件(msd文件是Maxsurf模型的專用格式),在彈出的窗口中選擇該散貨船的模型,打開后進(jìn)行精度調(diào)整,型值生成、提取、轉(zhuǎn)換工作后可得命令流文件(見圖7)。將命令流導(dǎo)入ANSYS 結(jié)構(gòu)模塊運(yùn)行后,即可生成船體結(jié)構(gòu)建模所需要的關(guān)鍵點(diǎn),如圖8所示(船體左右對稱,故只顯示一半模型),可以看出采用該方法船體、艙壁、甲板的數(shù)據(jù)點(diǎn)都可以很好地傳遞到ANSYS中。

        模型數(shù)據(jù)點(diǎn)建好后,對照Excel數(shù)據(jù)表中的節(jié)點(diǎn)編號,在生成的命令流中加入循環(huán)、賦屬性、定義邊界條件、加載載荷等語句即可快速建立模型并進(jìn)行計算分析。

        圖7 命令流文件

        圖8 模型關(guān)鍵點(diǎn)的生成

        4結(jié)語

        本文采用的基于VBA與COM組件技術(shù)的開發(fā)方法不僅適用于Maxsurf軟件,對于所有支持COM組件技術(shù)的常用軟件如AutoCAD、Office,均可采用這種方法來“定制”出自己所想要的功能。

        對常用的行業(yè)軟件進(jìn)行二次開發(fā),不僅在于能顯著提高學(xué)習(xí)和工作效率,更重要的是能幫助開發(fā)者深入理解國外先進(jìn)軟件的內(nèi)部組織架構(gòu)及其二次開發(fā)接口的設(shè)計方法理念,這對開發(fā)國產(chǎn)的優(yōu)秀行業(yè)軟件是很有幫助的。

        本方法目前對橫骨架式船型和縱骨架式船型均適用,能將常規(guī)方法中耗費(fèi)數(shù)天的數(shù)據(jù)輸入建模工作縮短至數(shù)分鐘,尤其適合于結(jié)構(gòu)計算中的多方案比較以及設(shè)計修改引起的重新計算工作。但值得指出的是,目前程序中縱骨架式船型的縱骨位置數(shù)據(jù)尚需人工輸入,這主要是由于縱骨布置的位置數(shù)據(jù)往往要到詳細(xì)設(shè)計階段的中后期才能得到,且目前尚未見到有定位于初步設(shè)計、詳細(xì)階段的船舶設(shè)計軟件能將縱骨布置功能很好地融入到前期的三維船型設(shè)計中,導(dǎo)致相關(guān)數(shù)據(jù)不足,因此可以以此為出發(fā)點(diǎn),進(jìn)行后續(xù)的研究工作。

        參考文獻(xiàn)

        [1]Hafez K A, El-Kot A A. Comparative investigation of the stagger variation influence on the hydrodynamic interference of high speed trimaran[J]. Alexandria Engineering Journal, 2012, 51(3): 153-169.

        [2]Ayob A F, Ray T, Smith W F. A Framework for Scenario-Based Hydrodynamic Design Optimization of Hard Chine Planing Craft[C].Proceedings of the 9th International Conference in Computer and IT Applications in the Maritime Industries, 2014.

        [3]黃金鋒.船型設(shè)計與性能分析系統(tǒng)數(shù)據(jù)接口設(shè)計與實現(xiàn)[J].中國艦船研究, 2012, 7(1):95-99.

        [4]司南.基于設(shè)計軟件集成平臺的游艇外型與型線協(xié)調(diào)性研究[D]. 武漢:武漢理工大學(xué), 2013.

        [5]李杰. 三維船體庫系統(tǒng)的研究與設(shè)計[D]. 大連:大連海事大學(xué), 2008.

        [6]Maxsurf Modeler Automation Manual[Z]. Bentley Systems, Incorporated, Windows Version 18,2012.

        [7]李詠紅. CAD二次開發(fā)方法研究與實現(xiàn)[D]. 成都:電子科技大學(xué), 2004.

        [8]蔣毅文. Maxsurf及相關(guān)設(shè)計程序在船舶設(shè)計中的應(yīng)用[J]. 船海工程, 2005(4):39-41.

        [9]李平書, 嚴(yán)家文, 任鴻. 船舶結(jié)構(gòu)有限元模型快速生成研究[J]. 船舶, 2007(4):52-55.

        [10]金建海.船舶CAE前后處理系統(tǒng)研制[D]. 無錫:江南大學(xué), 2012.

        中圖分類號U662

        文獻(xiàn)標(biāo)志碼A

        作者簡介:胡江(1988-),男,碩士生,研究方向為船舶水動力性能與船型研究。

        基金項目:國家自然科學(xué)基金項目(編號:51409201);中央高校基本科研業(yè)務(wù)費(fèi)專項基金(編號:2015IVA029)。

        猜你喜歡
        二次開發(fā)船體命令
        船體行駛過程中的壓力監(jiān)測方法
        只聽主人的命令
        淺談基于Revit平臺的二次開發(fā)
        甘肅科技(2020年20期)2020-04-13 00:30:02
        淺談Mastercam后處理器的二次開發(fā)
        模具制造(2019年3期)2019-06-06 02:11:02
        移防命令下達(dá)后
        西門子Easy Screen對倒棱機(jī)床界面二次開發(fā)
        這是人民的命令
        焊接殘余應(yīng)力對船體結(jié)構(gòu)疲勞強(qiáng)度的影響分析
        焊接(2015年9期)2015-07-18 11:03:51
        赴美軍“仁慈”號醫(yī)院船駐船體會
        水下爆炸氣泡作用下船體總縱強(qiáng)度估算方法
        亚洲精品久久麻豆蜜桃| 成人妇女免费播放久久久| 性欧美大战久久久久久久久| 超碰日韩AV在线| 亚洲精品中文有码字幕| 国产精品一二三区亚洲| 久久久久99精品成人片欧美| 国产男女免费完整视频| 国产免费午夜a无码v视频| 丰满熟妇人妻无码区| 色婷婷一区二区三区四| 在线精品首页中文字幕亚洲| 99久久亚洲精品日本无码| 国产白丝无码视频在线观看| 妺妺窝人体色www聚色窝韩国| 精品亚洲视频免费观看网站| 六月婷婷亚洲性色av蜜桃| 成人免费无码视频在线网站 | 国产欧美一区二区三区在线看| 99蜜桃在线观看免费视频网站| 亚洲AV无码国产精品久久l| 黄色中文字幕视频网站| 偷拍夫妻视频一区二区| 日韩一区国产二区欧美三区| 久久精品成人欧美大片| 国产一区二区精品网站看黄| 中文字幕有码在线亚洲| 少妇高潮av久久久久久| 精品人妻人人做人人爽| 99国产精品无码专区| av网址在线一区二区| 亚洲av无码乱码国产麻豆| 伊人久久久精品区aaa片| 人妻丰满熟妇AV无码片| 国产在线看不卡一区二区| 国产精品一区二区三区免费视频| 国产精品视频免费播放| 最近高清中文在线字幕观看| 好爽要高潮了在线观看| 91视色国内揄拍国内精品人妻| 久久综合九色综合久99|