所屬欄目:數(shù)學(xué)論文 發(fā)布日期:2011-01-20 17:34 熱度:
摘要:討論在VisualC++.NET2002的集成開發(fā)環(huán)境下,使用ObjectARX和MFC相結(jié)合開發(fā)控制測量驗(yàn)算應(yīng)用程序,有效地解決人工計(jì)算量大、控制精度誤差繁瑣等問題,同時使用該方法還為控制測量驗(yàn)算應(yīng)用程序提供了強(qiáng)大的圖形處理技術(shù)平臺,發(fā)揮了MFC與ObjectARX模塊性好、獨(dú)立性強(qiáng)、穩(wěn)定性高等優(yōu)點(diǎn)。
關(guān)鍵詞:AutoCAD二次開發(fā)、ObjectARX;VC.NET;MFC;坐標(biāo)反算;控制測量驗(yàn)算
1.ObjectARX與MFC特色
1.1ObjectARX
ObjectARX程序本質(zhì)上為Windows動態(tài)鏈接庫(DLL)程序,與AutoCAD共享地址空間,直接調(diào)用AutoCAD核心函數(shù),直接訪問AutoCAD數(shù)據(jù)庫,并且可以擴(kuò)充AutoCAD的類和協(xié)議,建立和AutoCAD的內(nèi)部命令在同一層次上的命令,因此用其開發(fā)的CAD軟件具有模塊性好、獨(dú)立性強(qiáng)、穩(wěn)定性高等優(yōu)點(diǎn)。而AutoCAD又具有強(qiáng)大的矢量繪圖功能,調(diào)用已知的數(shù)據(jù)可以繪制出用戶所需要的圖形。
1.2MFC
MFC(MicrosoftFoundationClass)是Windows環(huán)境下編程的一個應(yīng)用程序框架,是C++類庫的擴(kuò)展。它提供了大量的預(yù)寫類和支持碼,可以處理許多標(biāo)準(zhǔn)Windows編程任務(wù),如生成窗口和處理消息。它還可以在程序中加入復(fù)雜的特性,如工具條、分窗視圖等。
2.ObjectARX與VC.NET結(jié)合
正是由于CAD處理圖形數(shù)據(jù)和MFC提供的視窗交互、類庫計(jì)算的強(qiáng)大功能,把兩者通過CAD平臺結(jié)合在一起,可以使研究人員更好地輸入和管理數(shù)據(jù)。在ObjectARX與MFC結(jié)合編程的過程中,ObjectARX應(yīng)用程序能夠創(chuàng)建動態(tài)鏈接的MFC類庫并在AutoCAD中使用,用戶可以使用這些庫來創(chuàng)建標(biāo)準(zhǔn)的Windows圖形用戶界面(GUI),從而實(shí)現(xiàn)程序界面的可視化。ObjectARX是基于AutoCAD面向?qū)ο蟮亩伍_發(fā)工具,其開發(fā)環(huán)境必須基于VC.NET平臺。
3.ObjectARX應(yīng)用程序設(shè)計(jì)思路
3.1工程控制測量驗(yàn)算問題
在工程測量中我們經(jīng)常要通過一些已采集的數(shù)據(jù)計(jì)算某些控制點(diǎn)的坐標(biāo)、方位角等驗(yàn)算,然后通過CAD等繪圖軟件繪制地形圖。常用的計(jì)算有坐標(biāo)正反算、支導(dǎo)線、附合導(dǎo)線、測角前方交會、測角后方交會等。
3.2坐標(biāo)反算實(shí)例
本文以坐標(biāo)反算為例,運(yùn)用ObjectARX與MFC開發(fā)一個可視化的坐標(biāo)反算小程序。如圖1所示,若A、B為兩已知點(diǎn),其坐標(biāo)分別為(XA,YA)和(XB,YB),根據(jù)三角函數(shù),可以得出直線的邊長和坐標(biāo)方位角計(jì)算公式:tanα=△YAB/△XAB=(YB-YA)/(XB-XA)。
3.3程序流程
如圖2所示,為測量數(shù)據(jù)計(jì)算一般流程。通過此流程圖,開發(fā)人員可以開發(fā)出各種計(jì)算小程序在CAD平臺下被調(diào)用。
3.4ObjectARX應(yīng)用程序結(jié)構(gòu)
ObjectARX應(yīng)用程序通常由初始化程序和用戶定義的命令函數(shù)兩部分組成。初始化部分主要由入口函數(shù)acrxEntrypoint()定義、初始化函數(shù)initApp()定義和ARX卸載程序的函數(shù)定義組成。ARX初始化函數(shù)initApp()通常是調(diào)用addCommand()函數(shù)注冊用戶定義的AutoCAD命令,而卸載函數(shù)unloadApp()調(diào)用RemoveGroup()函數(shù)釋放addCommand()函數(shù)定義的命令組。
圖1 圖2
3.5程序?qū)υ捒蛟O(shè)計(jì)
用類向?qū)?chuàng)建相應(yīng)的對話框類,自動生成CDialog類的派生類定義的頭文件(h文件)和相應(yīng)的實(shí)現(xiàn)文件(cpp文件)。創(chuàng)建8個editbox編輯框、兩個Button按鈕,若干個static靜態(tài)文本,并拖動到相應(yīng)位置,如圖4所示。
3.6定義數(shù)據(jù)結(jié)構(gòu)類型
坐標(biāo)和距離的單位均為米(m),方位角以角度制為單位。測量數(shù)據(jù)精度要求較高,坐標(biāo)和距離采用雙精度(double)型,角度采用度分秒形式,度和分定義為整型(int)變量,秒定義為單精度(float)變量。見表1所示。
表1主要控件說明:
3.7坐標(biāo)反算主程序
MFC提供了大量預(yù)定義的類庫是大大簡化了編程時帶來的計(jì)算繁瑣,如math.h文件中包含了絕大數(shù)的數(shù)學(xué)函數(shù),使開發(fā)人員不需要再去定義函數(shù)。以下為坐標(biāo)反算程序的主要代碼:
voidFSDlg::OnBnClickedFS()
{
UpdateData();//刷新控件的值到對應(yīng)的變量
.............
UpdateData(FALSE);//拷貝變量值到控件顯示
}
3.8注冊命令
在initApp()函數(shù)中有一個重要的函數(shù)acedRegcmds->addcommand()函數(shù),acedRegcmds為一個宏,它提供一個向ARX系統(tǒng)中Acedcommandstack(命令堆棧)對象的指針。命令堆棧是AutoCAD存放命令的地方,它包含了AutoCAD的內(nèi)部命令和用戶定制的命令。而addcommand()函數(shù)是Acedcommandstack類,加入命令的方法即成員函數(shù),正是通過這個函數(shù),使用戶定義的函數(shù)與自定義的命令名建立了聯(lián)系。這樣,用戶就可以直接輸入命令名來執(zhí)行應(yīng)用程序。此程序注冊新命令“zuobiaofansuan”,命令簡化名為“zbfs”。
圖3
3.9ObjectARX應(yīng)用程序的裝載與卸載
ARX應(yīng)用程序的裝載和卸載主要有以下幾種方法:
(1)在AutoCAD安裝目錄下文件acad.rx中寫有AutoCAD啟動中指定待裝入的ARX應(yīng)用程序名。acad.rx可以用記事本打開編輯,每個ObjectARX應(yīng)用程序名必須單獨(dú)占一行,AutoCAD啟動時會自動裝載該文件中的ObjectARX應(yīng)用程序;
(2)使用APPLOAD對話框。AutoCAD文件appload.lsp定義了使用AutoLISP函數(shù)arxload和arxunload裝載和卸載ARX應(yīng)用程序的用戶接口;
(3)“ARX”是一個AutoCAD命令。在AutoCAD命令行鍵入ARX,然后鍵入L后彈出對話框,指定待裝載的ARX應(yīng)用程序名即可;相反,然后鍵入U后彈出對話框,可以卸載ARX應(yīng)用程序。
在這里我們加載“坐標(biāo)反算”程序,然后直接在命令行鍵入“zbfs”(簡化名),彈出如圖3所示對話框。
4.結(jié)語
隨著AutoCAD在各個行業(yè)應(yīng)用中的廣泛深入,以VisualC++.NET與ObjectARX相結(jié)合的開發(fā)方法對AutoCAD進(jìn)行二次開發(fā),極大地提高了開發(fā)效率,特別是在對圖形數(shù)據(jù)的處理上,AutoCAD提供了強(qiáng)大的數(shù)據(jù)管理平臺。
參考文獻(xiàn)
[1]李長勛.AutoCADObjectARX程序開發(fā)技術(shù)[M].北京:國際工業(yè)出版社,2005.
[2]陳元琰,鄧宗明.VisualC++6.0編程實(shí)用技術(shù)與案例[M].北京:清華大學(xué)出版社,2001.
[3]朱學(xué)軍,賴惠芬.基于MFC的ObjectARX應(yīng)用程序開發(fā)[J].微機(jī)發(fā)展,2003.
[4]張英杰.基于ARX與MFC的AutoCAD2006應(yīng)用程序開發(fā)[Z].機(jī)械工程師,2007.9.
[5]劉英璐.ObjectARX與MFC相結(jié)合進(jìn)行AutoCAD二次開發(fā)[Z].煤炭技術(shù),2007.1
文章標(biāo)題:AutoCAD-ObjectARX在控制測量驗(yàn)算中的應(yīng)用
轉(zhuǎn)載請注明來自:http://www.optiwork.cn/fblw/jiaoyu/shuxue/6570.html
攝影藝術(shù)領(lǐng)域AHCI期刊推薦《Phot...關(guān)注:106
Nature旗下多學(xué)科子刊Nature Com...關(guān)注:152
中小學(xué)教師值得了解,這些教育學(xué)...關(guān)注:47
2025年寫管理學(xué)論文可以用的19個...關(guān)注:192
測繪領(lǐng)域科技核心期刊選擇 輕松拿...關(guān)注:64
及時開論文檢索證明很重要關(guān)注:52
中國水產(chǎn)科學(xué)期刊是核心期刊嗎關(guān)注:54
國際出書需要了解的問題解答關(guān)注:58
合著出書能否評職稱?關(guān)注:48
電信學(xué)有哪些可投稿的SCI期刊,值...關(guān)注:66
通信工程行業(yè)論文選題關(guān)注:73
SCIE、ESCI、SSCI和AHCI期刊目錄...關(guān)注:121
評職稱發(fā)論文好還是出書好關(guān)注:68
復(fù)印報刊資料重要轉(zhuǎn)載來源期刊(...關(guān)注:51
英文期刊審稿常見的論文狀態(tài)及其...關(guān)注:69
Web of Science 核心合集期刊評估...關(guān)注:59
教育論文范文
教育技術(shù)論文 特殊教育論文 影視教育論文 藝術(shù)教育論文 體育科學(xué)教育論文 人文教育論文 成人教育論文 職業(yè)教育論文 教育學(xué)論文 學(xué)前教育論文 小學(xué)教育論文 中學(xué)教育論文 初等教育論文 高等教育論文 天文學(xué)論文 數(shù)學(xué)論文 物理論文 化學(xué)論文
SCI期刊分析
copyright © www.optiwork.cn, All Rights Reserved
搜論文知識網(wǎng) 冀ICP備15021333號-3