mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-15 02:37:51 -06:00
fix default bed triangles and check_outside & intersect_instance
This commit is contained in:
parent
0d20f13196
commit
87ba3263cc
3 changed files with 15 additions and 10 deletions
|
@ -338,7 +338,6 @@ void Bed3D::render_internal(GLCanvas3D& canvas, bool bottom, float scale_factor,
|
||||||
|
|
||||||
if (show_axes)
|
if (show_axes)
|
||||||
render_axes();
|
render_axes();
|
||||||
|
|
||||||
glsafe(::glEnable(GL_DEPTH_TEST));
|
glsafe(::glEnable(GL_DEPTH_TEST));
|
||||||
|
|
||||||
m_model.set_color(-1, m_is_dark ? DEFAULT_MODEL_COLOR_DARK : DEFAULT_MODEL_COLOR);
|
m_model.set_color(-1, m_is_dark ? DEFAULT_MODEL_COLOR_DARK : DEFAULT_MODEL_COLOR);
|
||||||
|
@ -632,8 +631,8 @@ GeometryBuffer Bed3D::update_bed_triangles() const
|
||||||
|
|
||||||
if (!m_build_volume.valid()) return new_triangles;
|
if (!m_build_volume.valid()) return new_triangles;
|
||||||
|
|
||||||
(*model_offset_ptr)(0) = m_build_volume.bounding_volume2d().min.x();
|
(*model_offset_ptr)(0) = 0;//m_build_volume.bounding_volume2d().min.x();
|
||||||
(*model_offset_ptr)(1) = m_build_volume.bounding_volume2d().min.y();
|
(*model_offset_ptr)(1) = 0; // m_build_volume.bounding_volume2d().min.y();
|
||||||
(*model_offset_ptr)(2) = -0.41 + GROUND_Z;
|
(*model_offset_ptr)(2) = -0.41 + GROUND_Z;
|
||||||
|
|
||||||
std::vector<Vec2d> new_bed_shape;
|
std::vector<Vec2d> new_bed_shape;
|
||||||
|
|
|
@ -1724,15 +1724,17 @@ bool PartPlate::check_outside(int obj_id, int instance_id, BoundingBoxf3* boundi
|
||||||
ModelInstance* instance = object->instances[instance_id];
|
ModelInstance* instance = object->instances[instance_id];
|
||||||
|
|
||||||
BoundingBoxf3 instance_box = bounding_box? *bounding_box: object->instance_convex_hull_bounding_box(instance_id);
|
BoundingBoxf3 instance_box = bounding_box? *bounding_box: object->instance_convex_hull_bounding_box(instance_id);
|
||||||
Polygon hull = instance->convex_hull_2d();
|
Vec3d up_point = m_bounding_box.max + Vec3d(Slic3r::BuildVolume::SceneEpsilon, Slic3r::BuildVolume::SceneEpsilon,
|
||||||
Vec3d up_point(m_origin.x() + m_width + Slic3r::BuildVolume::SceneEpsilon, m_origin.y() + m_depth + Slic3r::BuildVolume::SceneEpsilon, m_origin.z() + m_height + Slic3r::BuildVolume::SceneEpsilon);
|
m_origin.z() + m_height + Slic3r::BuildVolume::SceneEpsilon);
|
||||||
Vec3d low_point(m_origin.x() - Slic3r::BuildVolume::SceneEpsilon, m_origin.y() - Slic3r::BuildVolume::SceneEpsilon, m_origin.z() - Slic3r::BuildVolume::SceneEpsilon);
|
Vec3d low_point = m_bounding_box.min + Vec3d(-Slic3r::BuildVolume::SceneEpsilon, -Slic3r::BuildVolume::SceneEpsilon,
|
||||||
|
m_origin.z() - Slic3r::BuildVolume::SceneEpsilon);
|
||||||
BoundingBoxf3 plate_box(low_point, up_point);
|
BoundingBoxf3 plate_box(low_point, up_point);
|
||||||
|
|
||||||
if (plate_box.contains(instance_box))
|
if (plate_box.contains(instance_box))
|
||||||
{
|
{
|
||||||
if (m_exclude_bounding_box.size() > 0)
|
if (m_exclude_bounding_box.size() > 0)
|
||||||
{
|
{
|
||||||
|
Polygon hull = instance->convex_hull_2d();
|
||||||
int index;
|
int index;
|
||||||
for (index = 0; index < m_exclude_bounding_box.size(); index ++)
|
for (index = 0; index < m_exclude_bounding_box.size(); index ++)
|
||||||
{
|
{
|
||||||
|
@ -1769,8 +1771,12 @@ bool PartPlate::intersect_instance(int obj_id, int instance_id, BoundingBoxf3* b
|
||||||
ModelObject* object = m_model->objects[obj_id];
|
ModelObject* object = m_model->objects[obj_id];
|
||||||
ModelInstance* instance = object->instances[instance_id];
|
ModelInstance* instance = object->instances[instance_id];
|
||||||
BoundingBoxf3 instance_box = bounding_box? *bounding_box: object->instance_convex_hull_bounding_box(instance_id);
|
BoundingBoxf3 instance_box = bounding_box? *bounding_box: object->instance_convex_hull_bounding_box(instance_id);
|
||||||
Vec3d up_point(m_origin.x() + m_width, m_origin.y() + m_depth, m_origin.z() + m_height);
|
Vec3d up_point =
|
||||||
Vec3d low_point(m_origin.x(), m_origin.y(), m_origin.z() - 5.0f);
|
m_bounding_box.max + Vec3d(Slic3r::BuildVolume::SceneEpsilon, Slic3r::BuildVolume::SceneEpsilon,
|
||||||
|
m_origin.z() + m_height + Slic3r::BuildVolume::SceneEpsilon);
|
||||||
|
Vec3d low_point =
|
||||||
|
m_bounding_box.min + Vec3d(-Slic3r::BuildVolume::SceneEpsilon, -Slic3r::BuildVolume::SceneEpsilon,
|
||||||
|
m_origin.z() - Slic3r::BuildVolume::SceneEpsilon);
|
||||||
BoundingBoxf3 plate_box(low_point, up_point);
|
BoundingBoxf3 plate_box(low_point, up_point);
|
||||||
|
|
||||||
result = plate_box.intersects(instance_box);
|
result = plate_box.intersects(instance_box);
|
||||||
|
|
|
@ -346,8 +346,8 @@ public:
|
||||||
const BoundingBox get_bounding_box_crd();
|
const BoundingBox get_bounding_box_crd();
|
||||||
BoundingBoxf3 get_build_volume()
|
BoundingBoxf3 get_build_volume()
|
||||||
{
|
{
|
||||||
Vec3d up_point(m_origin.x() + m_width, m_origin.y() + m_depth, m_origin.z() + m_height);
|
Vec3d up_point = m_bounding_box.max + Vec3d(0, 0, m_origin.z() + m_height);
|
||||||
Vec3d low_point(m_origin.x(), m_origin.y(), m_origin.z());
|
Vec3d low_point = m_bounding_box.min + Vec3d(0, 0, m_origin.z());
|
||||||
BoundingBoxf3 plate_box(low_point, up_point);
|
BoundingBoxf3 plate_box(low_point, up_point);
|
||||||
return plate_box;
|
return plate_box;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue