190{
193 return;
194
195 const bool z_known = start_z_known && end_z_known;
196 const bool active_extruder_valid =
198 const size_t first_extruder = active_extruder_valid ? size_t(active_extruder_id) : 0;
199 const size_t last_extruder = active_extruder_valid ? first_extruder + 1 :
m_regions_by_extruder.size();
200
201 for (size_t extruder_id = first_extruder; extruder_id < last_extruder; ++extruder_id) {
204 Vec3d model_from = from;
206 model_from.head<2>() +=
offset;
207 model_to.head<2>() +=
offset;
208
210 for (size_t region_id = 0; region_id < regions.size(); ++region_id) {
212 continue;
213
218 m_result.first_hit = ExclusionVolumePathHit{
219 move_id,
220 gcode_id,
221 motion_type,
222 source_move_type,
223 int(extruder_id),
224 region_id,
225 model_from,
226 model_to,
227 !z_known
228 };
229 return;
230 }
231 }
232}
bool m_configured
Definition ExclusionVolumePathCheck.hpp:84
ExclusionVolumePathCheckResult m_result
Definition ExclusionVolumePathCheck.hpp:87
bool segment_intersects_region(const Vec3d &from, const Vec3d &to, bool z_known, const PreparedRegion ®ion) const
Definition ExclusionVolumePathCheck.cpp:148
std::vector< std::vector< PreparedRegion > > m_regions_by_extruder
Definition ExclusionVolumePathCheck.hpp:86
std::vector< Vec2d > m_extruder_offsets
Definition ExclusionVolumePathCheck.hpp:85
Eigen::Matrix< double, 3, 1, Eigen::DontAlign > Vec3d
Definition Point.hpp:68
Slic3r::Polygons offset(const Slic3r::Polygon &polygon, const float delta, JoinType joinType, double miterLimit)
Definition ClipperUtils.cpp:582
@ Travel
Definition ExclusionVolumePathCheck.hpp:17
@ Other
Definition ExclusionVolumePathCheck.hpp:19
@ Extrude
Definition ExclusionVolumePathCheck.hpp:18
Eigen::Matrix< double, 2, 1, Eigen::DontAlign > Vec2d
Definition Point.hpp:67