mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-07-24 06:04:26 +08:00
Merge remote-tracking branch 'remotes/origin/3mf_io'
This commit is contained in:
commit
27faaa27f6
@ -1271,6 +1271,7 @@ namespace Slic3r {
|
|||||||
if ((std::abs(sx - sy) > 0.00001) || (std::abs(sx - sz) > 0.00001))
|
if ((std::abs(sx - sy) > 0.00001) || (std::abs(sx - sz) > 0.00001))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
#if 0 // use quaternions
|
||||||
// rotations (extracted using quaternion)
|
// rotations (extracted using quaternion)
|
||||||
double inv_sx = 1.0 / sx;
|
double inv_sx = 1.0 / sx;
|
||||||
double inv_sy = 1.0 / sy;
|
double inv_sy = 1.0 / sy;
|
||||||
@ -1331,6 +1332,25 @@ namespace Slic3r {
|
|||||||
if (angle_z < 0.0)
|
if (angle_z < 0.0)
|
||||||
angle_z += 2.0 * PI;
|
angle_z += 2.0 * PI;
|
||||||
}
|
}
|
||||||
|
#else // use eigen library
|
||||||
|
double inv_sx = 1.0 / sx;
|
||||||
|
double inv_sy = 1.0 / sy;
|
||||||
|
double inv_sz = 1.0 / sz;
|
||||||
|
|
||||||
|
Eigen::Matrix3d m3x3;
|
||||||
|
m3x3 << (double)matrix(0, 0) * inv_sx, (double)matrix(0, 1) * inv_sy, (double)matrix(0, 2) * inv_sz,
|
||||||
|
(double)matrix(1, 0) * inv_sx, (double)matrix(1, 1) * inv_sy, (double)matrix(1, 2) * inv_sz,
|
||||||
|
(double)matrix(2, 0) * inv_sx, (double)matrix(2, 1) * inv_sy, (double)matrix(2, 2) * inv_sz;
|
||||||
|
|
||||||
|
Eigen::AngleAxisd rotation;
|
||||||
|
rotation.fromRotationMatrix(m3x3);
|
||||||
|
|
||||||
|
// invalid rotation axis, we currently handle only rotations around Z axis
|
||||||
|
if ((rotation.angle() != 0.0) && (rotation.axis() != Eigen::Vector3d::UnitZ()) && (rotation.axis() != -Eigen::Vector3d::UnitZ()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
double angle_z = (rotation.axis() == Eigen::Vector3d::UnitZ()) ? rotation.angle() : -rotation.angle();
|
||||||
|
#endif
|
||||||
|
|
||||||
instance.offset.x = offset_x;
|
instance.offset.x = offset_x;
|
||||||
instance.offset.y = offset_y;
|
instance.offset.y = offset_y;
|
||||||
|
@ -13,6 +13,9 @@
|
|||||||
|
|
||||||
#include <boost/filesystem/operations.hpp>
|
#include <boost/filesystem/operations.hpp>
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
|
//############################################################################################################################################
|
||||||
|
#include <boost/nowide/fstream.hpp>
|
||||||
|
//############################################################################################################################################
|
||||||
#include <miniz/miniz_zip.h>
|
#include <miniz/miniz_zip.h>
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
@ -666,10 +669,21 @@ bool load_amf_archive(const char *path, PresetBundle* bundle, Model *model)
|
|||||||
// If bundle is not a null pointer, updates it if the amf file/archive contains config data
|
// If bundle is not a null pointer, updates it if the amf file/archive contains config data
|
||||||
bool load_amf(const char *path, PresetBundle* bundle, Model *model)
|
bool load_amf(const char *path, PresetBundle* bundle, Model *model)
|
||||||
{
|
{
|
||||||
if (boost::iends_with(path, ".zip.amf"))
|
if (boost::iends_with(path, ".amf.xml"))
|
||||||
return load_amf_archive(path, bundle, model);
|
// backward compatibility with older slic3r output
|
||||||
else if (boost::iends_with(path, ".amf") || boost::iends_with(path, ".amf.xml"))
|
|
||||||
return load_amf_file(path, bundle, model);
|
return load_amf_file(path, bundle, model);
|
||||||
|
else if (boost::iends_with(path, ".amf"))
|
||||||
|
{
|
||||||
|
boost::nowide::ifstream file(path, boost::nowide::ifstream::binary);
|
||||||
|
if (!file.good())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
std::string zip_mask(2, '\0');
|
||||||
|
file.read(const_cast<char*>(zip_mask.data()), 2);
|
||||||
|
file.close();
|
||||||
|
|
||||||
|
return (zip_mask == "PK") ? load_amf_archive(path, bundle, model) : load_amf_file(path, bundle, model);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user