- TCollection_AsciiString anError;
- TDF_Label anUnknownLabel = TDF_Label();
-
- TopoDS_Shape aShape;
- if (aFormatName == "BREP") {
- aShape = BREPImport::Import(aFileName, aFormatName, anError, anUnknownLabel);
- } else if (aFormatName == "STEP" || aFormatName == "STP") {
- aShape = STEPImport::Import(aFileName, aFormatName, anError, anUnknownLabel);
- } else if (aFormatName == "IGES") {
- aShape = IGESImport::Import(aFileName, aFormatName, anError, anUnknownLabel);
+ std::string anError;
+
+ std::shared_ptr<GeomAPI_Shape> aGeomShape;
+ std::shared_ptr<XAO::Xao> aXao;
+ if (anExtension == "BREP" || anExtension == "BRP") {
+ aGeomShape = BREPImport(theFileName, anExtension, anError);
+ } else if (anExtension == "STEP" || anExtension == "STP") {
+ aGeomShape = STEPImport(theFileName, anExtension, anError);
+ } else if (anExtension == "IGES" || anExtension == "IGS") {
+ aGeomShape = IGESImport(theFileName, anExtension, anError);
+ } else if (anExtension == "XAO") {
+ std::shared_ptr<XAO::Xao> aTmpXao(new XAO::Xao);
+ aGeomShape = XAOImport(theFileName, anExtension, anError, aTmpXao.get());
+ if (!aGeomShape->isNull())
+ aXao = aTmpXao;
+ }
+
+ // Check if shape is valid
+ if (aGeomShape->isNull()) {
+ const static std::string aShapeError =
+ "An error occurred while importing " + theFileName + ": " + anError;
+ setError(aShapeError);
+ return false;