游离丸子 2009-08-31
C#语言还是比较常见的东西,这里我们主要介绍C# Employee对象,包括介绍在AutoCAD程序的开发中经常碰到这种类型转化等方面。
C# Employee对象
我们将创建一个函数来遍历模型空间,以用来查找加入的C# Employee对象(这里其实是块索引)的数目。在VB.NET 或C#中,我们可以把模型空间块表记录(ModelSpace BlockTableRecord)当作一个集合,这样就可以使用For Each(C#是foreach)来遍历它。请仔细研究一下下面的代码片断:
VB.NET:
Dim id As ObjectId ‘ 首先,定义一个For循环要使用的ObjectId变量。 For Each id In btr Dim ent As Entity = trans.GetObject(id, OpenMode.ForRead, False) '打开当前的对象!
C#:
foreach (ObjectId id in btr) { Entity ent = (Entity)trans.GetObject(id, OpenMode.ForRead, false); //打开当前的对象!
一旦我们获得模型空间对象,你们就可以定义一个ObjectId变量,然后把它用于For Each循环(C#是foreach)。
现在,我们需要使用一些方法来筛选雇员。我们知道模型空间中的对象都是实体,但不全是雇员。我们需要使用一些方法来加以区分。在这里,我们可以使用VB.NET的TypeOf关键字并用CType进行类型转换(C#是GetType函数和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;
上面讲的概念对于AutoCAD编程是很重要的,因为容器对象经常包含不同类型的对象。你会在AutoCAD程序的开发中经常碰到这种类型转化。
请定义一个名为EmployeeCount()的函数,函数的结构如上所示,它用来统计模型空间中的块索引的数目。这个函数不会输出任何东西,但你可以使用逐步调试程序来查看整数变量的增加(每发现一个块索引对象)。
接下来,为了把结果输出到命令行,我们需要使用Application.DocumentManager.MdiActiveDocument.Editor对象的服务。要使用它,请加入下面的代码:
Imports Autodesk.AutoCAD.EditorInput Imports Autodesk.AutoCAD.ApplicationServices
在函数的内部:
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;