示例#1
0
 /// <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();//为了安全,将应用程序注册表切换为读的状态
 }