三、OrcaSlicer预设显示

发布于:2025-05-29 ⋅ 阅读:(25) ⋅ 点赞:(0)

一、界面类

主框架使用的是wxWidgets库;3D模型的渲染区的控件,使用的是imgui库。

1、Plater

        此类在OrcaSlicer\src\slic3r\GUI\Plater.hpp文件中定义

1.1 Plater::priv

        此结构体是Plater的数据类,各种数据的对象和指针保存在此结构体中。如Sidebar *sidebar。

2、Sidebar 边栏(左侧栏)类

        此类在OrcaSlicer\src\slic3r\GUI\Plater.hpp文件中定义,此类是从wxPanel派生而来。

2.1 成员变量

        1、struct Sidebar::priv

                此结构体是Sidebar用来保存数据。申明为std::unique_ptr<priv> p,在构造函数中,通过new priv(parent)进行赋值。

2.1 成员函数

        1、Sidebar::Sidebar(Plater *parent)

                在构造函数中会创建:1)打印机下拉框(PlaterPresetComboBox类),new出来的对象指针保存在Sidebar::priv中,变量名为combo_printer;2)会创建耗材下拉框(PlaterPresetComboBox类),new出来的对象指针保存在Sidebar::priv中,变量名为combos_filament。3)工艺下拉框在ParamsPanel类中定义,此类的对象指针保存在MainFrame::m_param_panel中,此指针在MainFrame::init_tabpanel()函数中创建。

                Sidebar对象指针保存在Plater::priv中,指针的在priv构造函数中创建,Plater对象指针保存在MainFrame::m_plater中,此指针在MainFrame::init_tabpanel()函数中创建。

3、下拉框

3.1 ComboBox

        此类在OrcaSlicer\src\slic3r\GUI\Widgets\ComboBox.hpp文件中定义。是从public wxWindowWithItems<TextInput, wxItemContainer>派生而来。

3.1.1 成员变量

        1、std::vector<wxString> texts;下拉框中显示的文本内容

        2、std::vector<wxString> tips;下拉框中显示行的提示内容

        3、std::vector<wxBitmap> icons;下拉框显示行的图标

        4、std::vector<void *> datas;下拉框显示行的数据

        5、std::vector<wxClientDataType> types;下拉框显示行数据类型

        6、DropDown drop; 点击下拉时的弹窗

3.1.2 成员函数

        1、int Append(const wxString &item, const wxBitmap &bitmap = wxNullBitmap);向下拉框中添加数据。

3.2 PresetComboBox

        此类在OrcaSlicer\src\slic3r\GUI\PresetComboBoxs.hpp文件中定义。是从ComboBox派生而来。

3.2.1 成员变量

        1、Preset::Type m_type;//TYPE_PRINTER打印机预设;TYPE_FILAMENT耗材预设;TYPE_PRINT工艺预设;

        2、int m_last_selected; 最后一个选择的行的下标。

3.2.2 成员函数

        1、void update(std::string select_preset);

                将collection中的用户预设和系统预设,通过Append函数进行添加。

3.3 PlaterPresetComboBox

        此类是从PresetComboBox派生而来。打印机预设下拉框和耗材预设下拉框,是由此类创建的对象。

3.3.1 成员函数

        1、void update() override;

                重写update函数。循环collection中的presets,1)如果是default或system,则是系统预设;2)如果是is_project_embedded,则是项目预设;3)其他的是用户预设。

        2、void OnSelect(wxCommandEvent& evt) override;

                重写OnSelect函数。

3.3.2 切换打印机的流程

        1、在Plater::priv::priv构造函数中,使用sidebar->Bind(wxEVT_COMBOBOX, &priv::on_combobox_select, this);将sidebar中的wxEVT_COMBOBOX消息绑定到on_combobox_select中。所在切换打印机预设时,会调用此函数。


网站公告

今日签到

点亮在社区的每一天
去签到