删除选中图层中的所有实体
2015-09-06 16:01
519 查看
//函数中的参数strLayerName :图层名;objIds :为该图层中所有实体的Id集合
AcDbObjectIdArray EntIntLayer(CString strLayerName, AcDbObjectIdArray objIds)
{
//获得此图层空间内的所有实体
TCHAR *pValue = new TCHAR(strLayerName.GetLength() + 1);
_tcscpy(pValue, strLayerName);
//建立一个选择集来选取多段线实体
resbuf *resTmp = acutBuildList(8, pValue, RTDXF0, _T("LWPOLYLINE"), 0);
//resTmp->resval.rstring = pValue;//分配一个和pValue相当的内存给结果缓冲区
ads_name ent;
int nRs = acedSSGet(_T("_X"), NULL, NULL ,resTmp,ent);
if (RTNORM != nRs)
{
return false;
}
long ssLength;
if (acedSSLength(ent, &ssLength) != RTNORM)
{
acedSSFree(ent);
}
int ret;
AcDbObjectId objId;
for (int i=0; i<ssLength; ++i)
{
ads_name name;
ret = acedSSName(ent, i, name);
if (RTNORM != ret)
{
return false;
}
Acad::ErrorStatus es = acdbGetObjectId(objId, name);
if (Acad::eOk != es)
{
acedSSFree(name);
return false;
}
AcDbEntity *pEnt;
Acad::ErrorStatus ed = acdbOpenAcDbEntity(pEnt, objId, ZcDb::kForWrite);
pEnt->erase();
pEnt->close();
objIds.append(objId);
}
acutRelRb(resTmp);
acedSSFree(ent);
return objIds;
}
AcDbObjectIdArray EntIntLayer(CString strLayerName, AcDbObjectIdArray objIds)
{
//获得此图层空间内的所有实体
TCHAR *pValue = new TCHAR(strLayerName.GetLength() + 1);
_tcscpy(pValue, strLayerName);
//建立一个选择集来选取多段线实体
resbuf *resTmp = acutBuildList(8, pValue, RTDXF0, _T("LWPOLYLINE"), 0);
//resTmp->resval.rstring = pValue;//分配一个和pValue相当的内存给结果缓冲区
ads_name ent;
int nRs = acedSSGet(_T("_X"), NULL, NULL ,resTmp,ent);
if (RTNORM != nRs)
{
return false;
}
long ssLength;
if (acedSSLength(ent, &ssLength) != RTNORM)
{
acedSSFree(ent);
}
int ret;
AcDbObjectId objId;
for (int i=0; i<ssLength; ++i)
{
ads_name name;
ret = acedSSName(ent, i, name);
if (RTNORM != ret)
{
return false;
}
Acad::ErrorStatus es = acdbGetObjectId(objId, name);
if (Acad::eOk != es)
{
acedSSFree(name);
return false;
}
AcDbEntity *pEnt;
Acad::ErrorStatus ed = acdbOpenAcDbEntity(pEnt, objId, ZcDb::kForWrite);
pEnt->erase();
pEnt->close();
objIds.append(objId);
}
acutRelRb(resTmp);
acedSSFree(ent);
return objIds;
}
相关文章推荐
- 数组初始化(c, c++, gcc, g++)
- 花纹的选区
- 三分钟理解“状态模式”——设计模式轻松掌握
- C语言几个预编译指令的用法
- hdoj 4307 Matrix 【最大流 求解矩阵乘最值】【经典构图!】
- 三分钟理解“状态模式”——设计模式轻松掌握
- 工作周报053
- 原生js实现 返回顶部
- IP地址查询接口
- 婚纱抠图
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- 250法则
- sql查询上一条数据和下一条数据
- jquery浮动定位层导航描点上下滚动的浮动导航
- 《深入理解计算机系统》读书笔记4---异常控制流
- CSU 1660 K-Cycle
- Nasm Assambly Intro - Compile error
- android调用matlab中的函数方法
- 【树形背包】【JSOI 2008】【bzoj 1017】魔兽地图DotR
- Regionals 2014 >> South Pacific