Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
3mf.cpp File Reference
#include "../libslic3r.h"
#include "../Exception.hpp"
#include "../Model.hpp"
#include "../Utils.hpp"
#include "../LocalesUtils.hpp"
#include "../GCode.hpp"
#include "../Geometry.hpp"
#include "../GCode/ThumbnailData.hpp"
#include "../Semver.hpp"
#include "../Time.hpp"
#include "../I18N.hpp"
#include "3mf.hpp"
#include <limits>
#include <stdexcept>
#include <optional>
#include <string_view>
#include <boost/assign.hpp>
#include <boost/bimap.hpp>
#include <boost/filesystem.hpp>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string/replace.hpp>
#include <boost/spirit/include/karma.hpp>
#include <boost/spirit/include/qi_int.hpp>
#include <boost/log/trivial.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <expat.h>
#include <Eigen/Dense>
#include "miniz_extension.hpp"
#include "TextConfiguration.hpp"
#include <fast_float/fast_float.h>
+ Include dependency graph for 3mf.cpp:

Go to the source code of this file.

Classes

class  version_error
 
class  Slic3r::_3MF_Base
 
class  Slic3r::_3MF_Importer
 
struct  Slic3r::_3MF_Importer::Component
 
struct  Slic3r::_3MF_Importer::Geometry
 
struct  Slic3r::_3MF_Importer::CurrentObject
 
struct  Slic3r::_3MF_Importer::CurrentConfig
 
struct  Slic3r::_3MF_Importer::Instance
 
struct  Slic3r::_3MF_Importer::Metadata
 
struct  Slic3r::_3MF_Importer::ObjectMetadata::VolumeMetadata
 
struct  Slic3r::_3MF_Importer::CutObjectInfo
 
struct  Slic3r::_3MF_Importer::CutObjectInfo::Connector
 
struct  Slic3r::TextConfigurationSerialization
 
class  Slic3r::_3MF_Exporter
 
struct  Slic3r::_3MF_Exporter::BuildItem
 
struct  Slic3r::_3MF_Exporter::Offsets
 
struct  Slic3r::_3MF_Exporter::ObjectData
 

Namespaces

namespace  Slic3r
 

Macros

#define EXPORT_3MF_USE_SPIRIT_KARMA_FP   0
 

Typedefs

using Slic3r::TypeToName = boost::bimap< EmbossStyle::Type, std::string_view >
 TextConfiguration serialization.
 

Functions

const char * get_attribute_value_charptr (const char **attributes, unsigned int attributes_size, const char *attribute_key)
 
std::string get_attribute_value_string (const char **attributes, unsigned int attributes_size, const char *attribute_key)
 
float get_attribute_value_float (const char **attributes, unsigned int attributes_size, const char *attribute_key)
 
int get_attribute_value_int (const char **attributes, unsigned int attributes_size, const char *attribute_key)
 
bool get_attribute_value_bool (const char **attributes, unsigned int attributes_size, const char *attribute_key)
 
Slic3r::Transform3d get_transform_from_3mf_specs_string (const std::string &mat_str)
 
float get_unit_factor (const std::string &unit)
 
bool is_valid_object_type (const std::string &type)
 
static void Slic3r::check_painting_version (unsigned int loaded_version, unsigned int highest_supported_version, const std::string &error_msg)
 
static void Slic3r::reset_stream (std::stringstream &stream)
 
static void Slic3r::handle_legacy_project_loaded (unsigned int version_project_file, DynamicPrintConfig &config, const boost::optional< Semver > &prusaslicer_generator_version)
 
bool Slic3r::is_project_3mf (const std::string &filename)
 
bool Slic3r::load_3mf (const char *path, DynamicPrintConfig &config, ConfigSubstitutionContext &config_substitutions, Model *model, bool check_version)
 
bool Slic3r::store_3mf (const char *path, Model *model, const DynamicPrintConfig *config, bool fullpath_sources, const ThumbnailData *thumbnail_data, bool zip64)
 

Variables

const unsigned int VERSION_3MF = 1
 
const unsigned int VERSION_3MF_COMPATIBLE = 2
 
const char * SLIC3RPE_3MF_VERSION = "slic3rpe:Version3mf"
 
const unsigned int FDM_SUPPORTS_PAINTING_VERSION = 1
 
const unsigned int SEAM_PAINTING_VERSION = 1
 
const unsigned int MM_PAINTING_VERSION = 1
 
const std::string SLIC3RPE_FDM_SUPPORTS_PAINTING_VERSION = "slic3rpe:FdmSupportsPaintingVersion"
 
const std::string SLIC3RPE_SEAM_PAINTING_VERSION = "slic3rpe:SeamPaintingVersion"
 
const std::string SLIC3RPE_MM_PAINTING_VERSION = "slic3rpe:MmPaintingVersion"
 
const std::string MODEL_FOLDER = "3D/"
 
const std::string MODEL_EXTENSION = ".model"
 
const std::string MODEL_FILE = "3D/3dmodel.model"
 
const std::string CONTENT_TYPES_FILE = "[Content_Types].xml"
 
const std::string RELATIONSHIPS_FILE = "_rels/.rels"
 
const std::string THUMBNAIL_FILE = "Metadata/thumbnail.png"
 
const std::string PRINT_CONFIG_FILE = "Metadata/Slic3r_PE.config"
 
const std::string MODEL_CONFIG_FILE = "Metadata/Slic3r_PE_model.config"
 
const std::string LAYER_HEIGHTS_PROFILE_FILE = "Metadata/Slic3r_PE_layer_heights_profile.txt"
 
const std::string LAYER_CONFIG_RANGES_FILE = "Metadata/Prusa_Slicer_layer_config_ranges.xml"
 
const std::string SLA_SUPPORT_POINTS_FILE = "Metadata/Slic3r_PE_sla_support_points.txt"
 
const std::string SLA_DRAIN_HOLES_FILE = "Metadata/Slic3r_PE_sla_drain_holes.txt"
 
const std::string CUSTOM_GCODE_PER_PRINT_Z_FILE = "Metadata/Prusa_Slicer_custom_gcode_per_print_z.xml"
 
const std::string CUT_INFORMATION_FILE = "Metadata/Prusa_Slicer_cut_information.xml"
 
static constexpr const char * MODEL_TAG = "model"
 
static constexpr const char * RESOURCES_TAG = "resources"
 
static constexpr const char * OBJECT_TAG = "object"
 
static constexpr const char * MESH_TAG = "mesh"
 
static constexpr const char * VERTICES_TAG = "vertices"
 
static constexpr const char * VERTEX_TAG = "vertex"
 
static constexpr const char * TRIANGLES_TAG = "triangles"
 
static constexpr const char * TRIANGLE_TAG = "triangle"
 
static constexpr const char * COMPONENTS_TAG = "components"
 
static constexpr const char * COMPONENT_TAG = "component"
 
static constexpr const char * BUILD_TAG = "build"
 
static constexpr const char * ITEM_TAG = "item"
 
static constexpr const char * METADATA_TAG = "metadata"
 
static constexpr const char * CONFIG_TAG = "config"
 
static constexpr const char * VOLUME_TAG = "volume"
 
static constexpr const char * UNIT_ATTR = "unit"
 
static constexpr const char * NAME_ATTR = "name"
 
static constexpr const char * TYPE_ATTR = "type"
 
static constexpr const char * ID_ATTR = "id"
 
static constexpr const char * X_ATTR = "x"
 
static constexpr const char * Y_ATTR = "y"
 
static constexpr const char * Z_ATTR = "z"
 
static constexpr const char * V1_ATTR = "v1"
 
static constexpr const char * V2_ATTR = "v2"
 
static constexpr const char * V3_ATTR = "v3"
 
static constexpr const char * OBJECTID_ATTR = "objectid"
 
static constexpr const char * TRANSFORM_ATTR = "transform"
 
static constexpr const char * PRINTABLE_ATTR = "printable"
 
static constexpr const char * INSTANCESCOUNT_ATTR = "instances_count"
 
static constexpr const char * CUSTOM_SUPPORTS_ATTR = "slic3rpe:custom_supports"
 
static constexpr const char * CUSTOM_SEAM_ATTR = "slic3rpe:custom_seam"
 
static constexpr const char * MMU_SEGMENTATION_ATTR = "slic3rpe:mmu_segmentation"
 
static constexpr const char * KEY_ATTR = "key"
 
static constexpr const char * VALUE_ATTR = "value"
 
static constexpr const char * FIRST_TRIANGLE_ID_ATTR = "firstid"
 
static constexpr const char * LAST_TRIANGLE_ID_ATTR = "lastid"
 
static constexpr const char * OBJECT_TYPE = "object"
 
static constexpr const char * VOLUME_TYPE = "volume"
 
static constexpr const char * NAME_KEY = "name"
 
static constexpr const char * MODIFIER_KEY = "modifier"
 
static constexpr const char * VOLUME_TYPE_KEY = "volume_type"
 
static constexpr const char * MATRIX_KEY = "matrix"
 
static constexpr const char * SOURCE_FILE_KEY = "source_file"
 
static constexpr const char * SOURCE_OBJECT_ID_KEY = "source_object_id"
 
static constexpr const char * SOURCE_VOLUME_ID_KEY = "source_volume_id"
 
static constexpr const char * SOURCE_OFFSET_X_KEY = "source_offset_x"
 
static constexpr const char * SOURCE_OFFSET_Y_KEY = "source_offset_y"
 
static constexpr const char * SOURCE_OFFSET_Z_KEY = "source_offset_z"
 
static constexpr const char * SOURCE_IN_INCHES_KEY = "source_in_inches"
 
static constexpr const char * SOURCE_IN_METERS_KEY = "source_in_meters"
 
static constexpr const char * SOURCE_IS_BUILTIN_VOLUME_KEY = "source_is_builtin_volume"
 
static constexpr const char * MESH_STAT_EDGES_FIXED = "edges_fixed"
 
static constexpr const char * MESH_STAT_DEGENERATED_FACETS = "degenerate_facets"
 
static constexpr const char * MESH_STAT_FACETS_REMOVED = "facets_removed"
 
static constexpr const char * MESH_STAT_FACETS_RESERVED = "facets_reversed"
 
static constexpr const char * MESH_STAT_BACKWARDS_EDGES = "backwards_edges"
 
static constexpr const char * TEXT_TAG = "slic3rpe:text"
 
static constexpr const char * TEXT_DATA_ATTR = "text"
 
static constexpr const char * STYLE_NAME_ATTR = "style_name"
 
static constexpr const char * FONT_DESCRIPTOR_ATTR = "font_descriptor"
 
static constexpr const char * FONT_DESCRIPTOR_TYPE_ATTR = "font_descriptor_type"
 
static constexpr const char * CHAR_GAP_ATTR = "char_gap"
 
static constexpr const char * LINE_GAP_ATTR = "line_gap"
 
static constexpr const char * LINE_HEIGHT_ATTR = "line_height"
 
static constexpr const char * DEPTH_ATTR = "depth"
 
static constexpr const char * USE_SURFACE_ATTR = "use_surface"
 
static constexpr const char * BOLDNESS_ATTR = "boldness"
 
static constexpr const char * SKEW_ATTR = "skew"
 
static constexpr const char * DISTANCE_ATTR = "distance"
 
static constexpr const char * ANGLE_ATTR = "angle"
 
static constexpr const char * COLLECTION_NUMBER_ATTR = "collection"
 
static constexpr const char * FONT_FAMILY_ATTR = "family"
 
static constexpr const char * FONT_FACE_NAME_ATTR = "face_name"
 
static constexpr const char * FONT_STYLE_ATTR = "style"
 
static constexpr const char * FONT_WEIGHT_ATTR = "weight"
 
const unsigned int VALID_OBJECT_TYPES_COUNT = 1
 
const char * VALID_OBJECT_TYPES []
 
const char * INVALID_OBJECT_TYPES []
 

Class Documentation

◆ Slic3r::_3MF_Importer::CurrentConfig

struct Slic3r::_3MF_Importer::CurrentConfig
Class Members
int object_id
int volume_id

◆ Slic3r::_3MF_Importer::ObjectMetadata

struct Slic3r::_3MF_Importer::ObjectMetadata
+ Collaboration diagram for Slic3r::_3MF_Importer::ObjectMetadata:
Class Members
typedef vector< VolumeMetadata > VolumeMetadataList
Class Members
MetadataList metadata
VolumeMetadataList volumes

◆ Slic3r::_3MF_Importer::CutObjectInfo

struct Slic3r::_3MF_Importer::CutObjectInfo
+ Collaboration diagram for Slic3r::_3MF_Importer::CutObjectInfo:
Class Members
vector< Connector > connectors
CutObjectBase id

◆ Slic3r::_3MF_Importer::CutObjectInfo::Connector

struct Slic3r::_3MF_Importer::CutObjectInfo::Connector
Class Members
float h_tolerance
float r_tolerance
int type
int volume_id

Macro Definition Documentation

◆ EXPORT_3MF_USE_SPIRIT_KARMA_FP

#define EXPORT_3MF_USE_SPIRIT_KARMA_FP   0

Function Documentation

◆ get_attribute_value_bool()

bool get_attribute_value_bool ( const char **  attributes,
unsigned int  attributes_size,
const char *  attribute_key 
)
230{
231 const char* text = get_attribute_value_charptr(attributes, attributes_size, attribute_key);
232 return (text != nullptr) ? (bool)::atoi(text) : true;
233}
const char * get_attribute_value_charptr(const char **attributes, unsigned int attributes_size, const char *attribute_key)
Definition 3mf.cpp:194

References get_attribute_value_charptr().

Referenced by Slic3r::_3MF_Importer::_handle_start_item().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_attribute_value_charptr()

const char * get_attribute_value_charptr ( const char **  attributes,
unsigned int  attributes_size,
const char *  attribute_key 
)
195{
196 if ((attributes == nullptr) || (attributes_size == 0) || (attributes_size % 2 != 0) || (attribute_key == nullptr))
197 return nullptr;
198
199 for (unsigned int a = 0; a < attributes_size; a += 2) {
200 if (::strcmp(attributes[a], attribute_key) == 0)
201 return attributes[a + 1];
202 }
203
204 return nullptr;
205}

Referenced by get_attribute_value_bool(), get_attribute_value_float(), get_attribute_value_int(), and get_attribute_value_string().

+ Here is the caller graph for this function:

◆ get_attribute_value_float()

float get_attribute_value_float ( const char **  attributes,
unsigned int  attributes_size,
const char *  attribute_key 
)
214{
215 float value = 0.0f;
216 if (const char *text = get_attribute_value_charptr(attributes, attributes_size, attribute_key); text != nullptr)
217 fast_float::from_chars(text, text + strlen(text), value);
218 return value;
219}
from_chars_result from_chars(const char *first, const char *last, T &value, chars_format fmt=chars_format::general) noexcept
Definition fast_float.h:2401

References fast_float::from_chars(), and get_attribute_value_charptr().

Referenced by Slic3r::_3MF_Importer::_handle_start_vertex(), and Slic3r::TextConfigurationSerialization::read().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_attribute_value_int()

int get_attribute_value_int ( const char **  attributes,
unsigned int  attributes_size,
const char *  attribute_key 
)
222{
223 int value = 0;
224 if (const char *text = get_attribute_value_charptr(attributes, attributes_size, attribute_key); text != nullptr)
225 boost::spirit::qi::parse(text, text + strlen(text), boost::spirit::qi::int_, value);
226 return value;
227}

References get_attribute_value_charptr().

Referenced by Slic3r::_3MF_Importer::_handle_start_component(), Slic3r::_3MF_Importer::_handle_start_config_object(), Slic3r::_3MF_Importer::_handle_start_config_volume(), Slic3r::_3MF_Importer::_handle_start_config_volume_mesh(), Slic3r::_3MF_Importer::_handle_start_item(), Slic3r::_3MF_Importer::_handle_start_object(), Slic3r::_3MF_Importer::_handle_start_triangle(), and Slic3r::TextConfigurationSerialization::read().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_attribute_value_string()

std::string get_attribute_value_string ( const char **  attributes,
unsigned int  attributes_size,
const char *  attribute_key 
)
208{
209 const char* text = get_attribute_value_charptr(attributes, attributes_size, attribute_key);
210 return (text != nullptr) ? text : "";
211}

References get_attribute_value_charptr().

Referenced by Slic3r::_3MF_Importer::_handle_start_component(), Slic3r::_3MF_Importer::_handle_start_config_metadata(), Slic3r::_3MF_Importer::_handle_start_item(), Slic3r::_3MF_Importer::_handle_start_metadata(), Slic3r::_3MF_Importer::_handle_start_model(), Slic3r::_3MF_Importer::_handle_start_object(), Slic3r::_3MF_Importer::_handle_start_triangle(), and Slic3r::TextConfigurationSerialization::read().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_transform_from_3mf_specs_string()

Slic3r::Transform3d get_transform_from_3mf_specs_string ( const std::string &  mat_str)
236{
237 // check: https://3mf.io/3d-manufacturing-format/ or https://github.com/3MFConsortium/spec_core/blob/master/3MF%20Core%20Specification.md
238 // to see how matrices are stored inside 3mf according to specifications
240
241 if (mat_str.empty())
242 // empty string means default identity matrix
243 return ret;
244
245 std::vector<std::string> mat_elements_str;
246 boost::split(mat_elements_str, mat_str, boost::is_any_of(" "), boost::token_compress_on);
247
248 unsigned int size = (unsigned int)mat_elements_str.size();
249 if (size != 12)
250 // invalid data, return identity matrix
251 return ret;
252
253 unsigned int i = 0;
254 // matrices are stored into 3mf files as 4x3
255 // we need to transpose them
256 for (unsigned int c = 0; c < 4; ++c) {
257 for (unsigned int r = 0; r < 3; ++r) {
258 ret(r, c) = ::atof(mat_elements_str[i++].c_str());
259 }
260 }
261 return ret;
262}
static EIGEN_DEVICE_FUNC const Transform Identity()
Returns an identity transformation.
Definition Transform.h:539
constexpr auto size(const C &c) -> decltype(c.size())
Definition span.hpp:183

References Eigen::Transform< double, 3, Eigen::Affine, Eigen::DontAlign >::Identity().

Referenced by Slic3r::_3MF_Importer::_handle_start_component(), Slic3r::_3MF_Importer::_handle_start_item(), and Slic3r::TextConfigurationSerialization::read().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_unit_factor()

float get_unit_factor ( const std::string &  unit)
265{
266 const char* text = unit.c_str();
267
268 if (::strcmp(text, "micron") == 0)
269 return 0.001f;
270 else if (::strcmp(text, "centimeter") == 0)
271 return 10.0f;
272 else if (::strcmp(text, "inch") == 0)
273 return 25.4f;
274 else if (::strcmp(text, "foot") == 0)
275 return 304.8f;
276 else if (::strcmp(text, "meter") == 0)
277 return 1000.0f;
278 else
279 // default "millimeters" (see specification)
280 return 1.0f;
281}

Referenced by Slic3r::_3MF_Importer::_handle_start_model().

+ Here is the caller graph for this function:

◆ is_valid_object_type()

bool is_valid_object_type ( const std::string &  type)
284{
285 // if the type is empty defaults to "model" (see specification)
286 if (type.empty())
287 return true;
288
289 for (unsigned int i = 0; i < VALID_OBJECT_TYPES_COUNT; ++i) {
290 if (::strcmp(type.c_str(), VALID_OBJECT_TYPES[i]) == 0)
291 return true;
292 }
293
294 return false;
295}
const unsigned int VALID_OBJECT_TYPES_COUNT
Definition 3mf.cpp:173
const char * VALID_OBJECT_TYPES[]
Definition 3mf.cpp:174

References VALID_OBJECT_TYPES, and VALID_OBJECT_TYPES_COUNT.

Referenced by Slic3r::_3MF_Importer::_handle_start_object().

+ Here is the caller graph for this function:

Variable Documentation

◆ ANGLE_ATTR

constexpr const char* ANGLE_ATTR = "angle"
staticconstexpr

◆ BOLDNESS_ATTR

constexpr const char* BOLDNESS_ATTR = "boldness"
staticconstexpr

◆ BUILD_TAG

◆ CHAR_GAP_ATTR

constexpr const char* CHAR_GAP_ATTR = "char_gap"
staticconstexpr

◆ COLLECTION_NUMBER_ATTR

constexpr const char* COLLECTION_NUMBER_ATTR = "collection"
staticconstexpr

◆ COMPONENT_TAG

◆ COMPONENTS_TAG

◆ CONFIG_TAG

◆ CONTENT_TYPES_FILE

const std::string CONTENT_TYPES_FILE = "[Content_Types].xml"

◆ CUSTOM_GCODE_PER_PRINT_Z_FILE

const std::string CUSTOM_GCODE_PER_PRINT_Z_FILE = "Metadata/Prusa_Slicer_custom_gcode_per_print_z.xml"

◆ CUSTOM_SEAM_ATTR

constexpr const char* CUSTOM_SEAM_ATTR = "slic3rpe:custom_seam"
staticconstexpr

◆ CUSTOM_SUPPORTS_ATTR

constexpr const char* CUSTOM_SUPPORTS_ATTR = "slic3rpe:custom_supports"
staticconstexpr

◆ CUT_INFORMATION_FILE

const std::string CUT_INFORMATION_FILE = "Metadata/Prusa_Slicer_cut_information.xml"

◆ DEPTH_ATTR

constexpr const char* DEPTH_ATTR = "depth"
staticconstexpr

◆ DISTANCE_ATTR

constexpr const char* DISTANCE_ATTR = "distance"
staticconstexpr

◆ FDM_SUPPORTS_PAINTING_VERSION

const unsigned int FDM_SUPPORTS_PAINTING_VERSION = 1

◆ FIRST_TRIANGLE_ID_ATTR

constexpr const char* FIRST_TRIANGLE_ID_ATTR = "firstid"
staticconstexpr

◆ FONT_DESCRIPTOR_ATTR

constexpr const char* FONT_DESCRIPTOR_ATTR = "font_descriptor"
staticconstexpr

◆ FONT_DESCRIPTOR_TYPE_ATTR

constexpr const char* FONT_DESCRIPTOR_TYPE_ATTR = "font_descriptor_type"
staticconstexpr

◆ FONT_FACE_NAME_ATTR

constexpr const char* FONT_FACE_NAME_ATTR = "face_name"
staticconstexpr

◆ FONT_FAMILY_ATTR

constexpr const char* FONT_FAMILY_ATTR = "family"
staticconstexpr

◆ FONT_STYLE_ATTR

constexpr const char* FONT_STYLE_ATTR = "style"
staticconstexpr

◆ FONT_WEIGHT_ATTR

constexpr const char* FONT_WEIGHT_ATTR = "weight"
staticconstexpr

◆ ID_ATTR

◆ INSTANCESCOUNT_ATTR

constexpr const char* INSTANCESCOUNT_ATTR = "instances_count"
staticconstexpr

◆ INVALID_OBJECT_TYPES

const char* INVALID_OBJECT_TYPES[]
Initial value:
=
{
"solidsupport",
"support",
"surface",
"other"
}

◆ ITEM_TAG

◆ KEY_ATTR

◆ LAST_TRIANGLE_ID_ATTR

constexpr const char* LAST_TRIANGLE_ID_ATTR = "lastid"
staticconstexpr

◆ LAYER_CONFIG_RANGES_FILE

const std::string LAYER_CONFIG_RANGES_FILE = "Metadata/Prusa_Slicer_layer_config_ranges.xml"

◆ LAYER_HEIGHTS_PROFILE_FILE

const std::string LAYER_HEIGHTS_PROFILE_FILE = "Metadata/Slic3r_PE_layer_heights_profile.txt"

◆ LINE_GAP_ATTR

constexpr const char* LINE_GAP_ATTR = "line_gap"
staticconstexpr

◆ LINE_HEIGHT_ATTR

constexpr const char* LINE_HEIGHT_ATTR = "line_height"
staticconstexpr

◆ MATRIX_KEY

constexpr const char* MATRIX_KEY = "matrix"
staticconstexpr

◆ MESH_STAT_BACKWARDS_EDGES

constexpr const char* MESH_STAT_BACKWARDS_EDGES = "backwards_edges"
staticconstexpr

◆ MESH_STAT_DEGENERATED_FACETS

constexpr const char* MESH_STAT_DEGENERATED_FACETS = "degenerate_facets"
staticconstexpr

◆ MESH_STAT_EDGES_FIXED

constexpr const char* MESH_STAT_EDGES_FIXED = "edges_fixed"
staticconstexpr

◆ MESH_STAT_FACETS_REMOVED

constexpr const char* MESH_STAT_FACETS_REMOVED = "facets_removed"
staticconstexpr

◆ MESH_STAT_FACETS_RESERVED

constexpr const char* MESH_STAT_FACETS_RESERVED = "facets_reversed"
staticconstexpr

◆ MESH_TAG

◆ METADATA_TAG

◆ MM_PAINTING_VERSION

◆ MMU_SEGMENTATION_ATTR

constexpr const char* MMU_SEGMENTATION_ATTR = "slic3rpe:mmu_segmentation"
staticconstexpr

◆ MODEL_CONFIG_FILE

const std::string MODEL_CONFIG_FILE = "Metadata/Slic3r_PE_model.config"

◆ MODEL_EXTENSION

const std::string MODEL_EXTENSION = ".model"

◆ MODEL_FILE

◆ MODEL_FOLDER

const std::string MODEL_FOLDER = "3D/"

◆ MODEL_TAG

◆ MODIFIER_KEY

constexpr const char* MODIFIER_KEY = "modifier"
staticconstexpr

◆ NAME_ATTR

constexpr const char* NAME_ATTR = "name"
staticconstexpr

◆ NAME_KEY

constexpr const char* NAME_KEY = "name"
staticconstexpr

◆ OBJECT_TAG

◆ OBJECT_TYPE

constexpr const char* OBJECT_TYPE = "object"
staticconstexpr

◆ OBJECTID_ATTR

◆ PRINT_CONFIG_FILE

◆ PRINTABLE_ATTR

constexpr const char* PRINTABLE_ATTR = "printable"
staticconstexpr

◆ RELATIONSHIPS_FILE

const std::string RELATIONSHIPS_FILE = "_rels/.rels"

◆ RESOURCES_TAG

◆ SEAM_PAINTING_VERSION

◆ SKEW_ATTR

constexpr const char* SKEW_ATTR = "skew"
staticconstexpr

◆ SLA_DRAIN_HOLES_FILE

const std::string SLA_DRAIN_HOLES_FILE = "Metadata/Slic3r_PE_sla_drain_holes.txt"

◆ SLA_SUPPORT_POINTS_FILE

const std::string SLA_SUPPORT_POINTS_FILE = "Metadata/Slic3r_PE_sla_support_points.txt"

◆ SLIC3RPE_3MF_VERSION

const char* SLIC3RPE_3MF_VERSION = "slic3rpe:Version3mf"

◆ SLIC3RPE_FDM_SUPPORTS_PAINTING_VERSION

const std::string SLIC3RPE_FDM_SUPPORTS_PAINTING_VERSION = "slic3rpe:FdmSupportsPaintingVersion"

◆ SLIC3RPE_MM_PAINTING_VERSION

const std::string SLIC3RPE_MM_PAINTING_VERSION = "slic3rpe:MmPaintingVersion"

◆ SLIC3RPE_SEAM_PAINTING_VERSION

const std::string SLIC3RPE_SEAM_PAINTING_VERSION = "slic3rpe:SeamPaintingVersion"

◆ SOURCE_FILE_KEY

constexpr const char* SOURCE_FILE_KEY = "source_file"
staticconstexpr

◆ SOURCE_IN_INCHES_KEY

constexpr const char* SOURCE_IN_INCHES_KEY = "source_in_inches"
staticconstexpr

◆ SOURCE_IN_METERS_KEY

constexpr const char* SOURCE_IN_METERS_KEY = "source_in_meters"
staticconstexpr

◆ SOURCE_IS_BUILTIN_VOLUME_KEY

constexpr const char* SOURCE_IS_BUILTIN_VOLUME_KEY = "source_is_builtin_volume"
staticconstexpr

◆ SOURCE_OBJECT_ID_KEY

constexpr const char* SOURCE_OBJECT_ID_KEY = "source_object_id"
staticconstexpr

◆ SOURCE_OFFSET_X_KEY

constexpr const char* SOURCE_OFFSET_X_KEY = "source_offset_x"
staticconstexpr

◆ SOURCE_OFFSET_Y_KEY

constexpr const char* SOURCE_OFFSET_Y_KEY = "source_offset_y"
staticconstexpr

◆ SOURCE_OFFSET_Z_KEY

constexpr const char* SOURCE_OFFSET_Z_KEY = "source_offset_z"
staticconstexpr

◆ SOURCE_VOLUME_ID_KEY

constexpr const char* SOURCE_VOLUME_ID_KEY = "source_volume_id"
staticconstexpr

◆ STYLE_NAME_ATTR

constexpr const char* STYLE_NAME_ATTR = "style_name"
staticconstexpr

◆ TEXT_DATA_ATTR

constexpr const char* TEXT_DATA_ATTR = "text"
staticconstexpr

◆ TEXT_TAG

constexpr const char* TEXT_TAG = "slic3rpe:text"
staticconstexpr

◆ THUMBNAIL_FILE

◆ TRANSFORM_ATTR

◆ TRIANGLE_TAG

◆ TRIANGLES_TAG

◆ TYPE_ATTR

◆ UNIT_ATTR

constexpr const char* UNIT_ATTR = "unit"
staticconstexpr

◆ USE_SURFACE_ATTR

constexpr const char* USE_SURFACE_ATTR = "use_surface"
staticconstexpr

◆ V1_ATTR

constexpr const char* V1_ATTR = "v1"
staticconstexpr

◆ V2_ATTR

constexpr const char* V2_ATTR = "v2"
staticconstexpr

◆ V3_ATTR

constexpr const char* V3_ATTR = "v3"
staticconstexpr

◆ VALID_OBJECT_TYPES

const char* VALID_OBJECT_TYPES[]
Initial value:
=
{
"model"
}

Referenced by is_valid_object_type().

◆ VALID_OBJECT_TYPES_COUNT

const unsigned int VALID_OBJECT_TYPES_COUNT = 1

Referenced by is_valid_object_type().

◆ VALUE_ATTR

◆ VERSION_3MF

const unsigned int VERSION_3MF = 1

◆ VERSION_3MF_COMPATIBLE

const unsigned int VERSION_3MF_COMPATIBLE = 2

◆ VERTEX_TAG

◆ VERTICES_TAG

◆ VOLUME_TAG

◆ VOLUME_TYPE

constexpr const char* VOLUME_TYPE = "volume"
staticconstexpr

◆ VOLUME_TYPE_KEY

constexpr const char* VOLUME_TYPE_KEY = "volume_type"
staticconstexpr

◆ X_ATTR

constexpr const char* X_ATTR = "x"
staticconstexpr

◆ Y_ATTR

constexpr const char* Y_ATTR = "y"
staticconstexpr

◆ Z_ATTR

constexpr const char* Z_ATTR = "z"
staticconstexpr