Added FileVersion attribute to XML format to distinguish legacy float binary files from new double binary files
This commit is contained in:
@@ -744,7 +744,7 @@ void FemMesh::SaveDocFile (Base::Writer &writer) const
|
||||
fi.deleteFile();
|
||||
}
|
||||
|
||||
void FemMesh::RestoreDocFile(Base::Reader &reader)
|
||||
void FemMesh::RestoreDocFile(Base::Reader &reader, const int FileVersion)
|
||||
{
|
||||
// create a temporary file and copy the content from the zip stream
|
||||
Base::FileInfo fi(Base::FileInfo::getTempFileName().c_str());
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
#ifndef FEM_FEMMESH_H
|
||||
#define FEM_FEMMESH_H
|
||||
|
||||
|
||||
#include <App/ComplexGeoData.h>
|
||||
#include <Base/Placement.h>
|
||||
|
||||
@@ -65,7 +65,7 @@ public:
|
||||
virtual void Save (Base::Writer &/*writer*/) const;
|
||||
virtual void Restore(Base::XMLReader &/*reader*/);
|
||||
void SaveDocFile (Base::Writer &writer) const;
|
||||
void RestoreDocFile(Base::Reader &reader);
|
||||
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
|
||||
|
||||
/** @name Subelement management */
|
||||
//@{
|
||||
|
||||
@@ -162,9 +162,9 @@ void PropertyFemMesh::SaveDocFile (Base::Writer &writer) const
|
||||
_FemMesh->SaveDocFile(writer);
|
||||
}
|
||||
|
||||
void PropertyFemMesh::RestoreDocFile(Base::Reader &reader)
|
||||
void PropertyFemMesh::RestoreDocFile(Base::Reader &reader, const int FileVersion)
|
||||
{
|
||||
aboutToSetValue();
|
||||
_FemMesh->RestoreDocFile(reader);
|
||||
_FemMesh->RestoreDocFile(reader, FileVersion);
|
||||
hasSetValue();
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ public:
|
||||
void Save (Base::Writer &writer) const;
|
||||
void Restore(Base::XMLReader &reader);
|
||||
void SaveDocFile (Base::Writer &writer) const;
|
||||
void RestoreDocFile(Base::Reader &reader);
|
||||
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
|
||||
|
||||
App::Property *Copy(void) const;
|
||||
void Paste(const App::Property &from);
|
||||
|
||||
@@ -297,7 +297,7 @@ void MeshObject::Restore(Base::XMLReader &reader)
|
||||
// this is handled by the property class
|
||||
}
|
||||
|
||||
void MeshObject::RestoreDocFile(Base::Reader &reader)
|
||||
void MeshObject::RestoreDocFile(Base::Reader &reader, const int FileVersion)
|
||||
{
|
||||
load(reader);
|
||||
}
|
||||
@@ -1154,8 +1154,8 @@ void MeshObject::removeSelfIntersections(const std::vector<unsigned long>& indic
|
||||
for (it = indices.begin(); it != indices.end(); ) {
|
||||
unsigned long id1 = *it; ++it;
|
||||
unsigned long id2 = *it; ++it;
|
||||
selfIntersections.push_back(std::make_pair
|
||||
<unsigned long, unsigned long>(id1,id2));
|
||||
selfIntersections.push_back(std::make_pair
|
||||
<unsigned long, unsigned long>(id1,id2));
|
||||
}
|
||||
|
||||
if (!selfIntersections.empty()) {
|
||||
@@ -1171,12 +1171,12 @@ void MeshObject::removeFoldsOnSurface()
|
||||
MeshCore::MeshEvalFoldsOnSurface s_eval(_kernel);
|
||||
MeshCore::MeshEvalFoldOversOnSurface f_eval(_kernel);
|
||||
|
||||
f_eval.Evaluate();
|
||||
std::vector<unsigned long> inds = f_eval.GetIndices();
|
||||
|
||||
s_eval.Evaluate();
|
||||
f_eval.Evaluate();
|
||||
std::vector<unsigned long> inds = f_eval.GetIndices();
|
||||
|
||||
s_eval.Evaluate();
|
||||
std::vector<unsigned long> inds1 = s_eval.GetIndices();
|
||||
|
||||
|
||||
// remove duplicates
|
||||
inds.insert(inds.end(), inds1.begin(), inds1.end());
|
||||
std::sort(inds.begin(), inds.end());
|
||||
@@ -1188,8 +1188,8 @@ void MeshObject::removeFoldsOnSurface()
|
||||
// do this as additional check after removing folds on closed area
|
||||
for (int i=0; i<5; i++) {
|
||||
MeshCore::MeshEvalFoldsOnBoundary b_eval(_kernel);
|
||||
if (b_eval.Evaluate())
|
||||
break;
|
||||
if (b_eval.Evaluate())
|
||||
break;
|
||||
inds = b_eval.GetIndices();
|
||||
if (!inds.empty())
|
||||
deleteFacets(inds);
|
||||
|
||||
@@ -141,7 +141,7 @@ public:
|
||||
void Save (Base::Writer &writer) const;
|
||||
void SaveDocFile (Base::Writer &writer) const;
|
||||
void Restore(Base::XMLReader &reader);
|
||||
void RestoreDocFile(Base::Reader &reader);
|
||||
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
|
||||
void save(const char* file,MeshCore::MeshIO::Format f=MeshCore::MeshIO::Undefined,
|
||||
const MeshCore::Material* mat = 0) const;
|
||||
void save(std::ostream&) const;
|
||||
@@ -175,7 +175,7 @@ public:
|
||||
void addMesh(const MeshCore::MeshKernel&);
|
||||
void deleteFacets(const std::vector<unsigned long>& removeIndices);
|
||||
void deletePoints(const std::vector<unsigned long>& removeIndices);
|
||||
std::vector<std::vector<unsigned long> > getComponents() const;
|
||||
std::vector<std::vector<unsigned long> > getComponents() const;
|
||||
unsigned long countComponents() const;
|
||||
void removeComponents(unsigned long);
|
||||
/**
|
||||
@@ -364,4 +364,4 @@ private:
|
||||
} // namespace Mesh
|
||||
|
||||
|
||||
#endif // MESH_MESH_H
|
||||
#endif // MESH_MESH_H
|
||||
|
||||
@@ -45,7 +45,7 @@ using namespace Mesh;
|
||||
TYPESYSTEM_SOURCE(Mesh::PropertyNormalList, App::PropertyVectorList);
|
||||
TYPESYSTEM_SOURCE(Mesh::PropertyCurvatureList , App::PropertyLists);
|
||||
TYPESYSTEM_SOURCE(Mesh::PropertyMeshKernel , App::PropertyComplexGeoData);
|
||||
|
||||
|
||||
void PropertyNormalList::transform(const Base::Matrix4D &mat)
|
||||
{
|
||||
// A normal vector is only a direction with unit length, so we only need to rotate it
|
||||
@@ -221,7 +221,7 @@ void PropertyCurvatureList::SaveDocFile (Base::Writer &writer) const
|
||||
}
|
||||
}
|
||||
|
||||
void PropertyCurvatureList::RestoreDocFile(Base::Reader &reader)
|
||||
void PropertyCurvatureList::RestoreDocFile(Base::Reader &reader, const int FileVersion)
|
||||
{
|
||||
Base::InputStream str(reader);
|
||||
uint32_t uCt=0;
|
||||
@@ -422,7 +422,7 @@ void PropertyMeshKernel::setPyObject(PyObject *value)
|
||||
}
|
||||
}
|
||||
else if (PyList_Check(value)) {
|
||||
// new instance of MeshObject
|
||||
// new instance of MeshObject
|
||||
Py::List triangles(value);
|
||||
MeshObject* mesh = MeshObject::createMeshFromList(triangles);
|
||||
setValuePtr(mesh);
|
||||
@@ -478,7 +478,7 @@ void PropertyMeshKernel::SaveDocFile (Base::Writer &writer) const
|
||||
_meshObject->save(writer.Stream());
|
||||
}
|
||||
|
||||
void PropertyMeshKernel::RestoreDocFile(Base::Reader &reader)
|
||||
void PropertyMeshKernel::RestoreDocFile(Base::Reader &reader, const int FileVersion)
|
||||
{
|
||||
aboutToSetValue();
|
||||
_meshObject->load(reader);
|
||||
@@ -500,4 +500,4 @@ void PropertyMeshKernel::Paste(const App::Property &from)
|
||||
const PropertyMeshKernel& prop = dynamic_cast<const PropertyMeshKernel&>(from);
|
||||
*(this->_meshObject) = *(prop._meshObject);
|
||||
hasSetValue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ public:
|
||||
void Restore(Base::XMLReader &reader);
|
||||
|
||||
void SaveDocFile (Base::Writer &writer) const;
|
||||
void RestoreDocFile(Base::Reader &reader);
|
||||
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
|
||||
|
||||
/** @name Python interface */
|
||||
//@{
|
||||
@@ -205,7 +205,7 @@ public:
|
||||
void Restore(Base::XMLReader &reader);
|
||||
|
||||
void SaveDocFile (Base::Writer &writer) const;
|
||||
void RestoreDocFile(Base::Reader &reader);
|
||||
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
|
||||
|
||||
App::Property *Copy(void) const;
|
||||
void Paste(const App::Property &from);
|
||||
|
||||
@@ -261,8 +261,8 @@ void PropertyPartShape::SaveDocFile (Base::Writer &writer) const
|
||||
const TopoDS_Shape& myShape = copy.Shape();
|
||||
BRepTools::Clean(myShape); // remove triangulation
|
||||
|
||||
// create a temporary file and copy the content to the zip stream
|
||||
// once the tmp. filename is known use always the same because otherwise
|
||||
// create a temporary file and copy the content to the zip stream
|
||||
// once the tmp. filename is known use always the same because otherwise
|
||||
// we may run into some problems on the Linux platform
|
||||
static Base::FileInfo fi(Base::FileInfo::getTempFileName());
|
||||
|
||||
@@ -304,7 +304,7 @@ void PropertyPartShape::SaveDocFile (Base::Writer &writer) const
|
||||
fi.deleteFile();
|
||||
}
|
||||
|
||||
void PropertyPartShape::RestoreDocFile(Base::Reader &reader)
|
||||
void PropertyPartShape::RestoreDocFile(Base::Reader &reader, const int FileVersion)
|
||||
{
|
||||
BRep_Builder builder;
|
||||
|
||||
@@ -397,7 +397,7 @@ void PropertyShapeHistory::SaveDocFile (Base::Writer &writer) const
|
||||
{
|
||||
}
|
||||
|
||||
void PropertyShapeHistory::RestoreDocFile(Base::Reader &reader)
|
||||
void PropertyShapeHistory::RestoreDocFile(Base::Reader &reader, const int FileVersion)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -505,7 +505,7 @@ void PropertyFilletEdges::SaveDocFile (Base::Writer &writer) const
|
||||
}
|
||||
}
|
||||
|
||||
void PropertyFilletEdges::RestoreDocFile(Base::Reader &reader)
|
||||
void PropertyFilletEdges::RestoreDocFile(Base::Reader &reader, const int FileVersion)
|
||||
{
|
||||
Base::InputStream str(reader);
|
||||
uint32_t uCt=0;
|
||||
|
||||
@@ -87,7 +87,7 @@ public:
|
||||
void Restore(Base::XMLReader &reader);
|
||||
|
||||
void SaveDocFile (Base::Writer &writer) const;
|
||||
void RestoreDocFile(Base::Reader &reader);
|
||||
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
|
||||
|
||||
App::Property *Copy(void) const;
|
||||
void Paste(const App::Property &from);
|
||||
@@ -138,7 +138,7 @@ public:
|
||||
virtual void Restore(Base::XMLReader &reader);
|
||||
|
||||
virtual void SaveDocFile (Base::Writer &writer) const;
|
||||
virtual void RestoreDocFile(Base::Reader &reader);
|
||||
virtual void RestoreDocFile(Base::Reader &reader, const int FileVersion);
|
||||
|
||||
virtual Property *Copy(void) const;
|
||||
virtual void Paste(const Property &from);
|
||||
@@ -191,7 +191,7 @@ public:
|
||||
virtual void Restore(Base::XMLReader &reader);
|
||||
|
||||
virtual void SaveDocFile (Base::Writer &writer) const;
|
||||
virtual void RestoreDocFile(Base::Reader &reader);
|
||||
virtual void RestoreDocFile(Base::Reader &reader, const int FileVersion);
|
||||
|
||||
virtual Property *Copy(void) const;
|
||||
virtual void Paste(const Property &from);
|
||||
|
||||
@@ -939,7 +939,7 @@ void TopoShape::SaveDocFile (Base::Writer &writer) const
|
||||
{
|
||||
}
|
||||
|
||||
void TopoShape::RestoreDocFile(Base::Reader &reader)
|
||||
void TopoShape::RestoreDocFile(Base::Reader &reader, const int FileVersion)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@ public:
|
||||
void Restore(Base::XMLReader &reader);
|
||||
|
||||
void SaveDocFile (Base::Writer &writer) const;
|
||||
void RestoreDocFile(Base::Reader &reader);
|
||||
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
|
||||
unsigned int getMemSize (void) const;
|
||||
//@}
|
||||
|
||||
|
||||
@@ -134,19 +134,22 @@ void PointKernel::Restore(Base::XMLReader &reader)
|
||||
}
|
||||
}
|
||||
|
||||
void PointKernel::RestoreDocFile(Base::Reader &reader)
|
||||
void PointKernel::RestoreDocFile(Base::Reader &reader, const int FileVersion)
|
||||
{
|
||||
Base::InputStream str(reader);
|
||||
uint32_t uCt = 0;
|
||||
str >> uCt;
|
||||
_Points.resize(uCt);
|
||||
for (unsigned long i=0; i < uCt; i++) {
|
||||
// if doubleFileVersion
|
||||
// double x, y, z
|
||||
// else
|
||||
float x, y, z;
|
||||
str >> x >> y >> z;
|
||||
_Points[i].Set(x,y,z);
|
||||
if (FileVersion > 0) {
|
||||
double x, y, z;
|
||||
str >> x >> y >> z;
|
||||
_Points[i].Set(x,y,z);
|
||||
} else {
|
||||
float x, y, z;
|
||||
str >> x >> y >> z;
|
||||
_Points[i].Set(x,y,z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ public:
|
||||
void Save (Base::Writer &writer) const;
|
||||
void SaveDocFile (Base::Writer &writer) const;
|
||||
void Restore(Base::XMLReader &reader);
|
||||
void RestoreDocFile(Base::Reader &reader);
|
||||
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
|
||||
void save(const char* file) const;
|
||||
void save(std::ostream&) const;
|
||||
void load(const char* file);
|
||||
|
||||
@@ -64,10 +64,10 @@ void Feature::Restore(Base::XMLReader &reader)
|
||||
GeoFeature::Restore(reader);
|
||||
}
|
||||
|
||||
void Feature::RestoreDocFile(Base::Reader &reader)
|
||||
void Feature::RestoreDocFile(Base::Reader &reader, const int FileVersion)
|
||||
{
|
||||
// This gets only invoked if a points file has been added from Restore()
|
||||
Points.RestoreDocFile(reader);
|
||||
Points.RestoreDocFile(reader, FileVersion);
|
||||
}
|
||||
|
||||
void Feature::onChanged(const App::Property* prop)
|
||||
|
||||
@@ -60,7 +60,7 @@ public:
|
||||
/** @name methods overide Feature */
|
||||
//@{
|
||||
void Restore(Base::XMLReader &reader);
|
||||
void RestoreDocFile(Base::Reader &reader);
|
||||
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
|
||||
/// recalculate the Feature
|
||||
virtual App::DocumentObjectExecReturn *execute(void);
|
||||
/// returns the type name of the ViewProvider
|
||||
|
||||
@@ -291,7 +291,7 @@ void PropertyCurvatureList::SaveDocFile (Base::Writer &writer) const
|
||||
}
|
||||
}
|
||||
|
||||
void PropertyCurvatureList::RestoreDocFile(Base::Reader &reader)
|
||||
void PropertyCurvatureList::RestoreDocFile(Base::Reader &reader, const int FileVersion)
|
||||
{
|
||||
Base::InputStream str(reader);
|
||||
uint32_t uCt=0;
|
||||
|
||||
@@ -141,7 +141,7 @@ public:
|
||||
void Restore(Base::XMLReader &reader);
|
||||
|
||||
void SaveDocFile (Base::Writer &writer) const;
|
||||
void RestoreDocFile(Base::Reader &reader);
|
||||
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
|
||||
//@}
|
||||
|
||||
/** @name Undo/Redo */
|
||||
|
||||
@@ -134,10 +134,10 @@ void PropertyPointKernel::SaveDocFile (Base::Writer &writer) const
|
||||
// does nothing
|
||||
}
|
||||
|
||||
void PropertyPointKernel::RestoreDocFile(Base::Reader &reader)
|
||||
void PropertyPointKernel::RestoreDocFile(Base::Reader &reader, const int FileVersion)
|
||||
{
|
||||
aboutToSetValue();
|
||||
_cPoints->RestoreDocFile(reader);
|
||||
_cPoints->RestoreDocFile(reader, FileVersion);
|
||||
hasSetValue();
|
||||
}
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ public:
|
||||
void Save (Base::Writer &writer) const;
|
||||
void Restore(Base::XMLReader &reader);
|
||||
void SaveDocFile (Base::Writer &writer) const;
|
||||
void RestoreDocFile(Base::Reader &reader);
|
||||
void RestoreDocFile(Base::Reader &reader, const int FileVersion);
|
||||
//@}
|
||||
|
||||
/** @name Modification */
|
||||
|
||||
Reference in New Issue
Block a user