Commit Graph

166 Commits

Author SHA1 Message Date
Vojtech Bubnik
5f26bfd397 Brim separation from object, follow up to 82373334bc
1) Changed the name of the variable "brim_offset" to "brim_separation"
   for clarity.
2) Added legacy conversion after loading an old 3MF that does not define
   then new "brim_separation" variable: The "brim_separation" is being
   filled in with the "elefant_foot_compensation" value to produce
   equal brim separation to the old PrusaSlicer that saved that 3MF file.
2021-08-31 12:22:44 +02:00
Lukas Matena
270c076e77 Fixed undo/redo issue when clear method of FacetsAnnotation and ModelConfig
reset timestamp to 1. This led to a bug where e.g. deleting painted facets
through the respective item in object list followed by  possible other actions
and undo restored the painted facets from the time when the project was loaded.
I'm not sure if there was any other situation where this problem manifested.
2021-08-31 09:16:09 +02:00
Lukas Matena
b466f18326 Draft shield option is now an enum (Disabled/Limited/Enabled) 2021-07-14 16:02:04 +02:00
David Kocik
b14345012d PrusaLink - cherrypick pick from stable branch
Added to config enums, visible in Physical Printer Dialog and class derived from Octoprint
2021-06-28 12:36:01 +02:00
Vojtech Bubnik
0f3cabb5d9 Support for forward compatibility of configurations, user and system
config bundles, project files (3MFs, AMFs). When loading these files,
the caller may decide whether to substitute some of the configuration
values the current PrusaSlicer version does not understand with
some reasonable default value, and whether to report it. If substitution
is disabled, an exception is being thrown as before this commit.
If substitution is enabled, list of substitutions is returned by the
API to be presented to the user. This allows us to introduce for example
new firmware flavor key in PrusaSlicer 2.4 while letting PrusaSlicer
2.3.2 to fall back to some default and to report it to the user.

When slicing from command line, substutions are performed by default
and reported into the console, however substitutions may be either
disabled or made silent with the new "config-compatibility" command
line option.

Substitute enums and bools only.  Allow booleans to be parsed as
    true: "1", "enabled", "on" case insensitive
    false: "0", "disabled", "off" case insensitive
This will allow us in the future for example to switch the draft_shield
boolean to an enum with the following values: "disabled" / "enabled" / "limited".

Added "enum_bitmask.hpp" - support for type safe sets of options.
See for example PresetBundle::load_configbundle(...
LoadConfigBundleAttributes flags) for an example of intended usage.

WIP: GUI for reporting the list of config substitutions needs to be
implemented by @YuSanka.
2021-06-27 16:57:05 +02:00
Vojtech Bubnik
9aa520baf3 Fix of previous commit: Mixed up ClipperLib::pftPositive and pftNonZero 2021-06-01 12:33:14 +02:00
Vojtech Bubnik
73e0099c55 Merge remote-tracking branch 'remotes/origin/master' into vb_print_regions 2021-06-01 11:19:53 +02:00
Vojtech Bubnik
20ba7c0a1f New parameter "Slicing Mode" for supporting 3DLabPrint airplane models.
S3D's strategy for merging self intersecting models is "Even / Odd"
which PrusaSlicer now supports as an alternative to "Positive" rule.
Also added a "Close Holes" option to fill in all internal structures.
3D-Labprint Models aren't sliceable (till years) #3062 #3708
2021-06-01 11:10:12 +02:00
Martin Budden
bd6badf123 Added option to independently set z axis travel speed 2021-05-31 21:20:43 +02:00
Vojtech Bubnik
409e1c5cc8 Some fixes after preceding merge. Moved mmu_segmented_region_max_width
from PrintConfig to PrintObjectConfig.
2021-05-26 16:14:52 +02:00
Vojtech Bubnik
980ca195f5 Merge remote-tracking branch 'remotes/origin/lh_multi_material_segmentation' into vb_print_regions 2021-05-26 15:23:35 +02:00
Vojtech Bubnik
e658fe0698 WIP: PrintRegion refactoring, it finally compiles!
Config/PrintConfig refactoring to support operator< for StaticPrintConfig
derived containers.
2021-05-24 14:10:04 +02:00
Vojtech Bubnik
a7368b9deb Fixing thread-safe StaticConfig creations #6477
fix un-threadsafe code for creating config enum hashtable. #6475
2021-05-04 11:03:26 +02:00
Vojtech Bubnik
d1cfdcb49e Refactoring of StaticPrintConfig & derived classes:
1) Using boost::preprocessor to reduce code duplicities when defining
   new configuration values.
2) Implemented static hash() and operator== on StaticPrintConfig derived
   classes to support hash tables of instances thereof.
2021-04-26 18:37:10 +02:00
Vojtech Bubnik
d9ed9149ae 1) Moved first_layer_heigth frrom PrintObjectConfig to PrintConfig.
Thus the first_layer_height is no more object specific. That makes
   a lot of sense due to the brim calculation being performed over
   all layers at once and due to future merging of supports of
   different objects at first layer.
2) Because now first_layer_height is print specific, the relative
   first layer height derived from the object layer height was partially
   disabled: First the relative first layer height is converted to
   an absolute value when importing config, second the side text
   was changed from "mm or %" to "mm". Still the UI allows entering %.

Both changes may be controversial, let's wait for user feedback.
2021-04-21 12:09:43 +02:00
Lukáš Hejl
368b48b0a0 WIP: Allows regions of MMU segmentation to be trimmed by chosen width. 2021-04-19 07:12:42 +02:00
Vojtech Bubnik
dbd1c09523 FDM snug supports: New parameter "closing radius", inspired by Cura's
support_join_distance
2021-04-12 14:56:36 +02:00
Vojtech Bubnik
8fd731f7a0 New FDM support sparse infill zig-zag algorithm.
Fixed some old support and infill issues.

Fixes support problem #4295
Fixes Parts of interface layer extends beyond supports and cannot be printed
Fixes support missing under horizontal overhang #6058
Fixes Slicer double-traces small sections of Rectilinear Supports, causes
Fixes plastic buildup and nozzle crashes #4951
Fixes Add "Angle Interface layers" #2969
2021-04-08 15:29:40 +02:00
Lukas Matena
8c89bf748b Implemented new acceleration control behaviour for the new Marlin firmware flavor:
- show extra travel acceleration settings in 'Machine limits' page in Printer Settings
    when the new firmware flavor is selected

- updated tooltips on the config values (they were basically wrong even in the current version)

- 'Marlin (legacy)' firmware flavor behaviour should not change: it exports M204 Pa Rb Ta
    (where a, b are the values from machine limits) at the beginning of gcode and it uses
    M204 S... for feature type dependent acceleration settings (legacy variant of M204 P.. T..)

- new Marlin Firmware exports M204 Pa Rb Tc (where a,b,c are the values from machine limits).
    Feature type dependent acceleration is set using M204 P..., not overriding the travel acceleration.
2021-04-06 15:45:49 +02:00
Lukas Matena
f0e9ad46ec Renamed the gcfMarlin enum value to gcfMarlinLegacy so we never mistake it for the new one
There should be no functional change.
2021-04-06 15:45:49 +02:00
Lukas Matena
151a76ee92 Duplicated Marlin firmware flavor to 'Marlin (legacy)' and 'Marlin Firmware'
The two flavors should be identical after this commit, except that GCodeProcessor.cpp was not updated. This shall be done in a later step.
2021-04-06 15:45:49 +02:00
Vojtech Bubnik
af9c7c967f Implementing a new switch for the shape of support towers:
expanded to a grid (the old way) vs.
snug (like the upstream Slic3r, Cura or Ideamaker).

Snug supports suffered from the degeneracies when merging overhang islands
over a large number of layers when projecting the support towers down.
We borrowed the idea & a bit of code from Cura by simplifying the support
polygons by closing the concave cracks, see the smooth_outward() function
and the MutablePolygon class.

Fixes Support problems with models with hole in the walls. #555
Fixes Support in the Air #740
Fixes [Bug] Supports generated beyond bed edges (X<0 and X>250) and where none are needed. #902
Fixes Unable to remove support material/can't change support "inflation distance" #2708
Fixes FR: support inflation and support conform to boundary #4783
Fixes Support blocker not working on this model #1346
Fixes Unnecessary support material #1993
Fixes support blocker enforcer issue #6240
2021-03-23 11:06:45 +01:00
Vojtech Bubnik
73b88e6ce0 Splitting FDM support gap to top / bottom, introducing
support_material_bottom_contact_distance
Fixing Crash in support generation after fcb714c (repro attached) #6195
2021-03-15 09:55:57 +01:00
Vojtech Bubnik
00db3dc419 WIP: Splitting the number of top / bottom support interface layers.
If the new support_material_bottom_interface_layers is left at default -1,
then support_material_interface_layers is used for both top and bottom
interface layers.
If support_material_interface_layers == 0, then neither top nor bottom
interface layers are being extruded.
2021-03-15 09:55:56 +01:00
Vojtech Bubnik
ceea9de8b8 WIP: Refactored bridging flow from normal flow, new config value
'thick_bridges' to switch between the Slic3r vs. S3D/Cura/Ideamaker
way of printing 1st object layer over supports.
Simplified the PresetHints.
2021-03-15 09:55:56 +01:00
Lukas Matena
1efa9a06f6 Adjustable wipe tower brim 2021-03-05 16:41:02 +01:00
Vojtech Bubnik
6f5bf71f11 Fixing some compiler warnings 2021-02-24 19:53:50 +01:00
Vojtech Bubnik
61a5b43ac3 Fix of Add option to change support interface pattern #1197
New config field for switching the support interface pattern between
default (rectilinear for non-soluble interface, concentric for soluble interface),
explicit rectilinear and explicit concentric.

Also the config layer was reworked a bit to reduce some switch statements
on ConfigOptionEnum<> templates.
2021-02-24 15:59:18 +01:00
Vojtech Bubnik
aee136cedd Squash merge of pull request Raft enhancements #6003
thanks @nemart69
2021-02-24 11:59:22 +01:00
Vojtech Bubnik
fcb714cd24 Added a single perimeter to the first layer of support or raft.
Fixes [Request] Add optional perimeter to raft #756
Fixes First support layer does not stick to bed #2101

New parameters raft_first_layer_density and raft_first_layer_expansion
to influence the 1st layer of raft or support.
Fixes Allow to disable raft under support structures. #3772
Fixes raft is larger than necessary #2568
Fixes Supports on the build plate should have a solid bottom interface for better adhesion #1165

Changed the 1st layer infill to rectilinear even for soluble materials.
Fixes first layer of support for multi filament support oddly spaced #1445
Fixes Full Soluble Materials interfacing into Models + Soluble material noise on Bed #684
2021-02-24 08:48:40 +01:00
Vojtech Bubnik
db2d78ff21 Reduction on compiler warnings, mainly on MSVC.
Fix of the new gap_fill_enable flag: Take it into account when comparing
regions.
2021-02-10 17:29:07 +01:00
Vojtech Bubnik
6555b32f5c Squashed commit of the following:
commit 61b3ca0b4b4a0b4cfbbc706ede94ef7ccec4c91f
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Wed Feb 10 15:42:27 2021 +0100

    Fix of fuzzy skin

commit d971ed51a5bb65e8bdfd326bc41b9d7ab2e20834
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Wed Feb 10 14:12:51 2021 +0100

    CMake adjustment of MINIMUM_BOOST_VERSION

commit 5d8aa2c59ecf7e32456f2e43e07dedc7d24eb21c
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Wed Feb 10 14:12:33 2021 +0100

    Fix of debug compilation after warning removal.

commit 5e339b3078f0c9d75b6fac28ed3c295ae9fbbef5
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Wed Feb 10 14:11:34 2021 +0100

    Fuzzy Skin changes:
    1) Moved the parameters to region
    2) Removed experimental code.
    3) Allowed fuzzyfication of both outer perimeter and holes.
2021-02-10 16:02:43 +01:00
Ilya
f639c08caf
Added separate checkbox for gap filling (#5999)
* in dev

* moved to Advanced menu
2021-02-10 16:01:40 +01:00
Vojtech Bubnik
73c9f939e0 Squash merge of lh_brim_rework,
brim separated to Brim.cpp,hpp
Refactored accessors to PrintObjectPtrs, PrintRegionPtrs, LayerPtrs,
SupportLayerPtrs for const correctness.
2021-02-03 15:12:53 +01:00
Vojtech Bubnik
dcec1fa749 Commented out fuzzy_skin_shape for now, the parameter may be used
in the future, but for now we don't want the parameter to be stored
into configuration files.
2021-01-27 09:36:39 +01:00
Vojtech Bubnik
4620402ab4 WIP: Initial Fuzzy Skin implementaiton #2010
Based on pull request Experimental fuzzy skin mode #4611 by @etet100
and on CuraEngine implementation of perimeter fuzzyfication
void FffPolygonGenerator::processFuzzyWalls(SliceMeshStorage& mesh)
2021-01-26 09:29:34 +01:00
Vojtech Bubnik
2bc6679a62 Partial revert of 1bffc2b99b
(deriving the printer technology from the merged configs).
2021-01-19 15:18:03 +01:00
Vojtech Bubnik
b5f95dd4b4 Avoid crossing perimeters max detour could newly be specified
in percentage of the direct path.
2020-12-14 12:45:49 +01:00
Vojtech Bubnik
5f456ebbe7 Merge branch 'lh_avoid_crossing_perimeters' 2020-12-08 13:39:33 +01:00
Vojtech Bubnik
e1fc0b17a2 Ramp up layer cooling fan over X layers #848
Fan speed will be ramped up linearly from zero at layer disable_fan_first_layers
to maximum at layer full_fan_speed_layer. full_fan_speed_layer will be
ignored if lower than disable_fan_first_layers, in which case
the fan will be running at maximum allowed speed at layer
disable_fan_first_layers + 1.;

WIP: The cooling PresetHints are likely not finalized yet.
2020-12-04 11:53:02 +01:00
Lukáš Hejl
87879034f6 Merge remote-tracking branch 'origin/master' into lh_avoid_crossing_perimeters
# Conflicts:
#	src/libslic3r/MotionPlanner.cpp
#	src/libslic3r/libslic3r.h
2020-11-29 17:27:23 +01:00
Vojtech Bubnik
62bdc192d8 Fix of [2.3.0-alpha4] Crash - several models cause crash when slicing #5208
Fixed some issues in internal anchors of the Adaptive Cubic infill.
The ugly and dangerous implicit casting operators in Line, MultiPoint,
Polyline and Polygon were made explicit.
2020-11-24 16:01:08 +01:00
Vojtech Bubnik
f0606c2a76 Merge of https://github.com/prusa3d/PrusaSlicer/pull/2856
Add aligned rectilinear infill functionality by @m-schubert
Implements [Feature Request] Aligned rectilinear infill #1938
2020-11-21 14:10:17 +01:00
YuSanka
5330b34d0a Added "Filament -> Spool weight" parameter 2020-11-20 14:31:11 +01:00
Lukáš Hejl
c828a5d6e9 Added the possibility to set the maximum length of the detour 2020-11-16 14:22:32 +01:00
Vojtech Bubnik
4280fdb5f2 Reworked connection of infill lines to perimeter lines.
Added a new "infill_anchor" parameter.
2020-11-16 10:54:00 +01:00
Vojtech Bubnik
7c571c1d9d Merge of pull request Add support for RepetierServer #4384 by @docbobo
with the following refactorings:

1) Removed the "printhost_slug" config from the Printer config
   and from all the Printer config related spots.
2) "printhost_slug" renamed to "printhost_port". Slug sounds nasty.
3) Improved error reporting of RepetierHost class.
4) Refactored for the new "Physical Printers"

Following refactorings were done independently of the Repetier pull request:
1) Removed PrintHost static print config.
2) Clean-up after conversion of print host configuration
   from Printer config to Physical Printer config.
3) Fixed some issues, where the Printer config was still queried for
   host configuration. Vojtech believes that this should not happen
   after the host configuration is converted to physical printers.

Vojtech still feels that more refactoring is needed in regard to porting
the host configuration from Printer profile to the new Physical Printer
profile.
2020-10-28 09:51:05 +01:00
Lukas Matena
18f72d82b9 Merge branch 'pa_reprap_g10_temperature_support' of https://github.com/ardenpm/PrusaSlicer into lm_g10 2020-10-23 11:42:35 +02:00
Vojtech Bubnik
a8fda7d2f1 Fixed some more issues in copy / paste of objects and volumes
due to the layer_height_profile, paint on supports and seam
being stored as an object on its own onto the Undo / Redo stack.
2020-10-15 17:29:49 +02:00
Lukas Matena
b42a12db66 Fixup of 8df0181 (turning off the export of machine limits)
This should solve #1212 for good
2020-10-06 13:31:42 +02:00