diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 922f23d30f..c9f162034b 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -737,12 +737,17 @@ class BuildVolume(SceneNode): prime_tower_x = prime_tower_x - machine_width / 2 #Offset by half machine_width and _depth to put the origin in the front-left. prime_tower_y = prime_tower_y + machine_depth / 2 - prime_tower_area = Polygon([ - [prime_tower_x - prime_tower_size, prime_tower_y - prime_tower_size], - [prime_tower_x, prime_tower_y - prime_tower_size], - [prime_tower_x, prime_tower_y], - [prime_tower_x - prime_tower_size, prime_tower_y], - ]) + if self._global_container_stack.getProperty("prime_tower_circular", "value"): + radius = prime_tower_size / 2 + prime_tower_area = Polygon.approximatedCircle(radius) + prime_tower_area = prime_tower_area.translate(prime_tower_x - radius, prime_tower_y - radius) + else: + prime_tower_area = Polygon([ + [prime_tower_x - prime_tower_size, prime_tower_y - prime_tower_size], + [prime_tower_x, prime_tower_y - prime_tower_size], + [prime_tower_x, prime_tower_y], + [prime_tower_x - prime_tower_size, prime_tower_y], + ]) prime_tower_area = prime_tower_area.getMinkowskiHull(Polygon.approximatedCircle(0)) for extruder in used_extruders: result[extruder.getId()].append(prime_tower_area) #The prime tower location is the same for each extruder, regardless of offset. diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index cd662248d9..2c4f7cc764 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4747,6 +4747,17 @@ "settable_per_mesh": false, "settable_per_extruder": false }, + "prime_tower_circular": + { + "label": "Circular Prime Tower", + "description": "Make the prime tower as a circular shape.", + "type": "bool", + "enabled": "resolveOrValue('prime_tower_enable')", + "default_value": true, + "resolve": "any(extruderValues('prime_tower_circular'))", + "settable_per_mesh": false, + "settable_per_extruder": false + }, "prime_tower_size": { "label": "Prime Tower Size",