C# Employee對(duì)象概述
C#語(yǔ)言還是比較常見的東西,這里我們主要介紹C# Employee對(duì)象,包括介紹在AutoCAD程序的開發(fā)中經(jīng)常碰到這種類型轉(zhuǎn)化等方面。
C# Employee對(duì)象
我們將創(chuàng)建一個(gè)函數(shù)來(lái)遍歷模型空間,以用來(lái)查找加入的C# Employee對(duì)象(這里其實(shí)是塊索引)的數(shù)目。在VB.NET 或C#中,我們可以把模型空間塊表記錄(ModelSpace BlockTableRecord)當(dāng)作一個(gè)集合,這樣就可以使用For Each(C#是foreach)來(lái)遍歷它。請(qǐng)仔細(xì)研究一下下面的代碼片斷:
VB.NET:
- Dim id As ObjectId ‘ 首先,定義一個(gè)For循環(huán)要使用的ObjectId變量。
- For Each id In btr
- Dim ent As Entity = trans.GetObject(id, OpenMode.ForRead, False) '打開當(dāng)前的對(duì)象!
C#:
- foreach (ObjectId id in btr)
- {
- Entity ent = (Entity)trans.GetObject(id, OpenMode.ForRead, false);
- //打開當(dāng)前的對(duì)象!
一旦我們獲得模型空間對(duì)象,你們就可以定義一個(gè)ObjectId變量,然后把它用于For Each循環(huán)(C#是foreach)。
現(xiàn)在,我們需要使用一些方法來(lái)篩選雇員。我們知道模型空間中的對(duì)象都是實(shí)體,但不全是雇員。我們需要使用一些方法來(lái)加以區(qū)分。在這里,我們可以使用VB.NET的TypeOf關(guān)鍵字并用CType進(jìn)行類型轉(zhuǎn)換(C#是GetType函數(shù)和typeof):
VB.NET:
- If TypeOf ent Is BlockReference Then
- Dim br As BlockReference = CType(ent, BlockReference)
- …
C#:
- If(ent.GetType() == typeof(BlockReference))
- BlockReference br = (BlockReference)ent;
上面講的概念對(duì)于AutoCAD編程是很重要的,因?yàn)槿萜鲗?duì)象經(jīng)常包含不同類型的對(duì)象。你會(huì)在AutoCAD程序的開發(fā)中經(jīng)常碰到這種類型轉(zhuǎn)化。
請(qǐng)定義一個(gè)名為EmployeeCount()的函數(shù),函數(shù)的結(jié)構(gòu)如上所示,它用來(lái)統(tǒng)計(jì)模型空間中的塊索引的數(shù)目。這個(gè)函數(shù)不會(huì)輸出任何東西,但你可以使用逐步調(diào)試程序來(lái)查看整數(shù)變量的增加(每發(fā)現(xiàn)一個(gè)塊索引對(duì)象)。
接下來(lái),為了把結(jié)果輸出到命令行,我們需要使用Application.DocumentManager.MdiActiveDocument.Editor對(duì)象的服務(wù)。要使用它,請(qǐng)加入下面的代碼:
- Imports Autodesk.AutoCAD.EditorInput
- Imports Autodesk.AutoCAD.ApplicationServices
在函數(shù)的內(nèi)部:
- Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
***,在循環(huán)的后面確定找到了多少個(gè)塊索引:
- ed.WriteMessage("Employees Found: " + nEmployeeCount.ToString());
【編輯推薦】