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

混合編程二次開發在水利水電工程設計中的應用

2016-09-05 01:39:56李希龍
水利科學與寒區工程 2016年3期
關鍵詞:二次開發設計

李希龍

(中國電建集團貴陽勘測設計研究院有限公司,貴州 貴陽 550081)

?

混合編程二次開發在水利水電工程設計中的應用

李希龍

(中國電建集團貴陽勘測設計研究院有限公司,貴州 貴陽 550081)

利用混合編程對AutoCAD與CATIA進行二次開發,實現了跨平臺的無損數據傳遞,提高了軟件之間的協同設計能力。以水工建筑物開挖面三維建模為例,介紹了混合編程在水利水電工程設計中的具體應用。

水利水電;混合編程;二次開發;開挖;CATIA;AutoCAD;ObjectARX

AutoCAD是廣大設計人員普遍采用的工具軟件,具有良好的用戶界面和強大的二維制圖功能,已成為平面制圖領域事實上的標準;但AutoCAD軟件的三維造型功能較弱,對復雜曲面和實體的建模能力不足。CATIA是一款主要面向航空航天、汽車、船舶等制造行業的三維設計軟件,因其強大的三維建模及參數化、模板化設計能力,近年來在水利水電工程設計中得到了越來越廣泛的應用;然而CATIA軟件對點、線、面等基本圖元的建模要求更為嚴格,缺乏靈活性。

目前AutoCAD與CATIA軟件之間僅能進行簡單的二維數據傳輸,不能直接進行三維數據交換。本文利用ObjectARX VC++與VB.net混合編程技術,通過對AutoCAD和CATIA進行二次開發,將AutoCAD圖形數據無縫導入到CATIA中,實現了跨平臺的數據傳遞,提高了軟件之間的協同設計能力。

1 基于AutoCAD和CATIA的二次開發混合編程原理

1.1混合編程的概念和意義

混合編程是指通過使用兩種或多種編程語言編寫源代碼,使其共同形成一個應用程序的方法。如今水利水電工程設計中用到的軟件越來越多,軟件平臺之間的數據交換也越來越頻繁,這些數據交換通常需要二次開發才能實現;由于不同的應用軟件往往采用不同的二次開發編程語言,為適應不同軟件的二次開發要求,混合編程技術的應用顯得越來越重要。

1.2AutoCAD及CATIA二次開發簡介

AutoCAD的二次開發方式有VisualLisp、VBA、ObjectARX C++等。其中VisualLisp和VBA簡單易學,開發周期短,但這兩種方式對面向對象的編程支持較弱,程序運行效率低,不易實現較復雜的算法,一般適合于小型實用工具的開發;ObjectARX C++完全采用面向對象編程原理,能對AutoCAD進行底層二次開發,具有功能強大、運行效率高的特點,使用該方法能方便的開發出簡潔高效的應用程序,因此對具有復雜算法的大型應用程序,大多采用該方式進行二次開發。

CATIA的二次開發方式主要有3種,即Automation API、CAA和VB.net。其中Automation API是一種交互式的二次開發方式,它通過錄制宏記錄軟件的操作過程,自動生成相應的VBScript或JavaScript程序代碼,用戶通過修改該代碼生成自己的二次開發程序。該方法雖然簡單易用,但程序封裝性差,特別是受到API開放接口的限制,不能對軟件進行深層次二次開發[1]。CAA(Component Application Architecture)采用面向對象編程語言C++進行二次開發,能在最底層對軟件功能進行擴展,具有強大的交互、集成和自定義的能力。然而CAA二次開發體系過于龐大且復雜,它包括一整套函數庫、組件庫等,其學習難度大,一般設計人員不易掌握。VB.net是在VisualStudio環境下,采用VB編程語言對CATIA進行二次開發,該方法引進面向對象的編程原理,同時兼顧VB簡單易用的特性,具有較高的開發效率,能滿足大多數的CATIA二次開發需求。

1.3AutoCAD和CATIA二次開發混合編程原理

經比較上述各種二次開發方式,采用ObjectARX C++及VB.net分別對AutoCAD和CATIA進行二次開發,具有運算效率高、學習難度適中及開發周期短的優點。但由于兩個平臺所使用的二次開發語言不相同,故不能在統一編程環境下直接進行數據交換。

筆者經反復測試,可通過二次開發混合編程將AutoCAD圖形數據成功導入到CATIA中。即先利用VB.net編制CATIA數據寫入函數,并編譯成生成DLL文件。然后在ObjectARX中添加混合編程支持,添加引用此前VB.net編寫的DLL文件,再通過VC++讀取AutoCAD圖形數據,同時調用DLL函數啟動CATIA寫入數據,流程如圖1所示。

圖1 AutoCAD與CATIA二次開發混合編程流程圖

2 AutoCAD和CATIA二次開發混合編程的實現

在VS2008環境下,利用ObjectARX 2010 VC++及VB.net,說明通過二次開發混合編程,將AutoCAD圖形數據導入CATIA的實現過程。

2.1創建解決方案和工程

在VS2008中創建一個名稱為“CADtoCATIA”的解決方案,并添加兩個工程。其中一個工程名稱為“VBforCATIA”,利用VS2008向導創建,開發語言選擇“Visual Basic”,模板類型選擇“Class Library”;另一個工程名稱為“ARXforCAD”,利用ObjectARX 2010向導創建,并選擇“.Net mixed managed code support”選項。

2.2CATIA數據寫入程序

在“VBforCATIA”工程中,利用VB.net對CATIA進行二次開發。

(1)修改“VBforCATIA”工程中默認的類名稱為“CVBforCATIA”。

(2)在“VBforCATIA”工程屬性中,添加引用CATIA自帶的系統類型庫,如圖2所示。

(3)在程序代碼中導入CATIA類型庫:

Imports ProductStructureTypeLib

Imports MECMOD

Imports PARTITF

Imports HybridShapeTypeLib

(4)調用CATIA并新建數據寫入文件,主要代碼如下:

‘定義CATIA對象

Dim my_CATIA As INFITF.Application

Dim my_PartDoc As PartDocument

‘獲取CATIA應用程序

On Error Resume Next

My_CATIA = GetObject(,"CATIA.Application")

If Err.Number <> 0 Then

My_CATIA = CreateObject("CATIA.Application")

End If

’新建Part文檔

my_PartDoc = My_CATIA.Documents.Add("Part")

(5)在“CVBforCATIA”類中,編寫CATIA數據寫入函數(以點數據的寫入為例):

Public Class CVBforCATIA

{

……

Public Function CreatePoint( ByVal pt_x

圖2 添加引用CATIA類型庫

As Double,ByVal pt_y As Double,ByVal pt_z As Double)

{

……

Dim new_PT As HybridShapePointCoord

new_PT = my_PartDoc.Part.HybridShapeFactory.AddNewPointCoord(pt_x,pt_y,pt_z)

……

}

}

CATIA數據寫入程序完成后,編譯生成“VBforCATIA.DLL”文件以供后續ObjectARX程序調用。

2.3AutoCAD數據讀取程序

在“ARXforCAD”工程中,利用ObjectARX VC++對AutoCAD進行二次開發,以讀取AutoCAD圖形中的數據(以點數據的讀取為例):

AcDbObject* pObj=NULL;

AcDbObjectId obj_ID;

AcGePoint3d pt;

……

Acad::ErrorStatus es=acdbOpenAcDbObject(pObj,obj_ID,AcDb::kForRead);

if (eOk==es && pObj->isKindOf(AcDbPoint::desc()))

{pt=AcDbPoint::cast(pObj);}

2.4調用DLL文件并寫入數據

在“ARXforCAD”工程中,添加引用DLL文件,并調用相應函數將數據寫入CATIA[2]。

(1)在“ARXforCAD”項目屬性中,添加對“VBforCATIA.DLL”文件的引用。

(2)聲明并實例化DLL封裝類:

ARXforCAD::CARXforCAD ^ my_ObjDll=gcnew ARXforCAD::CARXforCAD;

(3)調用DLL中的函數,并將數據寫入CATIA:

my_ObjDll.CreatePoint(pt.x,pt.y,pt.z);

3 應用案例

水工建筑物的開挖面通常是不規則的復雜曲面,其三維建模過程繁瑣,效率較低。下面以復雜開挖面的快速三維建模為例,說明混合編程在水利水電工程設計中的具體應用。

基本思路是先在AutoCAD中設計開挖平面圖,再生成開挖三維線框,然后通過上述混合編程二次開發,將開挖三維線框導入CATIA并自動生成三維開挖面,如圖3所示。這種建模方式,充分利用了AutoCAD平面制圖的靈活性和CATIA強大的三維曲面建模能力,大大提高了復雜開挖面的三維建模效率[3]。

圖3 混合編程在水工建筑物開挖三維建模中的應用

4 結 論

混合編程可充分發揮不同編程語言的優勢,充分利用現有的程序代碼,實現跨平臺的程序調用。本文針對AutoCAD和CATIA軟件特點,分別選擇簡潔、高效的程序語言進行二次開發,并通過混合編程實現了跨平臺的數據傳遞。以水工建筑物的開挖面三維建模為例,通過混合編程二次開發,充分利用AutoCAD和CATIA軟件各自的功能特長,大大提高了復雜開挖面的三維建模效率,加強了軟件之間的協同設計能力。

[1]胡燚,張運東,張強.三維CAD技術在水利水電工程設計中的應用分析[J].硅谷,2013(23):66-71.

[2]龔剛,鄧榮歡,張憲林.三維設計方法在水利水電工程設計中的應用探討[J].珠江水運,2014(23):64-65.

[3]袁紹東,王靜,王強華,等.AIM軟件在水利水電工程三維設計中的應用探討[J].西北水電,2014(3):88-90.

Application of mixed programming in water resources and hydropower engineering design

LI Xilong

(PowerChinaGuiyangEngineeringCorporationLimited,Guiyang550081,China)

The secondary development of AutoCAD and CATIA was carried on by using the mixed programming.The cross-platform lossless data transfer is realized. And the capacity of collaborative design between softwares is improved. Taking three-dimensional modeling of hydraulic structure excavation face as an example, the specific application of mixed programming in water resources and hydropower engineering design was introduced.

water resources and hydropower; mixed programming; secondary development; excavation; CATIA; AutoCAD; ObjectARX

李希龍(1982-),男,工程師,主要從事水工建筑物設計及虛擬仿真工作。

TV222.2

A

2096-0506(2016)03-0047-04

猜你喜歡
二次開發設計
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
淺談基于Revit平臺的二次開發
甘肅科技(2020年20期)2020-04-13 00:30:02
西門子Operate高級編程的旋轉坐標系二次開發
淺談Mastercam后處理器的二次開發
模具制造(2019年3期)2019-06-06 02:11:02
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
Micaps3.2 版本二次開發入門淺析
西藏科技(2015年12期)2015-09-26 12:13:51
ANSYS Workbench二次開發在汽車穩定桿CAE分析中的應用
汽車零部件(2014年5期)2014-11-11 12:24:32
主站蜘蛛池模板: 欧美日韩午夜| 亚洲精品自拍区在线观看| 精品国产成人高清在线| 欧美成人午夜影院| 亚洲国产欧美自拍| 国产欧美精品午夜在线播放| 日韩无码黄色网站| 亚洲视频影院| 91色老久久精品偷偷蜜臀| 在线观看欧美精品二区| 亚洲午夜福利精品无码不卡| 五月丁香伊人啪啪手机免费观看| 亚洲欧美日韩色图| 性欧美久久| 99久久精品免费看国产免费软件| 77777亚洲午夜久久多人| 欧美亚洲一区二区三区在线| 在线观看无码av五月花| 波多野结衣久久精品| 手机在线免费不卡一区二| 中文字幕亚洲专区第19页| 一本久道热中字伊人| 永久免费无码日韩视频| 国产熟女一级毛片| 女人av社区男人的天堂| 国产剧情一区二区| 久久久久夜色精品波多野结衣| 久久亚洲日本不卡一区二区| 久久网欧美| 精品成人一区二区| JIZZ亚洲国产| 九色综合视频网| 国产精品亚洲片在线va| aⅴ免费在线观看| 国产精品久久久久久久久久98| 久久综合丝袜日本网| 99尹人香蕉国产免费天天拍| 精品成人一区二区三区电影| 美美女高清毛片视频免费观看| 日韩精品无码不卡无码| 91精品免费高清在线| 香蕉久人久人青草青草| 免费一极毛片| 高潮爽到爆的喷水女主播视频| 波多野结衣一区二区三区AV| 亚洲欧洲日韩久久狠狠爱| 日韩在线永久免费播放| 久久精品中文字幕少妇| 狠狠综合久久| 久久久久免费精品国产| 乱人伦99久久| 国产导航在线| 亚洲伊人久久精品影院| 日本不卡在线视频| 亚洲美女一区二区三区| 久草性视频| 久久国产精品娇妻素人| 国产女同自拍视频| 又黄又爽视频好爽视频| 色婷婷成人| 毛片在线看网站| 国产成人区在线观看视频| 99热这里只有免费国产精品| 欧美亚洲日韩中文| 亚洲色图欧美激情| 国产福利在线免费观看| 黑人巨大精品欧美一区二区区| 尤物特级无码毛片免费| 国产乱子伦视频在线播放| 亚洲首页在线观看| 中国毛片网| 国产黄网站在线观看| 亚洲手机在线| 亚洲妓女综合网995久久| 91福利片| 一区二区三区高清视频国产女人| 99精品国产电影| 亚洲综合片| 国产大全韩国亚洲一区二区三区| 成人福利在线视频免费观看| 国产微拍一区| 亚洲欧美日韩色图|