国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

VB應用程序中用DDE功能開發AutoCADforWindows

2019-11-18 17:50:25
字體:
來源:轉載
供稿:網友
目前,許多工程CAD系統是以AutoCAD作為支撐軟件,在其基礎上進行二次開發而形成的。AutoCADR12forWindows以AutoLISP和ADS作為二次開發工具,但它們都有不足之處,AutoLISP速度慢,沒有友好的開發環境,ADS是基于C語言的開發環境,而C語言面向Windows編程本身難以掌握,因此AutoLISP和ADS的使用都受到一定的限制。VB是Windows下主要的開發工具之一,它的“可視性”和“事件驅動性”簡化了面向Windows的編程,深受廣大用戶的青睞。Windows下,VB和AutoCAD都支持強有力的DDE(動態數據交換)功能,用VB編寫具有DDE功能的程序來控制AutoCAD,既能與AutoCAD交換各種復雜的數據結構,又能向AutoCAD發送命令,由此開發出的應用程序能滿足用戶的需要,同時又縮短了開發周期。本文結合實例介紹了用VB開發AutoCAD的途徑與方法。
一、直接利用DDE功能開發

  DDE是Windows的強大功能之一,它可以使應用程序自動地接收由其它應用程序發送來的數據,當傳送端的數據有變化時,接收端的數據也會隨之改變,也可將命令或鍵盤輸入傳遞給其它程序,實現遠程控制。

  在VB編程環境中,創建應用程序的方法很簡單,首先是設計用戶界面,也就是在空白窗體中放入所需要的控件,如命令按鈕,單選鈕,文本框,標簽,圖片框等,然后針對各控件上要發生的事件(如鼠標單擊,鼠標移動等)書寫事件過程,最后將編寫的應用程序運行,調試,生成執行文件即可。VB中能和其它Window應用程序建立DDE通道的控件有文本框,標簽和圖片框。下面結合簡單實例,說明VB應用程序與AutoCAD間建立DDE通道和交換數據的方法。

  在VB中啟動一個新項目,參見圖(1)建立窗體,其中“建立鏈接”,“直線”,“標注”,“退出”為命令按鈕,標有“Text1”的為文本框,用于建立DDE通道,并輸入下面的事件代碼。

 OptionExplicit

 
  End

 EndSub

  運行此應用程序,注意在運行前,一定要先加載AutoCAD。單擊“建立鏈接”按扭,cmdLink_Click()過程被執行,執行時設置文本框Text1的LinkTopic和LinkMode的屬性,完成VB應用程序與AutoCAD間DDE通道的建立。LinkTopic屬性用于通知AutoCAD由誰來提供數據,它被管道符“|”分成兩部分,第一部分“AutoCAD.DDE”為應用程序名,第二部分“System”是通訊的主題。LinkMode屬性用于切實建立鏈接,在LinkMode=0時,表示關閉以前的DDE通道,在LinkMode=2時,表示以手動模式激活DDE通道。

  在完成DDE鏈接后,VB應用程序就可以與AutoCAD間進行數據交換或命令傳送了。單擊“直線”按扭,cmdLine_Click()過程被執行,應用程序通過LinkExecute方法向AutoCAD發送命令,在AutoCAD中以點(3,3)和(8,8)為端心,畫一條直線。語句中的^3相當于AutoCAD中的取消鍵Ctrl C,空格相當于AutoCAD中的回車鍵。單擊“標注”按扭,執行cmdText_Click()過程,可在AutoCAD中顯示以(10,10)為基點,高為1,旋轉角度為90的字符串“AutoCAD!”。語句中的^10相當于AutoCAD中的回車鍵,在標注文字時不能用空格代替回車鍵。

  根據需要,可用上面的方法傳送AutoCAD的其它命令,實現對AutoCAD的開發。

二、通過調用VBADS開發

  上面介紹了在VB應用程序中直接利用DDE與AutoCAD作用實現開發的方法,此方法要求用戶自己建立與AutoCAD間的DDE通道,此外,我們還可以通過調用VBADS函數對AutoCAD進行開發。在VBADS函數庫中已有專門的函數負責建立應用程序與AutoCAD間的DDE通道,而不需用戶親自建立,較為方便。另外,VB應用程序還可以通過VBADS函數向AutoCAD發送數據和命令,同時也可以利用VBADS函數的返回值來獲得AutoCAD的數據,實現對AutoCAD更深入的開發。

  為了利用AutoCAD的VBADS函數建立VB的應用程序,AutoCAD提供了幾個VBADS支撐文件,這些文件除DDEBAS.EXE和ACADVB.DLL存放在C:/ACADWIN子目錄外,其余都存放在C:/ACADWIN/VB/NEW子目錄中。文件如下:

  1.DDEBAS.EXE-ADS/DDE服務者,為保證VB于AutoCAD間正常通信,此命令必須首先在AutoCAD中用XLOAD命令加載運行。

  2.ACADVB.DLL-VBADS動態連接庫,在運行VB應用程序前,應將其拷到C:/WINDOWS/SYSTEM/子目錄下。

  3.GLOBAL.BAS-VBADS應用程序中所需要使用的全局變量定義文件。

  4.ADSFUNCS.BAS-VBADS函數庫,可以在VB應用程序中直接調用。

  5.ADSFUNCS.FRM-包含有應用程序和AutoCAD間建立DDE鏈接的窗體文件。下面結合具體的例子,說明利用VBADS函數開發應用程序的方法。[HJ]   啟動VB,打開C:/ACADWIN/VB/NEW/NEWPROJ.MAK項目文件,參見圖[2]建立新窗體,并輸入如下的事件代碼。

 OptionExplicit

 PrivateSubForm_Load()

  DDE_TIMEOUT=-1 '等待DDE事件

  txtX.Text=5 '圓心,半徑的隱含值

  txtY.Text=5

  txtRadius=3

 EndSub

 PrivateSubcmdCircle_Click() '畫圓過程

  DimretAsInteger

  DimptAsads_point '定義Ads點類型

  DimRadiusAsDouble

  DimApndllAsApndLLType '定義增加鏈表類型

  DimResbufAsResbufType '定義結果緩沖器

  pt.X=val(Trim(txtX.Text)) '給圓心,半徑賦值

  pt.Y=val(Trim(txtY.Text))

  Radius=val(Trim(txtRadius.Text))

  ret=ads_newrb(10,Resbuf) '建立新的結果緩沖器

  Resbuf.hResbuf=0

  Apndll.apType=RTSTR '說明鏈表類型為字符串

  Apndll.apString="circle" Chr$(0) '鏈表賦值

  ret=ApndLLNode(Resbuf,Apndll) '增加鏈表到結果緩沖器

  Apndll.apType=RTPOINT

  Apndll.apPoint=pt

  ret=ApndLLNode(Resbuf,Apndll)

  Apndll.apType=RTREAL

  Apndll.apReal=Radius

  ret=ApndLLNode(Resbuf,Apndll)

  Apndll.apType=RTNONE '鏈表結束值類型

  ret=ApndLLNode(Resbuf,Apndll)

  ret=ads_cmd(Resbuf) '執行結果緩沖器的命令

  ret=ads_relrb(Resbuf) '釋放結果緩沖器

  EndSub

PrivateSubcmdExit_Click() '退出過程

  End

 EndSub

  在應用程序運行前,必須首先運行AutoCAD,并用命令(XLOAD"DDEBAS")加載DDEBAS.EXE。在上面的應用程序中,除語句DDE_TimeOut=-1外,沒有其它涉及建立DDE通道的語句,因為應用程序與AutoCAD間建立DDE通道所需要的代碼已保存在VBADS函數庫中,打開支撐文件adsfuncs.bas,可以發現SubOPENDDE()過程,它負責VB應用程序與AutoCAD間DDE通道的建立,所以用戶在開發應用程序時,只管調用VBADS函數即可。例子中的cmdCircle_Click()過程,是在VB4.0編程環境通過調用VBADS函數開發的,運行程序后在文本框中輸入半徑和圓心的值,單擊“畫圖”按扭,即可在AutoCAD中得到所需的圓。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 老河口市| 桐柏县| 白水县| 金溪县| 剑川县| 九台市| 柘荣县| 赫章县| 卓资县| 佛山市| 沿河| 恩平市| 洛隆县| 霸州市| 遵义县| 乌恰县| 玛纳斯县| 兴化市| 崇州市| 三江| 洛扎县| 临清市| 双牌县| 沐川县| 崇州市| 山东| 望城县| 白玉县| 阿克陶县| 商都县| 珠海市| 股票| 新宁县| 柘城县| 修水县| 高台县| 惠来县| 伽师县| 红安县| 赤峰市| 南郑县|