Make LayerView work with "Purge" line type

CURA-3094

In CuraEngine, we created a new line type called "Purge" to make Prime
Tower Purge work. This commit makes the LayerView plugin to handle
"Purge" lines correctly.
This commit is contained in:
Lipu Fei 2017-06-20 16:54:40 +02:00
parent 8393a0efb4
commit 81323e555a
7 changed files with 51 additions and 6 deletions

View file

@ -18,9 +18,13 @@ class LayerPolygon:
MoveCombingType = 8
MoveRetractionType = 9
SupportInterfaceType = 10
__number_of_types = 11
PurgeType = 11
__jump_map = numpy.logical_or(numpy.logical_or(numpy.arange(__number_of_types) == NoneType, numpy.arange(__number_of_types) == MoveCombingType), numpy.arange(__number_of_types) == MoveRetractionType)
__number_of_types = 12
__jump_map = numpy.logical_or(numpy.logical_or(numpy.arange(__number_of_types) == NoneType,
numpy.arange(__number_of_types) == MoveCombingType),
numpy.arange(__number_of_types) == MoveRetractionType)
## LayerPolygon, used in ProcessSlicedLayersJob
# \param extruder
@ -222,7 +226,8 @@ class LayerPolygon:
theme.getColor("layerview_support_infill").getRgbF(), # SupportInfillType
theme.getColor("layerview_move_combing").getRgbF(), # MoveCombingType
theme.getColor("layerview_move_retraction").getRgbF(), # MoveRetractionType
theme.getColor("layerview_support_interface").getRgbF() # SupportInterfaceType
theme.getColor("layerview_support_interface").getRgbF(), # SupportInterfaceType
theme.getColor("layerview_purge").getRgbF() # PurgeType
])
return cls.__color_map

View file

@ -51,6 +51,7 @@ class LayerPass(RenderPass):
self._layer_shader.setUniformValue("u_show_helpers", self._layer_view.getShowHelpers())
self._layer_shader.setUniformValue("u_show_skin", self._layer_view.getShowSkin())
self._layer_shader.setUniformValue("u_show_infill", self._layer_view.getShowInfill())
self._layer_shader.setUniformValue("u_show_purge", self._layer_view.getShowPurge())
else:
#defaults
self._layer_shader.setUniformValue("u_layer_view_type", 1)
@ -59,6 +60,7 @@ class LayerPass(RenderPass):
self._layer_shader.setUniformValue("u_show_helpers", 1)
self._layer_shader.setUniformValue("u_show_skin", 1)
self._layer_shader.setUniformValue("u_show_infill", 1)
self._layer_shader.setUniformValue("u_show_purge", 1)
if not self._tool_handle_shader:
self._tool_handle_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "toolhandle.shader"))

View file

@ -82,6 +82,7 @@ class LayerView(View):
Preferences.getInstance().addPreference("layerview/show_helpers", True)
Preferences.getInstance().addPreference("layerview/show_skin", True)
Preferences.getInstance().addPreference("layerview/show_infill", True)
Preferences.getInstance().addPreference("layerview/show_purge", True)
Preferences.getInstance().preferenceChanged.connect(self._onPreferencesChanged)
self._updateWithPreferences()
@ -100,6 +101,7 @@ class LayerView(View):
self._show_helpers = 1
self._show_skin = 1
self._show_infill = 1
self._show_purge = 1
def getActivity(self):
return self._activity
@ -237,6 +239,13 @@ class LayerView(View):
def getShowInfill(self):
return self._show_infill
def setShowPurge(self, show):
self._show_purge = show
self.currentLayerNumChanged.emit()
def getShowPurge(self):
return self._show_purge
def getCompatibilityMode(self):
return self._compatibility_mode
@ -408,6 +417,7 @@ class LayerView(View):
self.setShowHelpers(bool(Preferences.getInstance().getValue("layerview/show_helpers")))
self.setShowSkin(bool(Preferences.getInstance().getValue("layerview/show_skin")))
self.setShowInfill(bool(Preferences.getInstance().getValue("layerview/show_infill")))
self.setShowPurge(bool(Preferences.getInstance().getValue("layerview/show_purge")))
self._startUpdateTopLayers()
self.preferencesChanged.emit()
@ -423,6 +433,7 @@ class LayerView(View):
"layerview/show_helpers",
"layerview/show_skin",
"layerview/show_infill",
"layerview/show_purge",
}:
return

View file

@ -43,6 +43,7 @@ Item
property bool show_helpers: UM.Preferences.getValue("layerview/show_helpers")
property bool show_skin: UM.Preferences.getValue("layerview/show_skin")
property bool show_infill: UM.Preferences.getValue("layerview/show_infill")
property bool show_purge: UM.Preferences.getValue("layerview/show_purge")
// if we are in compatibility mode, we only show the "line type"
property bool show_legend: UM.LayerView.compatibilityMode ? 1 : UM.Preferences.getValue("layerview/layer_view_type") == 1
property bool only_show_top_layers: UM.Preferences.getValue("view/only_show_top_layers")
@ -157,6 +158,7 @@ Item
view_settings.show_helpers = UM.Preferences.getValue("layerview/show_helpers");
view_settings.show_skin = UM.Preferences.getValue("layerview/show_skin");
view_settings.show_infill = UM.Preferences.getValue("layerview/show_infill");
view_settings.show_purge = UM.Preferences.getValue("layerview/show_purge");
view_settings.only_show_top_layers = UM.Preferences.getValue("view/only_show_top_layers");
view_settings.top_layer_count = UM.Preferences.getValue("view/top_layer_count");
}
@ -219,6 +221,12 @@ Item
preference: "layerview/show_infill",
colorId: "layerview_infill"
});
typesLegenModel.append({
label: catalog.i18nc("@label", "Show Purge"),
initialValue: view_settings.show_purge,
preference: "layerview/show_purge",
colorId: "layerview_purge"
});
}
}

View file

@ -35,6 +35,7 @@ fragment =
uniform int u_show_helpers;
uniform int u_show_skin;
uniform int u_show_infill;
uniform int u_show_purge;
void main()
{
@ -62,6 +63,11 @@ fragment =
// discard movements
discard;
}
// purge:
if ((u_show_purge == 0) && (v_line_type >= 10.5) && (v_line_type <= 11.5)) {
// discard movements
discard;
}
gl_FragColor = v_color;
}
@ -103,6 +109,7 @@ fragment41core =
uniform int u_show_helpers;
uniform int u_show_skin;
uniform int u_show_infill;
uniform int u_show_purge;
void main()
{
@ -130,6 +137,11 @@ fragment41core =
// discard movements
discard;
}
// purge:
if ((u_show_purge == 0) && (v_line_type >= 10.5) && (v_line_type <= 11.5)) {
// discard movements
discard;
}
frag_color = v_color;
}
@ -144,6 +156,7 @@ u_show_travel_moves = 0
u_show_helpers = 1
u_show_skin = 1
u_show_infill = 1
u_show_purge = 1
[bindings]
u_modelViewProjectionMatrix = model_view_projection_matrix

View file

@ -71,6 +71,7 @@ geometry41core =
uniform int u_show_helpers;
uniform int u_show_skin;
uniform int u_show_infill;
uniform int u_show_purge;
layout(lines) in;
layout(triangle_strip, max_vertices = 26) out;
@ -125,6 +126,9 @@ geometry41core =
if ((u_show_infill == 0) && (v_line_type[0] == 6)) {
return;
}
if ((u_show_purge == 0) && (v_line_type[0] == 11)) {
return;
}
if ((v_line_type[0] == 8) || (v_line_type[0] == 9)) {
// fixed size for movements
@ -246,6 +250,7 @@ u_show_travel_moves = 0
u_show_helpers = 1
u_show_skin = 1
u_show_infill = 1
u_show_purge = 1
[bindings]
u_modelViewProjectionMatrix = model_view_projection_matrix

View file

@ -246,7 +246,8 @@
"layerview_support_infill": [0, 255, 255, 255],
"layerview_move_combing": [0, 0, 255, 255],
"layerview_move_retraction": [128, 128, 255, 255],
"layerview_support_interface": [64, 192, 255, 255]
"layerview_support_interface": [64, 192, 255, 255],
"layerview_purge": [101, 51, 175, 255]
},
"sizes": {
@ -306,7 +307,7 @@
"slider_layerview_background": [4.0, 0.0],
"slider_layerview_margin": [1.0, 1.0],
"layerview_menu_size": [16.5, 21.0],
"layerview_menu_size": [16.5, 23.0],
"layerview_menu_size_compatibility": [22, 23.0],
"layerview_legend_size": [1.0, 1.0],
"layerview_row": [11.0, 1.5],