mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-23 14:44:13 -06:00
Build volume now takes z hop height into account. CURA-2729
This commit is contained in:
parent
efe587f8b7
commit
9bd973ab7b
1 changed files with 23 additions and 2 deletions
|
@ -68,6 +68,7 @@ class BuildVolume(SceneNode):
|
|||
self._volume_aabb = None
|
||||
|
||||
self._raft_thickness = 0.0
|
||||
self._extra_z_clearance = 0.0
|
||||
self._adhesion_type = None
|
||||
self._platform = Platform(self)
|
||||
|
||||
|
@ -347,7 +348,7 @@ class BuildVolume(SceneNode):
|
|||
|
||||
self._volume_aabb = AxisAlignedBox(
|
||||
minimum = Vector(min_w, min_h - 1.0, min_d),
|
||||
maximum = Vector(max_w, max_h - self._raft_thickness, max_d))
|
||||
maximum = Vector(max_w, max_h - self._raft_thickness - self._extra_z_clearance, max_d))
|
||||
|
||||
bed_adhesion_size = self._getEdgeDisallowedSize()
|
||||
|
||||
|
@ -356,7 +357,7 @@ class BuildVolume(SceneNode):
|
|||
# The +1 and -1 is added as there is always a bit of extra room required to work properly.
|
||||
scale_to_max_bounds = AxisAlignedBox(
|
||||
minimum = Vector(min_w + bed_adhesion_size + 1, min_h, min_d + disallowed_area_size - bed_adhesion_size + 1),
|
||||
maximum = Vector(max_w - bed_adhesion_size - 1, max_h - self._raft_thickness, max_d - disallowed_area_size + bed_adhesion_size - 1)
|
||||
maximum = Vector(max_w - bed_adhesion_size - 1, max_h - self._raft_thickness - self._extra_z_clearance, max_d - disallowed_area_size + bed_adhesion_size - 1)
|
||||
)
|
||||
|
||||
Application.getInstance().getController().getScene()._maximum_bounds = scale_to_max_bounds
|
||||
|
@ -384,6 +385,21 @@ class BuildVolume(SceneNode):
|
|||
self.setPosition(Vector(0, -self._raft_thickness, 0), SceneNode.TransformSpace.World)
|
||||
self.raftThicknessChanged.emit()
|
||||
|
||||
def _updateExtraZClearance(self):
|
||||
extra_z = None
|
||||
extruders = ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId())
|
||||
for extruder in extruders:
|
||||
retraction_hop = extruder.getProperty("retraction_hop", "value")
|
||||
if extra_z is None or retraction_hop > extra_z:
|
||||
extra_z = retraction_hop
|
||||
if extra_z is None:
|
||||
# If no extruders, take global value.
|
||||
extra_z = self._global_container_stack.getProperty("retraction_hop", "value")
|
||||
if extra_z != self._extra_z_clearance:
|
||||
self._extra_z_clearance = extra_z
|
||||
from UM.Logger import Logger
|
||||
Logger.log("d", " ### Extra z clearance changed: %s" % extra_z)
|
||||
|
||||
## Update the build volume visualization
|
||||
def _onStackChanged(self):
|
||||
if self._global_container_stack:
|
||||
|
@ -450,6 +466,10 @@ class BuildVolume(SceneNode):
|
|||
self._updateRaftThickness()
|
||||
rebuild_me = True
|
||||
|
||||
if setting_key in self._extra_z_settings:
|
||||
self._updateExtraZClearance()
|
||||
rebuild_me = True
|
||||
|
||||
if rebuild_me:
|
||||
self.rebuild()
|
||||
|
||||
|
@ -872,6 +892,7 @@ class BuildVolume(SceneNode):
|
|||
|
||||
_skirt_settings = ["adhesion_type", "skirt_gap", "skirt_line_count", "skirt_brim_line_width", "brim_width", "brim_line_count", "raft_margin", "draft_shield_enabled", "draft_shield_dist"]
|
||||
_raft_settings = ["adhesion_type", "raft_base_thickness", "raft_interface_thickness", "raft_surface_layers", "raft_surface_thickness", "raft_airgap"]
|
||||
_extra_z_settings = ["retraction_hop"]
|
||||
_prime_settings = ["extruder_prime_pos_x", "extruder_prime_pos_y", "extruder_prime_pos_z"]
|
||||
_tower_settings = ["prime_tower_enable", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y"]
|
||||
_ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue