mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 12:11:15 -06:00 
			
		
		
		
	Changed the object context menu in the object list for SLA print technology
+ changed list of the options for "Add settings"
This commit is contained in:
		
							parent
							
								
									343335dbc3
								
							
						
					
					
						commit
						7b9f498410
					
				
					 4 changed files with 53 additions and 10 deletions
				
			
		|  | @ -2447,6 +2447,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("support_head_front_radius", coFloat); | ||||
|     def->label = L("Support head front radius"); | ||||
|     def->category = L("Supports"); | ||||
|     def->tooltip = L("Radius of the pointing side of the head"); | ||||
|     def->sidetext = L("mm"); | ||||
|     def->cli = ""; | ||||
|  | @ -2455,6 +2456,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("support_head_penetration", coFloat); | ||||
|     def->label = L("Support head penetration"); | ||||
|     def->category = L("Supports"); | ||||
|     def->tooltip = L("How much the pinhead has to penetrate the model surface"); | ||||
|     def->sidetext = L("mm"); | ||||
|     def->cli = ""; | ||||
|  | @ -2463,6 +2465,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("support_head_back_radius", coFloat); | ||||
|     def->label = L("Support head back radius"); | ||||
|     def->category = L("Supports"); | ||||
|     def->tooltip = L("Radius of the back side of the 3d arrow"); | ||||
|     def->sidetext = L("mm"); | ||||
|     def->cli = ""; | ||||
|  | @ -2471,6 +2474,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("support_head_width", coFloat); | ||||
|     def->label = L("Support head width"); | ||||
|     def->category = L("Supports"); | ||||
|     def->tooltip = L("Width from the back sphere center to the front sphere center"); | ||||
|     def->sidetext = L("mm"); | ||||
|     def->cli = ""; | ||||
|  | @ -2479,6 +2483,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("support_pillar_radius", coFloat); | ||||
|     def->label = L("Support pillar radius"); | ||||
|     def->category = L("Supports"); | ||||
|     def->tooltip = L("Radius in mm of the support pillars"); | ||||
|     def->sidetext = L("mm"); | ||||
|     def->cli = ""; | ||||
|  | @ -2487,6 +2492,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("support_base_radius", coFloat); | ||||
|     def->label = L("Support base radius"); | ||||
|     def->category = L("Supports"); | ||||
|     def->tooltip = L("Radius in mm of the pillar base"); | ||||
|     def->sidetext = L("mm"); | ||||
|     def->cli = ""; | ||||
|  | @ -2495,6 +2501,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("support_base_height", coFloat); | ||||
|     def->label = L("Support base height"); | ||||
|     def->category = L("Supports"); | ||||
|     def->tooltip = L("The height of the pillar base cone"); | ||||
|     def->sidetext = L("mm"); | ||||
|     def->cli = ""; | ||||
|  | @ -2503,6 +2510,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("support_critical_angle", coFloat); | ||||
|     def->label = L("Critical angle"); | ||||
|     def->category = L("Supports"); | ||||
|     def->tooltip = L("The default angle for connecting support sticks and junctions."); | ||||
|     def->sidetext = L("°"); | ||||
|     def->cli = ""; | ||||
|  | @ -2511,6 +2519,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("support_max_bridge_length", coFloat); | ||||
|     def->label = L("Max bridge length"); | ||||
|     def->category = L("Supports"); | ||||
|     def->tooltip = L("The max length of a bridge"); | ||||
|     def->sidetext = L("mm"); | ||||
|     def->cli = ""; | ||||
|  | @ -2519,6 +2528,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("support_object_elevation", coFloat); | ||||
|     def->label = L("Object elevation"); | ||||
|     def->category = L("Supports"); | ||||
|     def->tooltip = L("How much the supports should lift up the supported object."); | ||||
|     def->sidetext = L("mm"); | ||||
|     def->cli = ""; | ||||
|  | @ -2527,6 +2537,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("pad_enable", coBool); | ||||
|     def->label = L("Use pad"); | ||||
|     def->category = L("Pad"); | ||||
|     def->tooltip = L("Add a pad underneath the supported model"); | ||||
|     def->sidetext = L(""); | ||||
|     def->cli = ""; | ||||
|  | @ -2534,6 +2545,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("pad_wall_thickness", coFloat); | ||||
|     def->label = L("Pad wall thickness"); | ||||
|     def->category = L("Pad"); | ||||
|     def->tooltip = L(""); | ||||
|     def->sidetext = L("mm"); | ||||
|     def->cli = ""; | ||||
|  | @ -2542,6 +2554,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("pad_wall_height", coFloat); | ||||
|     def->label = L("Pad wall height"); | ||||
|     def->category = L("Pad"); | ||||
|     def->tooltip = L(""); | ||||
|     def->sidetext = L("mm"); | ||||
|     def->cli = ""; | ||||
|  | @ -2550,6 +2563,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("pad_max_merge_distance", coFloat); | ||||
|     def->label = L("Max merge distance"); | ||||
|     def->category = L("Pad"); | ||||
|     def->tooltip = L(""); | ||||
|     def->sidetext = L("mm"); | ||||
|     def->cli = ""; | ||||
|  | @ -2558,6 +2572,7 @@ void PrintConfigDef::init_sla_params() | |||
| 
 | ||||
|     def = this->add("pad_edge_radius", coFloat); | ||||
|     def->label = L("Pad edge radius"); | ||||
|     def->category = L("Pad"); | ||||
|     def->tooltip = L(""); | ||||
|     def->sidetext = L("mm"); | ||||
|     def->cli = ""; | ||||
|  |  | |||
|  | @ -25,6 +25,7 @@ ObjectList::ObjectList(wxWindow* parent) : | |||
| { | ||||
|     // Fill CATEGORY_ICON
 | ||||
|     { | ||||
|         // ptFFF
 | ||||
| 		CATEGORY_ICON[L("Layers and Perimeters")]	= wxBitmap(from_u8(var("layers.png")), wxBITMAP_TYPE_PNG); | ||||
| 		CATEGORY_ICON[L("Infill")]					= wxBitmap(from_u8(var("infill.png")), wxBITMAP_TYPE_PNG); | ||||
| 		CATEGORY_ICON[L("Support material")]		= wxBitmap(from_u8(var("building.png")), wxBITMAP_TYPE_PNG); | ||||
|  | @ -34,6 +35,9 @@ ObjectList::ObjectList(wxWindow* parent) : | |||
| // 		CATEGORY_ICON[L("Skirt and brim")]			= wxBitmap(from_u8(var("box.png")), wxBITMAP_TYPE_PNG);
 | ||||
| // 		CATEGORY_ICON[L("Speed > Acceleration")]	= wxBitmap(from_u8(var("time.png")), wxBITMAP_TYPE_PNG);
 | ||||
| 		CATEGORY_ICON[L("Advanced")]				= wxBitmap(from_u8(var("wand.png")), wxBITMAP_TYPE_PNG); | ||||
| 		// ptSLA
 | ||||
| 		CATEGORY_ICON[L("Supports")]				= wxBitmap(from_u8(var("building.png")), wxBITMAP_TYPE_PNG); | ||||
| 		CATEGORY_ICON[L("Pad")]				        = wxBitmap(from_u8(var("brick.png")), wxBITMAP_TYPE_PNG); | ||||
|     } | ||||
| 
 | ||||
|     // create control
 | ||||
|  | @ -310,8 +314,8 @@ void ObjectList::show_context_menu() | |||
|         if (!(m_objects_model->GetItemType(item) & (itObject | itVolume))) | ||||
|             return; | ||||
|         const auto menu = m_objects_model->GetParent(item) == wxDataViewItem(0) ? | ||||
|             create_add_part_popupmenu() : | ||||
|             create_part_settings_popupmenu(); | ||||
|             create_object_popupmenu() : | ||||
|             create_part_popupmenu(); | ||||
|         wxGetApp().tab_panel()->GetPage(0)->PopupMenu(menu); | ||||
|     } | ||||
| } | ||||
|  | @ -436,6 +440,13 @@ void ObjectList::on_drop(wxDataViewEvent &event) | |||
| 
 | ||||
| std::vector<std::string> get_options(const bool is_part) | ||||
| { | ||||
|     if (wxGetApp().plater()->printer_technology() == ptSLA) { | ||||
|         SLAPrintObjectConfig full_sla_config; | ||||
|         auto options = full_sla_config.keys(); | ||||
|         options.erase(find(options.begin(), options.end(), "layer_height")); | ||||
|         return options; | ||||
|     } | ||||
| 
 | ||||
|     PrintRegionConfig reg_config; | ||||
|     auto options = reg_config.keys(); | ||||
|     if (!is_part) { | ||||
|  | @ -463,7 +474,10 @@ void get_options_menu(settings_menu_hierarchy& settings_menu, bool is_part) | |||
|         if (category.empty() || | ||||
|             (category == "Extruders" && extruders_cnt == 1)) continue; | ||||
| 
 | ||||
|         std::pair<std::string, std::string> option_label(option, opt->label); | ||||
|         const std::string& label = opt->label.empty() ? opt->full_label :  | ||||
|                                    opt->full_label.empty() ? opt->label : | ||||
|                                    opt->full_label + " " + opt->label;; | ||||
|         std::pair<std::string, std::string> option_label(option, label); | ||||
|         std::vector< std::pair<std::string, std::string> > new_category; | ||||
|         auto& cat_opt_label = settings_menu.find(category) == settings_menu.end() ? new_category : settings_menu.at(category); | ||||
|         cat_opt_label.push_back(option_label); | ||||
|  | @ -575,14 +589,27 @@ wxMenuItem* ObjectList::menu_item_settings(wxMenu* menu, int id, const bool is_p | |||
|     auto  menu_item = new wxMenuItem(menu, id, _(L("Add settings"))); | ||||
|     menu_item->SetBitmap(m_bmp_cog); | ||||
| 
 | ||||
|     auto sub_menu = create_add_settings_popupmenu(is_part); | ||||
|     auto sub_menu = create_settings_popupmenu(is_part); | ||||
|     menu_item->SetSubMenu(sub_menu); | ||||
|     return menu_item; | ||||
| } | ||||
| 
 | ||||
| wxMenu* ObjectList::create_add_part_popupmenu() | ||||
| wxMenu* ObjectList::create_object_popupmenu() | ||||
| { | ||||
|     wxMenu *menu = new wxMenu; | ||||
|     if (wxGetApp().plater()->printer_technology() == ptSLA) | ||||
|     { | ||||
|         wxWindowID config_id_base = NewControlId(1); | ||||
|         // Append settings popupmenu
 | ||||
|         menu->Append(menu_item_settings(menu, config_id_base, false)); | ||||
| 
 | ||||
|         menu->Bind(wxEVT_MENU, [menu, this](wxEvent &event) { | ||||
|             get_settings_choice(menu, event.GetId(), false); | ||||
|         }); | ||||
| 
 | ||||
|         return menu; | ||||
|     } | ||||
| 
 | ||||
|     // Note: id accords to type of the sub-object, so sequence of the menu items is important
 | ||||
|     std::vector<std::string> menu_object_types_items = {L("Add part"),              // ~ModelVolume::MODEL_PART
 | ||||
|                                                         L("Add modifier"),          // ~ModelVolume::PARAMETER_MODIFIER
 | ||||
|  | @ -635,7 +662,7 @@ wxMenu* ObjectList::create_add_part_popupmenu() | |||
|     return menu; | ||||
| } | ||||
| 
 | ||||
| wxMenu* ObjectList::create_part_settings_popupmenu() | ||||
| wxMenu* ObjectList::create_part_popupmenu() | ||||
| { | ||||
|     wxMenu *menu = new wxMenu; | ||||
|     wxWindowID config_id_base = NewControlId(3); | ||||
|  | @ -671,7 +698,7 @@ wxMenu* ObjectList::create_part_settings_popupmenu() | |||
|     return menu; | ||||
| } | ||||
| 
 | ||||
| wxMenu* ObjectList::create_add_settings_popupmenu(bool is_part) | ||||
| wxMenu* ObjectList::create_settings_popupmenu(bool is_part) | ||||
| { | ||||
|     wxMenu *menu = new wxMenu; | ||||
| 
 | ||||
|  |  | |||
|  | @ -98,9 +98,9 @@ public: | |||
|     void                menu_item_add_generic(wxMenuItem* &menu, int id, const int type); | ||||
|     wxMenuItem*         menu_item_split(wxMenu* menu, int id); | ||||
|     wxMenuItem*         menu_item_settings(wxMenu* menu, int id, const bool is_part); | ||||
|     wxMenu*             create_add_part_popupmenu(); | ||||
|     wxMenu*             create_part_settings_popupmenu(); | ||||
|     wxMenu*             create_add_settings_popupmenu(bool is_part); | ||||
|     wxMenu*             create_object_popupmenu(); | ||||
|     wxMenu*             create_part_popupmenu(); | ||||
|     wxMenu*             create_settings_popupmenu(bool is_part); | ||||
| 
 | ||||
|     void                load_subobject(int type); | ||||
|     void                load_part(ModelObject* model_object, wxArrayString& part_names, int type); | ||||
|  |  | |||
|  | @ -3011,6 +3011,7 @@ void TabSLAPrint::build() | |||
|     optgroup->append_single_option_line("support_critical_angle"); | ||||
|     optgroup->append_single_option_line("support_max_bridge_length"); | ||||
| 
 | ||||
|     page = add_options_page(_(L("Pad")), "brick.png"); | ||||
|     optgroup = page->new_optgroup(_(L("Pad"))); | ||||
|     optgroup->append_single_option_line("pad_enable"); | ||||
|     optgroup->append_single_option_line("pad_wall_thickness"); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 YuSanka
						YuSanka