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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

VB在ACADWIN中的使用

2019-11-18 17:39:20
字體:
供稿:網(wǎng)友
AutoCAD是一個常用工業(yè)繪圖平臺,用戶在使用時經(jīng)常要用Lisp或ADS進(jìn)行二次開發(fā),但Lisp處理數(shù)據(jù)庫能力差,編制界面困難,而ADS要求較高.相比之下,VisualBasic(以下簡稱VB)編寫?yīng)毩⒊绦虻乃俣瓤欤幹平缑嫒菀祝蛇M(jìn)行快速計算,可操作數(shù)據(jù)庫。ACADWIN是AUTOCAD的Windows版程序,具有WINDOWS的許多特點。可以利用DDE進(jìn)行VB與ACADWIN之間的通訊,實現(xiàn)AutoCAD編程。

VB在ACADWIN的應(yīng)用文件
因為ACADWINR12不支持如PastLink的直接DDE方法,所以要有一個控件與VB相聯(lián)系,以進(jìn)行數(shù)據(jù)傳遞。這里主要用到以下幾個文件:
1):DDEBAS.EXE這是VB/DDE服務(wù)器程序,必須在運行VB應(yīng)用程序前調(diào)入,在命令行下鍵入:(XLOAD“DDEBAS”)。
2):ACADVB.DLL,VB應(yīng)用程序的動態(tài)連接庫。
3):GLOBAL.BAS,VB應(yīng)用程序的全程變量的定義文件。
4):ADSFUNCS.BAS,VB應(yīng)用程序?qū)DS庫標(biāo)準(zhǔn)函數(shù)的調(diào)用。
5):ADSFUNCS.FRM,標(biāo)準(zhǔn)ACADWIN的初始VB窗口。
6):NEW.FRM,用于新建標(biāo)準(zhǔn)初始VB窗口。

后4個文件在ACADWIN/VB/NEW目錄下,編程時只要打開NEWlink.linktopic=appname “|” topic'置通訊主題
link.linkmode=2'手工通訊
endsub
增加一個過程unlinkapp,其代碼如下:
subunlinkapp(linkascontonl)
link.linkmode=0'關(guān)閉通訊
endsub
在窗體事件中,增加如下代碼:
subform_load()
LINKAPPACADTEXT,“AUTOCAD.DDE”,“SYSTEM”
endsub
subform_unload(cancelasinteger)
UNLINKAPPACADTEXT
endsub

如畫圓“CIRCLE”,先在ADSFUNC.FRM中增加一個命令鈕COMMAND1,將其CAPTION置為“C
IRCLE”,在子過程中增加以下代碼:
SUBCOMMAND1_CLICK()
ACADTEXT.LINKEXECUTE“[^3^3CIRCLE]”
ENDSUB

至此可以實現(xiàn)繪圖命令。如果要實現(xiàn)復(fù)雜的功能,如捕捉特征點,獲得特性,參數(shù)化繪圖,等能否讓完成界面及計算功能,把參數(shù)傳給一個Lisp程序,然后再將程序調(diào)入環(huán)境中完成繪圖呢?答案是肯定的這就要用到“SendKey"語句。該語句功能是向具有焦點的窗口發(fā)送字符,就象從鍵盤中鍵入一樣。這時先用函數(shù)FindACAD()找到ACADWIN的句柄,再用AcadACTIVE函授激活A(yù)CADWIN,使其具有焦點,這時就可以用SendKey了。

如有一個Lisp程序YZ.LSP,主函數(shù)為“C:YZ()”,可先在ADSFUNC.FRM中增加一個命令鈕COMMAND2,將其CAPTION置為“YZ”,在子過程中增加以下代碼:

SUBCOMMAND2_CLICK()
hwndAcad=FindAcad()
AcadActivate(hwndAcad)
SendKeys“{(}load ‘yz '{)}”,-1
SendKeys“{enter}”,-1
SendKeys“yz”,-1
ENDSUB

以上方法可以實現(xiàn)通過VB的界面選取參數(shù),進(jìn)行計算;用Lisp進(jìn)行繪圖。有兩個問題值得注意:一:如要進(jìn)行參數(shù)的傳遞,可以先用VB寫臨時數(shù)據(jù)文件,再用Lisp讀此臨時數(shù)據(jù)文件。二:因為與窗體布置不一定使ACADWIN和VB應(yīng)用程序兩者同時可見,Lisp程序執(zhí)行完畢,不能自動返回到VB應(yīng)用程序,這時可以通過調(diào)用WindowsAPI函數(shù)SetWindowPos來使應(yīng)用程序總浮在最上面,避免了來回切換窗口。這種技術(shù)的實現(xiàn)在本報已有介紹.

在ADSFUNCS.BAS中也定義了很多ADS函數(shù)可供調(diào)用。如ACADWIN/VB/ASVU中有一個例子ASVU.EXE,就是應(yīng)用Ads_getvar及Ads_setvar函數(shù),在SYSVARS.MAK的intervai.bas可以看到。但DDE的鏈接方式要改變,在啟動窗體或函授中加上:

DDE_TIMEOUT=-1'等待一個DDE事件
openDDE'ADSFUNCS.BAS中一個函數(shù),初始化DDE鏈接->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 开原市| 鄂伦春自治旗| 上高县| 桂阳县| 宣威市| 新乡县| 仪陇县| 兰考县| 上蔡县| 澳门| 新沂市| 泾川县| 木里| 浦县| 平谷区| 沈丘县| 泗洪县| 白玉县| 塘沽区| 高清| 海伦市| 仪陇县| 韶关市| 慈溪市| 江津市| 连江县| 呼伦贝尔市| 上饶县| 崇信县| 台江县| 永清县| 望奎县| 鄂尔多斯市| 巴彦淖尔市| 宣城市| 正蓝旗| 洱源县| 双桥区| 四子王旗| 沧州市| 广安市|