mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-12 09:17:52 -06:00

# Conflicts: # bbl/i18n/ko/BambuStudio_ko.po # localization/i18n/OrcaSlicer.pot # localization/i18n/de/OrcaSlicer_de.po # localization/i18n/en/OrcaSlicer_en.po # localization/i18n/es/OrcaSlicer_es.po # localization/i18n/fr/OrcaSlicer_fr.po # localization/i18n/hu/OrcaSlicer_hu.po # localization/i18n/it/OrcaSlicer_it.po # localization/i18n/ja/OrcaSlicer_ja.po # localization/i18n/nl/OrcaSlicer_nl.po # localization/i18n/sv/OrcaSlicer_sv.po # localization/i18n/zh_cn/OrcaSlicer_zh_CN.po # resources/i18n/de/BambuStudio.mo # resources/i18n/en/BambuStudio.mo # resources/i18n/es/BambuStudio.mo # resources/i18n/fr/BambuStudio.mo # resources/i18n/hu/BambuStudio.mo # resources/i18n/it/BambuStudio.mo # resources/i18n/ja/BambuStudio.mo # resources/i18n/ko/BambuStudio.mo # resources/i18n/nl/BambuStudio.mo # resources/i18n/sv/BambuStudio.mo # resources/i18n/zh_cn/BambuStudio.mo # resources/profiles/Anycubic/machine/Anycubic Kobra Max 0.4 nozzle.json # src/OrcaSlicer.cpp # src/libnest2d/include/libnest2d/selections/firstfit.hpp # src/libslic3r/GCode/GCodeProcessor.cpp # src/libslic3r/Print.cpp # src/libslic3r/Print.hpp # src/libslic3r/PrintConfig.cpp # src/slic3r/GUI/CalibrationWizardPresetPage.cpp # src/slic3r/GUI/GLCanvas3D.cpp # src/slic3r/GUI/PartPlate.cpp # src/slic3r/GUI/PartPlate.hpp # src/slic3r/GUI/ReleaseNote.cpp # src/slic3r/GUI/Tab.cpp # version.inc
112 lines
3.3 KiB
C++
112 lines
3.3 KiB
C++
#ifndef slic3r_BedShapeDialog_hpp_
|
|
#define slic3r_BedShapeDialog_hpp_
|
|
// The bed shape dialog.
|
|
// The dialog opens from Print Settins tab->Bed Shape : Set...
|
|
|
|
#include "GUI_Utils.hpp"
|
|
#include "2DBed.hpp"
|
|
#include "I18N.hpp"
|
|
|
|
#include <libslic3r/BuildVolume.hpp>
|
|
|
|
#include <wx/dialog.h>
|
|
#include <wx/choicebk.h>
|
|
|
|
namespace Slic3r {
|
|
namespace GUI {
|
|
|
|
class ConfigOptionsGroup;
|
|
|
|
using ConfigOptionsGroupShp = std::shared_ptr<ConfigOptionsGroup>;
|
|
|
|
struct BedShape
|
|
{
|
|
enum class PageType {
|
|
Rectangle,
|
|
Circle,
|
|
Custom
|
|
};
|
|
|
|
enum class Parameter {
|
|
RectSize,
|
|
RectOrigin,
|
|
Diameter
|
|
};
|
|
|
|
BedShape(const ConfigOptionPoints& points);
|
|
|
|
bool is_custom() { return m_build_volume.type() == BuildVolume_Type::Convex || m_build_volume.type() == BuildVolume_Type::Custom; }
|
|
|
|
static void append_option_line(ConfigOptionsGroupShp optgroup, Parameter param);
|
|
static wxString get_name(PageType type);
|
|
|
|
PageType get_page_type();
|
|
|
|
wxString get_full_name_with_params();
|
|
void apply_optgroup_values(ConfigOptionsGroupShp optgroup);
|
|
|
|
private:
|
|
BuildVolume m_build_volume;
|
|
};
|
|
|
|
class BedShapePanel : public wxPanel
|
|
{
|
|
static const std::string NONE;
|
|
static const std::string EMPTY_STRING;
|
|
|
|
Bed_2D* m_canvas;
|
|
std::vector<Vec2d> m_shape;
|
|
std::vector<Vec2d> m_loaded_shape;
|
|
std::string m_custom_texture;
|
|
std::string m_custom_model;
|
|
|
|
public:
|
|
BedShapePanel(wxWindow* parent) : wxPanel(parent, wxID_ANY), m_custom_texture(NONE), m_custom_model(NONE) {}
|
|
|
|
void build_panel(const ConfigOptionPoints& default_pt, const std::string& custom_texture, const std::string& custom_model);
|
|
|
|
// Returns the resulting bed shape polygon. This value will be stored to the ini file.
|
|
const std::vector<Vec2d>& get_shape() const { return m_shape; }
|
|
const std::string& get_custom_texture() const { return (m_custom_texture != NONE) ? m_custom_texture : EMPTY_STRING; }
|
|
const std::string& get_custom_model() const { return (m_custom_model != NONE) ? m_custom_model : EMPTY_STRING; }
|
|
|
|
private:
|
|
ConfigOptionsGroupShp init_shape_options_page(const wxString& title);
|
|
void activate_options_page(ConfigOptionsGroupShp options_group);
|
|
wxPanel* init_texture_panel();
|
|
wxPanel* init_model_panel();
|
|
void set_shape(const ConfigOptionPoints& points);
|
|
void update_preview();
|
|
void update_shape();
|
|
void load_stl();
|
|
void load_texture();
|
|
void load_model();
|
|
|
|
wxChoicebook* m_shape_options_book;
|
|
std::vector <ConfigOptionsGroupShp> m_optgroups;
|
|
|
|
friend class BedShapeDialog;
|
|
};
|
|
|
|
class BedShapeDialog : public DPIDialog
|
|
{
|
|
BedShapePanel* m_panel;
|
|
public:
|
|
BedShapeDialog(wxWindow* parent) : DPIDialog(parent, wxID_ANY, _(L("Bed Shape")),
|
|
wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE) {}
|
|
|
|
void build_dialog(const ConfigOptionPoints& default_pt, const ConfigOptionString& custom_texture, const ConfigOptionString& custom_model);
|
|
|
|
const std::vector<Vec2d>& get_shape() const { return m_panel->get_shape(); }
|
|
const std::string& get_custom_texture() const { return m_panel->get_custom_texture(); }
|
|
const std::string& get_custom_model() const { return m_panel->get_custom_model(); }
|
|
|
|
protected:
|
|
void on_dpi_changed(const wxRect &suggested_rect) override;
|
|
};
|
|
|
|
} // GUI
|
|
} // Slic3r
|
|
|
|
|
|
#endif /* slic3r_BedShapeDialog_hpp_ */
|