Merge branch 'main' into PP-179-Allow-Breakaway-on-BB-core
Some checks failed
conan-package-resources / conan-package (push) Has been cancelled
conan-package / conan-package (push) Has been cancelled
printer-linter-format / Printer linter auto format (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
conan-package-resources / signal-curator (push) Has been cancelled

This commit is contained in:
Frederic Meeuwissen 2025-09-19 14:21:38 +02:00 committed by GitHub
commit a7958907da
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
610 changed files with 18224 additions and 798 deletions

View file

@ -37,6 +37,7 @@ class FormatMaps:
"abs-cf10": {"name": "ABS-CF", "guid": "495a0ce5-9daf-4a16-b7b2-06856d82394d"},
"abs-wss1": {"name": "ABS-R", "guid": "88c8919c-6a09-471a-b7b6-e801263d862d"},
"asa": {"name": "ASA", "guid": "f79bc612-21eb-482e-ad6c-87d75bdde066"},
"nylon": {"name": "Nylon", "guid": "9475b03d-fd19-48a2-b7b5-be1fb46abb02"},
"nylon12-cf": {"name": "Nylon 12 CF", "guid": "3c6f2877-71cc-4760-84e6-4b89ab243e3b"},
"nylon-cf": {"name": "Nylon CF", "guid": "17abb865-ca73-4ccd-aeda-38e294c9c60b"},
"pet": {"name": "PETG", "guid": "2d004bbd-d1bb-47f8-beac-b066702d5273"},

View file

@ -1,23 +1,24 @@
# Copyright (c) 2025 UltiMaker
# Cura is released under the terms of the LGPLv3 or higher.
import math
from enum import IntEnum
import numpy
from PyQt6.QtCore import Qt, QObject, pyqtEnum
from PyQt6.QtGui import QImage, QPainter, QColor, QPen
from PyQt6 import QtWidgets
from typing import cast, Dict, List, Optional, Tuple
from numpy import ndarray
from PyQt6.QtCore import Qt, QObject, pyqtEnum, QPointF
from PyQt6.QtGui import QImage, QPainter, QPen, QBrush, QPolygonF
from typing import cast, Optional, Tuple, List
from UM.Application import Application
from UM.Event import Event, MouseEvent, KeyEvent
from UM.Event import Event, MouseEvent
from UM.Job import Job
from UM.Logger import Logger
from UM.Math.AxisAlignedBox2D import AxisAlignedBox2D
from UM.Math.Polygon import Polygon
from UM.Math.Vector import Vector
from UM.Scene.Camera import Camera
from UM.Scene.SceneNode import SceneNode
from UM.Scene.Selection import Selection
from UM.Tool import Tool
from UM.View.GL.OpenGL import OpenGL
from cura.CuraApplication import CuraApplication
from cura.PickingPass import PickingPass
@ -58,28 +59,47 @@ class PaintTool(Tool):
self._mesh_transformed_cache = None
self._cache_dirty: bool = True
self._brush_size: int = 200
self._brush_size: int = 10
self._brush_color: str = "preferred"
self._brush_extruder: int = 0
self._brush_shape: PaintTool.Brush.Shape = PaintTool.Brush.Shape.CIRCLE
self._brush_pen: QPen = self._createBrushPen()
self._mouse_held: bool = False
self._last_text_coords: Optional[numpy.ndarray] = None
self._last_mouse_coords: Optional[Tuple[int, int]] = None
self._last_face_id: Optional[int] = None
self._last_world_coords: Optional[numpy.ndarray] = None
self._state: PaintTool.Paint.State = PaintTool.Paint.State.MULTIPLE_SELECTION
self._prepare_texture_job: Optional[PrepareTextureJob] = None
self.setExposedProperties("PaintType", "BrushSize", "BrushColor", "BrushShape", "State", "CanUndo", "CanRedo")
self.setExposedProperties("PaintType", "BrushSize", "BrushColor", "BrushShape", "BrushExtruder", "State", "CanUndo", "CanRedo")
self._controller.activeViewChanged.connect(self._updateIgnoreUnselectedObjects)
self._controller.activeToolChanged.connect(self._updateState)
self._camera: Optional[Camera] = None
self._cam_pos: numpy.ndarray = numpy.array([0.0, 0.0, 0.0])
self._cam_norm: numpy.ndarray = numpy.array([0.0, 0.0, 1.0])
self._cam_axis_q: numpy.ndarray = numpy.array([1.0, 0.0, 0.0])
self._cam_axis_r: numpy.ndarray = numpy.array([0.0, -1.0, 0.0])
def _updateCamera(self, *args) -> None:
if self._camera is None:
self._camera = Application.getInstance().getController().getScene().getActiveCamera()
self._camera.transformationChanged.connect(self._updateCamera)
self._cam_pos = self._camera.getPosition().getData()
cam_ray = self._camera.getRay(0, 0)
self._cam_norm = cam_ray.direction.getData()
self._cam_norm /= -numpy.linalg.norm(self._cam_norm)
axis_up = numpy.array([0.0, -1.0, 0.0]) if abs(self._cam_norm[1]) < abs(self._cam_norm[2]) else numpy.array([0.0, 0.0, 1.0])
self._cam_axis_q = numpy.cross(self._cam_norm, axis_up)
self._cam_axis_q /= numpy.linalg.norm(self._cam_axis_q)
self._cam_axis_r = numpy.cross(self._cam_axis_q, self._cam_norm)
self._cam_axis_r /= numpy.linalg.norm(self._cam_axis_r)
def _createBrushPen(self) -> QPen:
pen = QPen()
pen.setWidth(self._brush_size)
pen.setWidth(2)
pen.setColor(Qt.GlobalColor.white)
match self._brush_shape:
@ -87,29 +107,12 @@ class PaintTool(Tool):
pen.setCapStyle(Qt.PenCapStyle.SquareCap)
case PaintTool.Brush.Shape.CIRCLE:
pen.setCapStyle(Qt.PenCapStyle.RoundCap)
case _:
Logger.error(f"Unknown brush shape '{self._brush_shape}', painting may not work.")
return pen
def _createStrokeImage(self, x0: float, y0: float, x1: float, y1: float) -> Tuple[QImage, Tuple[int, int]]:
xdiff = int(x1 - x0)
ydiff = int(y1 - y0)
half_brush_size = self._brush_size // 2
start_x = int(min(x0, x1) - half_brush_size)
start_y = int(min(y0, y1) - half_brush_size)
stroke_image = QImage(abs(xdiff) + self._brush_size, abs(ydiff) + self._brush_size, QImage.Format.Format_RGB32)
stroke_image.fill(0)
painter = QPainter(stroke_image)
painter.setRenderHint(QPainter.RenderHint.Antialiasing, False)
painter.setPen(self._brush_pen)
if xdiff == 0 and ydiff == 0:
painter.drawPoint(int(x0 - start_x), int(y0 - start_y))
else:
painter.drawLine(int(x0 - start_x), int(y0 - start_y), int(x1 - start_x), int(y1 - start_y))
painter.end()
return stroke_image, (start_x, start_y)
def _createStrokeImage(self, polys: List[Polygon]) -> Tuple[QImage, Tuple[int, int]]:
return PaintTool._rasterizePolygons(polys, self._brush_pen, QBrush(self._brush_pen.color()))
def getPaintType(self) -> str:
return self._view.getPaintType()
@ -140,6 +143,14 @@ class PaintTool(Tool):
self._brush_color = brush_color
self.propertyChanged.emit()
def getBrushExtruder(self) -> int:
return self._brush_extruder
def setBrushExtruder(self, brush_extruder: int) -> None:
if brush_extruder != self._brush_extruder:
self._brush_extruder = brush_extruder
self.propertyChanged.emit()
def getBrushShape(self) -> int:
return self._brush_shape
@ -152,15 +163,15 @@ class PaintTool(Tool):
def getCanUndo(self) -> bool:
return self._view.canUndo()
def getCanRedo(self) -> bool:
return self._view.canRedo()
def getState(self) -> int:
return self._state
def _onCanUndoChanged(self):
self.propertyChanged.emit()
def getCanRedo(self) -> bool:
return self._view.canRedo()
def _onCanRedoChanged(self):
self.propertyChanged.emit()
@ -176,7 +187,7 @@ class PaintTool(Tool):
width, height = self._view.getUvTexDimensions()
clear_image = QImage(width, height, QImage.Format.Format_RGB32)
clear_image.fill(Qt.GlobalColor.white)
self._view.addStroke(clear_image, 0, 0, "none", False)
self._view.addStroke(clear_image, 0, 0, "none" if self.getPaintType() != "extruder" else "0", False)
self._updateScene()
@ -217,61 +228,127 @@ class PaintTool(Tool):
def _nodeTransformChanged(self, *args) -> None:
self._cache_dirty = True
def _getTexCoordsFromClick(self, node: SceneNode, x: float, y: float) -> Tuple[int, Optional[numpy.ndarray]]:
face_id = self._faces_selection_pass.getFaceIdAtPosition(x, y)
if face_id < 0 or face_id >= node.getMeshData().getFaceCount():
return face_id, None
@staticmethod
def _getBarycentricCoordinates(points: numpy.array, triangle: numpy.array) -> Optional[numpy.array]:
v0 = triangle[1] - triangle[0]
v1 = triangle[2] - triangle[0]
v2 = points - triangle[0]
pt = self._picking_pass.getPickedPosition(x, y).getData()
d00 = numpy.sum(v0 * v0, axis=0)
d01 = numpy.sum(v0 * v1, axis=0)
d11 = numpy.sum(v1 * v1, axis=0)
d20 = numpy.sum(v2 * v0, axis=1)
d21 = numpy.sum(v2 * v1, axis=1)
va, vb, vc = self._mesh_transformed_cache.getFaceNodes(face_id)
denominator = d00 * d11 - d01 ** 2
face_uv_coordinates = node.getMeshData().getFaceUvCoords(face_id)
if face_uv_coordinates is None:
return face_id, None
ta, tb, tc = face_uv_coordinates
if denominator < 1e-6: # Degenerate triangle
return None
# 'Weight' of each vertex that would produce point pt, so we can generate the texture coordinates from the uv ones of the vertices.
# See (also) https://mathworld.wolfram.com/BarycentricCoordinates.html
wa = PaintTool._get_intersect_ratio_via_pt(va, pt, vb, vc)
wb = PaintTool._get_intersect_ratio_via_pt(vb, pt, vc, va)
wc = PaintTool._get_intersect_ratio_via_pt(vc, pt, va, vb)
wt = wa + wb + wc
if wt == 0:
return face_id, None
wa /= wt
wb /= wt
wc /= wt
texcoords = wa * ta + wb * tb + wc * tc
return face_id, texcoords
v = (d11 * d20 - d01 * d21) / denominator
w = (d00 * d21 - d01 * d20) / denominator
u = 1 - v - w
def _iteratateSplitSubstroke(self, node, substrokes,
info_a: Tuple[Tuple[float, float], Tuple[int, Optional[numpy.ndarray]]],
info_b: Tuple[Tuple[float, float], Tuple[int, Optional[numpy.ndarray]]]) -> None:
click_a, (face_a, texcoords_a) = info_a
click_b, (face_b, texcoords_b) = info_b
return numpy.column_stack((u, v, w))
if (abs(click_a[0] - click_b[0]) < 0.0001 and abs(click_a[1] - click_b[1]) < 0.0001) or (face_a < 0 and face_b < 0):
return
if face_b < 0 or face_a == face_b:
substrokes.append((self._last_text_coords, texcoords_a))
return
if face_a < 0:
substrokes.append((self._last_text_coords, texcoords_b))
return
def _getStrokePolygon(self, stroke_a: numpy.ndarray, stroke_b: numpy.ndarray) -> Polygon:
shape = None
side = self._brush_size
match self._brush_shape:
case PaintTool.Brush.Shape.SQUARE:
shape = Polygon([(side, side), (-side, side), (-side, -side), (side, -side)])
case PaintTool.Brush.Shape.CIRCLE:
shape = Polygon.approximatedCircle(side, 32)
case _:
Logger.error(f"Unknown brush shape '{self._brush_shape}'.")
if shape is None:
return Polygon()
return shape.translate(stroke_a[0], stroke_a[1]).unionConvexHulls(shape.translate(stroke_b[0], stroke_b[1]))
mouse_mid = (click_a[0] + click_b[0]) / 2.0, (click_a[1] + click_b[1]) / 2.0
face_mid, texcoords_mid = self._getTexCoordsFromClick(node, mouse_mid[0], mouse_mid[1])
mid_struct = (mouse_mid, (face_mid, texcoords_mid))
if face_mid == face_a:
substrokes.append((texcoords_a, texcoords_mid))
self._iteratateSplitSubstroke(node, substrokes, mid_struct, info_b)
elif face_mid == face_b:
substrokes.append((texcoords_mid, texcoords_b))
self._iteratateSplitSubstroke(node, substrokes, info_a, mid_struct)
else:
self._iteratateSplitSubstroke(node, substrokes, mid_struct, info_b)
self._iteratateSplitSubstroke(node, substrokes, info_a, mid_struct)
@staticmethod
def _rasterizePolygons(polygons: List[Polygon], pen: QPen, brush: QBrush) -> Tuple[QImage, Tuple[int, int]]:
if not polygons:
return QImage(), (0, 0)
bounding_box = polygons[0].getBoundingBox()
for polygon in polygons[1:]:
bounding_box += polygon.getBoundingBox()
bounding_box = AxisAlignedBox2D(numpy.array([math.floor(bounding_box.left), math.floor(bounding_box.top)]),
numpy.array([math.ceil(bounding_box.right), math.ceil(bounding_box.bottom)]))
# Use RGB32 which is more optimized for drawing to
image = QImage(int(bounding_box.width), int(bounding_box.height), QImage.Format.Format_RGB32)
image.fill(0)
painter = QPainter(image)
painter.translate(-bounding_box.left, -bounding_box.bottom)
painter.setRenderHint(QPainter.RenderHint.Antialiasing, False)
painter.setPen(pen)
painter.setBrush(brush)
for polygon in polygons:
painter.drawPolygon(QPolygonF([QPointF(point[0], point[1]) for point in polygon]))
painter.end()
return image, (int(bounding_box.left), int(bounding_box.bottom))
# NOTE: Currently, it's unclear how well this would work for non-convex brush-shapes.
def _getUvAreasForStroke(self, world_coords_a: numpy.ndarray, world_coords_b: numpy.ndarray) -> List[Polygon]:
""" Fetches all texture-coordinate areas within the provided stroke on the mesh.
Calculates intersections of the stroke with the surface of the geometry and maps them to UV-space polygons.
:param face_id_a: ID of the face where the stroke starts.
:param face_id_b: ID of the face where the stroke ends.
:param world_coords_a: 3D ('world') coordinates corresponding to the starting stroke point.
:param world_coords_b: 3D ('world') coordinates corresponding to the ending stroke point.
:return: A list of UV-mapped polygons representing areas intersected by the stroke on the node's mesh surface.
"""
def get_projected_on_plane(pt: numpy.ndarray) -> numpy.ndarray:
return numpy.array([*self._camera.projectToViewport(Vector(*pt))], dtype=numpy.float32)
def get_projected_on_viewport_image(pt: numpy) -> numpy.ndarray:
return numpy.array([pt[0] + self._camera.getViewportWidth() / 2.0,
self._camera.getViewportHeight() - (pt[1] + self._camera.getViewportHeight() / 2.0)],
dtype=numpy.float32)
stroke_poly = self._getStrokePolygon(get_projected_on_plane(world_coords_a), get_projected_on_plane(world_coords_b))
stroke_poly_viewport = Polygon([get_projected_on_viewport_image(point) for point in stroke_poly])
faces_image, (faces_x, faces_y) = PaintTool._rasterizePolygons([stroke_poly_viewport],
QPen(Qt.PenStyle.NoPen),
QBrush(Qt.GlobalColor.white))
faces = self._faces_selection_pass.getFacesIdsUnderMask(faces_image, faces_x, faces_y)
texture_dimensions = numpy.array(list(self._view.getUvTexDimensions()))
res = []
for face in faces:
_, fnorm = self._mesh_transformed_cache.getFacePlane(face)
if numpy.dot(fnorm, self._cam_norm) < 0: # <- facing away from the viewer
continue
va, vb, vc = self._mesh_transformed_cache.getFaceNodes(face)
stroke_tri = Polygon([
get_projected_on_plane(va),
get_projected_on_plane(vb),
get_projected_on_plane(vc)])
face_uv_coordinates = self._node_cache.getMeshData().getFaceUvCoords(face)
if face_uv_coordinates is None:
continue
ta, tb, tc = face_uv_coordinates
original_uv_poly = numpy.array([ta, tb, tc])
uv_area = stroke_poly.intersection(stroke_tri)
if uv_area.isValid():
uv_area_barycentric = PaintTool._getBarycentricCoordinates(uv_area.getPoints(), stroke_tri.getPoints())
if uv_area_barycentric is not None:
res.append(Polygon((uv_area_barycentric @ original_uv_poly) * texture_dimensions))
return res
def event(self, event: Event) -> bool:
"""Handle mouse and keyboard events.
@ -282,7 +359,6 @@ class PaintTool(Tool):
"""
super().event(event)
controller = Application.getInstance().getController()
node = Selection.getSelectedObject(0)
if node is None:
return False
@ -301,18 +377,19 @@ class PaintTool(Tool):
if MouseEvent.LeftButton not in cast(MouseEvent, event).buttons:
return False
self._mouse_held = False
self._last_text_coords = None
self._last_mouse_coords = None
self._last_face_id = None
self._last_world_coords = None
return True
is_moved = event.type == Event.MouseMoveEvent
is_pressed = event.type == Event.MousePressEvent
if (is_moved or is_pressed) and self._controller.getToolsEnabled():
if is_moved and not self._mouse_held:
return False
mouse_evt = cast(MouseEvent, event)
if not self._picking_pass:
self._picking_pass = CuraApplication.getInstance().getRenderer().getRenderPass("picking_selected")
if not self._picking_pass:
return False
if is_pressed:
if MouseEvent.LeftButton not in mouse_evt.buttons:
return False
@ -324,13 +401,9 @@ class PaintTool(Tool):
if not self._faces_selection_pass:
return False
if not self._picking_pass:
self._picking_pass = CuraApplication.getInstance().getRenderer().getRenderPass("picking_selected")
if not self._picking_pass:
return False
camera = self._controller.getScene().getActiveCamera()
if not camera:
if self._camera is None:
self._updateCamera()
if self._camera is None:
return False
if node != self._node_cache:
@ -345,35 +418,37 @@ class PaintTool(Tool):
if not self._mesh_transformed_cache:
return False
face_id, texcoords = self._getTexCoordsFromClick(node, mouse_evt.x, mouse_evt.y)
if texcoords is None:
face_id = self._faces_selection_pass.getFaceIdAtPosition(mouse_evt.x, mouse_evt.y)
if face_id < 0 or face_id >= self._mesh_transformed_cache.getFaceCount():
if self._view.clearCursorStroke():
self._updateScene(node)
return True
return False
if self._last_text_coords is None:
self._last_text_coords = texcoords
self._last_mouse_coords = (mouse_evt.x, mouse_evt.y)
self._last_face_id = face_id
substrokes = []
if face_id == self._last_face_id:
substrokes.append((self._last_text_coords, texcoords))
else:
self._iteratateSplitSubstroke(node, substrokes,
(self._last_mouse_coords, (self._last_face_id, self._last_text_coords)),
((mouse_evt.x, mouse_evt.y), (face_id, texcoords)))
world_coords_vec = self._picking_pass.getPickedPosition(mouse_evt.x, mouse_evt.y)
world_coords = world_coords_vec.getData()
if self._last_world_coords is None:
self._last_world_coords = world_coords
w, h = self._view.getUvTexDimensions()
for start_coords, end_coords in substrokes:
sub_image, (start_x, start_y) = self._createStrokeImage(
start_coords[0] * w,
start_coords[1] * h,
end_coords[0] * w,
end_coords[1] * h
)
self._view.addStroke(sub_image, start_x, start_y, self._brush_color, is_moved)
try:
brush_color = self._brush_color if self.getPaintType() != "extruder" else str(self._brush_extruder)
uv_areas_cursor = self._getUvAreasForStroke(world_coords, world_coords)
if len(uv_areas_cursor) > 0:
cursor_stroke_img, (start_x, start_y) = self._createStrokeImage(uv_areas_cursor)
self._view.setCursorStroke(cursor_stroke_img, start_x, start_y, brush_color)
else:
self._view.clearCursorStroke()
self._last_text_coords = texcoords
self._last_mouse_coords = (mouse_evt.x, mouse_evt.y)
self._last_face_id = face_id
if self._mouse_held:
uv_areas = self._getUvAreasForStroke(self._last_world_coords, world_coords)
if len(uv_areas) == 0:
return False
stroke_img, (start_x, start_y) = self._createStrokeImage(uv_areas)
self._view.addStroke(stroke_img, start_x, start_y, brush_color, is_moved)
except:
Logger.logException("e", "Error when adding paint stroke")
self._last_world_coords = world_coords
self._updateScene(node)
return True
@ -421,4 +496,4 @@ class PaintTool(Tool):
def _updateIgnoreUnselectedObjects(self):
ignore_unselected_objects = self._controller.getActiveView().name == "PaintTool"
CuraApplication.getInstance().getRenderer().getRenderPass("selection").setIgnoreUnselectedObjects(ignore_unselected_objects)
CuraApplication.getInstance().getRenderer().getRenderPass("selection_faces").setIgnoreUnselectedObjects(ignore_unselected_objects)
CuraApplication.getInstance().getRenderer().getRenderPass("selection_faces").setIgnoreUnselectedObjects(ignore_unselected_objects)

View file

@ -11,6 +11,7 @@ import Cura 1.0 as Cura
Item
{
id: base
width: childrenRect.width
height: childrenRect.height
UM.I18nCatalog { id: catalog; name: "cura"}
@ -57,6 +58,14 @@ Item
mode: "support"
visible: false
}
PaintModeButton
{
text: catalog.i18nc("@action:button", "Material")
icon: "Extruder"
tooltipText: catalog.i18nc("@tooltip", "Paint on model to select the material to be used")
mode: "extruder"
}
}
//Line between the sections.
@ -70,6 +79,7 @@ Item
RowLayout
{
id: rowBrushColor
visible: !rowExtruder.visible
UM.Label
{
@ -116,6 +126,30 @@ Item
}
}
RowLayout
{
id: rowExtruder
visible: UM.Controller.properties.getValue("PaintType") === "extruder"
UM.Label
{
text: catalog.i18nc("@label", "Mark as")
}
Repeater
{
id: repeaterExtruders
model: CuraApplication.getExtrudersModel()
delegate: Cura.ExtruderButton
{
extruder: model
checked: UM.Controller.properties.getValue("BrushExtruder") === model.index
onClicked: UM.Controller.setProperty("BrushExtruder", model.index)
}
}
}
RowLayout
{
id: rowBrushShape
@ -163,8 +197,8 @@ Item
width: parent.width
indicatorVisible: false
from: 10
to: 1000
from: 1
to: 100
value: UM.Controller.properties.getValue("BrushSize")
onPressedChanged: function(pressed)

View file

@ -2,14 +2,15 @@
# Cura is released under the terms of the LGPLv3 or higher.
import os
from PyQt6.QtCore import QRect, pyqtSignal
from typing import Optional, Dict
from PyQt6.QtGui import QImage, QUndoStack
from PyQt6.QtCore import QRect, pyqtSignal
from PyQt6.QtGui import QImage, QUndoStack, QPainter, QColor
from typing import Optional, List, Tuple, Dict
from cura.CuraApplication import CuraApplication
from cura.BuildVolume import BuildVolume
from cura.CuraView import CuraView
from cura.Machines.Models.ExtrudersModel import ExtrudersModel
from UM.PluginRegistry import PluginRegistry
from UM.View.GL.ShaderProgram import ShaderProgram
from UM.View.GL.Texture import Texture
@ -36,6 +37,8 @@ class PaintView(CuraView):
super().__init__(use_empty_menu_placeholder = True)
self._paint_shader: Optional[ShaderProgram] = None
self._current_paint_texture: Optional[Texture] = None
self._previous_paint_texture_stroke: Optional[QRect] = None
self._cursor_texture: Optional[Texture] = None
self._current_bits_ranges: tuple[int, int] = (0, 0)
self._current_paint_type = ""
self._paint_modes: Dict[str, Dict[str, "PaintView.PaintType"]] = {}
@ -49,6 +52,8 @@ class PaintView(CuraView):
application.engineCreatedSignal.connect(self._makePaintModes)
self._scene = application.getController().getScene()
self._extruders_model: Optional[ExtrudersModel] = None
canUndoChanged = pyqtSignal(bool)
canRedoChanged = pyqtSignal(bool)
@ -59,22 +64,98 @@ class PaintView(CuraView):
return self._paint_undo_stack.canRedo()
def _makePaintModes(self):
theme = CuraApplication.getInstance().getTheme()
application = CuraApplication.getInstance()
self._extruders_model = application.getExtrudersModel()
self._extruders_model.modelChanged.connect(self._onExtrudersChanged)
theme = application.getTheme()
usual_types = {"none": self.PaintType(Color(*theme.getColor("paint_normal_area").getRgb()), 0),
"preferred": self.PaintType(Color(*theme.getColor("paint_preferred_area").getRgb()), 1),
"avoid": self.PaintType(Color(*theme.getColor("paint_avoid_area").getRgb()), 2)}
self._paint_modes = {
"seam": usual_types,
"support": usual_types,
"extruder": self._makeExtrudersColors(),
}
self._current_paint_type = "seam"
def _makeExtrudersColors(self) -> Dict[str, "PaintView.PaintType"]:
extruders_colors: Dict[str, "PaintView.PaintType"] = {}
for extruder_item in self._extruders_model.items:
if "color" in extruder_item:
material_color = extruder_item["color"]
else:
material_color = self._extruders_model.defaultColors[0]
index = extruder_item["index"]
extruders_colors[str(index)] = self.PaintType(Color(*QColor(material_color).getRgb()), index)
return extruders_colors
def _onExtrudersChanged(self) -> None:
if self._paint_modes is None:
return
self._paint_modes["extruder"] = self._makeExtrudersColors()
controller = CuraApplication.getInstance().getController()
if controller.getActiveView() != self:
return
selected_objects = Selection.getAllSelectedObjects()
if len(selected_objects) != 1:
return
controller.getScene().sceneChanged.emit(selected_objects[0])
def _checkSetup(self):
if not self._paint_shader:
shader_filename = os.path.join(PluginRegistry.getInstance().getPluginPath("PaintTool"), "paint.shader")
self._paint_shader = OpenGL.getInstance().createShaderProgram(shader_filename)
def setCursorStroke(self, stroke_mask: QImage, start_x: int, start_y: int, brush_color: str):
if self._cursor_texture is None or self._cursor_texture.getImage() is None:
return
self.clearCursorStroke()
stroke_image = stroke_mask.copy()
alpha_mask = stroke_image.convertedTo(QImage.Format.Format_Mono)
stroke_image.setAlphaChannel(alpha_mask)
painter = QPainter(stroke_image)
painter.setCompositionMode(QPainter.CompositionMode.CompositionMode_SourceAtop)
display_color = self._paint_modes[self._current_paint_type][brush_color].display_color
paint_color = QColor(*[int(color_part * 255) for color_part in [display_color.r, display_color.g, display_color.b]])
paint_color.setAlpha(255)
painter.fillRect(0, 0, stroke_mask.width(), stroke_mask.height(), paint_color)
painter.end()
self._cursor_texture.setSubImage(stroke_image, start_x, start_y)
self._previous_paint_texture_stroke = QRect(start_x, start_y, stroke_mask.width(), stroke_mask.height())
def clearCursorStroke(self) -> bool:
if (self._previous_paint_texture_stroke is None or
self._cursor_texture is None or self._cursor_texture.getImage() is None):
return False
clear_image = QImage(self._previous_paint_texture_stroke.width(),
self._previous_paint_texture_stroke.height(),
QImage.Format.Format_ARGB32)
clear_image.fill(0)
self._cursor_texture.setSubImage(clear_image,
self._previous_paint_texture_stroke.x(),
self._previous_paint_texture_stroke.y())
self._previous_paint_texture_stroke = None
return True
def addStroke(self, stroke_mask: QImage, start_x: int, start_y: int, brush_color: str, merge_with_previous: bool) -> None:
if self._current_paint_texture is None or self._current_paint_texture.getImage() is None:
return
@ -111,7 +192,7 @@ class PaintView(CuraView):
def redoStroke(self) -> None:
self._paint_undo_stack.redo()
def getUvTexDimensions(self):
def getUvTexDimensions(self) -> Tuple[int, int]:
if self._current_paint_texture is not None:
return self._current_paint_texture.getWidth(), self._current_paint_texture.getHeight()
return 0, 0
@ -121,6 +202,7 @@ class PaintView(CuraView):
def setPaintType(self, paint_type: str) -> None:
self._current_paint_type = paint_type
self._prepareDataMapping()
def _prepareDataMapping(self):
node = Selection.getAllSelectedObjects()[0]
@ -162,8 +244,17 @@ class PaintView(CuraView):
for node in Selection.getAllSelectedObjects():
paint_batch.addItem(node.getWorldTransformation(copy=False), node.getMeshData(), normal_transformation=node.getCachedNormalMatrix())
self._current_paint_texture = node.callDecoration("getPaintTexture")
self._paint_shader.setTexture(0, self._current_paint_texture)
paint_texture = node.callDecoration("getPaintTexture")
if paint_texture != self._current_paint_texture:
self._current_paint_texture = paint_texture
self._paint_shader.setTexture(0, self._current_paint_texture)
self._cursor_texture = OpenGL.getInstance().createTexture(paint_texture.getWidth(), paint_texture.getHeight())
image = QImage(paint_texture.getWidth(), paint_texture.getHeight(), QImage.Format.Format_ARGB32)
image.fill(0)
self._cursor_texture.setImage(image)
self._paint_shader.setTexture(1, self._cursor_texture)
self._previous_paint_texture_stroke = None
self._paint_shader.setUniformValue("u_bitsRangesStart", self._current_bits_ranges[0])
self._paint_shader.setUniformValue("u_bitsRangesEnd", self._current_bits_ranges[1])

View file

@ -30,6 +30,7 @@ fragment =
uniform highp vec3 u_lightPosition;
uniform highp vec3 u_viewPosition;
uniform sampler2D u_texture;
uniform sampler2D u_texture_cursor;
uniform mediump int u_bitsRangesStart;
uniform mediump int u_bitsRangesEnd;
uniform mediump vec3 u_renderColors[16];
@ -42,24 +43,33 @@ fragment =
{
mediump vec4 final_color = vec4(0.0);
/* Ambient Component */
final_color += u_ambientColor;
highp vec3 normal = normalize(v_normal);
highp vec3 light_dir = normalize(u_lightPosition - v_vertex);
/* Diffuse Component */
ivec4 texture = ivec4(texture(u_texture, v_uvs) * 255.0);
uint color_index = (texture.r << 16) | (texture.g << 8) | texture.b;
color_index = (color_index << (32 - 1 - u_bitsRangesEnd)) >> 32 - 1 - (u_bitsRangesEnd - u_bitsRangesStart);
vec4 cursor_color = texture(u_texture_cursor, v_uvs);
if (cursor_color.a > 0.5)
{
/* Cursor */
final_color.rgb = cursor_color.rgb;
highp float n_dot_l = mix(0.7, 1.0, dot(normal, light_dir));
final_color = (n_dot_l * final_color);
}
else
{
final_color += u_ambientColor;
vec4 diffuse_color = vec4(u_renderColors[color_index] / 255.0, 1.0);
highp float n_dot_l = mix(0.3, 0.7, dot(normal, light_dir));
final_color += (n_dot_l * diffuse_color);
ivec4 texture_color = ivec4(texture(u_texture, v_uvs) * 255.0);
uint color_index = (texture_color.r << 16) | (texture_color.g << 8) | texture_color.b;
color_index = (color_index << (32 - 1 - u_bitsRangesEnd)) >> 32 - 1 - (u_bitsRangesEnd - u_bitsRangesStart);
vec4 diffuse_color = vec4(u_renderColors[color_index] / 255.0, 1.0);
highp float n_dot_l = mix(0.3, 0.7, dot(normal, light_dir));
final_color += (n_dot_l * diffuse_color);
}
/* Output */
final_color.a = 1.0;
frag_color = final_color;
gl_FragColor = final_color;
}
vertex41core =
@ -95,6 +105,7 @@ fragment41core =
uniform highp vec3 u_lightPosition;
uniform highp vec3 u_viewPosition;
uniform sampler2D u_texture;
uniform sampler2D u_texture_cursor;
uniform mediump int u_bitsRangesStart;
uniform mediump int u_bitsRangesEnd;
uniform mediump vec3 u_renderColors[16];
@ -108,29 +119,39 @@ fragment41core =
{
mediump vec4 final_color = vec4(0.0);
/* Ambient Component */
final_color += u_ambientColor;
highp vec3 normal = normalize(v_normal);
highp vec3 light_dir = normalize(u_lightPosition - v_vertex);
/* Diffuse Component */
ivec4 texture = ivec4(texture(u_texture, v_uvs) * 255.0);
uint color_index = (texture.r << 16) | (texture.g << 8) | texture.b;
color_index = (color_index << (32 - 1 - u_bitsRangesEnd)) >> 32 - 1 - (u_bitsRangesEnd - u_bitsRangesStart);
vec4 cursor_color = texture(u_texture_cursor, v_uvs);
if (cursor_color.a > 0.5)
{
/* Cursor */
final_color.rgb = cursor_color.rgb;
highp float n_dot_l = mix(0.7, 1.0, dot(normal, light_dir));
final_color = (n_dot_l * final_color);
}
else
{
final_color += u_ambientColor;
vec4 diffuse_color = vec4(u_renderColors[color_index] / 255.0, 1.0);
highp float n_dot_l = mix(0.3, 0.7, dot(normal, light_dir));
final_color += (n_dot_l * diffuse_color);
ivec4 texture_color = ivec4(texture(u_texture, v_uvs) * 255.0);
uint color_index = (texture_color.r << 16) | (texture_color.g << 8) | texture_color.b;
color_index = (color_index << (32 - 1 - u_bitsRangesEnd)) >> 32 - 1 - (u_bitsRangesEnd - u_bitsRangesStart);
vec4 diffuse_color = vec4(u_renderColors[color_index] / 255.0, 1.0);
highp float n_dot_l = mix(0.3, 0.7, dot(normal, light_dir));
final_color += (n_dot_l * diffuse_color);
}
/* Output */
final_color.a = 1.0;
frag_color = final_color;
}
[defaults]
u_ambientColor = [0.3, 0.3, 0.3, 1.0]
u_texture = 0
u_texture_cursor = 1
[bindings]
u_modelMatrix = model_matrix

View file

@ -97,8 +97,6 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
CuraApplication.getInstance().getOnExitCallbackManager().addCallback(self._checkActivePrintingUponAppExit)
CuraApplication.getInstance().getPreferences().addPreference("usb_printing/enabled", False)
# This is a callback function that checks if there is any printing in progress via USB when the application tries
# to exit. If so, it will show a confirmation before
def _checkActivePrintingUponAppExit(self) -> None:
@ -146,8 +144,6 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
CuraApplication.getInstance().getController().setActiveStage("MonitorStage")
CuraApplication.getInstance().getPreferences().setValue("usb_printing/enabled", True)
#Find the g-code to print.
gcode_textio = StringIO()
gcode_writer = cast(MeshWriter, PluginRegistry.getInstance().getPluginObject("GCodeWriter"))

View file

@ -20,6 +20,7 @@ from . import USBPrinterOutputDevice
i18n_catalog = i18nCatalog("cura")
USB_PRINT_PREFERENCE_KEY = "usb_printing/enabled"
@signalemitter
class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin):
@ -43,7 +44,9 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin):
self._update_thread = threading.Thread(target = self._updateThread)
self._update_thread.daemon = True
self._check_updates = True
preferences = self._application.getPreferences()
preferences.addPreference(USB_PRINT_PREFERENCE_KEY, False)
self._check_updates = preferences.getValue(USB_PRINT_PREFERENCE_KEY)
self._application.applicationShuttingDown.connect(self.stop)
# Because the model needs to be created in the same thread as the QMLEngine, we use a signal.
@ -58,7 +61,7 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin):
device.resetDeviceSettings()
def start(self):
self._check_updates = True
self._check_updates = self._application.getPreferences().getValue(USB_PRINT_PREFERENCE_KEY)
self._update_thread.start()
def stop(self, store_data: bool = True):

View file

@ -1427,11 +1427,10 @@
"z_seam_corner":
{
"label": "Seam Corner Preference",
"description": "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate.",
"description": "Control how corners on the model outline influence the position of the seam. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate.",
"type": "enum",
"options":
{
"z_seam_corner_none": "None",
"z_seam_corner_inner": "Hide Seam",
"z_seam_corner_outer": "Expose Seam",
"z_seam_corner_any": "Hide or Expose Seam",
@ -7914,6 +7913,35 @@
"resolve": "max(extruderValues('interlocking_boundary_avoidance'))",
"settable_per_mesh": false,
"settable_per_extruder": false
},
"multi_material_paint_resolution":
{
"label": "Multi-material Precision",
"description": "The precision of the details when generating multi-material shapes based on painting data. A lower precision will provide more details, but increase the slicing time and memory.",
"unit": "mm",
"type": "float",
"enabled": "extruders_enabled_count > 1",
"default_value": 0.2,
"value": "min(line_width / 2, layer_height)",
"minimum_value": "0.05",
"maximum_value": "5",
"maximum_value_warning": "line_width * 2",
"settable_per_mesh": false,
"settable_per_extruder": false
},
"multi_material_paint_deepness":
{
"label": "Multi-material Deepness",
"description": "The deepness of the painted details inside the model. A higher deepness will provide a better interlocking, but increase slicing time and memory. Set a very high value to go as deep as possible. The actually calculated deepness may vary.",
"unit": "mm",
"type": "float",
"enabled": "extruders_enabled_count > 1",
"default_value": 4,
"value": "line_width * 10",
"minimum_value": "line_width",
"minimum_value_warning": "line_width * 2",
"settable_per_mesh": false,
"settable_per_extruder": false
}
}
},
@ -8807,7 +8835,7 @@
"value": "line_width + support_xy_distance + 1.0",
"enabled": "bridge_settings_enabled",
"settable_per_mesh": true,
"settable_per_extruder": false
"settable_per_extruder": true
},
"bridge_skin_support_threshold":
{

View file

@ -8,7 +8,7 @@
"author": "Ultimaker",
"manufacturer": "Ultimaker B.V.",
"file_formats": "application/x-makerbot-replicator_plus",
"platform": "ultimaker_replicator_plus_platform.3MF",
"platform": "ultimaker_replicator_plus_platform.obj",
"exclude_materials": [
"dsm_",
"Essentium_",
@ -77,9 +77,116 @@
"acceleration_enabled":
{
"enabled": false,
"value": false
"value": true
},
"acceleration_infill":
{
"enabled": false,
"value": "acceleration_print"
},
"acceleration_layer_0":
{
"enabled": false,
"value": "acceleration_print"
},
"acceleration_prime_tower":
{
"enabled": false,
"value": "acceleration_print"
},
"acceleration_print":
{
"enabled": false,
"value": 800
},
"acceleration_print_layer_0":
{
"enabled": false,
"value": "acceleration_print"
},
"acceleration_roofing":
{
"enabled": false,
"value": "acceleration_print"
},
"acceleration_skirt_brim":
{
"enabled": false,
"value": "acceleration_print"
},
"acceleration_support":
{
"enabled": false,
"value": "acceleration_print"
},
"acceleration_support_bottom":
{
"enabled": false,
"value": "acceleration_support_interface"
},
"acceleration_support_infill":
{
"enabled": false,
"value": "acceleration_support"
},
"acceleration_support_interface":
{
"enabled": false,
"value": "acceleration_support"
},
"acceleration_support_roof":
{
"enabled": false,
"value": "acceleration_support_interface"
},
"acceleration_topbottom":
{
"enabled": false,
"value": "acceleration_print"
},
"acceleration_travel":
{
"enabled": false,
"value": 5000
},
"acceleration_travel_enabled":
{
"enabled": false,
"value": true
},
"acceleration_travel_layer_0":
{
"enabled": false,
"value": "acceleration_travel"
},
"acceleration_wall":
{
"enabled": false,
"value": "acceleration_print"
},
"acceleration_wall_0":
{
"enabled": false,
"value": "acceleration_wall"
},
"acceleration_wall_0_roofing":
{
"enabled": false,
"value": "acceleration_wall"
},
"acceleration_wall_x":
{
"enabled": false,
"value": "acceleration_wall"
},
"acceleration_wall_x_roofing":
{
"enabled": false,
"value": "acceleration_wall"
},
"adhesion_type": { "value": "'raft'" },
"bridge_skin_speed": { "value": 40 },
"bridge_wall_speed": { "value": 40 },
"brim_width": { "value": "3" },
"cool_during_extruder_switch":
{
@ -89,7 +196,7 @@
"cool_fan_full_at_height": { "value": "layer_height + layer_height_0" },
"cool_fan_speed": { "value": 100 },
"cool_fan_speed_0": { "value": 0 },
"cool_min_layer_time": { "value": 5 },
"cool_min_layer_time": { "value": 7 },
"extruder_prime_pos_abs": { "default_value": true },
"fill_outline_gaps": { "value": true },
"gantry_height": { "value": "60" },
@ -110,7 +217,112 @@
"jerk_enabled":
{
"enabled": false,
"value": false
"value": true
},
"jerk_infill":
{
"enabled": false,
"value": "jerk_print"
},
"jerk_layer_0":
{
"enabled": false,
"value": "jerk_print"
},
"jerk_prime_tower":
{
"enabled": false,
"value": "jerk_print"
},
"jerk_print":
{
"enabled": false,
"value": 4
},
"jerk_print_layer_0":
{
"enabled": false,
"value": "jerk_print"
},
"jerk_roofing":
{
"enabled": false,
"value": "jerk_print"
},
"jerk_skirt_brim":
{
"enabled": false,
"value": "jerk_print"
},
"jerk_support":
{
"enabled": false,
"value": "jerk_print"
},
"jerk_support_bottom":
{
"enabled": false,
"value": "jerk_support_interface"
},
"jerk_support_infill":
{
"enabled": false,
"value": "jerk_support"
},
"jerk_support_interface":
{
"enabled": false,
"value": "jerk_support"
},
"jerk_support_roof":
{
"enabled": false,
"value": "jerk_support_interface"
},
"jerk_topbottom":
{
"enabled": false,
"value": "jerk_print"
},
"jerk_travel":
{
"enabled": false,
"value": "jerk_print"
},
"jerk_travel_enabled":
{
"enabled": false,
"value": true
},
"jerk_travel_layer_0":
{
"enabled": false,
"value": "jerk_travel"
},
"jerk_wall":
{
"enabled": false,
"value": "jerk_print"
},
"jerk_wall_0":
{
"enabled": false,
"value": "jerk_print"
},
"jerk_wall_0_roofing":
{
"enabled": false,
"value": "jerk_print"
},
"jerk_wall_x":
{
"enabled": false,
"value": "jerk_print"
},
"jerk_wall_x_roofing":
{
"enabled": false,
"value": "jerk_print"
},
"layer_height_0": { "value": "0.2 if resolveOrValue('adhesion_type') == 'raft' else 0.3" },
"layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" },
@ -178,18 +390,58 @@
"value": "resolveOrValue('print_sequence') != 'one_at_a_time'"
},
"print_sequence": { "enabled": false },
"raft_airgap": { "value": 0.3 },
"raft_acceleration":
{
"enabled": false,
"value": "acceleration_print"
},
"raft_airgap": { "value": 0.33 },
"raft_base_acceleration":
{
"enabled": false,
"value": "acceleration_print"
},
"raft_base_flow": { "value": 120 },
"raft_base_infill_overlap": { "value": 25 },
"raft_base_jerk":
{
"enabled": false,
"value": "jerk_print"
},
"raft_base_line_spacing": { "value": 2.5 },
"raft_base_line_width": { "value": 2 },
"raft_base_thickness": { "value": 0.4 },
"raft_interface_acceleration":
{
"enabled": false,
"value": "acceleration_print"
},
"raft_interface_fan_speed": { "value": 0 },
"raft_interface_infill_overlap": { "value": 25 },
"raft_interface_jerk":
{
"enabled": false,
"value": "jerk_print"
},
"raft_interface_wall_count": { "value": "raft_wall_count" },
"raft_jerk":
{
"enabled": false,
"value": "jerk_print"
},
"raft_margin": { "value": 6.5 },
"raft_surface_acceleration":
{
"enabled": false,
"value": "acceleration_print"
},
"raft_surface_fan_speed": { "value": 50.0 },
"raft_surface_infill_overlap": { "value": 35 },
"raft_surface_jerk":
{
"enabled": false,
"value": "jerk_print"
},
"raft_surface_wall_count": { "value": "raft_wall_count" },
"raft_wall_count": { "value": 2 },
"retract_at_layer_change": { "value": true },
@ -197,9 +449,9 @@
{
"maximum_value": 5,
"maximum_value_warning": 2.5,
"value": 0.5
"value": 1.0
},
"retraction_combing": { "value": "'infill'" },
"retraction_combing": { "value": "'no_outer_surfaces'" },
"retraction_count_max":
{
"maximum_value": 700,

View file

@ -209,14 +209,11 @@
"value": 35
},
"bridge_skin_speed_2": { "value": "speed_print*2/3" },
"bridge_sparse_infill_max_density": { "value": 50 },
"bridge_skin_support_threshold": { "value": 20 },
"bridge_sparse_infill_max_density": { "value": 20 },
"bridge_wall_material_flow": { "value": 200 },
"bridge_wall_min_length": { "value": 2 },
"bridge_wall_speed":
{
"unit": "mm/s",
"value": 50
},
"bridge_wall_speed": { "value": 50 },
"build_volume_temperature":
{
"force_depends_on_settings": [
@ -453,7 +450,7 @@
"roofing_monotonic": { "value": false },
"roofing_pattern": { "value": "'zigzag'" },
"seam_overhang_angle": { "value": 35 },
"skin_edge_support_thickness": { "value": 0 },
"skin_edge_support_thickness": { "value": 0.8 },
"skin_material_flow": { "value": 93 },
"skin_outline_count": { "value": 0 },
"skin_overlap": { "value": 20 },

View file

@ -21,36 +21,37 @@
},
"overrides":
{
"acceleration_enabled": { "default_value": false },
"acceleration_layer_0": { "value": 1800 },
"acceleration_print": { "default_value": 2200 },
"acceleration_roofing": { "value": 1800 },
"acceleration_travel_layer_0": { "value": 1800 },
"acceleration_wall_0": { "value": 1800 },
"adhesion_type": { "default_value": "skirt" },
"alternate_extra_perimeter": { "default_value": true },
"bridge_fan_speed": { "default_value": 100 },
"acceleration_enabled": { "default_value": true },
"acceleration_layer_0": { "value": "math.ceil(acceleration_print / 10)" },
"acceleration_print": { "default_value": 5000 },
"acceleration_roofing": { "value": "math.ceil(acceleration_topbottom * 3000 / 5000) " },
"acceleration_support": { "value": "math.ceil(acceleration_print / 2)" },
"acceleration_travel": { "value": "acceleration_print if magic_spiralize else min(math.ceil(acceleration_print * 7000 / 5000), round((machine_max_acceleration_x + machine_max_acceleration_y) / 2, -2))" },
"acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 3000 / 5000)" },
"adhesion_type":
{
"default_value": "skirt",
"value": "'brim' if draft_shield_enabled else 'skirt'"
},
"bridge_fan_speed_2": { "resolve": "max(cool_fan_speed, 50)" },
"bridge_fan_speed_3": { "resolve": "max(cool_fan_speed, 20)" },
"bridge_settings_enabled": { "default_value": true },
"bridge_wall_coast": { "default_value": 10 },
"cool_fan_full_at_height": { "value": "resolveOrValue('layer_height_0') + resolveOrValue('layer_height') * max(1, cool_fan_full_layer - 1)" },
"cool_fan_full_layer": { "value": 4 },
"cool_fan_speed_min": { "value": "cool_fan_speed" },
"cool_min_layer_time": { "default_value": 15 },
"cool_min_layer_time_fan_speed_max": { "default_value": 20 },
"fill_outline_gaps": { "default_value": true },
"cool_min_layer_time_fan_speed_max": { "value": "cool_min_layer_time + 5" },
"cool_min_speed": { "value": "max(round(speed_layer_0 / 2), round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 2))" },
"gantry_height": { "value": 30 },
"infill_before_walls": { "default_value": false },
"infill_enable_travel_optimization": { "default_value": true },
"jerk_enabled": { "default_value": false },
"jerk_roofing": { "value": 10 },
"jerk_wall_0": { "value": 10 },
"layer_height_0": { "resolve": "max(0.2, min(extruderValues('layer_height')))" },
"line_width": { "value": "machine_nozzle_size * 1.125" },
"machine_acceleration": { "default_value": 1500 },
"infill_line_width": { "value": "machine_nozzle_size * 1.5" },
"infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'gyroid'" },
"initial_layer_line_width_factor": { "default_value": 125.0 },
"layer_height_0": { "resolve": "max(machine_nozzle_size / 2, min(extruderValues('layer_height')))" },
"machine_acceleration": { "default_value": 5000 },
"machine_depth": { "default_value": 250 },
"machine_end_gcode": { "default_value": "print_end" },
"machine_end_gcode": { "default_value": "PRINT_END" },
"machine_endstop_positive_direction_x": { "default_value": true },
"machine_endstop_positive_direction_y": { "default_value": true },
"machine_endstop_positive_direction_z": { "default_value": false },
@ -67,16 +68,15 @@
},
"machine_heated_bed": { "default_value": true },
"machine_height": { "default_value": 250 },
"machine_max_acceleration_x": { "default_value": 1500 },
"machine_max_acceleration_y": { "default_value": 1500 },
"machine_max_acceleration_z": { "default_value": 250 },
"machine_max_acceleration_x": { "default_value": 20000 },
"machine_max_acceleration_y": { "default_value": 20000 },
"machine_max_acceleration_z": { "default_value": 500 },
"machine_max_feedrate_e": { "default_value": 120 },
"machine_max_feedrate_x": { "value": 500 },
"machine_max_feedrate_y": { "value": 500 },
"machine_max_feedrate_z": { "default_value": 40 },
"machine_max_jerk_e": { "default_value": 60 },
"machine_max_jerk_xy": { "default_value": 20 },
"machine_max_jerk_z": { "default_value": 1 },
"machine_name": { "default_value": "VORON2" },
"machine_start_gcode": { "default_value": ";Nozzle diameter = {machine_nozzle_size}\n;Filament type = {material_type}\n;Filament name = {material_name}\n;Filament weight = {filament_weight}\n; M190 S{material_bed_temperature_layer_0}\n; M109 S{material_print_temperature_layer_0}\nprint_start EXTRUDER={material_print_temperature_layer_0} BED={material_bed_temperature_layer_0} CHAMBER={build_volume_temperature}" },
"machine_start_gcode": { "default_value": ";Nozzle diameter = {machine_nozzle_size}\n;Filament type = {material_type}\n;Filament name = {material_name}\n;Filament weight = {filament_weight}\n; M190 S{material_bed_temperature_layer_0}\n; M109 S{material_print_temperature_layer_0}\nPRINT_START EXTRUDER={material_print_temperature_layer_0} BED={material_bed_temperature_layer_0} CHAMBER={build_volume_temperature}" },
"machine_steps_per_mm_x": { "default_value": 80 },
"machine_steps_per_mm_y": { "default_value": 80 },
"machine_steps_per_mm_z": { "default_value": 400 },
@ -84,40 +84,36 @@
"meshfix_maximum_resolution": { "default_value": 0.01 },
"min_infill_area": { "default_value": 5.0 },
"minimum_polygon_circumference": { "default_value": 0.2 },
"optimize_wall_printing_order": { "default_value": true },
"retraction_amount": { "default_value": 0.75 },
"retraction_combing": { "value": "'noskin'" },
"retraction_combing_max_distance": { "default_value": 10 },
"retraction_hop": { "default_value": 0.2 },
"retraction_hop_enabled": { "default_value": true },
"retraction_prime_speed":
"retraction_hop":
{
"maximum_value_warning": 130,
"value": "math.ceil(retraction_speed * 0.4)"
"default_value": 0.2,
"value": "machine_nozzle_size / 2"
},
"retraction_retract_speed": { "maximum_value_warning": 130 },
"retraction_hop_enabled": { "default_value": true },
"retraction_hop_only_when_collides": { "default_value": true },
"retraction_prime_speed": { "maximum_value_warning": "machine_max_feedrate_e - 10" },
"retraction_retract_speed": { "maximum_value_warning": "machine_max_feedrate_e - 10" },
"retraction_speed":
{
"default_value": 30,
"maximum_value_warning": 130
"maximum_value_warning": "machine_max_feedrate_e - 10"
},
"roofing_layer_count": { "value": 1 },
"skirt_brim_minimal_length": { "default_value": 550 },
"speed_layer_0": { "value": "math.ceil(speed_print * 0.25)" },
"speed_roofing": { "value": "math.ceil(speed_print * 0.33)" },
"speed_infill": { "value": "speed_print * 1.5" },
"speed_layer_0": { "value": "speed_print * 3 / 8" },
"speed_print": { "value": "round(6.4 / layer_height / machine_nozzle_size, -1)" },
"speed_slowdown_layers": { "default_value": 4 },
"speed_topbottom": { "value": "math.ceil(speed_print * 0.33)" },
"speed_travel":
{
"maximum_value_warning": 501,
"value": 300
"maximum_value_warning": "max(500, round((machine_max_feedrate_x + machine_max_feedrate_y) / 2, -2)) + 1",
"value": "speed_print if magic_spiralize else max(speed_print, round((machine_max_feedrate_x + machine_max_feedrate_y) / 2, -2))"
},
"speed_travel_layer_0": { "value": "math.ceil(speed_travel * 0.4)" },
"speed_wall": { "value": "math.ceil(speed_print * 0.33)" },
"speed_wall_0": { "value": "math.ceil(speed_print * 0.33)" },
"speed_wall_x": { "value": "math.ceil(speed_print * 0.66)" },
"travel_avoid_other_parts": { "default_value": false },
"wall_line_width": { "value": "machine_nozzle_size" },
"speed_z_hop": { "value": "max(10, machine_max_feedrate_z / 2)" },
"top_bottom_thickness": { "value": "wall_thickness" },
"wall_overhang_angle": { "default_value": 75 },
"wall_overhang_speed_factors":
{
@ -125,6 +121,11 @@
50
]
},
"zig_zaggify_infill": { "value": true }
"wall_thickness": { "value": "wall_line_width_0 + wall_line_width_x" },
"xy_offset_layer_0": { "value": "xy_offset - 0.1" },
"z_seam_corner": { "value": "'z_seam_corner_weighted'" },
"z_seam_relative": { "value": "True" },
"zig_zaggify_infill": { "value": true },
"zig_zaggify_support": { "value": true }
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 KiB

After

Width:  |  Height:  |  Size: 282 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 KiB

After

Width:  |  Height:  |  Size: 304 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 KiB

After

Width:  |  Height:  |  Size: 305 KiB

Before After
Before After

View file

@ -0,0 +1,19 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = generic_abs
quality_type = high
setting_version = 25
type = intent
variant = AA 0.4
[values]
speed_infill = 50
top_bottom_thickness = 1.05
z_seam_type = back

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_abs
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,19 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = generic_abs
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
speed_infill = 50
top_bottom_thickness = 1.05
z_seam_type = back

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_abs
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,19 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = generic_abs
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
speed_infill = 50
top_bottom_thickness = 1.05
z_seam_type = back

View file

@ -0,0 +1,24 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = generic_abs
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_sparse_density = 15
jerk_print = 6000
speed_infill = =speed_print
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = 0.8

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_cpe_plus
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_cpe_plus
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_cpe
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_cpe
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_nylon
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_nylon
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_pc
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_pc
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_petg
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_petg
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,19 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = generic_pla
quality_type = high
setting_version = 25
type = intent
variant = AA 0.4
[values]
speed_infill = 50
top_bottom_thickness = 1.05
z_seam_type = back

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_pla
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,19 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = generic_pla
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
speed_infill = 50
top_bottom_thickness = 1.05
z_seam_type = back

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_pla
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,19 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = generic_pla
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
speed_infill = 50
top_bottom_thickness = 1.05
z_seam_type = back

View file

@ -0,0 +1,24 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = generic_pla
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_sparse_density = 15
jerk_print = 6000
speed_infill = =speed_print
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = 0.8

View file

@ -0,0 +1,28 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = generic_pla
quality_type = verydraft
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 4000
acceleration_wall = 2000
acceleration_wall_0 = 2000
infill_sparse_density = 10
jerk_print = 6000
speed_infill = =speed_print
speed_print = 50
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = 0.8

View file

@ -0,0 +1,19 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = generic_tough_pla
quality_type = high
setting_version = 25
type = intent
variant = AA 0.4
[values]
speed_infill = 50
top_bottom_thickness = 1.05
z_seam_type = back

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_tough_pla
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,19 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = generic_tough_pla
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
speed_infill = 50
top_bottom_thickness = 1.05
z_seam_type = back

View file

@ -0,0 +1,25 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = generic_tough_pla
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
jerk_print = 6000
speed_infill = =speed_print
speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,19 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = generic_tough_pla
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
speed_infill = 50
top_bottom_thickness = 1.05
z_seam_type = back

View file

@ -0,0 +1,24 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = generic_tough_pla
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_sparse_density = 15
jerk_print = 6000
speed_infill = =speed_print
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = 0.8

View file

@ -0,0 +1,28 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = generic_tough_pla
quality_type = verydraft
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 4000
acceleration_wall = 2000
acceleration_wall_0 = 2000
infill_sparse_density = 10
jerk_print = 6000
speed_infill = =speed_print
speed_print = 50
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = 0.8

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_abs
quality_type = high
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_abs
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_abs
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_abs
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_abs
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_abs
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,28 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_abs
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_print = 150
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =2 * line_width

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_abs
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,28 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_abs
quality_type = verydraft
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_print = 150
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =2 * line_width

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_petg
quality_type = high
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_petg
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_petg
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_petg
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_petg
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_petg
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,28 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_petg
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_print = 150
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =2 * line_width

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_petg
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,28 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_petg
quality_type = verydraft
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_print = 150
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =2 * line_width

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_pla
quality_type = high
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_pla
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_pla
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_pla
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_pla
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_pla
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,28 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_pla
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_print = 150
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =2 * line_width

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_pla
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,28 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_pla
quality_type = verydraft
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_print = 150
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =2 * line_width

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_tough_pla
quality_type = high
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_tough_pla
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_tough_pla
quality_type = fast
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_tough_pla
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_tough_pla
quality_type = normal
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_tough_pla
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,28 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_tough_pla
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_print = 150
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =2 * line_width

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_tough_pla
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,28 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_tough_pla
quality_type = verydraft
setting_version = 25
type = intent
variant = AA 0.4
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_print = 150
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =2 * line_width

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_abs
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.8
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_abs
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =wall_line_width_0

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_abs
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_abs
quality_type = verydraft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =wall_line_width_0

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_abs
quality_type = superdraft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =wall_line_width_0

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_petg
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.8
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_petg
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =wall_line_width_0

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_petg
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_petg
quality_type = verydraft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =wall_line_width_0

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_petg
quality_type = superdraft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =wall_line_width_0

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_pla
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.8
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_pla
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =wall_line_width_0

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_pla
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_pla
quality_type = verydraft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =wall_line_width_0

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_pla
quality_type = superdraft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =wall_line_width_0

View file

@ -0,0 +1,29 @@
[general]
definition = ultimaker_s8
name = Accurate
version = 4
[metadata]
intent_category = engineering
is_experimental = True
material = ultimaker_tough_pla
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.8
[values]
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_sparse_density = 20
jerk_print = 6000
max_flow_acceleration = 1
speed_infill = =speed_print
speed_print = 35
speed_roofing = =speed_topbottom
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_tough_pla
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =wall_line_width_0

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Visual
version = 4
[metadata]
intent_category = visual
is_experimental = True
material = ultimaker_tough_pla
quality_type = draft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_print = 2500
acceleration_wall_0 = 1000
inset_direction = inside_out
jerk_wall_0 = 4000
max_flow_acceleration = 0.5
speed_print = 50
speed_roofing = =math.ceil(speed_wall*(35/50))
speed_wall_0 = =math.ceil(speed_wall*(20/50))
speed_wall_x = =math.ceil(speed_wall*(35/50))
top_bottom_thickness = =max(1.2 , layer_height * 6)
z_seam_type = back

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_tough_pla
quality_type = verydraft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =wall_line_width_0

View file

@ -0,0 +1,27 @@
[general]
definition = ultimaker_s8
name = Quick
version = 4
[metadata]
intent_category = quick
is_experimental = True
material = ultimaker_tough_pla
quality_type = superdraft
setting_version = 25
type = intent
variant = AA 0.8
[values]
acceleration_wall_0 = 2000
gradual_flow_enabled = False
gradual_infill_step_height = =4 * layer_height
gradual_infill_steps = 3
infill_sparse_density = 40
jerk_print = 6000
jerk_wall_0 = 6000
speed_wall = =speed_print
speed_wall_0 = 40
top_bottom_thickness = =4 * layer_height
wall_thickness = =wall_line_width_0

Some files were not shown because too many files have changed in this diff Show more