9#include <imt3d/IMesh3d.h>
10#include <imt3d/CPointsBasedObject.h>
25 bool SaveToStlFile(
const QString& filePath)
const;
26 bool LoadFromStlFile(
const QString& filePath,
bool ensureNormalExists);
29 virtual bool CreateMesh(PointFormat pointFormat)
override;
30 virtual bool CreateMesh(PointFormat pointFormat,
int pointsCount,
const void* pointsDataPtr,
const Indices& indices)
override;
31 virtual bool InsertData(
int pointsCount,
const void* pointsDataPtr,
const Indices& indices)
override;
32 virtual const Indices& GetIndices()
const override;
35 virtual bool Serialize(iser::IArchive& archive)
override;
38 virtual int GetSupportedOperations()
const override;
39 virtual bool CopyFrom(
const IChangeable&
object, CompatibilityMode mode = CM_WITHOUT_REFS)
override;
40 virtual bool IsEqual(
const IChangeable&
object)
const override;
41 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS)
const override;
42 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS)
override;
45 template <
typename Po
intType>
bool SaveToStlFile(
const QString& filePath)
const;
46 template <
typename DataType>
bool WriteTypedValue(
const DataType& data, QFile& file)
const;
47 template <
typename Po
intType>
bool WritePointData(
int pointIndex,
int pointComponentOffset, QFile& file)
const;
48 bool ReadPointData(QFile& file,
float* pointBufPtr)
const;
49 void EnsureNormalExists(
50 IPointsBasedObject::PointXyzwNormal32& point1,
51 IPointsBasedObject::PointXyzwNormal32& point2,
52 IPointsBasedObject::PointXyzwNormal32& point3)
const;
56 static const int s_stlHeaderSize = 80;