Skip to content

Commit 5fc46b2

Browse files
authored
Merge branch 'main' into PP-713-Honeycomb-for-S-line
2 parents 8727301 + d280d7f commit 5fc46b2

File tree

7 files changed

+41
-41
lines changed

7 files changed

+41
-41
lines changed

plugins/PaintTool/PaintTool.py

Lines changed: 3 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ def __init__(self, view: PaintView) -> None:
5151
self._view: PaintView = view
5252
self._view.canUndoChanged.connect(self._onCanUndoChanged)
5353
self._view.canRedoChanged.connect(self._onCanRedoChanged)
54+
self._view.currentPaintedObjectMeshDataChanged.connect(self._updateState)
5455

5556
self._picking_pass: Optional[PickingPass] = None
5657
self._faces_selection_pass: Optional[SelectionPass] = None
@@ -198,40 +199,6 @@ def clear(self) -> None:
198199
self._view.clearPaint()
199200
self._updateScene(update_node = True)
200201

201-
@staticmethod
202-
def _get_intersect_ratio_via_pt(a: numpy.ndarray, pt: numpy.ndarray, b: numpy.ndarray, c: numpy.ndarray) -> float:
203-
# compute the intersection of (param) A - pt with (param) B - (param) C
204-
if all(a == pt) or all(b == c) or all(a == c) or all(a == b):
205-
return 1.0
206-
207-
# compute unit vectors of directions of lines A and B
208-
udir_a = a - pt
209-
udir_a /= numpy.linalg.norm(udir_a)
210-
udir_b = b - c
211-
udir_b /= numpy.linalg.norm(udir_b)
212-
213-
# find unit direction vector for line C, which is perpendicular to lines A and B
214-
udir_res = numpy.cross(udir_b, udir_a)
215-
udir_res_len = numpy.linalg.norm(udir_res)
216-
if udir_res_len == 0:
217-
return 1.0
218-
udir_res /= udir_res_len
219-
220-
# solve system of equations
221-
rhs = b - a
222-
lhs = numpy.array([udir_a, -udir_b, udir_res]).T
223-
try:
224-
solved = numpy.linalg.solve(lhs, rhs)
225-
except numpy.linalg.LinAlgError:
226-
return 1.0
227-
228-
# get the ratio
229-
intersect = ((a + solved[0] * udir_a) + (b + solved[1] * udir_b)) * 0.5
230-
a_intersect_dist = numpy.linalg.norm(a - intersect)
231-
if a_intersect_dist == 0:
232-
return 1.0
233-
return numpy.linalg.norm(pt - intersect) / a_intersect_dist
234-
235202
def _nodeTransformChanged(self, *args) -> None:
236203
self._cache_dirty = True
237204

@@ -453,7 +420,7 @@ def _updateActiveView(self) -> None:
453420
def _updateState(self):
454421
painted_object = self._view.getPaintedObject()
455422
if painted_object is not None and self._controller.getActiveTool() == self:
456-
if painted_object.callDecoration("getPaintTexture") is not None:
423+
if painted_object.callDecoration("getPaintTexture") is not None and painted_object.getMeshData().hasUVCoordinates():
457424
new_state = PaintTool.Paint.State.READY
458425
else:
459426
new_state = PaintTool.Paint.State.PREPARING_MODEL
@@ -472,6 +439,7 @@ def _onPrepareTextureFinished(self, job: Job):
472439
self._prepare_texture_job = None
473440
self._state = PaintTool.Paint.State.READY
474441
self.propertyChanged.emit()
442+
self._updateScene()
475443

476444
def _updateIgnoreUnselectedObjects(self):
477445
ignore_unselected_objects = self._controller.getActiveView().name == "PaintTool"

plugins/PaintTool/PaintView.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,13 @@ def __init__(self) -> None:
6161

6262
canUndoChanged = pyqtSignal(bool)
6363
canRedoChanged = pyqtSignal(bool)
64+
currentPaintedObjectMeshDataChanged = pyqtSignal()
6465

6566
def setPaintedObject(self, painted_object: Optional[SceneNode]):
6667
if self._painted_object is not None:
6768
texture_changed_signal = self._painted_object.callDecoration("getPaintTextureChangedSignal")
6869
texture_changed_signal.disconnect(self._onCurrentPaintedObjectTextureChanged)
70+
self._painted_object.meshDataChanged.disconnect(self._onCurrentPaintedObjectMesDataChanged)
6971

7072
self._paint_texture = None
7173
self._cursor_texture = None
@@ -78,6 +80,7 @@ def setPaintedObject(self, painted_object: Optional[SceneNode]):
7880
if texture_changed_signal is not None:
7981
texture_changed_signal.connect(self._onCurrentPaintedObjectTextureChanged)
8082
self._onCurrentPaintedObjectTextureChanged()
83+
self._painted_object.meshDataChanged.connect(self._onCurrentPaintedObjectMesDataChanged)
8184

8285
self._updateCurrentBitsRanges()
8386

@@ -99,6 +102,10 @@ def _onCurrentPaintedObjectTextureChanged(self) -> None:
99102
else:
100103
self._cursor_texture = None
101104

105+
def _onCurrentPaintedObjectMesDataChanged(self, object: SceneNode) -> None:
106+
if object == self._painted_object:
107+
self.currentPaintedObjectMeshDataChanged.emit()
108+
102109
def canUndo(self):
103110
stack = self._getUndoStack()
104111
return stack.canUndo() if stack is not None else False

resources/definitions/fdmprinter.def.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2202,11 +2202,8 @@
22022202
"type": "enum",
22032203
"options":
22042204
{
2205-
"grid": "Grid",
22062205
"lines": "Lines",
2207-
"triangles": "Triangles",
22082206
"trihexagon": "Tri-Hexagon",
2209-
"cubic": "Cubic",
22102207
"cubicsubdiv": "Cubic Subdivision",
22112208
"tetrahedral": "Octet",
22122209
"quarter_cubic": "Quarter Cubic",
@@ -2217,7 +2214,10 @@
22172214
"gyroid": "Gyroid",
22182215
"lightning": "Lightning",
22192216
"honeycomb": "Honeycomb",
2220-
"octagon": "Octagon"
2217+
"octagon": "Octagon",
2218+
"grid": "Grid",
2219+
"cubic": "Cubic",
2220+
"triangles": "Triangles"
22212221
},
22222222
"default_value": "grid",
22232223
"enabled": "infill_line_distance > 0",

resources/qml/PrintSetupSelector/Recommended/RecommendedStrengthSelector.qml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2022 UltiMaker
1+
// Copyright (c) 2026 UltiMaker
22
// Cura is released under the terms of the LGPLv3 or higher.
33

44
import QtQuick 2.7
@@ -60,6 +60,7 @@ RecommendedSettingSection
6060
width: parent.width
6161
settingName: "infill_pattern"
6262
updateAllExtruders: true
63+
hideOptions: ["ultimaker_factor4"].includes(Cura.MachineManager.activeMachine.definition.id) ? ["grid", "triangles", "cubic"] : []
6364
}
6465
},
6566
RecommendedSettingItem

resources/qml/Widgets/SingleSettingComboBox.qml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2022 UltiMaker
1+
// Copyright (c) 2026 UltiMaker
22
// Cura is released under the terms of the LGPLv3 or higher.
33

44
import QtQuick 2.10
@@ -24,8 +24,23 @@ Cura.ComboBox
2424
// This is only used if updateAllExtruders == true
2525
property int defaultExtruderIndex: Cura.ExtruderManager.activeExtruderIndex
2626

27+
// For dropdown boxes, settings included in this property are hidden from the user on _selection_ (not show).
28+
property list<string> hideOptions: []
29+
2730
UM.I18nCatalog { id: settings_catalog; name: "fdmprinter.def.json" }
2831

32+
Text
33+
{
34+
// Used if a hidden option ends up selected anyway.
35+
text: propertyProvider.properties.options ? propertyProvider.properties.options[propertyProvider.properties.value] : ""
36+
visible: currentIndex < 0
37+
color: UM.Theme.getColor("text")
38+
anchors.fill: parent
39+
verticalAlignment: Text.AlignVCenter
40+
horizontalAlignment: Text.AlignLeft
41+
leftPadding: UM.Theme.getSize("narrow_margin").width
42+
}
43+
2944
model: ListModel
3045
{
3146
id: comboboxModel
@@ -44,6 +59,10 @@ Cura.ComboBox
4459
for (var i = 0; i < propertyProvider.properties["options"].keys().length; i++)
4560
{
4661
var key = propertyProvider.properties["options"].keys()[i]
62+
if (hideOptions.includes(key))
63+
{
64+
continue;
65+
}
4766
var value = propertyProvider.properties["options"][key]
4867
value = settings_catalog.i18nc(settingName + " option " + key, value)
4968
comboboxModel.append({ text: value, code: key})

resources/setting_visibility/advanced.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ infill_multiplier
4646
infill_overlap
4747
infill_sparse_thickness
4848
gradual_infill_steps
49+
skin_support
4950

5051
[material]
5152
material_print_temperature

resources/setting_visibility/expert.cfg

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,9 @@ bottom_skin_expand_distance
110110
max_skin_angle_for_expansion
111111
min_skin_width_for_expansion
112112
infill_randomize_start_location
113+
skin_support
114+
skin_support_interlace_lines
115+
infill_move_inwards_length
113116

114117
[material]
115118
default_material_print_temperature
@@ -219,6 +222,7 @@ travel_avoid_distance
219222
retraction_combing_avoid_distance
220223
layer_start_x
221224
layer_start_y
225+
layer_start_at_z_seam
222226
retraction_min_travel
223227
retraction_hop_enabled
224228
retraction_hop_only_when_collides

0 commit comments

Comments
 (0)