,以让它可以接收名字、薪水、部门和职位并返回创建的雇员块索引的ObjectId。函数的形式如下(你可以改变参数顺序) public ObjectId CreateEmployee(string name, string division, double salary, Point3d pos) 2) 移除上面函数中的CommandMethod属性”CREATE”,这样它就不再是用来创建雇员的命令。 3) 修改函数的代码,这样就可以正确地设置块索引的名字、职位、部门和薪水和它的扩展字典。 · 替换 BlockReference br = new BlockReference(new Point3d(10, 10, 0), CreateEmployeeDefinition()); 为 BlockReference br = new BlockReference(pos, CreateEmployeeDefinition()); · 替换 xRec.Data = new ResultBuffer( new TypedValue((int)DxfCode.Text, "Earnest Shackleton"), new TypedValue((int)DxfCode.Real, 72000), new TypedValue((int)DxfCode.Text, "Sales")); 为 xRec.Data = new ResultBuffer( new TypedValue((int)DxfCode.Text, name), new TypedValue((int)DxfCode.Real, salary), new TypedValue((int)DxfCode.Text, division)); 4) 因为我们把雇员的名字从MText替换成块的属性定义,因此我们要创建一个相应的属性索引来显示雇员的名字。属性索引将使用属性定义的属性。 · 替换: btr.AppendEntity(br); //加入索引到模型空间 trans.AddNewlyCreatedDBObject(br, true); //让事务处理知道 为 AttributeReference attRef = new AttributeReference(); //遍历雇员块来查找属性定义 BlockTableRecord empBtr = (BlockTableRecord)trans.GetObject(bt["EmployeeBlock"], OpenMode.ForRead); foreach (ObjectId id in empBtr) { Entity ent = (Entity)trans.GetObject(id, OpenMode.ForRead, false);
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页 |