From 5817905459d7b7f12e4161a3db0fdd876b34de3a Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Tue, 31 Jan 2017 18:47:27 +0000 Subject: [PATCH 1/9] Added anchor_skin_in_infill setting. When enabled, skin areas are increased in size so that they project into the infill by at least the distance between infill lines. --- resources/definitions/fdmprinter.def.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index f6cb2060c6..825686640e 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1240,6 +1240,14 @@ "minimum_value": "0", "default_value": 0, "settable_per_mesh": true + }, + "anchor_skin_in_infill": + { + "label": "Anchor Skin In Infill", + "description": "Expand skin areas so that they are anchored by the infill layers above and below. The skin areas are expanded sufficiently so that they bridge the gap between the infill lines.", + "type": "bool", + "default_value": false, + "settable_per_mesh": true } } }, From 45dc52de1639702f52b87659177941cf275847f9 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Wed, 1 Feb 2017 08:37:20 +0000 Subject: [PATCH 2/9] Provide separate settings for anchoring upper and lower skins in infill. Just expanding the upper skins into the infill is probably sufficient for most situations but if users want a symmetrical structure then expanding lower skins too could be useful. Users will need to experiment to get the desired results for a given model. --- resources/definitions/fdmprinter.def.json | 27 ++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 825686640e..ab00f55ef6 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1241,13 +1241,34 @@ "default_value": 0, "settable_per_mesh": true }, - "anchor_skin_in_infill": + "anchor_skins_in_infill": { - "label": "Anchor Skin In Infill", + "label": "Anchor Skins In Infill", "description": "Expand skin areas so that they are anchored by the infill layers above and below. The skin areas are expanded sufficiently so that they bridge the gap between the infill lines.", "type": "bool", "default_value": false, - "settable_per_mesh": true + "settable_per_mesh": true, + "children": + { + "anchor_upper_skin_in_infill": + { + "label": "Anchor Upper Skin In Infill", + "description": "Expand upper skin areas (areas with air above) so that they are anchored by the infill layers above and below. The skin areas are expanded sufficiently so that they bridge the gap between the infill lines.", + "type": "bool", + "default_value": false, + "value": "anchor_skins_in_infill", + "settable_per_mesh": true + }, + "anchor_lower_skin_in_infill": + { + "label": "Anchor Lower Skin In Infill", + "description": "Expand lower skin areas (areas with air below) so that they are anchored by the infill layers above and below. The skin areas are expanded sufficiently so that they bridge the gap between the infill lines.", + "type": "bool", + "default_value": false, + "value": "anchor_skins_in_infill", + "settable_per_mesh": true + } + } } } }, From eabfb797d68b117e77a87daa6f79e580b3ecfa25 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Wed, 1 Feb 2017 12:54:35 +0000 Subject: [PATCH 3/9] Add anchor_skin_distance setting and tweak descriptions of related settings. Now, the user can control how far the skins are expanded into the infill. --- resources/definitions/fdmprinter.def.json | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index ab00f55ef6..fe2809b872 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1244,7 +1244,7 @@ "anchor_skins_in_infill": { "label": "Anchor Skins In Infill", - "description": "Expand skin areas so that they are anchored by the infill layers above and below. The skin areas are expanded sufficiently so that they bridge the gap between the infill lines.", + "description": "Expand skin areas into the infill behind walls. By default, skins stop when they reach the wall lines that surround infill. This setting extends the skins beyond the wall lines so that the skins become anchored in the infill.", "type": "bool", "default_value": false, "settable_per_mesh": true, @@ -1253,7 +1253,7 @@ "anchor_upper_skin_in_infill": { "label": "Anchor Upper Skin In Infill", - "description": "Expand upper skin areas (areas with air above) so that they are anchored by the infill layers above and below. The skin areas are expanded sufficiently so that they bridge the gap between the infill lines.", + "description": "Expand upper skin areas (areas with air above) so that they are anchored by the infill layers above and below.", "type": "bool", "default_value": false, "value": "anchor_skins_in_infill", @@ -1262,11 +1262,22 @@ "anchor_lower_skin_in_infill": { "label": "Anchor Lower Skin In Infill", - "description": "Expand lower skin areas (areas with air below) so that they are anchored by the infill layers above and below. The skin areas are expanded sufficiently so that they bridge the gap between the infill lines.", + "description": "Expand lower skin areas (areas with air below) so that they are anchored by the infill layers above and below.", "type": "bool", "default_value": false, "value": "anchor_skins_in_infill", "settable_per_mesh": true + }, + "anchor_skin_distance": + { + "label": "Anchor Skin Distance", + "description": "The distance the skins are expanded into the infill. The default value is sufficient to bridge the gap between the infill lines.", + "unit": "mm", + "type": "float", + "default_value": 1.0, + "value": "infill_line_distance * 1.4", + "minimum_value": "0", + "settable_per_mesh": true } } } From b83537f27d828ff7e74b67763f6696ff758ece09 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Sun, 5 Feb 2017 15:58:42 +0000 Subject: [PATCH 4/9] Hide children of anchor_skins_in_infill when it isn't enabled. --- resources/definitions/fdmprinter.def.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index fe2809b872..c90f17edb6 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1257,6 +1257,7 @@ "type": "bool", "default_value": false, "value": "anchor_skins_in_infill", + "enabled": "anchor_skins_in_infill", "settable_per_mesh": true }, "anchor_lower_skin_in_infill": @@ -1266,6 +1267,7 @@ "type": "bool", "default_value": false, "value": "anchor_skins_in_infill", + "enabled": "anchor_skins_in_infill", "settable_per_mesh": true }, "anchor_skin_distance": @@ -1277,6 +1279,7 @@ "default_value": 1.0, "value": "infill_line_distance * 1.4", "minimum_value": "0", + "enabled": "anchor_skins_in_infill", "settable_per_mesh": true } } From 495a73e9762f568072b4ff6c053b30014e076e2e Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Mon, 6 Feb 2017 08:44:25 +0000 Subject: [PATCH 5/9] Tweaked descriptions of anchor_skin_in_infill and anchor_skin_distance. --- resources/definitions/fdmprinter.def.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index c90f17edb6..bbb9d14e8d 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1244,7 +1244,7 @@ "anchor_skins_in_infill": { "label": "Anchor Skins In Infill", - "description": "Expand skin areas into the infill behind walls. By default, skins stop when they reach the wall lines that surround infill. This setting extends the skins beyond the wall lines so that the skins become anchored in the infill.", + "description": "Expand skin areas into the infill behind walls. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the skins become anchored in the infill.", "type": "bool", "default_value": false, "settable_per_mesh": true, @@ -1273,7 +1273,7 @@ "anchor_skin_distance": { "label": "Anchor Skin Distance", - "description": "The distance the skins are expanded into the infill. The default value is sufficient to bridge the gap between the infill lines.", + "description": "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient.", "unit": "mm", "type": "float", "default_value": 1.0, From 7681261b03f29e95e2b7055d05fc2b20e5041c4a Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Tue, 7 Feb 2017 09:55:15 +0000 Subject: [PATCH 6/9] Added anchor_skin_shrink_distance. Also, renamed anchor_skin_distance to anchor_skin_expand_distance. The idea behind the shrink distance is that when the slope of the model surface is steep, very slim skin areas are created close to the wall and if they are expanded we end up with skin inside the infill that isn't required. So by shrinking the skin polygons slightly first, the very slim areas are removed before the skin is expanded. The amount to shrink defaults to half the wall width which appears to work OK but may as well make it a setting so that it can be tweaked if required. --- resources/definitions/fdmprinter.def.json | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index bbb9d14e8d..a45a80b544 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1270,9 +1270,9 @@ "enabled": "anchor_skins_in_infill", "settable_per_mesh": true }, - "anchor_skin_distance": + "anchor_skin_expand_distance": { - "label": "Anchor Skin Distance", + "label": "Anchor Skin Expand Distance", "description": "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient.", "unit": "mm", "type": "float", @@ -1281,6 +1281,18 @@ "minimum_value": "0", "enabled": "anchor_skins_in_infill", "settable_per_mesh": true + }, + "anchor_skin_shrink_distance": + { + "label": "Anchor Skin Shrink Distance", + "description": "The distance the skins are shrunk before they are expanded. Shrinking the skins slightly first removes the very narrow skin areas that are created when the model surface has a slope close to the vertical.", + "unit": "mm", + "type": "float", + "default_value": 0, + "value": "wall_thickness * 0.5", + "minimum_value": "0", + "enabled": "anchor_skins_in_infill", + "settable_per_mesh": true } } } From 3e8789ae48247bb45a17d103059b656ac98a818e Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Thu, 9 Feb 2017 11:35:54 +0000 Subject: [PATCH 7/9] Renamed anchor_skin settings to equivalent expand_skins settings. Expand skins describes the operation better, the fact that the skins end up getting anchored in the infill is just one benefit of the expansion. --- resources/definitions/fdmprinter.def.json | 32 +++++++++++------------ 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index a45a80b544..ce9cd7a0c5 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1241,57 +1241,57 @@ "default_value": 0, "settable_per_mesh": true }, - "anchor_skins_in_infill": + "expand_skins_into_infill": { - "label": "Anchor Skins In Infill", + "label": "Expand Skins Into Infill", "description": "Expand skin areas into the infill behind walls. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the skins become anchored in the infill.", "type": "bool", "default_value": false, "settable_per_mesh": true, "children": { - "anchor_upper_skin_in_infill": + "expand_upper_skins": { - "label": "Anchor Upper Skin In Infill", + "label": "Expand Upper Skins", "description": "Expand upper skin areas (areas with air above) so that they are anchored by the infill layers above and below.", "type": "bool", "default_value": false, - "value": "anchor_skins_in_infill", - "enabled": "anchor_skins_in_infill", + "value": "expand_skins_into_infill", + "enabled": "expand_skins_into_infill", "settable_per_mesh": true }, - "anchor_lower_skin_in_infill": + "expand_lower_skins": { - "label": "Anchor Lower Skin In Infill", + "label": "Expand Lower Skins", "description": "Expand lower skin areas (areas with air below) so that they are anchored by the infill layers above and below.", "type": "bool", "default_value": false, - "value": "anchor_skins_in_infill", - "enabled": "anchor_skins_in_infill", + "value": "expand_skins_into_infill", + "enabled": "expand_skins_into_infill", "settable_per_mesh": true }, - "anchor_skin_expand_distance": + "expand_skins_expand_distance": { - "label": "Anchor Skin Expand Distance", + "label": "Expand Distance", "description": "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient.", "unit": "mm", "type": "float", "default_value": 1.0, "value": "infill_line_distance * 1.4", "minimum_value": "0", - "enabled": "anchor_skins_in_infill", + "enabled": "expand_skins_into_infill", "settable_per_mesh": true }, - "anchor_skin_shrink_distance": + "expand_skins_shrink_distance": { - "label": "Anchor Skin Shrink Distance", + "label": "Shrink Distance", "description": "The distance the skins are shrunk before they are expanded. Shrinking the skins slightly first removes the very narrow skin areas that are created when the model surface has a slope close to the vertical.", "unit": "mm", "type": "float", "default_value": 0, "value": "wall_thickness * 0.5", "minimum_value": "0", - "enabled": "anchor_skins_in_infill", + "enabled": "expand_skins_into_infill", "settable_per_mesh": true } } From c1a770877fe3d834f4370ad6b0d18784aa54ae98 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Sun, 12 Feb 2017 17:48:11 +0000 Subject: [PATCH 8/9] Add "Skin " prefix to "Expand Distance" and "Shrink Distance" labels. It's useful to know what is being expanded/shrunk when those labels are cited (for example if you are switching profiles without saving changes). --- resources/definitions/fdmprinter.def.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index ce9cd7a0c5..9fe25d7066 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1272,7 +1272,7 @@ }, "expand_skins_expand_distance": { - "label": "Expand Distance", + "label": "Skin Expand Distance", "description": "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient.", "unit": "mm", "type": "float", @@ -1284,7 +1284,7 @@ }, "expand_skins_shrink_distance": { - "label": "Shrink Distance", + "label": "Skin Shrink Distance", "description": "The distance the skins are shrunk before they are expanded. Shrinking the skins slightly first removes the very narrow skin areas that are created when the model surface has a slope close to the vertical.", "unit": "mm", "type": "float", From c0fc8287c023e733b1a02e6c5ccb11c2480eccbc Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Wed, 1 Mar 2017 14:47:56 +0000 Subject: [PATCH 9/9] Rename expand_skins_shrink_distance setting to min_skin_width_for_expansion. --- resources/definitions/fdmprinter.def.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 6bab81ae84..9b89f07bff 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1285,10 +1285,10 @@ "enabled": "expand_skins_into_infill", "settable_per_mesh": true }, - "expand_skins_shrink_distance": + "min_skin_width_for_expansion": { - "label": "Skin Shrink Distance", - "description": "The distance the skins are shrunk before they are expanded. Shrinking the skins slightly first removes the very narrow skin areas that are created when the model surface has a slope close to the vertical.", + "label": "Minimum Skin Width For Expansion", + "description": "Skin areas narrower than this are not expanded. This avoids expanding the narrow skin areas that are created when the model surface has a slope close to the vertical.", "unit": "mm", "type": "float", "default_value": 0,