//打开当前的对象! if (ent is AttributeDefinition) { //设置属性为属性索引中的属性定义 AttributeDefinition attDef = ((AttributeDefinition)(ent)); attRef.SetPropertiesFrom(attDef); attRef.Position = new Point3d(attDef.Position.X + br.Position.X, attDef.Position.Y + br.Position.Y, attDef.Position.Z + br.Position.Z); attRef.Height = attDef.Height; attRef.Rotation = attDef.Rotation; attRef.Tag = attDef.Tag; attRef.TextString = name; } } //把索引加入模型空间 btr.AppendEntity(br); //把属性索引加入到块索引 br.AttributeCollection.AppendAttribute(attRef); //让事务处理知道 trans.AddNewlyCreatedDBObject(attRef, true); trans.AddNewlyCreatedDBObject(br, true); 研究一下上面的代码,看看是怎样把属性定义中除显示用的文本字符串外的属性复制到属性索引的。属性被加入到块索引的属性集合中。这就是你怎样来为每一个实例自定义雇员名字。 5)不要忘记返回雇员块索引的ObjectId,但要在提交事务处理之后才能返回: trans.Commit(); return br.ObjectId; 6) 测试CreateEmployee。 加入一个Test命令来测试CreateEmployee: [CommandMethod("Test")] public void Test() { CreateEmployee("Earnest Shackleton", "Sales", 10000, new Point3d(10, 10, 0)); } 修改CreateDivision()以重用: 让我们来修改CreateDivision ()函数,以让它可以接收部门名字、经理名字并返回创建的部门经理扩展记录的ObjectId。如果部门经理已经存在,则不改变经理的名字。 1) 如果你先前在CreateEmployeeDefinition()中调用了CreateDivision(),请把它注释掉,因为我们在这里不需要创建一个部门 2) 改变CreateDivision()的形式让它接收部门和经上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页 |