mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-06-01 09:32:50 +00:00
Merge branch 'bedshape'
This commit is contained in:
@@ -18,6 +18,7 @@ BoundingBoxBase<PointClass>::BoundingBoxBase(const std::vector<PointClass> &poin
|
||||
}
|
||||
}
|
||||
template BoundingBoxBase<Point>::BoundingBoxBase(const std::vector<Point> &points);
|
||||
template BoundingBoxBase<Pointf>::BoundingBoxBase(const std::vector<Pointf> &points);
|
||||
|
||||
template <class PointClass>
|
||||
BoundingBox3Base<PointClass>::BoundingBox3Base(const std::vector<PointClass> &points)
|
||||
@@ -65,6 +66,7 @@ BoundingBoxBase<PointClass>::scale(double factor)
|
||||
this->max.scale(factor);
|
||||
}
|
||||
template void BoundingBoxBase<Point>::scale(double factor);
|
||||
template void BoundingBoxBase<Pointf>::scale(double factor);
|
||||
template void BoundingBoxBase<Pointf3>::scale(double factor);
|
||||
|
||||
template <class PointClass> void
|
||||
@@ -76,6 +78,7 @@ BoundingBoxBase<PointClass>::merge(const PointClass &point)
|
||||
this->max.y = std::max(point.y, this->max.y);
|
||||
}
|
||||
template void BoundingBoxBase<Point>::merge(const Point &point);
|
||||
template void BoundingBoxBase<Pointf>::merge(const Pointf &point);
|
||||
|
||||
template <class PointClass> void
|
||||
BoundingBoxBase<PointClass>::merge(const BoundingBoxBase<PointClass> &bb)
|
||||
@@ -86,6 +89,7 @@ BoundingBoxBase<PointClass>::merge(const BoundingBoxBase<PointClass> &bb)
|
||||
this->max.y = std::max(bb.max.y, this->max.y);
|
||||
}
|
||||
template void BoundingBoxBase<Point>::merge(const BoundingBoxBase<Point> &bb);
|
||||
template void BoundingBoxBase<Pointf>::merge(const BoundingBoxBase<Pointf> &bb);
|
||||
|
||||
template <class PointClass> void
|
||||
BoundingBox3Base<PointClass>::merge(const PointClass &point)
|
||||
@@ -111,6 +115,7 @@ BoundingBoxBase<PointClass>::size() const
|
||||
return PointClass(this->max.x - this->min.x, this->max.y - this->min.y);
|
||||
}
|
||||
template Point BoundingBoxBase<Point>::size() const;
|
||||
template Pointf BoundingBoxBase<Pointf>::size() const;
|
||||
|
||||
template <class PointClass> PointClass
|
||||
BoundingBox3Base<PointClass>::size() const
|
||||
@@ -126,6 +131,7 @@ BoundingBoxBase<PointClass>::translate(coordf_t x, coordf_t y)
|
||||
this->max.translate(x, y);
|
||||
}
|
||||
template void BoundingBoxBase<Point>::translate(coordf_t x, coordf_t y);
|
||||
template void BoundingBoxBase<Pointf>::translate(coordf_t x, coordf_t y);
|
||||
|
||||
template <class PointClass> void
|
||||
BoundingBox3Base<PointClass>::translate(coordf_t x, coordf_t y, coordf_t z)
|
||||
@@ -144,6 +150,7 @@ BoundingBoxBase<PointClass>::center() const
|
||||
);
|
||||
}
|
||||
template Point BoundingBoxBase<Point>::center() const;
|
||||
template Pointf BoundingBoxBase<Pointf>::center() const;
|
||||
|
||||
template <class PointClass> PointClass
|
||||
BoundingBox3Base<PointClass>::center() const
|
||||
|
||||
@@ -53,10 +53,15 @@ class BoundingBox : public BoundingBoxBase<Point>
|
||||
};
|
||||
|
||||
/*
|
||||
class BoundingBoxf : public BoundingBoxBase<Pointf> {};
|
||||
class BoundingBox3 : public BoundingBox3Base<Point3> {};
|
||||
*/
|
||||
|
||||
class BoundingBoxf : public BoundingBoxBase<Pointf> {
|
||||
public:
|
||||
BoundingBoxf() {};
|
||||
BoundingBoxf(const std::vector<Pointf> &points) : BoundingBoxBase<Pointf>(points) {};
|
||||
};
|
||||
|
||||
class BoundingBoxf3 : public BoundingBox3Base<Pointf3> {
|
||||
public:
|
||||
BoundingBoxf3() {};
|
||||
|
||||
@@ -293,6 +293,18 @@ Pointf::from_SV(SV* point_sv)
|
||||
this->y = SvNV(sv_y);
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
Pointf::from_SV_check(SV* point_sv)
|
||||
{
|
||||
if (sv_isobject(point_sv) && (SvTYPE(SvRV(point_sv)) == SVt_PVMG)) {
|
||||
if (!sv_isa(point_sv, perl_class_name(this)) && !sv_isa(point_sv, perl_class_name_ref(this)))
|
||||
CONFESS("Not a valid %s object (got %s)", perl_class_name(this), HvNAME(SvSTASH(SvRV(point_sv))));
|
||||
*this = *(Pointf*)SvIV((SV*)SvRV( point_sv ));
|
||||
} else {
|
||||
this->from_SV(point_sv);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
|
||||
@@ -74,6 +74,7 @@ class Pointf
|
||||
|
||||
#ifdef SLIC3RXS
|
||||
bool from_SV(SV* point_sv);
|
||||
void from_SV_check(SV* point_sv);
|
||||
SV* to_SV_pureperl() const;
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -427,7 +427,7 @@ Print::invalidate_state_by_config_options(const std::vector<t_config_option_key>
|
||||
} else if (*opt_key == "nozzle_diameter") {
|
||||
steps.insert(psInitExtruders);
|
||||
} else if (*opt_key == "avoid_crossing_perimeters"
|
||||
|| *opt_key == "bed_size"
|
||||
|| *opt_key == "bed_shape"
|
||||
|| *opt_key == "bed_temperature"
|
||||
|| *opt_key == "bridge_acceleration"
|
||||
|| *opt_key == "bridge_fan_speed"
|
||||
|
||||
@@ -11,11 +11,8 @@ PrintConfigDef::build_def() {
|
||||
Options["avoid_crossing_perimeters"].tooltip = "Optimize travel moves in order to minimize the crossing of perimeters. This is mostly useful with Bowden extruders which suffer from oozing. This feature slows down both the print and the G-code generation.";
|
||||
Options["avoid_crossing_perimeters"].cli = "avoid-crossing-perimeters!";
|
||||
|
||||
Options["bed_size"].type = coPoint;
|
||||
Options["bed_size"].label = "Bed size";
|
||||
Options["bed_size"].tooltip = "Size of your bed. This is used to adjust the preview in the plater and for auto-arranging parts in it.";
|
||||
Options["bed_size"].sidetext = "mm";
|
||||
Options["bed_size"].cli = "bed-size=s";
|
||||
Options["bed_shape"].type = coPoints;
|
||||
Options["bed_shape"].label = "Bed shape";
|
||||
|
||||
Options["bed_temperature"].type = coInt;
|
||||
Options["bed_temperature"].label = "Other layers";
|
||||
|
||||
@@ -307,7 +307,7 @@ class PrintConfig : public virtual StaticPrintConfig
|
||||
{
|
||||
public:
|
||||
ConfigOptionBool avoid_crossing_perimeters;
|
||||
ConfigOptionPoint bed_size;
|
||||
ConfigOptionPoints bed_shape;
|
||||
ConfigOptionInt bed_temperature;
|
||||
ConfigOptionFloat bridge_acceleration;
|
||||
ConfigOptionInt bridge_fan_speed;
|
||||
@@ -378,7 +378,10 @@ class PrintConfig : public virtual StaticPrintConfig
|
||||
|
||||
PrintConfig() : StaticPrintConfig() {
|
||||
this->avoid_crossing_perimeters.value = false;
|
||||
this->bed_size.point = Pointf(200,200);
|
||||
this->bed_shape.values.push_back(Pointf(0,0));
|
||||
this->bed_shape.values.push_back(Pointf(200,0));
|
||||
this->bed_shape.values.push_back(Pointf(200,200));
|
||||
this->bed_shape.values.push_back(Pointf(0,200));
|
||||
this->bed_temperature.value = 0;
|
||||
this->bridge_acceleration.value = 0;
|
||||
this->bridge_fan_speed.value = 100;
|
||||
@@ -466,7 +469,7 @@ class PrintConfig : public virtual StaticPrintConfig
|
||||
|
||||
ConfigOption* option(const t_config_option_key opt_key, bool create = false) {
|
||||
if (opt_key == "avoid_crossing_perimeters") return &this->avoid_crossing_perimeters;
|
||||
if (opt_key == "bed_size") return &this->bed_size;
|
||||
if (opt_key == "bed_shape") return &this->bed_shape;
|
||||
if (opt_key == "bed_temperature") return &this->bed_temperature;
|
||||
if (opt_key == "bridge_acceleration") return &this->bridge_acceleration;
|
||||
if (opt_key == "bridge_fan_speed") return &this->bridge_fan_speed;
|
||||
|
||||
Reference in New Issue
Block a user