• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      李希龍

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

      ?

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

      李希龍

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

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

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

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

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

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

      1.1混合編程的概念和意義

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

      1.2AutoCAD及CATIA二次開發(fā)簡介

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

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

      1.3AutoCAD和CATIA二次開發(fā)混合編程原理

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

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

      圖1 AutoCAD與CATIA二次開發(fā)混合編程流程圖

      2 AutoCAD和CATIA二次開發(fā)混合編程的實現(xiàn)

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

      2.1創(chuàng)建解決方案和工程

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

      2.2CATIA數據寫入程序

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

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

      (2)在“VBforCATIA”工程屬性中,添加引用CATIA自帶的系統(tǒng)類型庫,如圖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”文件以供后續(xù)ObjectARX程序調用。

      2.3AutoCAD數據讀取程序

      在“ARXforCAD”工程中,利用ObjectARX VC++對AutoCAD進行二次開發(fā),以讀取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 應用案例

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

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

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

      4 結 論

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

      [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

      猜你喜歡
      二次開發(fā)工程設計水利水電
      水利水電工程
      BIM在建筑給排水工程設計中的應用
      房地產導刊(2022年4期)2022-04-19 09:04:14
      農村水利水電
      淺談基于Revit平臺的二次開發(fā)
      甘肅科技(2020年20期)2020-04-13 00:30:02
      淺談Mastercam后處理器的二次開發(fā)
      模具制造(2019年3期)2019-06-06 02:11:02
      西門子Easy Screen對倒棱機床界面二次開發(fā)
      MD4-1000在水利水電工程中的應用
      銅陽極泥中碲回收工程設計
      EDA技術創(chuàng)新演化與工程設計應用
      河南科技(2015年1期)2015-02-27 14:20:07
      水利水電工程趕工索賠闡述
      南通市| 双牌县| 海兴县| 定陶县| 隆安县| 威信县| 潮州市| 禹州市| 古交市| 鹤庆县| 芜湖县| 临澧县| 安阳县| 榆中县| 东光县| 盘山县| 嘉善县| 南昌市| 无棣县| 黄梅县| 吉首市| 迁安市| 东乡族自治县| 灵寿县| 潞西市| 镇康县| 江永县| 怀来县| 耿马| 丹巴县| 苍梧县| 霍州市| 加查县| 云阳县| 祁门县| 太仆寺旗| 玉树县| 江永县| 民乐县| 马鞍山市| 高台县|