Commit Graph

3344 Commits

Author SHA1 Message Date
bubnikv
696d420dc8 New feature: Recommended object thin wall thickness hint. 2018-01-04 15:38:06 +01:00
YuSanka
f8a48f5c13 Start adding functions to work with presets 2018-01-03 10:12:42 +01:00
bubnikv
02256e900f Merged the branch time_estimate 2018-01-02 10:57:30 +01:00
YuSanka
61247fe8d3 Filling the Filament's and Printer's Tabs. Finished. It's need to adding functions to work with presets 2017-12-26 18:12:05 +01:00
YuSanka
c5e21c1fbf First steps 2017-12-26 18:12:03 +01:00
bubnikv
48ba7e5f73 Removed dependency on Perl Encode::encode_utf8. 2017-12-21 20:11:19 +01:00
bubnikv
3addeb57b4 Fix of "Program crashes when [Suppress "- default -" presets:] is DISABLED"
https://github.com/prusa3d/Slic3r/issues/643
2017-12-21 19:19:07 +01:00
bubnikv
f5160b7a72 Fixed "Slic3r crashes when sending STLs with special characters to the printer"
https://github.com/prusa3d/Slic3r/issues/597
The "Send to OctoPrint" function will now send the file name encoded
in UTF-8, so the file name will not get mangled.

The C++ Slic3r::encode_path() function was returning a string to Perl,
which was marked as UTF-8. This has been fixed, now encode_path() returns
a plain Perl string.

Added path_to_filename, path_to_stem, path_to_extension, path_to_parent_path
Perl wrappers to boost::filesystem::path splitting functionality
to be able to split UTF-8 encoded files on Windows correctly.
2017-12-21 16:56:33 +01:00
Lukas Matena
4583d62edd Merge branch 'master' into wipe_tower_improvements 2017-12-21 13:47:33 +01:00
bubnikv
7142126609 Grey out the compatible_printers_condition edit field in case
the compatible_printers list is non empty.
Changed the precendence of compatible_printers_condition over
compatible_printers. Now compatible_printers has precedence.
2017-12-20 13:32:02 +01:00
bubnikv
558a0753c1 Improved loading of the config wizard results.
Fixed some updates of the "compatible with printer" flags
at the print and filament presets.
2017-12-20 11:28:16 +01:00
bubnikv
c49d6a3ec7 Try to fix the config wizard initialization on OSX.
There is an issue when the config wizard is started from the help
menu and the "other" workflow is followed without clearing
the user profile directory.
2017-12-19 21:43:24 +01:00
bubnikv
67c6823dde Fixed a regression bug in the display of a filament name on the print
controller tab.
2017-12-19 21:12:24 +01:00
bubnikv
c3468f2ad9 Fix of preset selection. 2017-12-19 20:58:16 +01:00
bubnikv
0b6bd3cbde Implemented a "Reset user profile" on the first page of the configuration
wizard if the wizard is opened from the menu. This allows one
to reinstall the bundled printer profile cleanly.

Fixed a bug when loading a config bundle as a config: The config bundle
should not be unpacked into the user profile directory.
2017-12-19 19:51:22 +01:00
bubnikv
6b81f43206 First implementation of the "compatible_printers_condition"
for the print and filament profiles.
Added documentation for building the boost library for Slic3r on Linux.
2017-12-18 15:07:38 +01:00
bubnikv
bb61de8379 Fixed a regression error: The "current_extruder" identifier was not set
at the placeholder parser.
Implemented a new PlaceholderParser::evaluate_boolean_expression()
functionality to evaluate just a boolean expression using the full
expressive power of the macro processing syntax. This function
will now be used for deciding, which print or filament preset
is compatible with which printer preset.
2017-12-18 12:14:09 +01:00
bubnikv
88e9ba510b Run the wizard from OnIdle routine to be executed first after the UI
is initialized. This is necessary for the UI to initialize correctly
on OSX.
2017-12-14 17:35:06 +01:00
bubnikv
4bbe328117 Config wizard will prompt user to copy the profiles from Slic3r to Slic3rPE
if the datadir is left to the default value (which is Slic3r),
and Slic3rPE directory exists.
2017-12-14 13:47:22 +01:00
Enrico Turri
0fe855cd6d Time estimate shown in GUI as formatted string / Write to file made by class GCode's private methods 2017-12-14 09:18:28 +01:00
bubnikv
d47dc5da3e Fixed update of "dirty" profile when the "compatible_printers"
option appears (filter is active) or disappears (no filter active,
compatible with any printer).
2017-12-13 14:44:27 +01:00
bubnikv
898c697f13 Update the maximum volumetric flow hint at the filament page
when the page gets activated, so that the print & printer profile changes
are reflected immediately.
2017-12-13 14:12:47 +01:00
bubnikv
21b4e62e6e Fixed handling of print and filament presets incompatible
with the newly selected print profile,
fixed loading of print and filament tab pages after the print or filament
preset has been changed to be compatible with a newly selected printer.
2017-12-13 14:00:14 +01:00
bubnikv
673e98bc83 When the legacy OpenGL 1.2 is enforced, suppress anti aliasing as well.
Let's hope it will be a valid workaround for the reoccuring
buggy Intel HD Graphics driver issue.
2017-12-12 20:47:36 +01:00
bubnikv
743fc9dbd0 Workaround for buggy Intel HD Graphics OpenGL drivers:
Fall back to OpenGL 1.1 by a "use_legacy_opengl" preferences switch.
https://github.com/prusa3d/Slic3r/issues/233
https://github.com/prusa3d/Slic3r/issues/268
https://github.com/prusa3d/Slic3r/issues/619
2017-12-11 18:00:51 +01:00
Enrico Turri
50a45949d1 merge with master 2017-12-11 12:01:30 +01:00
Enrico Turri
bea9628be0 time estimation shown in GUI after gcode export 2017-12-11 11:11:54 +01:00
bubnikv
ae5863f5e0 Fixed a typo in a path to Resources on OSX. 2017-12-10 23:27:22 +01:00
bubnikv
679aa2822c Moved the Slic3rPE/print,filament,printer folders to
Slic3rPE/presets/print,filament,printer
to separate the presets from further data stored into the Slic3rPE
directory.
2017-12-10 22:11:00 +01:00
bubnikv
ca4bd96d5d Modification of Slic3r to search the icons in resources/icons
after they have been moved from var
2017-12-10 21:14:03 +01:00
bubnikv
657f2734f1 Extended the Config Wizard to offer a selection of config bundles
bundled with Slic3r installation, and install it into user's Slic3r profile.
These bundled config bundles will be contained in the Slic3r source
tree under Slic3r/resources/profiles.

Breaking change! The Slic3r user directory has been renamed to Slic3rPE
for the Prusa Edition. Also it is likely, that the Slic3rPE directory
will be reorganized before the final 1.38 release to reserve space
for temporary profiles downloaded from the Internet.
2017-12-10 13:19:44 +01:00
bubnikv
2eeca93a97 Feature Request: Add to Plater: Ctrl+O
implements https://github.com/prusa3d/Slic3r/issues/379
thanks @alexrj
2017-12-05 20:06:19 +01:00
qtux
b0f84c5cb2 Add used filament length to the "Sliced Info" box (#585) 2017-12-05 19:05:49 +01:00
bubnikv
8746f84fa2 Improved error reporting of the PlaceholderParser.
The PlaceholderParser is currently used by the GCode.cpp
and by Printer.cpp to generate a new name for the exported G-code or SVG file.
The PlaceholderParser::process() will throw a runtime_error with
a comprehensive error message.
The G-code export will include these error messages into the G-code text
with !!!!!! separators, and the GUI will inform the user, that the G-code
export failed.
2017-12-05 15:54:24 +01:00
bubnikv
8af329e660 Added Perl to C++ interfaces for creating the preset editor pages
from C++ and to add debugging menus from C++. These lightweigth
interfaces should help new team members to hack the UI without
a Perl knowledge.
2017-12-04 10:48:40 +01:00
bubnikv
354408c7e6 Load the wxWidgets PNG handler only once. 2017-11-30 20:25:59 +01:00
bubnikv
a0268a1906 Some other accelerator keys were not displayed on Linux and OSX correctly.
Suppress them on these systems.
2017-11-30 20:13:05 +01:00
bubnikv
d161d4f78c There is a hack applied to add accelerator keys to the menu
without being registered. Unfortunately this hack works on wxWidgets
on Windows. On OSX or Linux, a warning is emited and no accelerator
key is shown on the menu.
This commit just removes the warnings, it does not add the menu accelerators.
https://github.com/prusa3d/Slic3r/issues/539
2017-11-30 18:26:15 +01:00
bubnikv
a617e02ae6 New hot key for auto arrange: 'a'. 2017-11-30 17:45:03 +01:00
Lukas Matena
a733df8f37 Wipe tower rotation - preview box 2017-11-30 14:43:47 +01:00
Lukas Matena
2921302fe9 GUI integration of rotation angle setting 2017-11-30 12:08:22 +01:00
bubnikv
6aff27f3ab Moved initialization of Slic3r XS datadir variable to GUI.pm
Solves https://github.com/prusa3d/Slic3r/issues/594
2017-11-30 10:22:39 +01:00
bubnikv
672194b475 Ported the between_objects_gcode custom G-code blocks,
thanks @lordofhyphens, https://github.com/alexrj/Slic3r/pull/3275

Improved handling of custom G-code blocks: Slic3r will try to extract
the target extruder and bed temperatures from the custom G-code blocks.
2017-11-28 15:19:57 +01:00
bubnikv
3c0cd3cbc8 Improve error handling of loading Slic3r profiles. 2017-11-28 10:08:01 +01:00
bubnikv
bfce6dba9b Integrated the "compatible printers" idea by @alexrj with Vojtech's twist:
The incompatible presets are hidden in the tabs if show_incompatible_presets
is false. If show_incompatible_presets is true, there is a button to
show / hide the incompatible presets from the tab selector.
2017-11-10 17:27:05 +01:00
bubnikv
b11d9708ed Updated Controller after the presets C++ port. 2017-11-02 21:51:06 +01:00
bubnikv
e8b6d92d4d Looks like the reworked C++ preferences start to work again. 2017-11-02 16:21:34 +01:00
bubnikv
835e5b71a8 Reduce UI flicker. 2017-10-28 00:18:02 +02:00
bubnikv
857b78ddca Fix of the previous commit: Slic3r::Config::new_from_defaults_keys
has to be provided with a reference to array of strings.
2017-10-27 22:49:59 +02:00
bubnikv
2455aee97c Further reduction of Perl Config.pm methods. 2017-10-27 18:52:35 +02:00
bubnikv
3bc79e80d5 Fixed configuration & validate C++ ports. 2017-10-27 16:11:06 +02:00
bubnikv
5a99e694ce Another step towards the C++ presets. 2017-10-26 17:17:39 +02:00
bubnikv
ee645007f2 Another step towards C++ presets. 2017-10-25 12:53:31 +02:00
bubnikv
3731820c48 Optimization of the configuration layer:
The values of StaticPrintConfig derived objects were searched by a name
walking through a huge chained if.
Now they are being mapped with a std::map.
Also initialization of StaticPrintConfig classes from their ConfigOptionDef
defaults is done by maintaining a single global definition of each
StaticPrintConfig derived class, and a new instance is initialized
from this static copy.

Also the ConfigOption instances are casted using static_cast
wherever possible, and their types are verified by a virtual type() method.
This approach avoids insiginificant performance penalty of a dynamic_cast.

Also the compare and clone methods were added to ConfigOption,
and the cloning & compare work on binary values, not by serialization.
2017-10-17 16:01:18 +02:00
bubnikv
5a844c91f1 When executing G-code post-processing scripts written in perl on windows,
run the perl interpreter, which was used to run the Slic3r.
https://github.com/prusa3d/Slic3r/issues/514
2017-10-03 17:05:47 +02:00
bubnikv
84d4bf8fdb Load presets into the new C++ class. 2017-10-02 17:35:00 +02:00
bubnikv
b1e3b0cdf9 Further fixes of the previous commit. 2017-09-20 10:16:00 +02:00
bubnikv
473233019c Initial partial implementation of presets in C++. 2017-09-19 13:55:48 +02:00
bubnikv
b58756f38b A bit of refactoring and beautification. 2017-09-18 10:01:37 +02:00
bubnikv
e16f827223 Ported PrintConfigBase::_handle_legacy from Perl to C++,
merged from upstream Slic3r, thanks to @alexrj.
2017-09-18 09:56:48 +02:00
bubnikv
630b746cab Fix a lag when starting to move a platter object.
The fix is done by disabling the print out of a model statistics,
which runs the model fixing twice.
2017-09-14 09:06:14 +02:00
bubnikv
6d4ec5c989 Further fix of https://github.com/alexrj/Slic3r/issues/4085
making it safe in case wxWidgets do not report supporting multisampling,
but the OpenGL context actually does and it leaves the multi-sampling enabled.
This then may in theory lead to incorrect picking by color.
2017-09-12 10:14:24 +02:00
bubnikv
888a904c9b Workaround of
"GL_MULTISAMPLE and GL_ARRAY_BUFFER_ARB messages on failed launch"
https://github.com/alexrj/Slic3r/issues/4085

Also fixes
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=872273
2017-09-12 10:03:10 +02:00
bubnikv
a2b876e261 Fixing a crash on pressing +/- with no object active.
https://github.com/prusa3d/Slic3r/issues/467
2017-08-14 12:50:35 +02:00
bubnikv
3b54b68b59 Merged new methods for handling menus with icons,
merged "Use submenus for listing options in dropdown menu." #3905
thanks @alexrj
Adapted the "Use submenus" code to sort the menus in the same order
as they appear in the parameter tabs.
2017-08-04 16:28:01 +02:00
bubnikv
632bf56f29 merged save_window_pos / restore_window_pos from @alexrj Slic3r. 2017-08-04 15:54:12 +02:00
Alessandro Ranellucci
38e713c23c Remember object settings dialog size and position. #3943 2017-08-04 15:45:10 +02:00
bubnikv
ed46cfa19d Simplified the code base by requiring wxWidgets >= 3.0 2017-08-03 17:47:18 +02:00
bubnikv
1385018724 Unicode handling:
Removed the Perl dependencies on Encode, Encode::Locale and Unicode::Normalize.
Added dependency on boost::locale.
Added encode_path, decode_path, normalize_utf8 functions to Slic3r.xs

Slic3r.xs has been made mostly utf8 safe by using the boost::nowide library,
thanks to @alexrj for the idea.

Simplified the encode_path / decode_path stuff:
wxWidgets are unicode already, so there is no need to decode_path() from it.
Perl / win32 interfacing is non-unicode, so decode_path() is executed
on ARGV just at the beginning of the perl scripts.
2017-08-03 17:31:31 +02:00
bubnikv
31085fb1d7 Ported some ModelObject methods from Perl to C++.
Added some utility functions to TriangleMesh, thanks to @alexrj
Some porting to C++ based on work by @alexrj.
2017-08-02 16:05:18 +02:00
bubnikv
777023c7a8 Ported PrintObject::prepare_infill & combine_infill from Perl to C++. 2017-08-02 14:24:32 +02:00
bubnikv
933d5b261a Fix of a "Scale to Size" dialog, where a bed size is shown scaled. 2017-08-01 14:42:59 +02:00
bubnikv
71f99423c5 New feature: Bridging angle override through a bridge_angle config
variable. When set to zero, the usual automatic bridge detection applies.
The bridging angle override may be set at the Infill->Advanced settings,
or through a modifier mesh.
2017-07-31 16:23:52 +02:00
bubnikv
3b51f64411 Fixing https://github.com/prusa3d/Slic3r/issues/432
Slic3r GUI not starting, error when using --gui (on linux)

Implements https://github.com/prusa3d/Slic3r/issues/407
Shortcuts: Movement in 3D Space
Assignment of the camera shortcuts is clear from the menu accelerators.

Implements https://github.com/prusa3d/Slic3r/issues/406
Shortcuts: Rotate +/- 45 degrees
l/r keys rotate the object

Also changed the accelerators for adding / removing duplicates from
Ctrl++/- to plain +/-, from Ctrl-Del to plain Del,
and added an 's' key accelerator for uniform scaling.
2017-07-21 16:29:40 +02:00
bubnikv
7103fa78ff Reverted back width of the tree control on the Tab panels.
Fixes https://github.com/prusa3d/Slic3r/issues/428
2017-07-20 13:09:02 +02:00
bubnikv
afd5d9eff3 Fixed issues with undefined filament color preview values. 2017-07-20 13:02:12 +02:00
bubnikv
81823fe7df Reduced the content of Geometry.pm, removed unused Perl subroutines.
Reduced the use Slic3r::Geometry and use Slic3r::Geometry::Clipper
clauses to only reference used subroutines.
2017-07-19 10:45:39 +02:00
bubnikv
c9325338a8 Fixed "upscaled objects cannot be cut above original height"
https://github.com/prusa3d/Slic3r/issues/419
2017-07-12 23:28:11 +02:00
bubnikv
3a813aaef6 Implemented "Suggestion for Preview View Change"
https://github.com/prusa3d/Slic3r/issues/415

Use left / right keys to switch between the low / high layer scroll bars
on the 3d preview screen.
2017-07-11 18:21:25 +02:00
bubnikv
6f28818f87 Fix of
"Unicode char like for example "ł" crush app when used in profile name"
https://github.com/prusa3d/Slic3r/issues/388

The Prusa3D binary builds are missing the UTF8 libraries.
To avoid having to bundle them, the case sensitive regexes testing
file suffixes were replaced with explicit enumeration of lower / upper
case letters. While crude, it avoids triggering the UTF8 library.
2017-07-11 17:15:34 +02:00
bubnikv
32213ce679 Implements loading of multi-part objects as a bunch of STLs
for a multi-material printer.
Also only a single pop-up dialog is open when loading multiple files.
2017-07-11 13:55:55 +02:00
bubnikv
a7153c67e6 Changed layout of the Tab page to accomodate a wider profile selection
combo box.
https://github.com/prusa3d/Slic3r/issues/194
https://github.com/prusa3d/Slic3r/issues/377
2017-07-11 12:02:44 +02:00
bubnikv
774c69e3c6 Fix of "Problem with larger brim overlapping "
https://github.com/prusa3d/Slic3r/issues/373
2017-07-07 16:40:23 +02:00
bubnikv
8160db23cc Implementation of "XY size Compensation for first layer"
https://github.com/prusa3d/Slic3r/issues/190
2017-06-26 16:28:10 +02:00
bubnikv
0454cc95f9 Ported the cooling changes from @alexrj: Don't slow down the external
perimeters if not necessary, don't take the bridging time into account
when slowing down the print.

Removed Extruder & GCodeWriter Perl bindings.
Improved Extruder for constness.
Refactored GCode::m_elapsed_time to struct ElapsedTime.
2017-06-22 12:59:23 +02:00
bubnikv
f0325575c2 Slic3r has been modified to propagate the following filament specific
values to GCode generator, one per active extruder:

bed_temperature
bridge_fan_speed
cooling
disable_fan_first_layers
fan_always_on
fan_below_layer_time
first_layer_bed_temperature
max_fan_speed
min_fan_speed
min_print_speed
slowdown_below_layer_time

Now it remains to extend Slic3r to correctly apply these values.
2017-06-21 16:15:39 +02:00
bubnikv
b12e4689e8 Fix of changing the order of volumes of a multi-volume part:
The 3D preview scene was not updated properly.
2017-06-21 14:10:22 +02:00
bubnikv
7ca02bda0f Fix of a "split" function issue.
1) Load a multi-part stl
2) Rotate it by 90 degrees
3) Split it.

Before this fix, the split object jumped away from the print bed.

This sound similar to
https://github.com/prusa3d/Slic3r/issues/309
2017-06-19 14:26:19 +02:00
bubnikv
c33ed9144c Fixed the objects jumping 2017-06-19 11:47:43 +02:00
bubnikv
aa54c3402b Disable the "split" button when there is no volume selected. 2017-06-15 18:11:36 +02:00
bubnikv
b724d789fd New feature: Splitting an object into a multi-part volume. 2017-06-15 15:38:15 +02:00
bubnikv
2ac981e422 Improved error handling when importing configuration from a G-code. 2017-06-14 20:18:46 +02:00
bubnikv
93dce7a2d3 Ported config load / stored to C++, thanks @alexrj
Implemented import of config values from the G-code.
2017-06-14 17:51:14 +02:00
bubnikv
3e82eb7010 Extended the tooltpis for quick slice functions. 2017-06-14 12:52:50 +02:00
bubnikv
a73a1a3f09 Removed the DLP projector dialog as it is confusing to our customers
and we doubt anybody is using it.
2017-06-14 12:05:23 +02:00
bubnikv
82bde51c27 Removed the 'simple' mode. 2017-06-14 11:48:08 +02:00
bubnikv
fdb5ed1fcb Fix for "Crash when deleting all objects"
https://github.com/prusa3d/Slic3r/issues/193
2017-06-13 13:42:38 +02:00
bubnikv
f7831240e1 Fixed compilation on OSX 2017-06-13 12:09:49 +02:00
bubnikv
5cae4cc614 Fix of https://github.com/prusa3d/Slic3r/issues/285
Refactored Model.cpp/hpp to C++x11 loops,
simplified the mesh / bbox handling.
2017-06-13 11:35:24 +02:00
bubnikv
f408f08850 Disabled the new Slic3r version check until we have a server set up
for the Slic3r Prusa Edition.

Hopefully a fix of https://github.com/prusa3d/Slic3r/issues/258
by moving the 2D thumbnail generation to the main thread and
forcing the simple 2D convex hull for even the small objects.
2017-06-12 14:25:35 +02:00