高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】bad dxf file or a bug in 1.14.02
bad dxf file or a bug in 1.14.02?
bad dxf file or a bug in 1.14.02?
when running the 1.14.02 odamfcapp or odreadex examples with the attached dxf file (which contains lots of 3d solids), i'm getting an exception thrown from source\acisbuilder\abfile.cpp (line #341). some other files with 3dsolids do work error-free, so maybe it's just the file itself.
the problem seems to be related to my use of modelergeometry class.
the file does successfully open without any obvious problems in acad 2006.
here's the stack trace...
msvcr71d.dll!_nmsg_write(int rterrnum=10) line 195 c
msvcr71d.dll!abort() line 44 + 0x7 c
> msvcr71d.dll!_assert(const char * expr=0x00bef550, const char * filename=0x00bef530, unsigned int lineno=341) line 306 c
odreadex.exe!defaultassert(const char * expr=0x00bef550, const char * filename=0x00bef530, int nline=341) line 60 + 0x14 c++
odreadex.exe!odassert(const char * expresssion=0x00bef550, const char * filename=0x00bef530, int nlineno=341) line 83 + 0x14 c++
odreadex.exe!acis::file::importab(acis::auxstreami n * pstm=0x0119e128, bool bcheckformultiplebodies=true) line 341 + 0x26 c++
odreadex.exe!acis::file::import(acis::auxstreambuf odin * pstream=0x0012f63c, bool bstandardsaveflag=true, bool bcheckformultiplebodies=true) line 300 + 0x15 c++
odreadex.exe!acis::file::in(odstreambuf * pbuf=0x0012f780, int * typever=0x00000000, bool bstandardsaveflag=true, bool bcheckformultiplebodies=true) line 561 + 0x14 c++
odreadex.exe!odmodelergeometrycreatorimpl::createm odeler(odarray<odsmartptr<odmodelergeometry>,odobj ectsallocator<odsmartptr<odmodelergeometry> > > & out={...}, odstreambuf * pstreamin=0x0012f780, bool bstandardsaveflag=true) line 868 + 0x1b c++
odreadex.exe!odmodelergeometryondemand::switchtomo deler() line 174 + 0x27 c++
odreadex.exe!odmodelergeometryondemand::worlddraw( odgiworlddraw * pwd=0x0012f8d0, unsigned long geomtype=1) line 96 c++
odreadex.exe!oddbmodelergeometryimpl::worlddraw(od giworlddraw * pwd=0x0012f94c) line 1584 + 0x49 c++
odreadex.exe!oddb3dsolid::worlddraw(odgiworlddraw * pwd=0x0012f94c) line 84 c++
odreadex.exe!odgifastextcalc::draw(const odgidrawable * pdrawable=0x0114d2e0) line 38 + 0x14 c++
odreadex.exe!getobjectextents<odgifastextcalc>(con st oddbobject * pthis=0x0114d2e0, odgeextents3d & extents={...}) line 510 c++
odreadex.exe!oddbentity::getgeomextents(odgeextent s3d & extents={...}) line 1542 + 0xd c++
odreadex.exe!oddbblocktablerecord::getgeomextents( odgeextents3d & extents={...}) line 1773 + 0x7f c++
odreadex.exe!dbdumper::dumpblocks(std::basic_ostre am<char,std::char_traits<char> > & os={...}, oddbdatabase * pdb=0x0112ba48, int indent=1) line 2141 + 0x25 c++
odreadex.exe!dbdumper::dump(std::basic_ostream<cha r,std::char_traits<char> > & os={...}, oddbdatabase * pdb=0x0112ba48, int indent=0) line 2411 c++
odreadex.exe!main(int argc=2, char * * argv=0x01106500) line 189 c++
odreadex.exe!maincrtstartup() line 398 + 0x11 c
----edited---------
here's more....
in odamfcapp, when i choose any of the 3dsolid objects and then "save sat info to..", the acis data that then appears in the dialog is only the header! i double-checked and this worked ok in 1.14.01 - i could see the entire sat file there!
attached files
the problem is not in your code.
1. the file is not absolutely correct. autocad while opening it gives message "cannot restore object from shapemanager representation"
2. the second problem is in dwgdirect - it fails to render the rest of drawing having come across invalid object.
btw, the problem goes away after recovering or auditing the file in autocad.
sergey slezkin
sergey,
but it seems strange to me that it worked fine in 1.14.01. obviously there is some change (in the modelergeometry:: class??) in 1.14.02. how can i feel confident about other files containing solids?
sometimes regressions happen. i hope this one effects only incorrect files.
sergey slezkin
|