mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-25 07:33:57 -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._volume_aabb = None
|
||||||
|
|
||||||
self._raft_thickness = 0.0
|
self._raft_thickness = 0.0
|
||||||
|
self._extra_z_clearance = 0.0
|
||||||
self._adhesion_type = None
|
self._adhesion_type = None
|
||||||
self._platform = Platform(self)
|
self._platform = Platform(self)
|
||||||
|
|
||||||
|
@ -347,7 +348,7 @@ class BuildVolume(SceneNode):
|
||||||
|
|
||||||
self._volume_aabb = AxisAlignedBox(
|
self._volume_aabb = AxisAlignedBox(
|
||||||
minimum = Vector(min_w, min_h - 1.0, min_d),
|
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()
|
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.
|
# The +1 and -1 is added as there is always a bit of extra room required to work properly.
|
||||||
scale_to_max_bounds = AxisAlignedBox(
|
scale_to_max_bounds = AxisAlignedBox(
|
||||||
minimum = Vector(min_w + bed_adhesion_size + 1, min_h, min_d + disallowed_area_size - bed_adhesion_size + 1),
|
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
|
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.setPosition(Vector(0, -self._raft_thickness, 0), SceneNode.TransformSpace.World)
|
||||||
self.raftThicknessChanged.emit()
|
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
|
## Update the build volume visualization
|
||||||
def _onStackChanged(self):
|
def _onStackChanged(self):
|
||||||
if self._global_container_stack:
|
if self._global_container_stack:
|
||||||
|
@ -450,6 +466,10 @@ class BuildVolume(SceneNode):
|
||||||
self._updateRaftThickness()
|
self._updateRaftThickness()
|
||||||
rebuild_me = True
|
rebuild_me = True
|
||||||
|
|
||||||
|
if setting_key in self._extra_z_settings:
|
||||||
|
self._updateExtraZClearance()
|
||||||
|
rebuild_me = True
|
||||||
|
|
||||||
if rebuild_me:
|
if rebuild_me:
|
||||||
self.rebuild()
|
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"]
|
_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"]
|
_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"]
|
_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"]
|
_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"]
|
_ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue