/// <summary> /// 删除实体的缩放比例 /// </summary> /// <param name="entId">实体的Id</param> /// <param name="scaleNames">缩放比例名列表</param> public static void RemoveScale(this ObjectId entId, params string[] scaleNames) { //获取entId指示的实体对象 DBObject obj = entId.GetObject(OpenMode.ForRead); //如果实体对象支持注释缩放 if (obj.Annotative != AnnotativeStates.NotApplicable) { //获得对象所有的注释比例 List <ObjectContext> scales = entId.GetAllScales(); obj.UpgradeOpen();//切换实体为写的状态 //获取当前图形的对象比例管理器 ObjectContextManager ocm = obj.Database.ObjectContextManager; //获取当前图形的注释比例列表,名为ACDB_ANNOTATIONSCALES ObjectContextCollection occ = ocm.GetContextCollection("ACDB_ANNOTATIONSCALES"); //遍历需要设置的注释比例 foreach (string scaleName in scaleNames) { //获取名为scaleName的注释比例 ObjectContext scale = occ.GetContext(scaleName); //若不存在scaleName的注释比例,则结束本次循环 if (scale == null) { continue; } //删除名为scaleName的注释比例 ObjectContexts.RemoveContext(obj, scale); } obj.DowngradeOpen();//为了安全将实体切换为读的状态 } }