Fix transformation assembly problem for arrange polyogon
This commit is contained in:
parent
6831b7094a
commit
362267431b
@ -2406,11 +2406,6 @@ arrangement::ArrangePolygon ModelInstance::get_arrange_polygon() const
|
|||||||
{
|
{
|
||||||
// static const double SIMPLIFY_TOLERANCE_MM = 0.1;
|
// static const double SIMPLIFY_TOLERANCE_MM = 0.1;
|
||||||
|
|
||||||
// Vec3d rotation = get_rotation();
|
|
||||||
// rotation.z() = 0.;
|
|
||||||
// Transform3d trafo_instance = Geometry::assemble_transform(get_offset().z() * Vec3d::UnitZ(), rotation, get_scaling_factor(), get_mirror());
|
|
||||||
|
|
||||||
|
|
||||||
Polygon p = get_object()->convex_hull_2d(this->get_matrix());
|
Polygon p = get_object()->convex_hull_2d(this->get_matrix());
|
||||||
|
|
||||||
// if (!p.points.empty()) {
|
// if (!p.points.empty()) {
|
||||||
@ -2421,12 +2416,24 @@ arrangement::ArrangePolygon ModelInstance::get_arrange_polygon() const
|
|||||||
|
|
||||||
arrangement::ArrangePolygon ret;
|
arrangement::ArrangePolygon ret;
|
||||||
ret.poly.contour = std::move(p);
|
ret.poly.contour = std::move(p);
|
||||||
ret.translation = Vec2crd::Zero(); //Vec2crd{scaled(get_offset(X)), scaled(get_offset(Y))};
|
ret.translation = Vec2crd::Zero();
|
||||||
ret.rotation = 0.;
|
ret.rotation = 0.;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ModelInstance::apply_arrange_result(const Vec2d &offs, double rotation)
|
||||||
|
{
|
||||||
|
// write the transformation data into the model instance
|
||||||
|
auto trafo = get_transformation().get_matrix();
|
||||||
|
auto tr = Transform3d::Identity();
|
||||||
|
tr.translate(to_3d(unscaled(offs), 0.));
|
||||||
|
trafo = tr * Eigen::AngleAxisd(rotation, Vec3d::UnitZ()) * trafo;
|
||||||
|
m_transformation.set_matrix(trafo);
|
||||||
|
|
||||||
|
this->object->invalidate_bounding_box();
|
||||||
|
}
|
||||||
|
|
||||||
indexed_triangle_set FacetsAnnotation::get_facets(const ModelVolume& mv, EnforcerBlockerType type) const
|
indexed_triangle_set FacetsAnnotation::get_facets(const ModelVolume& mv, EnforcerBlockerType type) const
|
||||||
{
|
{
|
||||||
TriangleSelector selector(mv.mesh());
|
TriangleSelector selector(mv.mesh());
|
||||||
|
@ -1167,21 +1167,7 @@ public:
|
|||||||
arrangement::ArrangePolygon get_arrange_polygon() const;
|
arrangement::ArrangePolygon get_arrange_polygon() const;
|
||||||
|
|
||||||
// Apply the arrange result on the ModelInstance
|
// Apply the arrange result on the ModelInstance
|
||||||
void apply_arrange_result(const Vec2d& offs, double rotation)
|
void apply_arrange_result(const Vec2d& offs, double rotation);
|
||||||
{
|
|
||||||
// write the transformation data into the model instance
|
|
||||||
// set_rotation(Z, rotation);
|
|
||||||
// set_offset(X, unscale<double>(offs(X)));
|
|
||||||
// set_offset(Y, unscale<double>(offs(Y)));
|
|
||||||
auto trafo = get_transformation().get_matrix();
|
|
||||||
trafo.translate(to_3d(unscaled(offs), 0.));
|
|
||||||
trafo.rotate(Eigen::AngleAxisd(rotation, Vec3d::UnitZ()));
|
|
||||||
m_transformation.set_matrix(trafo);
|
|
||||||
|
|
||||||
// set_rotation(Z, get_rotation().z() + rotation);
|
|
||||||
// set_offset(get_offset() + to_3d(unscaled(offs), 0.));
|
|
||||||
this->object->invalidate_bounding_box();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class Print;
|
friend class Print;
|
||||||
|
Loading…
Reference in New Issue
Block a user