AutoCAD環(huán)境下與數(shù)據(jù)庫間的互聯(lián)技術(shù)
2013-05-09 by:廣州有限元分析、培訓(xùn)中心-1CAE.COM 來源:仿真在線
摘要 本文闡述了在液壓CAD系統(tǒng)中,針對AutoCAD R13 for Windows二次開發(fā)環(huán)境下,利用其內(nèi)部ASI接口技術(shù)進行程序設(shè)計,實現(xiàn)與Visual Foxpro 3.0之間進行數(shù)據(jù)交換的方法。
關(guān)鍵詞:AutoCAD 二次開發(fā) 接口 數(shù)據(jù)交換
1 引言
數(shù)據(jù)交換是CAD的核心技術(shù),可以說沒有數(shù)據(jù)的有效交換,就沒有CAD優(yōu)越性的充分發(fā)揮。在AutoCAD環(huán)境下進行CAD軟件二次開發(fā)時,如何實現(xiàn)各模塊間數(shù)據(jù)的有效交換,如何解決各類不同軟件間的接口問題以及如何實現(xiàn)圖形實體與非圖形實體數(shù)據(jù)的聯(lián)系,是二次開發(fā)CAD系統(tǒng)解決的關(guān)鍵問題。
本文著重討論了AutoCAD R13 C4 for Windows環(huán)境下與Visual Foxpro 3.0之間進行的數(shù)據(jù)交換的ASI (AutoCAD SQL Interface)程序設(shè)計方法,并具體應(yīng)用于液壓系統(tǒng)的CAD軟件中。
2 AutoCAD的開發(fā)與數(shù)據(jù)庫的訪問
象其他流行軟件一樣,Autodesk公司在AutoCAD R13內(nèi)部提供了與外部數(shù)據(jù)庫相互聯(lián)系的機制。AutoCAD本身含有ASI(AutoCAD SQL Interface)、ASE(AutoCAD SQL Extension)和DBMS(Database Manager System)驅(qū)動程序幾部分。AutoCAD與數(shù)據(jù)庫文件之間進行數(shù)據(jù)交換的示意圖如圖所示。
AutoCAD與數(shù)據(jù)庫文件之間數(shù)據(jù)交換示意圖
ASI遵循ANSI/ISOSQL標準,是用于從AutoCAD中訪問外部數(shù)據(jù)庫的函數(shù)集。用ASI建立的應(yīng)用程序,均可通過AutoCAD的開發(fā)應(yīng)用系統(tǒng);C語言開發(fā)的ADS,Visual C++4.0開發(fā)的ARX或其內(nèi)部所自帶的AutoLISP語言連接到AutoCAD系統(tǒng)中,同時可以在不同的數(shù)據(jù)庫驅(qū)動程序支持下對不同的數(shù)據(jù)庫進行數(shù)據(jù)的存取交換。
ASE是一組命令集,可將SQL連接到AtuoCAD系統(tǒng)中。其實質(zhì)就是利用ASI建立的ADS/ARX的應(yīng)用程序。使用ASE可以在AutoCAD內(nèi)部對外部數(shù)據(jù)庫中的數(shù)據(jù)文件的記錄和字段進行查詢和修改等操作,可以將數(shù)據(jù)關(guān)聯(lián)到圖形實體和非圖形實體(如啞圖中尺寸參數(shù)替換和明細表等)上,實現(xiàn)圖形和數(shù)據(jù)間的雙向查詢,并可以實現(xiàn)在圖形中動態(tài)跟蹤顯示數(shù)據(jù)。
AutoCAD本身包含一組數(shù)據(jù)庫驅(qū)動程序,其中每一個驅(qū)動程序都支持自己所連接的一種外部DBMS。其中用ADS/ARX或AutoLISP建立的應(yīng)用程序,不必考慮DBMS專用的代碼應(yīng)用程序,是用ASI編程還是用ASE命令編程,其實質(zhì)都是遵循通用SQL標準的。
AutoCAD支持的開發(fā)語言有Turbo C,Visual Basic 5.0,Visual C/C++4.0和內(nèi)部擁有AutoLISP語言,其中C,VB通過建立生成ADS的函數(shù),VC生成的是ARX函數(shù),與AutoCAD信息相聯(lián)系。
ASE作為AutoCAD內(nèi)部的一組命令,可用編程方式執(zhí)行。ASE作為AutoCAD訪問數(shù)據(jù)庫的核心具有更直接訪問數(shù)據(jù)庫的能力,允許應(yīng)用程序?qū)Χ喾NDBMS,DBMS內(nèi)的多個數(shù)據(jù)庫,庫內(nèi)的多張表進行數(shù)據(jù)訪問。ASE和ASI可根據(jù)需要單獨或同時使用。ASE方法在顯示屬性、編輯、列表框、基于查詢等功能方面顯得容易實現(xiàn),但對于復(fù)雜的應(yīng)用程序,就要使用ASI方式編程實現(xiàn)功能。
3 ASI方法的使用
3.1 ASI的支持文件與開發(fā)環(huán)境
AutoCAD R13 for windows所支持的ASI編程的文件都存放在缺省的\ACAD\WIN\ASE目錄中。
有ASI目標庫(文件后綴為.LIB)如asiatm80.lib;ASI頭文件(asi.h含ASI的通用定義)、(asierr.h包含返回出錯代碼值的含義)、(asiappl.h含主要的AutoCAD SQL結(jié)構(gòu)查詢語言的頭文件)、(asisdata.h含C++的用戶接口定義)。
用ASI編制的應(yīng)用程序,可用的編譯器有:Borland C/C++4.0、Microsoft C/C++7.0、Microsoft Visual C++4.0以上版本等。
3.2 利用ASI與數(shù)據(jù)庫交互處理的實現(xiàn)過程步驟
● 連通數(shù)據(jù)庫:通過asi-initsql,ads-initdrv,asi-connect分別對ASI指定的DBMS驅(qū)動程序進行初始化,登錄到所指定的數(shù)據(jù)庫。
● 打開一個通訊句柄:這可通過調(diào)用asi-compile函數(shù)來實現(xiàn)。在ASI程序中,每條SQL語句都通過一個通訊句柄來進行處理。
● 編譯SQL語句:通過調(diào)用asi-compile函數(shù)來實現(xiàn)。
● 執(zhí)行SQL語句:用asi-iexecute函數(shù)執(zhí)行SQL語句。
● 查詢和處理數(shù)據(jù):逐行查詢結(jié)果,選取當前行,進行數(shù)據(jù)處理。所需的函數(shù)有:asi-fetch獲得光標所在的當前行;asi-coldsc獲得一列的說明;asi-delete刪除當前行;asi-update更換當前行,等函數(shù)。
● 關(guān)閉通訊句柄:用asi-chandle函數(shù)關(guān)閉語句處理的句柄,并釋放句柄。
● 斷開與數(shù)據(jù)庫的連接:調(diào)用asi-disconnect函數(shù),斷開登錄的數(shù)據(jù)庫;調(diào)用asi-temdrv函數(shù),終止驅(qū)動程序;調(diào)用asi-temrsql函數(shù),終止程序接口。
上述每一過程可用ASI的出錯代碼處理函數(shù)進行錯誤信息處理,用asi-err獲得一條出錯代碼,用asi-errmsg函數(shù)獲得一條出錯信息。
4 實例說明
本例給出一個由Visual Foxpro3.0環(huán)境下,建立起來的液壓系統(tǒng)軟件包設(shè)計中的順序閥數(shù)據(jù)庫文件SXFLIB.DBF,其數(shù)據(jù)結(jié)構(gòu)如下表所示。
Name | Type | Diameter | Pressure | Flux | Scale |
順序閥 | X-F*10D3-P-* | 10.0 | 20.0 | 40.0 | 0.5 |
順序閥 | 2X-F*10D3-AB/BA-* | 10.0 | 20.0 | 40.0 | 1.0 |
單向順序閥 | XA-F*10D3-B-* | 10.0 | 20.0 | 40.0 | 0.7 |
單向順序閥 | XA-F*10D3-B(A)-* | 10.0 | 20.0 | 40.0 | 0.5 |
編制ASI應(yīng)用程序,實現(xiàn)所需功能:
(1)編制ins-rowvalue命令,實現(xiàn)將AutoCAD圖形上的數(shù)據(jù)和名稱做一標記插入到數(shù)據(jù)庫的記錄中。
(2)編制get-rowvalue命令,實現(xiàn)從數(shù)據(jù)庫選定行中讀取數(shù)據(jù),在軟件的對話框中顯示出來,并按數(shù)據(jù)所提供的比例畫出圖形。
(3)編制fetch-dallue命令,實現(xiàn)從數(shù)據(jù)庫中讀取所有記錄,在對話框的列表框內(nèi)顯示出來,以便用戶調(diào)用,插入圖形中。
由于AutoCAD可通過ASI/ASE、DBMS訪問數(shù)據(jù)庫,所以使許多應(yīng)用項目的設(shè)計思路大為開闊,節(jié)省了設(shè)計者的工作時間,提高了工作效率,降低了投入成本,有利于集成系統(tǒng)的實現(xiàn)。
相關(guān)標簽搜索:AutoCAD環(huán)境下與數(shù)據(jù)庫間的互聯(lián)技術(shù) AutoCAD培訓(xùn) AutoCAD培訓(xùn)課程 AutoCAD圖紙設(shè)計 AutoCAD在線視頻 AutoCAD技術(shù)學習教程 AutoCAD軟件教程 AutoCAD資料下載 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) Autoform培訓(xùn)