删除选中图层中的所有实体

//函数中的参数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;
}

转载于:https://www.cnblogs.com/pengjun-shanghai/p/4786303.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值