高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】oddbvoidptrarray undeclared identifier
oddbvoidptrarray undeclared identifier?
oddbvoidptrarray undeclared identifier?
i am trying to use some code i have seen in several places in the forum and the compiler (both for vc6 & vc2003) give me:
error c2065: 'oddbvoidptrarray' : undeclared identifier
when i use the statment:
oddbvoidptrarray entityset;
what i am doing wrong? i know this is something simple...
any help will be greatly appreciated
steve
update
here is some more information: i am adding code to exprotocolextension.cpp in the odreadex example. it compiles and works fine before i add the code. after i add the code i get the "undeclared identifier". i can't find another use of oddbvoidptrarray anywhere in the examples but i can't see anything wrong with this.
here it is with the offending statement highlighted:
class oddbblockreference_dumper : public oddbentity_dumper
{
public:
void dump(oddbentity* pent, std(ostream) & os) const
{
dumpcommondata(pent, os);
oddbblockreferenceptr pblkref = pent;
//
// added code start here
os << "!!!!!!!!!oddbblockreference_dumper x=" << pblkref->position().x << std(endl);
oddbvoidptrarray entityset;
int array_size;
// explode it
odresult odres;
odres = pblkref->explode( entityset );
if ( odres != eok ) {
os << "!!!!!!!!!explode return odres != eok" << std(endl);
} else {
array_size = entityset.size();
os << "!!!!!!!!!explode size= " << array_size << std(endl);
for (int i = 0; i < array_size; i ++ ) {
oddbentityptr ee = entityset[i];
odsmartptr<oddbentity_dumper> p_ent = entityset[i];
p_ent->dump(ee, os);
os << "!!!!!!!!!explode name= " << ee->blockid() << std(endl);
}
}
// added code end here
//
oddbobjectiteratorptr piter = pblkref->attributeiterator();
for (; !piter->done(); piter->step())
{
oddbattributeptr pattr = piter->entity();
if (!pattr.isnull())
{
os << " " << pattr->isa()->name() << std(endl);
}
}
oddbspatialfilterptr pfilt = oddbindexfiltermanager::getfilter(pblkref,
oddbspatialfilter::desc(), oddb::kforread);
if(pfilt.get())
{
os << " " << "associated spatial filter: " << std(endl);
odgepoint2darray pts;
odgevector3d normal;
double elevation, frontclip, backclip;
bool enabled;
pfilt->getdefinition(pts, normal, elevation, frontclip, backclip, enabled);
os << " " << "points: " << std(endl);
for(odgepoint2darray::iterator ppoint = pts.begin(); ppoint != pts.end(); ++ppoint)
{
os << " " << "(" << ppoint->x << ", "<< ppoint->y << ")" << std(endl);
}
os << " " << "normal: (" << normal.x << ", " << normal.y << ", " << normal.z << ")" << std(endl);
os << " " << "elevation: " << elevation << std(endl);
os << " " << "frontclip: " << frontclip << std(endl);
os << " " << "backclip: " << backclip << std(endl);
os << " " << "enabled: " << enabled << std(endl);
}
}
};
when dwgdirect went from version 1.10 to 1.11, oddbvoidptrarray was replaced by odrxobjectptrarray. this is what you should be using for your explode() calls. you probably saw examples that were posted before this change took place.
cheers,
bob
bob,
that would be a good reason.
thanks very much for the reply.
steve
|