AutoCAD二次开发之属性操作(3) 删除属性
来源:互联网 发布:嘉实红利优化股票基金 编辑:程序博客网 时间:2024/05/21 06:28
以往的工作过程中,没有使用过删除属性的操作。上周一,遇到了这个问题。在网友的帮助下,终于解决。代码很简单,只是想不到啊。。。
正解代码为:
ResultBuffer rbDel = new ResultBuffer(
new TypedValue((int)DxfCode.ExtendedDataRegAppName, strAppName));
ent.XData = rbDel;
其中strAppName为需要删除的属性名称。
上述代码的含义为:定义一个需要删除的类型(typedvalue)对其只写入需要删除的属性名称,不予赋属性值。
用创建的typedvalue构造resultbuffer rb
将rb赋给实体的XData。即可删除xdata里面指定的属性名称。
下面是自己写的一个方法。用来删除实体属性
/// <summary>
/// 删除属性
/// </summary>
/// <param name="oid">实体主键</param>
/// <param name="arrayDelAppName">单个属性名称</param>
/// <returns>返回删除成功或失败的标记</returns>
public static bool DelAttribute(ObjectId oid, string strAppName)
{
bool blnSuccess = false;
try
{
using (Transaction trans = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.TransactionManager.StartTransaction())
{
TypedValue tv = new TypedValue((int)DxfCode.ExtendedDataRegAppName, strAppName);
ResultBuffer rb = new ResultBuffer(tv);
Entity entTemp = (Entity)trans.GetObject(oid, OpenMode.ForWrite);
entTemp.XData = rb;
entTemp.Dispose();
trans.Commit();
blnSuccess = true;
}
}
catch (System.Exception ex)
{
return false;
}
return blnSuccess;
}
#region 删除属性
/// <summary>
/// 删除属性
/// </summary>
/// <param name="oid">实体主键</param>
/// <param name="arrayDelAppName">属性名称</param>
/// <returns>返回删除成功或失败的标记</returns>
private static bool DelAttribute(ObjectId oid, ArrayList arrayDelAppName)
{
bool blnSuccess = false;
try
{
using (Transaction trans = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.TransactionManager.StartTransaction())
{
int intNum = arrayDelAppName.Count;
//StringBuilder sb = new StringBuilder();
//sb.Append("测试");
TypedValue[] tvs = new TypedValue[arrayDelAppName.Count];
for (int i = 0; i < arrayDelAppName.Count; i++)
{
tvs[i] = new TypedValue((int)DxfCode.ExtendedDataRegAppName, arrayDelAppName[i]);
}
ResultBuffer rb = new ResultBuffer(tvs);
Entity entTemp = (Entity)trans.GetObject(oid, OpenMode.ForWrite);
entTemp.XData = rb;
entTemp.Dispose();
trans.Commit();
blnSuccess = true;
}
}
catch (System.Exception ex)
{
return false;
}
return blnSuccess;
}
#endregion
/// <summary>
/// 删除属性
/// </summary>
/// <param name="oid">实体主键集合</param>
/// <param name="arrayDelAppName">属性名称</param>
/// <returns>返回删除成功或失败的标记</returns>
public static bool DelAttribute(ObjectIdCollection oidCollection, ArrayList arrayDelAppName)
{
bool blnSuccess = false;
try
{
using (Transaction trans = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.TransactionManager.StartTransaction())
{
foreach (ObjectId oid in oidCollection)
{
int intNum = arrayDelAppName.Count;
TypedValue[] tvs = new TypedValue[arrayDelAppName.Count];
for (int i = 0; i < arrayDelAppName.Count; i++)
{
tvs[i] = new TypedValue((int)DxfCode.ExtendedDataRegAppName, arrayDelAppName[i]);
}
ResultBuffer rb = new ResultBuffer(tvs);
Entity entTemp = (Entity)trans.GetObject(oid, OpenMode.ForWrite);
entTemp.XData = rb;
entTemp.Dispose();
trans.Commit();
blnSuccess = true;
}
}
}
catch (System.Exception ex)
{
return false;
}
return blnSuccess;
}
- AutoCAD二次开发之属性操作(3) 删除属性
- AutoCAD二次开发之属性操作(1) 写属性
- AutoCAD二次开发之属性操作(2) 读属性
- AutoCAD二次开发之视图操作(3)指定视图大小和中心点来设置视图
- JqueryDOM操作-删除属性
- ecshop二次开发之商品属性选择性遍历
- AutoCAD的.NET二次开发3
- AutoCAD属性工具栏的使用
- AutoCAD二次开发
- AutoCAD二次开发
- AutoCAD 二次开发
- jQuery之属性操作
- AutoCAD二次开发之视图操作(2)通过指定点设置视图。
- AUTOCAD二次开发-----删除一个图层里面的所有对象
- AUTOCAD二次开发-----删除一个图层里面的所有对象
- js对象操作,删除某个属性
- Java本地文件操作-新建、删除、重命名、属性
- QGis二次开发基础 -- 属性表格
- ajax实现异步交互
- Ubuntu 64 位 搭建Eclipse+JDK+Android SDK+ADT环境
- Servlet生命周期与工作原理
- 【用户需求说明书】和【需求规格说明书】的区别
- D3D动态纹理播放视频
- AutoCAD二次开发之属性操作(3) 删除属性
- Ubuntu12.10下安装Eclipse
- ld: symbol(s) not found for architecture armv7s
- 冒泡排序
- oracle11g rac asm 实例内存修改
- 模板的初步学习
- 如何 把 maven工程 转换成 web3.0工程,用于 eclipse tomcat的调试
- 【修复】【兼容iOS7】cocos2d-x 2.04 图片加载 Error>: CGBitmapContextCreate
- 短信猫报错及解决办法