23void writeNumberTriangles(Kernel::BinaryStreamWriter streamWriter, uint32_t numberTrianglesLong) {
26 streamWriter << numberTrianglesLong;
35void writeNormal(Kernel::BinaryStreamWriter StreamWriter) {
37 StreamWriter << normal;
38 StreamWriter << normal;
39 StreamWriter << normal;
52 const std::string headerStart =
"Binary STL File created using Mantid Environment:";
53 const auto timeString = Types::Core::DateAndTime::getCurrentTime().toFormattedString(
"%Y-%b-%dT%H:%M:%S") +
":";
54 std::string unitString;
69 const size_t emptySize = 80 - size_t(headerStart.size() + timeString.size() + 4 + unitString.size());
70 streamWriter << headerStart + timeString + unitString + std::string(emptySize,
' ');
80 throw std::runtime_error(
"Invalid mesh, could not save.");
82 std::ofstream myFile(
m_filename.c_str(), std::ios::out | std::ios::binary);
83 const auto numberOfTriangles = uint32_t(
m_triangle.size() / 3);
86 writeNumberTriangles(streamWriter, numberOfTriangles);
87 const uint16_t attributeByte = 0;
88 for (uint32_t i = 0; i < numberOfTriangles; ++i) {
89 writeNormal(streamWriter);
92 streamWriter << attributeByte;
105 for (
int i = 0; i < 3; ++i) {
112 streamWriter << xVal;
113 streamWriter << yVal;
114 streamWriter << zVal;
std::map< DeltaEMode::Type, std::string > index
float removeScale(double value)
std::vector< uint32_t > m_triangle
std::vector< Kernel::V3D > m_vertices
void writeStl()
Function to write out the full mesh to an stl binary file.
void writeHeader(Kernel::BinaryStreamWriter streamWriter)
Function to write the header of the STL file, the header has no requirements other than it being 80 b...
void writeTriangle(Kernel::BinaryStreamWriter streamWriter, uint32_t triangle)
Function to write out an individual triangle with the scale removed.
const std::string m_filename
Assists with writing a binary file by providing standard overloads for the ostream operators (<<) to ...
constexpr double X() const noexcept
Get x.
constexpr double Y() const noexcept
Get y.
constexpr double Z() const noexcept
Get z.