// Returns: True if .3dm file was successfully read into a File3dmModel class. static bool ReadFileHelper(string filename, bool verboseTextDump, bool chunkDump, Rhino.FileIO.TextLog dump) { if (chunkDump) return Dump3dmFileHelper(filename, dump); dump.Print("\nOpenNURBS Archive File: {0}\n", filename); // open file containing opennurbs archive Rhino.FileIO.File3dm model = Rhino.FileIO.File3dm.Read(filename); if (model == null) { dump.Print(" Unable to open file.\n"); return false; } dump.PopIndent(); dump.PopIndent(); dump.PopIndent(); dump.PopIndent(); dump.PopIndent(); dump.PopIndent(); dump.PopIndent(); dump.PushIndent(); // print diagnostic dump.Print("Successfully read.\n"); // see if everything is in good shape if( model.IsValid(dump) ) dump.Print("Model is valid.\n"); else dump.Print("Model is not valid.\n"); // create a text dump of the model if (verboseTextDump) { dump.PushIndent(); model.DumpToTextLog(dump); dump.PopIndent(); } // destroy this model model.Dispose(); dump.PopIndent(); return true; }
/// <summary> /// </summary> /// <param name="filename">full name of file</param> /// <param name="dump"></param> /// <returns></returns> static bool Dump3dmFileHelper(string filename, Rhino.FileIO.TextLog dump) { dump.Print("====== FILENAME: {0}\n", filename); using (Rhino.FileIO.BinaryArchiveFile file = new Rhino.FileIO.BinaryArchiveFile(filename, Rhino.FileIO.BinaryArchiveMode.Read3dm)) { if (!file.Open()) { dump.Print("**ERROR** Unable to open file.\n"); return false; } int version; string comment_block; if (!file.Reader.Read3dmStartSection(out version, out comment_block)) { dump.Print("**ERROR** Read3dmStartSection() failed\n"); return false; } dump.Print("====== VERSION: {0}\n",version ); dump.Print("====== COMMENT BLOCK:\n"); dump.Print(comment_block); dump.Print("====== CHUNKS:\n"); while ( !file.Reader.AtEnd() ) { uint typecode = file.Reader.Dump3dmChunk(dump); if( typecode==0 ) break; if ( typecode == Rhino.FileIO.File3dmTypeCodes.TCODE_ENDOFFILE ) break; } dump.Print("====== FINISHED: {0}\n",filename); file.Close(); return true; } }