999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

船體外板自動展開程序

2015-01-01 02:22:48
船舶與海洋工程 2015年1期
關鍵詞:程序

張 錦 飛

(上海臻元船舶科技有限公司,上海 200052)

0 引 言

在船舶結構設計中,根據肋骨型線圍長展開的外板展開圖是一份非常重要的圖紙。全船所有外板的規格、排列、在外板上布置的各種縱橫構件、各層甲板、開口位置、分段縫、冰區加強相關的各種界限線等都必須表示在外板展開圖上,以便計算外板重量重心和估算船體鋼板規格等,作為船舶建造中訂貨的主要依據。該圖信息量大、縱橫線條密集、繪制極其繁瑣,不僅費時費力工作量大,而且效率低易出錯。因此利用先進的計算機輔助設計(CAD)技術,編制外板自動展開程序既可以在船舶設計過程中提高繪圖準確性,又大大降低設繪人員的工作強度,具有較強的現實意義。

CAD技術可以提高船舶設計的效率和質量,已經成為國內造船行業的共識,很多設計單位和船廠已在較大范圍內應用了國際先進水平的三維造船軟件,具有代表性的軟件有 TRIBON M3、FORAN、NAPA、CADDS5、CATIA 、NUPAS-CADMATIC和滬東SPD等,經過多年的經驗積累和二次開發,已經達到了很高的應用水平。但由于各種軟件針對性和側重點不同,以及客戶的使用習慣,數據轉換接口等問題,國內船廠在使用這些軟件時多數局限在生產設計階段,即根據已有的完整退審圖紙在這些軟件中進行復雜的三維建模,添加工藝信息,進而用于計算機輔助建造(CAE),提高建造質量、縮短周期、降低成本。而在船舶設計的前期階段,如概念設計、詳細設計等階段,上述這些三維設計軟件使用很少。這個階段主要由各船級社相關軟件負責性能計算、強度校核等,而繪制圖紙送審則多數仍然廣泛采用AutoCAD二維繪圖軟件。

AutoLISP是AutoCAD最有效的開發工具之一,利用AutoLISP開發的船體外板自動展開程序僅需利用肋骨型線和中橫剖面圖,不需要復雜的三維軟件建模,直接得到詳細設計階段可用于送審的外板展開圖,并完善肋骨型線圖。

1 外板自動展開程序的主要功能及實現原理

經過對2010版本AutoCAD的ActiveX技術研究[1~4],結合目前船舶設計過程中繪制外板展開圖的實際情況和經驗,設計了程序的核心算法,應用 AutoLISP編制外板自動展開程序,以實現船舶所有廣義縱向構件的外板自動展開。所謂廣義縱向構件,泛指所有在外板展開圖上表示的縱向對象,既包括甲板、平臺、船底舷側縱骨、縱桁、艙壁、底邊艙和頂邊艙斜板等真實縱向構件,也包括縱向板縫線、分段縫、冰區加強等各種界限線。

繪制外板展開圖需要有兩個關鍵步驟:

1)在肋骨型線圖上確定待展開構件的指定位置。

2)獲得所選定肋骨型線的展開長度。獲得曲線展開長度后即可在外板展開圖上確定相應肋位的展開點,并連接成一條曲線,即為需要展開構件的外板展開線。

本程序的流程圖見圖1。

圖1 程序流程

從圖1可知,本程序主要有自由展開、按水線展開、按縱剖線展開和按邊艙展開4個功能。程序的主對話框界面見圖2。

圖2 主對話框界面

1.1 自由展開

按待展開肋骨型線的整個曲線總長度展開。其原理是在肋骨型線圖上確定指定構件位置,并切除該位置以外的肋骨型線;從圖形數據庫中直接提取該剩余部分肋骨型線的曲線總長度;最后根據曲線展開長度繪制該構件的外板展開線。

該功能需要切除部分肋骨型線,這破壞了肋骨型線的完整性,不利于后續操作。因此自由展開在程序中將作為一個輔助功能,只處理特別復雜的構件展開線,如甲板邊線、舷墻頂線、球鼻艏等。

1.2 按水線展開

相當于用一個垂直于船體中縱剖面的平面去切整個船舶,該平面和船體外板的相貫線即為按水線展開的構件指定位置。該平面位置不同使其相貫線在中縱剖面上的投影是一根等高或不等高水線,即相當于等高或不等高的縱向構件。

按水線展開的輸入數據對話框見圖3。程序根據輸入數據計算出不同肋位處的水線高度作為指定位置,然后作水平輔助線。求出指定位置水線與每個肋位肋骨型線的一系列交點,進而獲得每根肋骨型線從起點到交點的曲線長度,繪制按水線展開的外板展開線。

等高水線適用于前后高度相等的水平舷側縱骨、平臺、舷側縱桁等構件的展開線;不等高水線適用于前后高度不相等縱骨、平臺、縱桁等構件以及不同高度水平構件之間的過渡構件和傾斜橫艙壁、斜凳等的展開線。根據船舶構件的實際布置情況,程序可以分別一次性繪制多根等高構件的展開線和一根不等高構件的展開線。

1.3 按縱剖線展開

與按水線展開功能原理相似,按縱剖線展開是相當于用一個垂直于船體基平面的平面去切整個船舶,與船體外板的相貫線即為按縱剖線展開的構件指定位置。同樣,按縱剖線展開又可分為等寬和不等寬縱剖線展開兩種。具體的輸入數據對話框見圖4。程序在計算出的指定位置作垂直輔助線,即獲得與外板的交點和從起點到該交點的曲線長度。

等寬縱剖線適用于同時繪制多根等寬船底縱骨、縱桁的展開線;不等寬縱剖線適用于繪制一根不等寬縱骨、縱桁等構件的展開線以及不同寬度縱向構件之間過渡構件的展開線。

圖3 按水線展開數據輸入對話框

圖4 按縱剖線展開數據輸入對話框

1.4 按邊艙展開

繪制類似于散貨船的底邊艙和頂邊艙斜板與外板交線的展開線。與按水線和縱剖線展開原理類似,用一個底邊艙或頂邊艙斜板所在的平面去切船舶,其與外板的相貫線即為按底邊艙或頂邊艙展開的指定位置。

對于底邊艙,根據結構布置,底邊艙斜板一般坐落于底部縱桁上,并隨著縱桁的位置變化而變化。因此需要先找出縱桁的位置變化,然后按底邊艙斜板的角度繪制輔助線,找出其與外板的交點,即可得到按底邊艙展開的曲線長度。

對于頂邊艙,由于甲板存在梁拱,需要同時找出頂邊艙垂直板與斜板交點的距舯寬度和距基線高度的變化,然后用頂邊艙斜板的角度作輔助線,即可得到其與外板的交點和展開長度。具體的輸入數據對話框見圖5。

圖5 按邊艙展開數據輸入對話框

2 程序編制過程中的附加說明

實現外板自動展開功能的關鍵步驟是在肋骨型線圖中自動確定構件位置,并計算出一系列肋骨型線的展開長度。程序編制過程中在這兩個關鍵點上遇到不少問題,對此提出如下方法。

2.1 獲取多段線總長度

程序中采用了AutoLISP擴展函數vlax-Get-Property來直接獲取所選擇對象的長度屬性,進而實現自由展開的功能。需要注意的是,調用該函數前必須利用vlax-ename->vla-object函數將所選擇的肋骨型線的圖形數據庫中的圖元名轉換為VLA對象名,然后才能用上述函數的length屬性提取多段線的總長度。

函數的應用格式:(vlax-get-property object property)

其中:object——VLA對象名;property——所要提取的屬性名稱,本程序中應用“length”屬性;本函數的返回值是對象屬性的值即為多段線的總長度。

2.2 獲得多段線與直線的交點坐標

程序中調用擴展函數vla-intersectwith直接獲得相應輔助直線與肋骨型線(多段線)的交點。返回值通過vlax-Variant-Value和vlax-safearray->list函數轉換為可處理的交點坐標。

需要特別指出的是,vla-intersectwith函數得到的最終結果是一個交點坐標的列表。如果獲得的交點不止一個,則該列表只是所有交點三維坐標的簡單一維數組羅列,離多段線起點近的交點坐標列在前面,離起點遠的交點坐標列在后面,如果多段線的首尾端點順序相反,則該列表的順序也將發生相應的變化。為方便程序的后續處理,需要將該一維列表按每個交點為單位的形式處理成兩維列表形式。這樣可以很方便地提取其中一個或多個交點,直接得到該交點的三維坐標。一般情況下,將肋骨型線與船體中心線的交點作為每根多段線的起點,根據船體構件的實際布置,選取靠近起點的交點作為構件在該肋位的展開點,而底邊艙斜板的外板展開則比較特殊,選取遠離起點的交點作為斜板在外板上的展開點。

函數的應用格式:(vla-IntersectWith object IntersectObject ExtendOption)

返回值:圖形數據庫中交點坐標所存貯的指針位置。通過轉換可得到需要的交點坐標。

2.3 獲得多段線的部分長度

在獲得構件與外板的交點后,利用 vlax-curve-getdistatpoint函數可獲取每一根肋骨型線上從起點到該交點的曲線長度。

函數的應用格式:(vlax-curve-getDistAtPoint curve-obj point)

返回值:從起點到指定交點的曲線長度,即在構件處的肋骨型線展開長度。

3 程序使用中需要注意的問題

3.1 前期數據準備

前期的數據準備主要體現在肋骨型線上。

1)在使用程序前,需要確保肋骨型線中沒有重合的型線。如有多余的肋骨型線,繪制展開線時就會錯位,得到錯誤的結果,所以請先檢查肋骨型線,刪除多余的型線;

2)需要確認肋骨型線是否是多段線(LwPolyline),如不是多段線,需要先轉化為多段線。在AutoCAD中,不同的線型有各自的數據存儲格式。由于程序將直接讀取多段線的數據庫資料,存儲格式決定了程序是否能獲取正確的數據。例如,以下是一個三點多段線的典型實體數據表,在AutoCAD中以聯結表形式存放:

((-1 . ) (0 . "LWPOLYLINE") (330 . ) (5 . "1590A7")(100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (62 . 1) (6 . "Continuous") (370 . 20) (100 ."AcDbPolyline") (90 . 5) (70 . 0) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 435.351 358.185) (40 . 0.0) (41 . 0.0) (42 . 0.0)(91 . 0) (10 820.051 530.303) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 1193.35 693.133) (40 . 0.0) (41 . 0.0) (42 .0.0) (91 . 0) (10 1343.45 757.293) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (210 0.0 0.0 1.0))

表中的每一個子表都代表了一個實體的屬性。如上表中第二個子表的組碼“0”,表示該實體為“LwPolyline”線型。組碼為“10”的子表中分別代表了該多段線三個頂點的坐標值;

3)需要確認肋骨型線的起點是否靠近船體中心線與基線的交點,這將直接關系到所獲取的曲線長度是否正確。程序中具有自動識別所選擇多段線起點位置的功能,如果位置相反,將自動對調起點位置。但如果在低版本的AutoCAD上使用本程序,由于某些函數無法使用,則需要部分人工干預。

3.2 艏艉部外板展開

艏艉部是船體中型線變化最為劇烈的部分,這兩個區域的外板展開也相當復雜。艏部的球鼻艏和艉部的槳轂使同一肋位的型線分成上下兩個部分。艏艉的外板展開原理是一樣的,以艏部為例說明一下這部分如何展開。肋骨型線及外板展開示意圖見圖6。圖6中A點為球鼻艏最前點,B點為球鼻艏最后點。

圖6 肋骨型線及外板展開

1)球鼻艏展開:球鼻艏在型線中是一個獨立封閉的部分,在程序中可以選擇用自由展開功能來展開,如6圖中A點上面部分展開線;

2)球鼻艏區域構件展開:如圖6中5000~7000mm水線的展開,選擇按水線展開功能,輸入開始水線高5000mm,結束水線高7000mm,間距500mm,則在圖中一次性得到5根水平構件的展開線,同時在肋骨型線圖上自動繪制這些構件的布置位置,有利于完善肋骨型線圖;

3)球鼻艏以上部分構件的展開:這部分構件的展開較為復雜,其操作步驟為:①作為一般構件按水線或縱剖線展開;②確定B點位置,并單獨剖出該位置的肋骨型線;③計算出B點位置的展開長度;④將所有B點以上構件的展開線,以B點為基點,同時向上從投影位置移動到展開位置上。

3.3 外板展開的精度問題

由于本程序直接從AutoCAD數據庫讀取核心數據,所以構件的外板展開線在肋位點上與肋骨型線中相應肋位的曲線長度完全吻合。因此,本程序得到的外板展開線精度完全取決于肋骨型線的精度。船舶設計前期如果型線比較粗糙,外板展開精度也相應差一些,后期型線經過優化及放樣光順,利用本程序重新展開一次,將得到相當精確的外板展開。對于艏艉部型線變化比較劇烈的區域,只要在該區域加密,多剖出一些肋骨型線,即可得到足夠精確的外板展開圖。

3.4 選擇待展開的肋骨型線時,需要注意的問題:

1)所選擇的肋骨型線數量必須≥2,否則程序將出現錯誤信息,要求用戶重新選擇肋骨型線;

2)用戶選擇肋骨型線時,應采用Fence的選擇模式,即在命令行鍵入“F”后選擇所需要的肋骨型線;

3)肋骨型線的選擇應按肋位號從小到大的順序選擇;

4)用戶盡量在船舶的舭部位置選擇肋骨型線,這個位置肋骨型線之間的差別相對較明顯,容易按肋位號的順序識別。如果在舷側位置選擇,則由于不同肋位型線相互重疊,容易導致肋位順序的識別錯誤,從而繪制錯誤的展開線;

5)用戶選擇肋骨型線時,需要盡量避免選擇到肋骨型線以外的實體,如文字、其他線型等;

6)選擇肋骨型線時,需要用戶預估一下待展開構件與所選擇型線的相對位置,若沒有交點,則無法得到該構件的外板展開線。

4 結 語

外板自動展開程序主要是用AutoLISP語言直接調用擴展函數,利用ActiveX數據結構直接訪問圖形數據庫,通過將圖形對象和 VLA對象相互轉化,對特定對象的方法和屬性進行直接操作,這樣使得程序編寫明顯簡化,安全可靠,可以大大地擴充程序的功能。

本程序基本包括了外板展開圖中幾乎所有需要繪制的構件,常見的船型均可使用。展開同時同步得到構件在肋骨型線圖上的布置位置。實踐證明,在船舶設計前期利用外板自動展開程序進行設計和繪制船體肋骨型線圖和外板展開圖,既能大大提高設繪工作的效率、縮短設繪周期,又能極大的提高圖形繪制的精確度,保證了圖紙質量,達到了程序編制的預期要求。

[1] 張 輝. 利用VBA技術實現外板展開線的自動繪制[J]. 船舶設計通訊,2005, (1): 58-60.

[2] 孫家鵬. AutoCAD二次開發技術在繪制船體外板展開圖上的應用[J]. 上海造船,2006, (4): 16-19.

[3] 陳伯雄,馮 偉. Visual LISP程序設計——技巧與范例[M]. 北京:人民郵電出版社,2002.

[4] 劉銀遠. AutoLISP(10.0版)教程(初級、中級、高級)[M]. 北京:北京希望電腦公司.

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 99久视频| 午夜视频日本| 欧美在线国产| 美女一级毛片无遮挡内谢| 国产一区二区视频在线| 91国内在线视频| 国产乱人免费视频| 日本高清成本人视频一区| 日韩午夜片| 日韩精品无码免费一区二区三区 | 一级毛片基地| 国产中文一区二区苍井空| 国产欧美网站| 亚洲成人77777| 国产精品观看视频免费完整版| 色窝窝免费一区二区三区 | 强乱中文字幕在线播放不卡| 五月天久久综合国产一区二区| 久久精品这里只有国产中文精品| 四虎国产精品永久一区| 18禁高潮出水呻吟娇喘蜜芽| 在线高清亚洲精品二区| 日本尹人综合香蕉在线观看| 手机精品视频在线观看免费| 国产麻豆福利av在线播放| 亚洲精品777| 色呦呦手机在线精品| 亚洲色图欧美一区| 成人一区在线| 手机在线看片不卡中文字幕| 永久成人无码激情视频免费| 亚洲精品无码日韩国产不卡| 国产精品久久久久鬼色| 97青青青国产在线播放| 一区二区三区成人| 伊人狠狠丁香婷婷综合色| 高清欧美性猛交XXXX黑人猛交| 免费毛片在线| 72种姿势欧美久久久大黄蕉| 日本亚洲欧美在线| 国产麻豆aⅴ精品无码| 曰韩免费无码AV一区二区| 播五月综合| 深夜福利视频一区二区| 国产人免费人成免费视频| 夜夜操国产| 欧美性色综合网| 日韩麻豆小视频| 亚洲欧美极品| 狠狠做深爱婷婷综合一区| 成AV人片一区二区三区久久| 国产美女免费网站| 欧美黑人欧美精品刺激| 国产手机在线观看| 亚洲侵犯无码网址在线观看| 成人午夜在线播放| 黄色在线网| 亚洲天堂日韩在线| 好紧好深好大乳无码中文字幕| 深爱婷婷激情网| 国产第四页| 97se亚洲综合在线韩国专区福利| 日韩亚洲高清一区二区| 久久综合久久鬼| 就去色综合| 欧美午夜在线观看| 国产一区二区三区在线无码| 亚洲av色吊丝无码| 91视频首页| 日韩在线第三页| 国产99热| 重口调教一区二区视频| 东京热av无码电影一区二区| 日韩不卡高清视频| 乱人伦中文视频在线观看免费| 精品久久久无码专区中文字幕| 久久国产乱子伦视频无卡顿| 97视频免费看| 亚洲日韩欧美在线观看| 波多野结衣无码AV在线| 亚洲成人动漫在线| 国产精品观看视频免费完整版|