[求助] 块分解的问题
pBlf=AcDbBlockReference::cast(pEnt);AcDbVoidPtrArray bentyset;
pBlf->explode(bentyset);
AcDbEntity *pblent=NULL;
for (int blent=0;blent
{
pblent=(AcDbEntity*)bentyset.at(blent);
if (pblent->isA()==AcDb2dPolyline::desc())
{
p2dpoly=AcDb2dPolyline::cast(pblent);
AcDbObjectIterator *pVertIter =p2dpoly->vertexIterator();
AcDb2dVertex *pVertex;
AcGePoint3dlocation;
AcDbObjectIdvertexObjId;
for(int vertexNumber=0;!pVertIter->done();vertexNumber++,pVertIter->step())
{
AfxMessageBox("9");
vertexObjId=pVertIter->objectId();
// vertexObjId 不知为何是knull
if (vertexObjId!=AcDbObjectId::kNull)
{
AfxMessageBox("qq");
Acad::ErrorStatus es;
es=acdbOpenObject(pVertex,vertexObjId,AcDb::kForRead);
acutPrintf("%d",es);
}
location=pVertex->position() ;
pointlist.append(location);
pVertex->close();*/
}
}
p2dpoly->close();
}
}
得到的vertexObjId 总为knull,请问程序有什么问题,为什么打不开对象
看不懂
objectId是要加入database之后才有的,explode出来的对象只是内存中的线,还没加入到当前图形数据库,当然也就不会存在什么objectId了 对楼上的说法怀疑!
objectId是跟随对象实例的,也就是只要生成了对象实例,实例就会拥有objectId属性,与实体对象是否已经提交到database无关,楼主的错误可能是到database去访问还没有提交到database的objectId
请问楼主的问题解决了没有?能否告诉我啊?我也有类似的问题,我的毕业设计,这个问题解决不了很着急啊。
块爆炸后得到的实体怎样获取并显示阿?
我要做的是把插入的块explode ,然后得到其中爆炸后直线的端点。
各位大虾能否也帮帮忙
急啊。
再遍历一遍不就可以获得直线了啊?
都炸开了后面的就简单了
我这倒是有代码~不过和你的要求不太一样~需要改一下哦
占且没时间改哦~工作中~
先说说你想干什么吧。
vertexObjId=pVertIter->objectId();改成
pVertex = (AcDb2dVertex *)pVertIter->entity();得到对象。
页:
[1]