mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	Merge branch 'master' of https://github.com/prusa3d/Slic3r into et_multivolume_models
This commit is contained in:
		
						commit
						ead45c4fb2
					
				
					 5 changed files with 19 additions and 13 deletions
				
			
		|  | @ -175,6 +175,11 @@ struct AMFParserContext | ||||||
|         bool  mirrory_set; |         bool  mirrory_set; | ||||||
|         float mirrorz; |         float mirrorz; | ||||||
|         bool  mirrorz_set; |         bool  mirrorz_set; | ||||||
|  | 
 | ||||||
|  |         bool anything_set() const { return deltax_set || deltay_set || deltaz_set || | ||||||
|  |                                            rx_set || ry_set || rz_set || | ||||||
|  |                                            scalex_set || scaley_set || scalez_set || | ||||||
|  |                                            mirrorx_set || mirrory_set || mirrorz_set; } | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     struct Object { |     struct Object { | ||||||
|  | @ -644,11 +649,7 @@ void AMFParserContext::endDocument() | ||||||
|             continue; |             continue; | ||||||
|         } |         } | ||||||
|         for (const Instance &instance : object.second.instances) |         for (const Instance &instance : object.second.instances) | ||||||
| #if ENABLE_VOLUMES_CENTERING_FIXES |             if (instance.anything_set()) { | ||||||
|         { |  | ||||||
| #else |  | ||||||
|             if (instance.deltax_set && instance.deltay_set) { |  | ||||||
| #endif // ENABLE_VOLUMES_CENTERING_FIXES
 |  | ||||||
|                 ModelInstance *mi = m_model.objects[object.second.idx]->add_instance(); |                 ModelInstance *mi = m_model.objects[object.second.idx]->add_instance(); | ||||||
|                 mi->set_offset(Vec3d(instance.deltax_set ? (double)instance.deltax : 0.0, instance.deltay_set ? (double)instance.deltay : 0.0, instance.deltaz_set ? (double)instance.deltaz : 0.0)); |                 mi->set_offset(Vec3d(instance.deltax_set ? (double)instance.deltax : 0.0, instance.deltay_set ? (double)instance.deltay : 0.0, instance.deltaz_set ? (double)instance.deltaz : 0.0)); | ||||||
|                 mi->set_rotation(Vec3d(instance.rx_set ? (double)instance.rx : 0.0, instance.ry_set ? (double)instance.ry : 0.0, instance.rz_set ? (double)instance.rz : 0.0)); |                 mi->set_rotation(Vec3d(instance.rx_set ? (double)instance.rx : 0.0, instance.ry_set ? (double)instance.ry : 0.0, instance.rz_set ? (double)instance.rz : 0.0)); | ||||||
|  |  | ||||||
|  | @ -2293,11 +2293,13 @@ int GLCanvas3D::check_volumes_outside_state() const | ||||||
|     return (int)state; |     return (int)state; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GLCanvas3D::toggle_sla_auxiliaries_visibility(bool visible) | void GLCanvas3D::toggle_sla_auxiliaries_visibility(bool visible, const ModelObject* mo, int instance_idx) | ||||||
| { | { | ||||||
|     for (GLVolume* vol : m_volumes.volumes) { |     for (GLVolume* vol : m_volumes.volumes) { | ||||||
|         if (vol->composite_id.volume_id < 0) |         if ((mo == nullptr || m_model->objects[vol->composite_id.object_id] == mo) | ||||||
|              vol->is_active = visible; |         && (instance_idx == -1 || vol->composite_id.instance_id == instance_idx) | ||||||
|  |         && vol->composite_id.volume_id < 0) | ||||||
|  |             vol->is_active = visible; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     m_render_sla_auxiliaries = visible; |     m_render_sla_auxiliaries = visible; | ||||||
|  | @ -2313,7 +2315,7 @@ void GLCanvas3D::toggle_model_objects_visibility(bool visible, const ModelObject | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     if (visible && !mo) |     if (visible && !mo) | ||||||
|         toggle_sla_auxiliaries_visibility(true); |         toggle_sla_auxiliaries_visibility(true, mo, instance_idx); | ||||||
| 
 | 
 | ||||||
|     if (!mo && !visible && !m_model->objects.empty() && (m_model->objects.size() > 1 || m_model->objects.front()->instances.size() > 1)) |     if (!mo && !visible && !m_model->objects.empty() && (m_model->objects.size() > 1 || m_model->objects.front()->instances.size() > 1)) | ||||||
|         _set_warning_texture(WarningTexture::SomethingNotShown, true); |         _set_warning_texture(WarningTexture::SomethingNotShown, true); | ||||||
|  |  | ||||||
|  | @ -584,6 +584,9 @@ private: | ||||||
|     bool m_regenerate_volumes; |     bool m_regenerate_volumes; | ||||||
|     bool m_moving; |     bool m_moving; | ||||||
|     bool m_tab_down; |     bool m_tab_down; | ||||||
|  | 
 | ||||||
|  |     // Following variable is obsolete and it should be safe to remove it.
 | ||||||
|  |     // I just don't want to do it now before a release (Lukas Matena 24.3.2019)
 | ||||||
|     bool m_render_sla_auxiliaries; |     bool m_render_sla_auxiliaries; | ||||||
| 
 | 
 | ||||||
|     std::string m_color_by; |     std::string m_color_by; | ||||||
|  | @ -610,7 +613,7 @@ public: | ||||||
|     void reset_volumes(); |     void reset_volumes(); | ||||||
|     int check_volumes_outside_state() const; |     int check_volumes_outside_state() const; | ||||||
| 
 | 
 | ||||||
|     void toggle_sla_auxiliaries_visibility(bool visible); |     void toggle_sla_auxiliaries_visibility(bool visible, const ModelObject* mo = nullptr, int instance_idx = -1); | ||||||
|     void toggle_model_objects_visibility(bool visible, const ModelObject* mo = nullptr, int instance_idx = -1); |     void toggle_model_objects_visibility(bool visible, const ModelObject* mo = nullptr, int instance_idx = -1); | ||||||
| 
 | 
 | ||||||
|     void set_config(const DynamicPrintConfig* config); |     void set_config(const DynamicPrintConfig* config); | ||||||
|  |  | ||||||
|  | @ -666,7 +666,7 @@ RENDER_AGAIN: | ||||||
|     m_imgui->end(); |     m_imgui->end(); | ||||||
| 
 | 
 | ||||||
|     if (m_editing_mode != m_old_editing_state) { // user toggled between editing/non-editing mode
 |     if (m_editing_mode != m_old_editing_state) { // user toggled between editing/non-editing mode
 | ||||||
|         m_parent.toggle_sla_auxiliaries_visibility(!m_editing_mode); |         m_parent.toggle_sla_auxiliaries_visibility(!m_editing_mode, m_model_object, m_active_instance); | ||||||
|         force_refresh = true; |         force_refresh = true; | ||||||
|     } |     } | ||||||
|     m_old_editing_state = m_editing_mode; |     m_old_editing_state = m_editing_mode; | ||||||
|  |  | ||||||
|  | @ -1713,8 +1713,8 @@ std::vector<size_t> Plater::priv::load_model_objects(const ModelObjectPtrs &mode | ||||||
|             object->center_around_origin(); |             object->center_around_origin(); | ||||||
|             new_instances.emplace_back(object->add_instance()); |             new_instances.emplace_back(object->add_instance()); | ||||||
| #else /* AUTOPLACEMENT_ON_LOAD */ | #else /* AUTOPLACEMENT_ON_LOAD */ | ||||||
|             // if object has no defined position(s) we need to rearrange everything after loading               object->center_around_origin();
 |             // if object has no defined position(s) we need to rearrange everything after loading
 | ||||||
|             need_arrange = true;                 |             need_arrange = true; | ||||||
|              // add a default instance and center object around origin  
 |              // add a default instance and center object around origin  
 | ||||||
|             object->center_around_origin();  // also aligns object to Z = 0 
 |             object->center_around_origin();  // also aligns object to Z = 0 
 | ||||||
|             ModelInstance* instance = object->add_instance();    |             ModelInstance* instance = object->add_instance();    | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Enrico Turri
						Enrico Turri