/// <summary> /// 为对象添加扩展数据 /// </summary> /// <param name="id">对象的Id</param> /// <param name="regAppName">注册应用程序名</param> /// <param name="values">要添加的扩展数据项列表</param> public static void AddXData(this ObjectId id, string regAppName, TypedValueList values) { Database db=id.Database;//获取实体所属的数据库 //获取数据库的注册应用程序表 RegAppTable regTable=(RegAppTable)db.RegAppTableId.GetObject(OpenMode.ForWrite); //如里不存在名为regAppName的记录,则创建新的注册应用程序表记录 if (!regTable.Has(regAppName)) { //创建一个注册应用程序表记录用来表示扩展数据 RegAppTableRecord regRecord=new RegAppTableRecord(); regRecord.Name = regAppName;//设置扩展数据的名字 //在注册应用程序表加入扩展数据,并通知事务处理 regTable.Add(regRecord); db.TransactionManager.AddNewlyCreatedDBObject(regRecord, true); } //以写的方式打开要添加扩展数据的实体 DBObject obj=id.GetObject(OpenMode.ForWrite); //将扩展数据的应用程序名添加到扩展数据项列表的第一项 values.Insert(0, new TypedValue((int)DxfCode.ExtendedDataRegAppName, regAppName)); obj.XData = values;//将新建的扩展数据附加到实体中 regTable.DowngradeOpen();//为了安全,将应用程序注册表切换为读的状态 }