成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#.NET教程:AutoCAD向導及Editor類

開發 后端
本文繼續C#.NET教程:.NET AutoCAD向導及Editor類的講解。
在***章中,我們使用的是類庫模板,這樣就不得不手工加入acdbmdg. dll 和acmgd.dll這兩個引用。在這一章中,我們將使用AutoCAD托管C#應用程序向導來創建.NET工程,它會自動加入以上兩個引用。在開始本章之前,你首先得安裝ObjectARX向導(ObjectARX2006開發包的\utils\ObjARXWiz\ArxWizards.msi)。

1) 啟動Visual Studio .NET,選擇”文件>新建>工程”(File> New> Project)。在新建工程對話框中選擇工程類型為”Visual C#工程”,然后選擇“AutoCAD Managed CS Project Application”模板。在工程名字框中輸入”Lab2”,然后選擇工程存放的位置。點擊確定按鈕,“AutoCAD Managed CSharp Application Wizard”對話框將會出現。因為我們不需要使用非托管代碼,所以不要選擇“Enable Unmanaged Debugging”項。“Registered Developer Symbol”將會使用你在安裝ObjectARX向導時輸入的值。單擊”finish”按鈕來創建工程。

2) 下面來看一下向導生成的工程。在解決方案瀏覽器中,你會看到acdbmgd 和 acmgd已經被引用了。在Class.cs文件中,“Autodesk.AutoCAD.Runtime”命名空間已被導入,工程使用“Registered Developer Symbol”的名字來命名缺省的公有類。向導還為類加入了一個CommandMethod屬性和一個函數,它們用于AutoCAD命令。

3) 在前一章中,我們使用一個“Autodesk.AutoCAD.EditorInput.Editor”類的實例對象在AutoCAD命令行上輸出文本。在這一章中,我們將使用這個類來提示用戶在AutoCAD圖形中選擇一個點,然后將用戶選擇的點的x,y,z值顯示出來。和前一章一樣,請導入Autodesk.AutoCAD.ApplicationServices 和 Autodesk.AutoCAD.EditorInput命名空間。

4) 把向導生成的CommandMethod屬性的值改為有意義一些的名字如“selectPoint”(函數的名字可以不用修改)。PromptPointOptions類用來設置提示字符串和其它的一些控制提示的選項。這個類的一個實例作為參數被傳入到Editor.GetPoint方法。在函數的開始,實例化這個類,設置字符串參數為“Select a point”。因為 Editor.GetPoint方法會返回一個PromptPointResult類的實例對象,所以我們也要把它實例化。

  1. PromptPointOptions prPointOptions =  
  2. new PromptPointOptions("Select a point");  
  3. PromptPointResult prPointRes; 

5) 接下來實例化一個Editor類的對象并使用參數為PromptPointOptions對象的GetPoint方法。用GetPoint方法的返回值來給上面聲明的PromptPointResult對象賦值。賦值好以后,我們可以測試PromptPointResult對象的狀態,如果不是OK就返回。

  1. prPointRes = ed.GetPoint(prPointOptions);  
  2. if (prPointRes.Status != PromptStatus.OK)  
  3. {  
  4. ed.WriteMessage("Error");  

6) 如果PromptPointResult對象返回了一個有效的點,我們就可以使用WriteMessage方法把結果輸出到命令行。PromptPointResult.Value的ToString方法使輸出非常容易:

  1. ed.WriteMessage("You selected point " 
  2. prPointRes.Value.ToString) 

7) 按F5來運行一個調試AutoCAD的進程。(注意:向導已經設置好用acad.exe來調試)在AutoCAD命令行中輸入NETLOAD,選擇Lab2.dll并打開。在命令行中輸入你起的命令名字(selectPoint)。在選擇點的提示下,單擊圖形中的任一點。如果一切正常的話,你可以在命令行中看到你所選的點的坐標值。在Class.cs文件的“ed.WriteMessage("Error");”行加入斷點,然后再次運行selectPoint命令。這一次,在選擇點的提示下按ESC鍵而不是選擇一個點。PromptPointResult對象的狀態就不是OK了,所以上面代碼中的if語句就會被執行,“ed.WriteMessage("Error")”;語句就會被調用。

8) 接下來我們將加入另外一個命令,它可以獲取兩個點之間的距離。向導沒有添加命令的功能,所以我們必須手工添加。在Class.cs文件的選擇點的函數(getPoint)下面添加一個名為getDistance的新命令。加入命令的方法請參考上一章的內容或本章的源代碼,這里就不列出了。使用CommandMethod屬性并使字符串參數為“getdistance”或其它類似的名字。在命令的函數中使用PromptDistanceOptions代替PromptPointOptions。當然GetDistance方法的返回值是一個PromptDoubleResult類的實例對象,所以請用PromptDoubleResult來代替PromptPointResult:

  1. PromptDistanceOptions prDistOptions = new 
  2. PromptDistanceOptions("Find distance, select first point:");  
  3. PromptDoubleResult prDistRes;  
  4. prDistRes = ed.GetDistance(prDistOptions); 

9) 和前面的命令一樣,也可以測試PromptDoubleResult的狀態,然后用WriteMessage方法在命令行中顯示值。

  1. if (prDistRes.Status != PromptStatus.OK)  
  2. {  
  3. ed.WriteMessage("Error");  
  4. }  
  5. else 
  6. {  
  7. ed.WriteMessage("The distance is: " + prDistRes.Value.ToString());  
  8.  
  9. }  

C#.net 教程中AutoCAD及Editor類的相關內容就介紹到這里。

【編輯推薦】

  1. C#事件和委托的編譯代碼
  2. C#事件的由來
  3. 學習C#委托:將方法綁定到委托
  4. 學習C#委托:將方法作為方法的參數
  5. C# 插件構架實例詳解
責任編輯:book05 來源: 新浪博客
相關推薦

2009-08-19 15:44:09

ObjectARX .

2009-08-25 13:53:20

C#.NET rege

2009-08-26 14:23:14

C#.Net Fram

2009-08-19 16:19:33

Employee對象

2011-06-01 15:45:28

實體類序列化

2009-08-26 10:09:22

C#編碼規范

2009-08-24 16:19:54

C#.NET綁定Off

2011-06-17 15:55:19

ArrayListC#

2009-08-13 10:35:55

C#.NET操作XML

2009-09-11 11:30:53

Net60C#.NET

2009-08-24 16:30:43

C#.NET綁定Off

2009-08-31 14:45:15

C#.NET多線程應用

2009-04-02 15:21:43

c#IDisposeFinalize

2009-08-28 09:29:02

2009-09-01 16:14:05

ArrayList與A

2009-08-28 16:43:08

AutoCAD托管C#

2009-08-28 14:15:19

SocketVisual C#.N

2023-08-02 08:48:11

C#碟片算法

2023-10-11 14:18:40

C#.Net析構

2023-09-26 07:57:17

C#.NetCCtor函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 麻豆视频国产在线观看 | 日韩欧美在线观看视频 | 天堂一区| 中文字幕在线国产 | h视频在线免费看 | 国产探花在线精品一区二区 | 99国产精品99久久久久久 | 久草视频观看 | 国产精品小视频在线观看 | 日韩精品在线观看网站 | 男人的天堂久久 | 综合第一页| 亚洲欧美综合精品久久成人 | 成人福利视频 | 在线国产一区二区 | 国产一区2区 | 国产九一精品 | 在线午夜电影 | 久久久久免费 | 国产精品免费大片 | 81精品国产乱码久久久久久 | 日韩av在线播| 九九九视频在线观看 | 成人国产一区二区三区精品麻豆 | 国产精品嫩草影院精东 | 日韩精品一区二区三区中文字幕 | 一级片av | 欧美精品三区 | 国产精品国产a级 | 欧美日韩专区 | 韩国成人在线视频 | 水蜜桃亚洲一二三四在线 | 在线观看电影av | 日韩视频一区二区三区 | 日韩视频在线免费观看 | 日韩一区二区在线播放 | 日韩在线不卡 | www.99热.com | 国产精品成人在线观看 | 视频一区 亚洲 | 日韩在线观看一区 |