void IfcPPReaderSTEP::loadModelFromString( std::string& content, shared_ptr<IfcPPModel>& target_model ) { progressTextCallback( L"Reading file..." ); progressValueCallback( 0, "parse" ); try { removeComments( content ); readStreamHeader( content, target_model ); readStreamData( content, target_model ); target_model->resolveInverseAttributes(); target_model->updateCache(); } catch( IfcPPOutOfMemoryException& e) { throw e; } catch( IfcPPException& e ) { messageCallback( e.what(), StatusCallback::MESSAGE_TYPE_ERROR, "" ); } catch( std::exception& e ) { messageCallback( e.what(), StatusCallback::MESSAGE_TYPE_ERROR, "" ); } catch( ... ) { messageCallback( "An error occured", StatusCallback::MESSAGE_TYPE_ERROR, __FUNC__ ); } }
void ReaderSTEP::loadModelFromString( std::string& content, shared_ptr<BuildingModel>& targetModel) { progressTextCallback( L"Reading file..." ); progressValueCallback( 0, "parse" ); try { removeComments( content ); readHeader( content, targetModel); readData( content, targetModel); targetModel->resolveInverseAttributes(); targetModel->updateCache(); // currently generated IFC classes are IFC4, files with older versions are converted. So after loading, the schema is always IFC4 targetModel->getIfcSchemaVersion().m_IFC_FILE_SCHEMA = L"IFC4"; targetModel->getIfcSchemaVersion().m_ifc_file_schema_enum = BuildingModel::IFC4; } catch( OutOfMemoryException& e) { throw e; } catch( BuildingException& e ) { messageCallback( e.what(), StatusCallback::MESSAGE_TYPE_ERROR, "" ); } catch( std::exception& e ) { messageCallback( e.what(), StatusCallback::MESSAGE_TYPE_ERROR, "" ); } catch( ... ) { messageCallback( "An error occurred", StatusCallback::MESSAGE_TYPE_ERROR, __FUNC__ ); } }