![]() |
【转帖】duplicate record name errors while importing a dwf
"duplicate record name" errors while importing a dwf
"duplicate record name" errors while importing a dwf hi, i'm trying to import several dwf files into one dwg, and for certain files (not always), i get a "duplicate record name" exception while calling the dwfimporter->import() method (after at least one dwf file was imported into the db). is this normal behavior? since all of these dwf files came from the same dwg, and actually hold parts of it (e.g. each dwf contains 1000 entities of the original dwg). if so, how can i ignore those exceptions without interrupting the import method? thanks, yaron can you attach examples? vladimir i don't have the specific dwg that caused the problem (since it's still at the client's). but i have attached other files - 5 dwf parts of a large dwg file, and an output dwg files (composed of those 5 files). maybe i'm creating non-standard dwf files? attached files (269.4 kb, 1 views) i've got no exceptions during the import. perhaps you mean handled exceptions? (it is normal behaviour.) vladimir the exception is caught using the catch block, but i wish for it to be ignored without disrupting the import process in the midst of it. quote: originally posted by yaron.budowski@c4-security.com the exception is caught using the catch block, but i wish for it to be ignored without disrupting the import process in the midst of it. i don't understand. (where it is caught, why it disrupts import?) vladimir if you look at the oddwfimport example - it's caught outside the call to the import() method (using the try..catch statement surrounding it). this means when the exception is raised, the import method is stopped in the middle. how can i return to with without starting all over again? for example: code: try { // init the dwf importer object. // ... importer->import(); } catch (...) { // this is where the exception is raised. i tried to reproduce the problem and was unable to. which dd version do you use? vladimir i'm using the latest version. i've attached three new dwfs - the last one (3.dwf) causes the problem. the import process stops around 12%. how can i tell the import method to skip any duplicate records and continue importing (from it last stopped)? attached files (37.2 kb, 1 views) i've found a solution which requires modification of dwfimport code: i've changed the code of dwfimporter::loadstream: in the main loop, which processes the objects, i surrounded wtfile.process_next_object() with a try..catch block. this way, in case of a duplicate record exception, minimum damage is made to the import process. this is a bug in dwf import. suggested fix is to replace text style related code in dwffontmanager::setfontstyle (\imports\dwfimport\source\w2dimport.cpp,500-504) with the following: code: oddbtextstyletableptr pstyles = _importer->database()->gettextstyletableid().safeopenobject(oddb::kforwrite); pstyle->setname(dwfimp::generatename( l"style", pstyles,_fontstyles.size())); // shape fonts are exported as polylines (dwf doesn't support shape fonts) pstyle->setisshapefile(false); pstyles->add(pstyle);the fix will be included in the next release. vladimir |
所有的时间均为北京时间。 现在的时间是 06:56 AM. |