国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

由C#語言和OpenGL開發(fā)的Tribon模型重繪程序

2015-02-02 15:02劉國陽
中國水運(yùn) 2015年1期

劉國陽

摘 ?要:在Tribon中建立船體分段模型后,可以導(dǎo)出符合國際標(biāo)準(zhǔn)的的XML格式三維數(shù)據(jù)文件。借助C#開發(fā)環(huán)境編寫程序,讀取XML文件并提取其中的數(shù)據(jù),用OpenGL重繪三維模型以供展示;同時將之與造船計(jì)劃線表有機(jī)結(jié)合,使計(jì)劃更加可視化,直觀反映每個建造階段的負(fù)荷問題;而且由于程序是可互動的,可以實(shí)時對計(jì)劃進(jìn)行更改,這種更改也會動態(tài)反映出來。

關(guān)鍵詞:.Net ? C# ?XML ?計(jì)劃編排 ?TRIBON ?OpenGL

船舶生產(chǎn)設(shè)計(jì)是一項(xiàng)十分復(fù)雜的設(shè)計(jì)項(xiàng)目?,F(xiàn)階段我國船舶行業(yè)設(shè)計(jì)計(jì)劃管理仍舊存在著較為嚴(yán)重的問題。紙面上編制的設(shè)計(jì)計(jì)劃不能很好地與實(shí)際中的船體結(jié)合起來,甚至有時會完全脫離,而且計(jì)劃普遍是靜態(tài)、固化的,一旦需要變動,調(diào)整工作會變得特別困難。這種“紙上談兵”的計(jì)劃編排方式導(dǎo)致計(jì)劃的實(shí)行現(xiàn)狀不盡理想。如何讓計(jì)劃更好地與實(shí)際結(jié)合,是目前亟需解決的一個問題。本例以TRIBON模型為基礎(chǔ),以C#及OpenGL編程語言為實(shí)現(xiàn)手段,論述解決問題。

程序開發(fā)目標(biāo)

1、TRIBON模型獲取

2、系統(tǒng)重繪

3、計(jì)劃編排規(guī)則及程序顯示

4、整合計(jì)劃與模型信息

程序設(shè)計(jì)思路

程序主體采用C#編寫完成,C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于.NET Framework之上的高級程序設(shè)計(jì)語言。C#是一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的,由C和C++衍生出來的面向?qū)ο蟮木幊陶Z言。它在繼承C和C++強(qiáng)大功能的同時去掉了一些它們的復(fù)雜特性。通過TRIBON中獲取的模型信息及船廠提供的線表計(jì)劃,在程序中完成模型數(shù)據(jù)的解析,存儲及重繪,并通過錄入在程序中的線表計(jì)劃,展現(xiàn)船舶船塢的建造流程。

程序各個組件之間的關(guān)系如下圖所示:

圖 1

XML、OpenGL和船體分段模型

1、船體模型數(shù)據(jù)獲取

需要實(shí)現(xiàn)在外部系統(tǒng)展現(xiàn)建造過程,首先需要獲取建造模型的信息,本次課題中,我們采用Tribon提供的模型信息,TRIBON軟件是由瑞典KCS(Kockums ComputerSystem AB)公司研發(fā)的1款輔助船舶設(shè)計(jì)和建造的計(jì)算機(jī)軟件集成系統(tǒng),集CAD/CAM/MIS于一體,在中國及世界造船業(yè)中有著廣泛的用戶,Tribon的模型存在多種導(dǎo)出方式,如3D Dxf導(dǎo)出,API接口抽取導(dǎo)出,Xml導(dǎo)出。

表1 ?各種導(dǎo)出方式分別有優(yōu)缺點(diǎn)

本次課題中,表現(xiàn)模型細(xì)節(jié)并非是主要目的,僅需表現(xiàn)簡易的船體輪廓,且因需要處理整船數(shù)據(jù),要求盡量簡潔,對比以上方法并考慮到實(shí)際需求后,比較各種方式的優(yōu)劣性,最終采取Xml接口抽取所需的模型信息。XML(可擴(kuò)展標(biāo)記語言)是一種標(biāo)記語言。標(biāo)記指計(jì)算機(jī)所能理解的信息符號,通過此種標(biāo)記,計(jì)算機(jī)之間可以處理包含各種信息的文章等。

通過Tribon中的Basic Design導(dǎo)出對應(yīng)的船體模型,如圖2所示:

圖 3 導(dǎo)出模型信息

操作工具條【XML】→【Export】→【Hull Steel Export】打開導(dǎo)出對話框。

選擇需要導(dǎo)出的船體分段或板架,導(dǎo)出模型信息,并以.xml文件保存,便于后期的解析及保存。

2、 Xml文件的模型信息解析及存儲

從TRIBON中導(dǎo)出的Xml文件中存在模型的分段信息,板架信息,板架輪廓,板架開孔等,通過解析數(shù)據(jù)獲取需要的模型信息并依據(jù)數(shù)據(jù)結(jié)構(gòu)保存數(shù)據(jù)方便之后的繪制及存儲。

圖4 ?Xml數(shù)據(jù)結(jié)構(gòu)

如圖4示例,是xml文件中對于單一板架的描述,我們將通過解析此文件結(jié)構(gòu)獲取對應(yīng)板架信息。

中的信息為平面板架信息,如示例數(shù)據(jù)的板架名為”304-Z1900_1”

中的信息為當(dāng)前平面板架的范圍信息,使用6個數(shù)據(jù)代表X、Y、Z的最大值及最小值

中的信息代表平面板架的坐標(biāo)位置信息,通過在一個定義一個平面,并在該平面上繪制板架輪廓信息,坐標(biāo)系中的定義的是平面原點(diǎn)的位置,代表的是平面的W坐標(biāo)系的向量方向即平面的法向量,代表的是平面的U坐標(biāo)系的向量方向即平面中二維點(diǎn)的第一個坐標(biāo)所代表的方向向量。

表示這個板架的外輪廓信息,由多個二維點(diǎn)組成,點(diǎn)的坐標(biāo)由中描述平面的U、V向量的值表示,在程序中可以通過轉(zhuǎn)換獲取其在全船坐標(biāo)系中的坐標(biāo),示例如下:

如圖3中板架的第一個點(diǎn)UV坐標(biāo)為(U=64810,V= 9900),通過分析所代表的幾何意義,通過原點(diǎn)及兩個方向向量可以得知,該坐標(biāo)平面是一個垂直于Z軸的平面,平面方程可由Z=1900表示,通過提供W,U軸向量可獲取其U軸的全船向量為(1,0,0),V軸的全船向量為(0,1,0),由點(diǎn)坐標(biāo)可以換算得知第一點(diǎn)的全船坐標(biāo)為(X=64810,Y=9900,Z=1900),以此方法可以計(jì)算獲取表示板架輪廓的關(guān)鍵點(diǎn)的全船坐標(biāo)。

在實(shí)際運(yùn)用中,使用C#編程完成對于Xml中的數(shù)據(jù)讀取,及相關(guān)處理,并按圖-4結(jié)構(gòu)編輯調(diào)準(zhǔn)。為保證信息繪制方便,在讀取信息完成后,通過程序完成上述方法2維點(diǎn)與3維點(diǎn)的轉(zhuǎn)換。并按照分段->板架(包含坐標(biāo)軸信息)->板架輪廓信息(包含輪廓點(diǎn)的坐標(biāo)信息)結(jié)構(gòu)存儲點(diǎn)信息,存儲介質(zhì)采用最為流行的輕便數(shù)據(jù)庫MySQL。MySQL作為一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),使用的SQL語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言,語法簡易且符合通用規(guī)范。由于其體積小、速度快、總體擁有成本低,編程簡易與多種編程語言具有較好的兼容性,滿足本次處理所需的數(shù)據(jù)庫要求,可以方便的通過C#完成讀寫數(shù)據(jù)操作。endprint

圖5 ?數(shù)據(jù)結(jié)構(gòu)

3、模型繪制

對于3維圖形繪制,現(xiàn)今較常用的方式是采用成熟的圖形處理引擎或圖形庫做處理,其中圖形處理引擎又分為開源或商用兩大類,本次課題中,我們處理的圖形問題存在數(shù)據(jù)量適中,處理方式單一的情況,分析后認(rèn)為使用成熟的圖形庫即可滿足需求,如果采用處理引擎通常需要在運(yùn)行機(jī)安裝相應(yīng)的環(huán)境,降低了通用性,因此,本題中采用最為常用的OpenGL。

OpenGL,開放圖形庫(英語:Open Graphics Library,縮寫為OpenGL)是個定義了一個跨編程語言、跨平臺的應(yīng)用程序接口(API)的規(guī)范,它提供了近120個繪制點(diǎn)、線點(diǎn)多邊形等3D圖形的命令,可以完成繪制物體、變換、光照處理、著色、反走樣、融合、霧化、位圖和圖像、紋理映射、動畫等基本操作,通過把這一系列基本操作進(jìn)行組合,可以構(gòu)造更復(fù)雜的3D物體和描繪豐富多彩、千變?nèi)f化的客觀世界。

在C#中通過調(diào)用OpenGL 動態(tài)鏈接庫文件:csgl.dll和csgl.native.dll實(shí)現(xiàn)OpenGL所提供的強(qiáng)大的圖形功能。 這2個文件可以從相關(guān)網(wǎng)站上免費(fèi)獲取。csgl.dll中定義了4個名稱空間,幾乎所有的OpenGL函數(shù)、用戶庫函數(shù)、輔助庫函數(shù)和實(shí)用庫函數(shù)及常量??梢苑奖阄覀兛焖俚耐瓿上嚓P(guān)圖形的繪制。

圖6 ?csgl庫

程序?qū)⒔馕霁@取的模型信息,在程序中實(shí)現(xiàn)簡單重繪,為在計(jì)劃編排模塊中展現(xiàn)模型做基礎(chǔ),繪制中將數(shù)據(jù)轉(zhuǎn)換為方便繪制的三維點(diǎn)信息,并在在設(shè)置完善的背景中循環(huán)繪制板架。

主要使用的Csgl接口:

在使用OpenGl繪制時,我們需要定義世界坐標(biāo),物體坐標(biāo),設(shè)備坐標(biāo)和眼坐標(biāo):

其中世界坐標(biāo)系與我們定義的全船坐標(biāo)系一致;

物體坐標(biāo)應(yīng)在當(dāng)前展現(xiàn)的模型之上,在此我們定義為模型的幾何中心,由模型的坐標(biāo)信息計(jì)算獲取;

眼坐標(biāo)系可以簡單的理解為當(dāng)前的觀察坐標(biāo),在本課題中我們通過修改眼坐標(biāo)來完成模型的旋轉(zhuǎn),而不是通過模型的物體坐標(biāo)或世界坐標(biāo)修改來實(shí)現(xiàn)此功能。

設(shè)備坐標(biāo):OpenGL 的重要功能之一就是將三維的世界坐標(biāo)經(jīng)過變換、投影等計(jì)算,最終算出它在顯示設(shè)備上對應(yīng)的位置,這個位置就稱為設(shè)備坐標(biāo)。

如圖7所示,為程序中對于模型觀察系的定義:

圖7 ?觀察點(diǎn)定義

繪制中通過GL.glBegin(GL.GL_POLYGON)的接口函數(shù)來繪制板架平面,其中GL.GL_POLYGON代表將傳入的點(diǎn)坐標(biāo)按照順序繪制為一個封閉多變型。

如圖8所示,為程序中對于模型信息的繪制:

圖8 ?模型繪制方法

繪制實(shí)現(xiàn)效果如圖-9所示,為測試的304分段模型繪制效果:

圖9 ?繪制效果

線表計(jì)劃編排及展現(xiàn)

線表計(jì)劃及體現(xiàn)是本次課題的重點(diǎn),主要體現(xiàn)時間、裝配、符合的關(guān)系。本程序主要體現(xiàn)的是單船的船塢建造線表,對主節(jié)點(diǎn)計(jì)劃及實(shí)物量的分解,做出勞動力和硬件的負(fù)荷平衡計(jì)劃。由計(jì)劃物量(包括經(jīng)能力測算和負(fù)荷平衡后計(jì)算出的投鋼量、分段數(shù)量、管加工量、舾裝量等)/產(chǎn)值/成本分解表(分解到工區(qū)/職種、月度)、計(jì)劃工時分解表和勞動力計(jì)劃等組成。程序分為2步實(shí)現(xiàn):

1、實(shí)現(xiàn)計(jì)劃的快速編排存儲

系統(tǒng)依據(jù)建造計(jì)劃定義搭載循序及時間定義,定義分段的建造及搭載時間,如圖-10,E02分段的建造及搭載時間分別為2014.9.10~9.25,2014.10.15~10.16。

在定義分段信息時處建造時間信息,還需綁定之前導(dǎo)入模型信息,分段的重量、分段的尺寸信息(長、寬、高)、建造場地等信息,可用于后期的負(fù)荷計(jì)算。

圖10 ?程序?qū)崿F(xiàn)計(jì)劃編排

2、實(shí)現(xiàn)按動畫方式展現(xiàn)計(jì)劃實(shí)行狀態(tài)

完成計(jì)劃編排后,在展現(xiàn)界面,按照時間軸演示造船流程,并支持時間軸的拖動,使操作者快速了解對應(yīng)時間內(nèi)船舶建造情況及船廠負(fù)荷狀況。

圖11 ?運(yùn)行效果

結(jié)論及展望

通過船塢搭載的前期模擬,可以更準(zhǔn)確、直觀的得出在該階段人力及設(shè)備的符合情況,為計(jì)劃編排人員及時發(fā)現(xiàn)計(jì)劃中的不合理處及問題提供了幫助。避免在實(shí)際計(jì)劃中出現(xiàn)紕漏造成的計(jì)劃延誤及生產(chǎn)資源的浪費(fèi)??梢詭椭瑥S減少因計(jì)劃編排失誤造成的損失及避免因工期延誤導(dǎo)致的額外開支。并且在前期,可以提供一份較為相識的參考數(shù)據(jù)用于給船廠用作重要節(jié)點(diǎn)的決策,在建造前亦可提供一個演示成果用于讓設(shè)計(jì)人員,建造人員,船東船檢了解當(dāng)前項(xiàng)目建造流程,提高造船企業(yè)的預(yù)知反應(yīng)能力,實(shí)現(xiàn)制造資源的快速合理使用,為知識密集型的、以智能技術(shù)為主導(dǎo)的造船模式提供輔助。

參考文獻(xiàn):

[1] 明日科技,C#編程全能詞典,電子工業(yè)出版社,2010

[2] 扶松柏,深入體驗(yàn)C#項(xiàng)目開發(fā),清華大學(xué)出版社,2011

[3] 于翔,在實(shí)戰(zhàn)中成長—Windows Forms 開發(fā)之路,電子工業(yè)出版社,2009

[4] 王小科,梁冰,呂雙Visual C#項(xiàng)目開發(fā)實(shí)例自學(xué)手冊.北京:人民郵電出版社,2007

(作者單位:江蘇科技大學(xué))endprint