• 
    

    
    

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

      利用托管ObjectARX和DAO技術(shù)實現(xiàn)圖庫聯(lián)動功能

      2015-03-29 06:34:00吳獻(xiàn)文
      測繪通報 2015年6期
      關(guān)鍵詞:圖面圖庫數(shù)據(jù)處理

      吳獻(xiàn)文

      (1.湖北工業(yè)大學(xué),湖北 武漢430068;2.廣東省地質(zhì)物探工程勘察院,廣東 廣州510800)

      一、引 言

      原有地下管線數(shù)據(jù)處理成圖系統(tǒng)采用AutoLISP開發(fā)工具編寫,在AutoCAD平臺上加載,通過數(shù)據(jù)處理子系統(tǒng)輸出的成圖文本文件自動成圖。AutoLISP開發(fā)工具本身的局限性導(dǎo)致其較難實現(xiàn)對MDB格式數(shù)據(jù)較為直觀的控制,因此成圖子系統(tǒng)和數(shù)據(jù)處理子系統(tǒng)的關(guān)聯(lián)只限于文本文件,一旦需要修改則圖面和數(shù)據(jù)庫都要修改。事實表明,這種圖庫分開的關(guān)聯(lián)方式給內(nèi)業(yè)操作人員造成很大的不便,修改數(shù)據(jù)不直觀、容易出錯。因此,迫切需要一種高層次的開發(fā),使數(shù)據(jù)處理和成圖更有效的結(jié)合,并能同時控制相同數(shù)據(jù)庫格式,更好地滿足生產(chǎn)工作的需要。

      二、開發(fā)環(huán)境的選擇

      AutoCAD是由美國Autodesk公司推出、在國際工程界廣泛使用的計算機(jī)輔助繪圖軟件。AutoCAD是一個功能齊全、應(yīng)用廣泛的通用圖形軟件包,且具有開放式的體系結(jié)構(gòu),贏得了廣大用戶的青睞。

      AutoCAD為用戶提供了3種二次開發(fā)工具的接口:一是AutoCAD內(nèi)置的Visual LISP,二是Visual Basic/VBA,三是ObjectARX。ObjectARX是Autodesk公司提供給用戶的一個AutoCAD與VC++的應(yīng)用程序接口(API)模塊,它包含220個類和3000多個成員函數(shù),用它開發(fā)出的應(yīng)用程序以動態(tài)連接庫的形式與AutoCAD共享地址空間。與前兩種開發(fā)工具相比,ObjectARX有獨特的優(yōu)勢:①ObjectARX本身是采用面向?qū)ο蠹夹g(shù)設(shè)計開發(fā)的,易學(xué)易用,功能強(qiáng)大;②使用ObjectARX開發(fā)的程序可以直接操作AutoCAD的底層數(shù)據(jù)庫,效率高。

      托管ObjectARX可以使用.NET所支持的任何語言進(jìn)行開發(fā),達(dá)到與使用C++開發(fā)的ObjectARX幾乎同樣強(qiáng)大的功能。托管ObjectARX封裝了絕大部分的ObjectARX SDK,它可以執(zhí)行數(shù)據(jù)庫功能,使用戶可以讀寫DWG文件,訪問AutoCAD的界面元素,包括命令行、特性對話框、編輯器、發(fā)布和出圖工具等。它由acdbmgd.dll和acbmgd.dll兩個程序集組成。

      DAO(數(shù)據(jù)訪問對象)是一種應(yīng)用程序編程接口(API),存在于微軟的Visual Basic中,允許程序員請求對微軟的Access數(shù)據(jù)庫的訪問。DAO是微軟的第1個面向?qū)ο蟮臄?shù)據(jù)庫接口。DAO對象封閉了Access的Jet函數(shù)。通過Jet函數(shù),還可以訪問其他的結(jié)構(gòu)化查詢語言(SQL)數(shù)據(jù)庫。

      基于以上分析,成圖系統(tǒng)在通用圖形軟件Auto-CAD 2009平臺上進(jìn)行二次開發(fā),采用VB.NET 2008版軟件開發(fā)環(huán)境,使用托管ObjectARX和DAO數(shù)據(jù)庫訪問技術(shù)。

      三、圖庫聯(lián)動具體實現(xiàn)過程

      1.引用ObjectARX.NET封裝類

      在VB.NET中使用AutoCAD.NET托管封裝類,必須先添加引用acdbmgd.dll和acmgd.dll。在Auto-CAD 2009的安裝目錄下找到它們,并添加引用到工程中。正如它們的名字所表示的,acdbmgd.dll包含ObjectDBX托管類,而acmgd.dll包含AutoCAD托管類。

      在類的聲明語句之前,導(dǎo)入ApplicationServices、ApplicationServices、EditorInput和Runtime命名空間,即:

      Imports Autodesk.AutoCAD.ApplicationServices

      Imports Autodesk.AutoCAD.DatabaseServices

      Imports Autodesk.AutoCAD.Runtime

      Imports Autodesk.AutoCAD.Geometry

      Imports Autodesk.AutoCAD.Interop

      2.通過DAO連接數(shù)據(jù)庫

      工程需要引用Microsoft DAO 3.6 Object Library,具體實現(xiàn)代碼如下:

      Dim DB As DAO.Database

      Dim RP As DAO.Recordset

      Dim RL As DAO.Recordset

      Dim mdbdge As New DAO.DBEngine

      MyMdb=mdbdge.Workspaces(0).OpenDatabase(DataName)

      RP=MyMdb.OpenRecordset(LayName&″POINT″,DAO.RecordsetTypeEnum.dbOpenDynaset)

      RL=MyMdb.OpenRecordset(LayName&″LINE″,DAO.RecordsetTypeEnum.dbOpenDynaset)

      3.創(chuàng)建實體(點、線和文字)

      下面具體介紹管線點實體的插入,通過DAO技術(shù)從數(shù)據(jù)庫里讀取各管類的信息,包括點位坐標(biāo)位置、屬性信息(點號、點代碼和點特征等)等,將其實體展繪在AutoCAD平臺上,如圖1所示,并將其屬性信息寫入實體的擴(kuò)展數(shù)據(jù),以便后面信息的讀取。

      圖1

      關(guān)鍵實現(xiàn)代碼如下:

      Dim MoSpace As Autodesk.AutoCAD.Interop.Common.AcadModelSpace

      Dim PntSymbol As Autodesk.AutoCAD.Interop.Common.AcadBlockReference

      PntSymbol=MoSpace.InsertBlock(insPnt,DwgFile,0.5,0.5,0.5,dAngle)

      AcadRun.Point_SetXdata(PntSymbol,XD0,SPoint,PT1.Layer&″POINT″)

      AcadRun.Point_SetXdata(PntSymbol,XD1,s1,PT1.Layer&″POINT″)

      4.在AutoCAD平臺上讀取實體信息

      在ActiveX技術(shù)中,GetEntity方法能夠返回一個AcadEntity類型的對象和一個Variant類型的變量(表示拾取點的位置)。在拖管封裝的ARX中無法直接使用該返回值,但是在AutoCAD的一個進(jìn)程中,不同語言中ObjectID的值是一致的,就可以通過ObjectId在兩種語言中實現(xiàn)實體的傳遞。代碼如下:

      Dim pickPnt As Object

      Dim xdataOut As Object

      Dim xtypeOut As Object

      DimacadDoc As Autodesk.AutoCAD.Interop.AcadDocument

      Dim entObj As Autodesk.AutoCAD.Interop.Common.AcadEntity

      acadDoc.Utility.GetEntity(entObj,pickPnt,″請選擇實體″)

      entObj.GetXData(XD0,xtypeOut,xdataOut)

      S=xdataOut(1)

      通過此方法在AutoCAD上讀取實體信息后,通過DAO連接數(shù)據(jù)庫信息,并彈出窗口顯示出來。用戶可以通過窗口對數(shù)據(jù)進(jìn)行添加或修改,非常方便快捷。通過屬性窗口,實現(xiàn)了圖面實體和數(shù)據(jù)庫的連接,用戶使用修改操作,圖面和數(shù)據(jù)庫的信息都會同步得到修改,實現(xiàn)了圖庫聯(lián)動的目的,如圖2所示。

      圖2

      四、結(jié)束語

      本系統(tǒng)采用VB.NET 2008版軟件開發(fā)工具,使用托管ObjectARX和DAO數(shù)據(jù)庫訪問技術(shù),實現(xiàn)了AutoCAD圖面實體和Access數(shù)據(jù)庫的動態(tài)連接,很好地實現(xiàn)了圖庫聯(lián)動功能,使修改工作更加方便快捷,滿足了工作生產(chǎn)的需要,大大提高了內(nèi)業(yè)數(shù)據(jù)處理工作的效率,帶來了一定的生產(chǎn)效益。

      [1] 北京市測繪設(shè)計研究院.CJJ 61—2003J271—2003城市地下管線探測技術(shù)規(guī)程[S].北京:中國建筑工業(yè)出版社,2003.

      [2] 曾洪飛,張帆,盧擇臨.AutoCAD VBA&VB.NET開發(fā)基礎(chǔ)與實例教程[M].北京:中國電力出版社,2008.

      猜你喜歡
      圖面圖庫數(shù)據(jù)處理
      金山農(nóng)民畫矢量圖庫的建設(shè)與應(yīng)用
      認(rèn)知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補與極大似然估計法*
      ILWT-EEMD數(shù)據(jù)處理的ELM滾動軸承故障診斷
      帶狀地形圖斷面數(shù)據(jù)采集的程序化實現(xiàn)
      基于生產(chǎn)實踐若干需求完善大比例尺地形圖圖面表達(dá)方式的探討
      視圖庫在AI浪潮里的發(fā)展應(yīng)用
      專題地圖圖面要素自動配置方法的研究
      測繪工程(2017年10期)2017-08-31 14:32:01
      Photoshop CC圖庫面板的正確打開方法
      基于希爾伯特- 黃變換的去噪法在外測數(shù)據(jù)處理中的應(yīng)用
      圍繞“四個全面”戰(zhàn)略布局 譜寫偉大復(fù)興宏偉篇章
      湄潭县| 双城市| 舞阳县| 台江县| 武胜县| 久治县| 黄龙县| 保定市| 阳原县| 大丰市| 淮南市| 偃师市| 德兴市| 绥宁县| 桂阳县| 秭归县| 资兴市| 湘乡市| 尉氏县| 定州市| 黎平县| 凤山县| 虞城县| 福建省| 金坛市| 温宿县| 镇康县| 咸丰县| 农安县| 阿鲁科尔沁旗| 咸丰县| 囊谦县| 奉节县| 漠河县| 陆良县| 历史| 阳西县| 左权县| 英德市| 迁西县| 泸溪县|