Browse Source

Better handling of prime tower base with raft

CURA-10783
Erwan MATHIEU 1 year ago
parent
commit
acb0406e8e
2 changed files with 7 additions and 7 deletions
  1. 2 1
      cura/BuildVolume.py
  2. 5 6
      resources/definitions/fdmprinter.def.json

+ 2 - 1
cura/BuildVolume.py

@@ -863,6 +863,7 @@ class BuildVolume(SceneNode):
             prime_tower_brim_enable = self._global_container_stack.getProperty("prime_tower_brim_enable", "value")
             prime_tower_base_size = self._global_container_stack.getProperty("prime_tower_base_size", "value")
             prime_tower_base_height = self._global_container_stack.getProperty("prime_tower_base_height", "value")
+            adhesion_type = self._global_container_stack.getProperty("adhesion_type", "value")
 
             if not self._global_container_stack.getProperty("machine_center_is_zero", "value"):
                 prime_tower_x = prime_tower_x - machine_width / 2 #Offset by half machine_width and _depth to put the origin in the front-left.
@@ -872,7 +873,7 @@ class BuildVolume(SceneNode):
             delta_x = -radius
             delta_y = -radius
 
-            if prime_tower_brim_enable and prime_tower_base_size > 0 and prime_tower_base_height > 0:
+            if prime_tower_base_size > 0 and ((prime_tower_brim_enable and prime_tower_base_height > 0) or adhesion_type == "raft"):
                 radius += prime_tower_base_size
 
             prime_tower_area = Polygon.approximatedCircle(radius, num_segments = 32)

+ 5 - 6
resources/definitions/fdmprinter.def.json

@@ -6673,23 +6673,22 @@
                 },
                 "prime_tower_brim_enable":
                 {
-                    "value": "resolveOrValue('adhesion_type') in ('skirt', 'brim', 'raft')",
                     "label": "Prime Tower Base",
                     "description": "Prime-towers might need the extra adhesion afforded by a brim or raft, even if the model doesn't.",
                     "type": "bool",
-                    "enabled": "resolveOrValue('prime_tower_enable') and (resolveOrValue('adhesion_type') not in ('none', 'raft'))",
+                    "enabled": "resolveOrValue('prime_tower_enable') and resolveOrValue('adhesion_type') != 'raft'",
                     "default_value": false,
                     "settable_per_mesh": false,
                     "settable_per_extruder": false
                 },
                 "prime_tower_base_size":
                 {
-                    "value": "resolveOrValue('brim_width')",
+                    "value": "resolveOrValue('raft_margin') if resolveOrValue('adhesion_type') == 'raft' else resolveOrValue('brim_width')",
                     "label": "Prime Tower Base Size",
                     "description": "The width of the prime tower base.",
                     "type": "float",
                     "unit": "mm",
-                    "enabled": "resolveOrValue('prime_tower_brim_enable')",
+                    "enabled": "resolveOrValue('prime_tower_enable') and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')",
                     "default_value": "resolveOrValue('brim_width')",
                     "minimum_value": "0",
                     "maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)",
@@ -6703,7 +6702,7 @@
                     "description": "The height of the prime tower base.",
                     "type": "float",
                     "unit": "mm",
-                    "enabled": "resolveOrValue('prime_tower_brim_enable')",
+                    "enabled": "resolveOrValue('prime_tower_enable') and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')",
                     "default_value": 0,
                     "minimum_value": "0",
                     "maximum_value": "machine_height",
@@ -6715,7 +6714,7 @@
                     "label": "Prime Tower Base Curve Magnitude",
                     "description": "The magnitude factor used for the curve of the prime tower foot.",
                     "type": "int",
-                    "enabled": "resolveOrValue('prime_tower_brim_enable')",
+                    "enabled": "resolveOrValue('prime_tower_enable') and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')",
                     "default_value": 4,
                     "minimum_value": "0",
                     "maximum_value": "10",