OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
SurfaceDrag.cpp File Reference
#include "SurfaceDrag.hpp"
#include <cmath>
#include <cassert>
#include "libslic3r/BoundingBox.hpp"
#include <algorithm>
#include <functional>
#include "libslic3r/Geometry.hpp"
#include <cstddef>
#include <Eigen/Geometry>
#include <Eigen/Core>
#include <libslic3r/Model.hpp>
#include <libslic3r/Emboss.hpp>
#include "libslic3r/Point.hpp"
#include <optional>
#include "libslic3r/libslic3r.h"
#include "slic3r/GUI/Selection.hpp"
#include "slic3r/GUI/3DScene.hpp"
#include "slic3r/Utils/RaycastManager.hpp"
#include "GLCanvas3D.hpp"
#include "Camera.hpp"
#include "CameraUtils.hpp"
#include "I18N.hpp"
#include "GUI_App.hpp"
#include "Gizmos/GizmoObjectManipulation.hpp"
#include "libslic3r/EmbossShape.hpp"
#include "libslic3r/ObjectID.hpp"
#include "slic3r/GUI/GUI_Geometry.hpp"
Include dependency graph for SurfaceDrag.cpp:

Go to the source code of this file.

Namespaces

namespace  anonymous_namespace{SurfaceDrag.cpp}
namespace  Slic3r
 |/ Copyright (c) Prusa Research 2020 - 2023 Enrico Turri @enricoturri1966 |/ |/ PrusaSlicer is released under the terms of the AGPLv3 or higher |/
namespace  Slic3r::GUI

Functions

Vec2d anonymous_namespace{SurfaceDrag.cpp}::mouse_position (const wxMouseEvent &mouse_event)
 Extract position of mouse from mouse event.
bool anonymous_namespace{SurfaceDrag.cpp}::start_dragging (const Vec2d &mouse_pos, const Camera &camera, std::optional< SurfaceDrag > &surface_drag, GLCanvas3D &canvas, RaycastManager &raycast_manager, const std::optional< double > &up_limit)
bool anonymous_namespace{SurfaceDrag.cpp}::dragging (const Vec2d &mouse_pos, const Camera &camera, SurfaceDrag &surface_drag, GLCanvas3D &canvas, const RaycastManager &raycast_manager, const std::optional< double > &up_limit)
Transform3d anonymous_namespace{SurfaceDrag.cpp}::get_volume_transformation (Transform3d world, const Vec3d &world_dir, const Vec3d &world_position, const std::optional< Transform3d > &fix, const Transform3d &instance_inv, std::optional< float > current_angle={}, const std::optional< double > &up_limit={})
bool anonymous_namespace{SurfaceDrag.cpp}::is_embossed_object (const Selection &selection)
const Transform3d * anonymous_namespace{SurfaceDrag.cpp}::get_fix_transformation (const Selection &selection)
 Get fix transformation for selected volume Fix after store to 3mf.
static std::optional< double > Slic3r::GUI::calc_scale (const Matrix3d &from, const Matrix3d &to, const Vec3d &dir)
bool Slic3r::GUI::on_mouse_surface_drag (const wxMouseEvent &mouse_event, const Camera &camera, std::optional< SurfaceDrag > &surface_drag, GLCanvas3D &canvas, RaycastManager &raycast_manager, const std::optional< double > &up_limit={})
 Mouse event handler, when move(drag&drop) volume over model surface NOTE: Dragged volume has to be selected. And also has to be hovered on start of dragging.
std::optional< Vec3d > Slic3r::GUI::calc_surface_offset (const Selection &selection, RaycastManager &raycast_manager)
 Calculate translation of volume onto surface of model.
std::optional< float > Slic3r::GUI::calc_distance (const GLVolume &gl_volume, RaycastManager &raycaster, GLCanvas3D &canvas)
 Calculate distance by ray to surface of object in emboss direction.
std::optional< float > Slic3r::GUI::calc_distance (const GLVolume &gl_volume, const RaycastManager &raycaster, const RaycastManager::ISkip *condition, const std::optional< Slic3r::Transform3d > &fix)
std::optional< float > Slic3r::GUI::calc_angle (const Selection &selection)
 Calculate up vector angle.
Transform3d Slic3r::GUI::world_matrix_fixed (const GLVolume &gl_volume, const ModelObjectPtrs &objects)
 Get transformation to world.
Transform3d Slic3r::GUI::world_matrix_fixed (const Selection &selection)
 Get transformation to world.
void Slic3r::GUI::selection_transform (Selection &selection, const std::function< void()> &selection_transformation_fnc)
 Wrap function around selection transformation to apply fix transformation Fix transformation is needed because of (store/load) volume (to/from) 3mf.
bool Slic3r::GUI::face_selected_volume_to_camera (const Camera &camera, GLCanvas3D &canvas, const std::optional< double > &wanted_up_limit={})
 Apply camera direction for emboss direction.
void Slic3r::GUI::do_local_z_rotate (Selection &selection, double relative_angle)
 Rotation around z Axis(emboss direction).
void Slic3r::GUI::do_local_z_move (Selection &selection, double relative_move)
 Translation along local z Axis (emboss direction).
TransformationType Slic3r::GUI::get_drag_transformation_type (const Selection &selection)
 Distiguish between object and volume Differ in possible transformation type.
void Slic3r::GUI::dragging_rotate_gizmo (double gizmo_angle, std::optional< float > &current_angle, std::optional< float > &start_angle, Selection &selection)
 On dragging rotate gizmo func Transform GLVolume from selection.

Variables

constexpr Slic3r::MinMax< double > anonymous_namespace{SurfaceDrag.cpp}::surface_distance_sq {1e-4, 10.}