高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】never returning function ending in external exception
never returning function ending in external exception
never returning function ending in external exception
hi guys,
i have a very hard circumstance. we have a series of very confidential drawings, so i cannot send these for you to reproduce. however i am hoping that from the following information that you maybe able to solve the problem.
using is 1.14.2 of the opendwg libraries and after calling m_blocktableptr->getgeomextents(m_odblcktbleexts); the function never returns with the following callstack if i press break into the debugger.
odarray<odgepoint3d,odmemoryallocator<odgepoint3d> >::referenced() line 1375 + 23 bytes
odarray<odgepoint3d,odmemoryallocator<odgepoint3d> >::copy_if_referenced() line 621 + 37 bytes
dimensionx! odgenurbcurveimpl<class odgepoint3d,class odgevector3d,class odgeline3d,class odarray<class odgepoint3d,class odmemoryallocator<class odgepoint3d> > >::evalsinglepoint(double,int) + 1944 bytes
dimensionx! odgenurbcurveimpl<class odgepoint3d,class odgevector3d,class odgeline3d,class odarray<class odgepoint3d,class odmemoryallocator<class odgepoint3d> > >:aramof(class odgepoint3d const &,class odgetol const &) + 5564 bytes
dimensionx! odgenurbcurve3d:aramof(class odgepoint3d const &,class odgetol const &) + 18 bytes
dimensionx! acis::intcurvedef::getparameterbypoint(class odgepoint3d const &) + 76 bytes
dimensionx! acis::edge::_calculateparameters(void) + 240 bytes
dimensionx! acis::edge::getgestartparam(void) + 15 bytes
dimensionx! acis::edge::getcurve(void) + 210 bytes
dimensionx! odbrimploopedgetraverser::getorientedcurve(void) + 71 bytes
dimensionx! wrdrawbrep:raworderededges(class odbrbrep const &,class odgiworlddraw *) + 382 bytes
dimensionx! odacisrendererimpl::draw(class odgiworlddraw *,unsigned long) + 283 bytes
dimensionx! odmodelergeometryimpl::worlddraw(class odgiworlddraw *,unsigned long) + 112 bytes
dimensionx! odmodelergeometryondemand::worlddraw(class odgiworlddraw *,unsigned long) + 33 bytes
dimensionx! oddbmodelergeometryimpl::draworderededges(class odgiworlddraw *) + 53 bytes
dimensionx! oddbregion::worlddraw(class odgiworlddraw *) + 50 bytes
dimensionx! odgifastextcalc::draw(class odgidrawable const *) + 51 bytes
dimensionx! getobjectextents(class oddbobject const *,class odgeextents3d &) + 151 bytes
dimensionx! oddbentity::getgeomextents(class odgeextents3d &) + 11 bytes
dimensionx! oddbblocktablerecord::getgeomextents(class odgeextents3d &) + 333 bytes
if i let the program continue running, and break again, it is always around this same area of code in opendwg. if this program continues long enough it will end in an external exception thrown.
the second bit of information i have that maybe able to help is that these drawings work perfectly fine with version 1.14.1. what i mean by this is if the same line of code is called using the 1.14.1 libaries, it works perfectly fine.
cheers
jason
hi,
i need file. i think, that problem is in acis rendering. you can attach file with bad entity only. for example, remove all non solid entities from file. try to locate bad solid. copy it to new drawing. also you can explode solid to parts and attach(or email directly to me) invalid part.
thanx for your reply, but i have a problem with this method.
the moment i open it in autocad, and save it again, fixes the problem??
even if i do not change the drawing at all, all i have to do is load it into autocad, save it again, and opendwg 1.14.2 loads it fine?
any other suggestions on how i can get this problem entity to "remain" a problem?
cheers
jason
ps. sorry for sounding unco-operative, but i just cannot send the drawing, else i would for ease of reproducing the problem.
try to save it to dxf, not to dwg. it will disable autocad geometry cache for 3dsolids. is 1.14.2 throw exception with dxf ?
could you attach log of call stack in case of exception ?
|