新聞中心
在***章中,我們使用的是類庫模板,這樣就不得不手工加入acdbmdg. dll 和acmgd.dll這兩個引用。在這一章中,我們將使用AutoCAD托管C#應(yīng)用程序向?qū)韯?chuàng)建.NET工程,它會自動加入以上兩個引用。在開始本章之前,你首先得安裝ObjectARX向?qū)?ObjectARX2006開發(fā)包的\utils\ObjARXWiz\ArxWizards.msi)。

成都創(chuàng)新互聯(lián)公司主要從事成都做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)武鳴,十載網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
1) 啟動Visual Studio .NET,選擇”文件>新建>工程”(File> New> Project)。在新建工程對話框中選擇工程類型為”Visual C#工程”,然后選擇“AutoCAD Managed CS Project Application”模板。在工程名字框中輸入”Lab2”,然后選擇工程存放的位置。點擊確定按鈕,“AutoCAD Managed CSharp Application Wizard”對話框?qū)霈F(xiàn)。因為我們不需要使用非托管代碼,所以不要選擇“Enable Unmanaged Debugging”項?!癛egistered Developer Symbol”將會使用你在安裝ObjectARX向?qū)r輸入的值。單擊”finish”按鈕來創(chuàng)建工程。
2) 下面來看一下向?qū)傻墓こ獭T诮鉀Q方案瀏覽器中,你會看到acdbmgd 和 acmgd已經(jīng)被引用了。在Class.cs文件中,“Autodesk.AutoCAD.Runtime”命名空間已被導(dǎo)入,工程使用“Registered Developer Symbol”的名字來命名缺省的公有類。向?qū)н€為類加入了一個CommandMethod屬性和一個函數(shù),它們用于AutoCAD命令。
3) 在前一章中,我們使用一個“Autodesk.AutoCAD.EditorInput.Editor”類的實例對象在AutoCAD命令行上輸出文本。在這一章中,我們將使用這個類來提示用戶在AutoCAD圖形中選擇一個點,然后將用戶選擇的點的x,y,z值顯示出來。和前一章一樣,請導(dǎo)入Autodesk.AutoCAD.ApplicationServices 和 Autodesk.AutoCAD.EditorInput命名空間。
4) 把向?qū)傻腃ommandMethod屬性的值改為有意義一些的名字如“selectPoint”(函數(shù)的名字可以不用修改)。PromptPointOptions類用來設(shè)置提示字符串和其它的一些控制提示的選項。這個類的一個實例作為參數(shù)被傳入到Editor.GetPoint方法。在函數(shù)的開始,實例化這個類,設(shè)置字符串參數(shù)為“Select a point”。因為 Editor.GetPoint方法會返回一個PromptPointResult類的實例對象,所以我們也要把它實例化。
- PromptPointOptions prPointOptions =
- new PromptPointOptions("Select a point");
- PromptPointResult prPointRes;
5) 接下來實例化一個Editor類的對象并使用參數(shù)為PromptPointOptions對象的GetPoint方法。用GetPoint方法的返回值來給上面聲明的PromptPointResult對象賦值。賦值好以后,我們可以測試PromptPointResult對象的狀態(tài),如果不是OK就返回。
- prPointRes = ed.GetPoint(prPointOptions);
- if (prPointRes.Status != PromptStatus.OK)
- {
- ed.WriteMessage("Error");
- }
6) 如果PromptPointResult對象返回了一個有效的點,我們就可以使用WriteMessage方法把結(jié)果輸出到命令行。PromptPointResult.Value的ToString方法使輸出非常容易:
- ed.WriteMessage("You selected point "
- prPointRes.Value.ToString)
7) 按F5來運行一個調(diào)試AutoCAD的進程。(注意:向?qū)б呀?jīng)設(shè)置好用acad.exe來調(diào)試)在AutoCAD命令行中輸入NETLOAD,選擇Lab2.dll并打開。在命令行中輸入你起的命令名字(selectPoint)。在選擇點的提示下,單擊圖形中的任一點。如果一切正常的話,你可以在命令行中看到你所選的點的坐標值。在Class.cs文件的“ed.WriteMessage("Error");”行加入斷點,然后再次運行selectPoint命令。這一次,在選擇點的提示下按ESC鍵而不是選擇一個點。PromptPointResult對象的狀態(tài)就不是OK了,所以上面代碼中的if語句就會被執(zhí)行,“ed.WriteMessage("Error")”;語句就會被調(diào)用。
8) 接下來我們將加入另外一個命令,它可以獲取兩個點之間的距離。向?qū)]有添加命令的功能,所以我們必須手工添加。在Class.cs文件的選擇點的函數(shù)(getPoint)下面添加一個名為getDistance的新命令。加入命令的方法請參考上一章的內(nèi)容或本章的源代碼,這里就不列出了。使用CommandMethod屬性并使字符串參數(shù)為“getdistance”或其它類似的名字。在命令的函數(shù)中使用PromptDistanceOptions代替PromptPointOptions。當然GetDistance方法的返回值是一個PromptDoubleResult類的實例對象,所以請用PromptDoubleResult來代替PromptPointResult:
- PromptDistanceOptions prDistOptions = new
- PromptDistanceOptions("Find distance, select first point:");
- PromptDoubleResult prDistRes;
- prDistRes = ed.GetDistance(prDistOptions);
9) 和前面的命令一樣,也可以測試PromptDoubleResult的狀態(tài),然后用WriteMessage方法在命令行中顯示值。
- if (prDistRes.Status != PromptStatus.OK)
- {
- ed.WriteMessage("Error");
- }
- else
- {
- ed.WriteMessage("The distance is: " + prDistRes.Value.ToString());
- }
C#.net 教程中AutoCAD及Editor類的相關(guān)內(nèi)容就介紹到這里。
本文題目:C#.NET教程:AutoCAD向?qū)Ъ癊ditor類
瀏覽地址:http://m.fisionsoft.com.cn/article/dhijhpd.html


咨詢
建站咨詢
