mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-19 20:29:10 +08:00
Merge pull request #1978 from Ultimaker/feature_sanding_horizontal
Horizontal Ironing
This commit is contained in:
commit
5647800aec
@ -1,4 +1,6 @@
|
||||
from UM.Math.Color import Color
|
||||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
# Cura is released under the terms of the AGPLv3 or higher.
|
||||
|
||||
from UM.Application import Application
|
||||
from typing import Any
|
||||
import numpy
|
||||
@ -16,8 +18,9 @@ class LayerPolygon:
|
||||
MoveCombingType = 8
|
||||
MoveRetractionType = 9
|
||||
SupportInterfaceType = 10
|
||||
__number_of_types = 11
|
||||
|
||||
__jump_map = numpy.logical_or(numpy.logical_or(numpy.arange(11) == NoneType, numpy.arange(11) == MoveCombingType), numpy.arange(11) == MoveRetractionType)
|
||||
__jump_map = numpy.logical_or(numpy.logical_or(numpy.arange(__number_of_types) == NoneType, numpy.arange(__number_of_types) == MoveCombingType), numpy.arange(__number_of_types) == MoveRetractionType)
|
||||
|
||||
## LayerPolygon, used in ProcessSlicedLayersJob
|
||||
# \param extruder
|
||||
@ -28,6 +31,9 @@ class LayerPolygon:
|
||||
def __init__(self, extruder, line_types, data, line_widths, line_thicknesses):
|
||||
self._extruder = extruder
|
||||
self._types = line_types
|
||||
for i in range(len(self._types)):
|
||||
if self._types[i] >= self.__number_of_types: #Got faulty line data from the engine.
|
||||
self._types[i] = self.NoneType
|
||||
self._data = data
|
||||
self._line_widths = line_widths
|
||||
self._line_thicknesses = line_thicknesses
|
||||
@ -39,8 +45,8 @@ class LayerPolygon:
|
||||
|
||||
self._jump_mask = self.__jump_map[self._types]
|
||||
self._jump_count = numpy.sum(self._jump_mask)
|
||||
self._mesh_line_count = len(self._types)-self._jump_count
|
||||
self._vertex_count = self._mesh_line_count + numpy.sum( self._types[1:] == self._types[:-1])
|
||||
self._mesh_line_count = len(self._types) - self._jump_count
|
||||
self._vertex_count = self._mesh_line_count + numpy.sum(self._types[1:] == self._types[:-1])
|
||||
|
||||
# Buffering the colors shouldn't be necessary as it is not
|
||||
# re-used and can save alot of memory usage.
|
||||
|
@ -1970,6 +1970,21 @@
|
||||
"limit_to_extruder": "top_bottom_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
"speed_ironing":
|
||||
{
|
||||
"label": "Ironing Speed",
|
||||
"description": "The speed at which to pass over the top surface.",
|
||||
"type": "float",
|
||||
"unit": "mm/s",
|
||||
"default_value": 20.0,
|
||||
"value": "speed_topbottom * 20 / 30",
|
||||
"minimum_value": "0.001",
|
||||
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
|
||||
"maximum_value_warning": "100",
|
||||
"enabled": "ironing_enabled",
|
||||
"limit_to_extruder": "top_bottom_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
"speed_support":
|
||||
{
|
||||
"label": "Support Speed",
|
||||
@ -2296,6 +2311,21 @@
|
||||
"limit_to_extruder": "top_bottom_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
"acceleration_ironing":
|
||||
{
|
||||
"label": "Ironing Acceleration",
|
||||
"description": "The acceleration with which ironing is performed.",
|
||||
"unit": "mm/s²",
|
||||
"type": "float",
|
||||
"minimum_value": "0.1",
|
||||
"minimum_value_warning": "100",
|
||||
"maximum_value_warning": "10000",
|
||||
"default_value": 3000,
|
||||
"value": "acceleration_topbottom",
|
||||
"enabled": "resolveOrValue('acceleration_enabled') and ironing_enabled",
|
||||
"limit_to_extruder": "top_bottom_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
"acceleration_support":
|
||||
{
|
||||
"label": "Support Acceleration",
|
||||
@ -2569,6 +2599,20 @@
|
||||
"limit_to_extruder": "top_bottom_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
"jerk_ironing":
|
||||
{
|
||||
"label": "Ironing Jerk",
|
||||
"description": "The maximum instantaneous velocity change while performing ironing.",
|
||||
"unit": "mm/s",
|
||||
"type": "float",
|
||||
"minimum_value": "0.1",
|
||||
"maximum_value_warning": "50",
|
||||
"default_value": 20,
|
||||
"value": "jerk_topbottom",
|
||||
"enabled": "resolveOrValue('jerk_enabled') and ironing_enabled",
|
||||
"limit_to_extruder": "top_bottom_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
"jerk_support":
|
||||
{
|
||||
"label": "Support Jerk",
|
||||
@ -5340,6 +5384,70 @@
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": false,
|
||||
"settable_per_meshgroup": false
|
||||
},
|
||||
"ironing_enabled":
|
||||
{
|
||||
"label": "Enable Ironing",
|
||||
"description": "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface.",
|
||||
"type": "bool",
|
||||
"default_value": false,
|
||||
"limit_to_extruder": "top_bottom_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
"ironing_pattern":
|
||||
{
|
||||
"label": "Ironing Pattern",
|
||||
"description": "The pattern to use for ironing top surfaces.",
|
||||
"type": "enum",
|
||||
"options":
|
||||
{
|
||||
"concentric": "Concentric",
|
||||
"zigzag": "Zig Zag"
|
||||
},
|
||||
"default_value": "zigzag",
|
||||
"enabled": "ironing_enabled",
|
||||
"limit_to_extruder": "top_bottom_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
"ironing_line_spacing":
|
||||
{
|
||||
"label": "Ironing Line Spacing",
|
||||
"description": "The distance between the lines of ironing.",
|
||||
"type": "float",
|
||||
"unit": "mm",
|
||||
"default_value": 0.1,
|
||||
"minimum_value": "0.001",
|
||||
"maximum_value_warning": "machine_nozzle_tip_outer_diameter",
|
||||
"enabled": "ironing_enabled",
|
||||
"limit_to_extruder": "top_bottom_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
"ironing_flow":
|
||||
{
|
||||
"label": "Ironing Flow",
|
||||
"description": "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface.",
|
||||
"type": "float",
|
||||
"unit": "%",
|
||||
"default_value": 10.0,
|
||||
"minimum_value": "0",
|
||||
"maximum_value_warning": "50",
|
||||
"enabled": "ironing_enabled",
|
||||
"limit_to_extruder": "top_bottom_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
"ironing_inset":
|
||||
{
|
||||
"label": "Ironing Inset",
|
||||
"description": "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print.",
|
||||
"type": "float",
|
||||
"unit": "mm",
|
||||
"default_value": 0.35,
|
||||
"value": "wall_line_width_0 / 2",
|
||||
"minimum_value_warning": "0",
|
||||
"maximum_value_warning": "wall_line_width_0",
|
||||
"enabled": "ironing_enabled",
|
||||
"limit_to_extruder": "top_bottom_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user