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

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

VB在ACADWIN中的使用

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

VB在ACADWIN的應(yīng)用文件
因?yàn)锳CADWINR12不支持如PastLink的直接DDE方法,所以要有一個控件與VB相聯(lián)系,以進(jìn)行數(shù)據(jù)傳遞。這里主要用到以下幾個文件:
1):DDEBAS.EXE這是VB/DDE服務(wù)器程序,必須在運(yùn)行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

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

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

在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ā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 开江县| 绥化市| 特克斯县| 麻江县| 佛冈县| 东源县| 乌苏市| 于田县| 南投市| 漳平市| 娱乐| 武安市| 雷山县| 汶川县| 普格县| 福海县| 博客| 诏安县| 余庆县| 新竹市| 庆阳市| 建湖县| 台湾省| 土默特右旗| 长海县| 焦作市| 邻水| 台南县| 利辛县| 铁岭县| 辽宁省| 游戏| 瑞昌市| 丰宁| 闸北区| 泰安市| 疏勒县| 抚宁县| 延津县| 酒泉市| 永福县|