Commit Graph
100 Commits
Author SHA1 Message Date
bubnikv 7308017ee8 Added the AGPL v3 license file 2017-10-21 16:09:25 +02:00
bubnikv fe0bf6ebf3 Optimization of Perlglue ConfigBase__get 2017-10-18 14:26:38 +02:00
bubnikv d9d6d996e9 Utility functions to pass wxWidgets pointers from Perl to C++ code.
C++ var_dir / set_var_dir() interface to access the UI resources
from the C++ code.
2017-10-17 20:00:15 +02:00
bubnikv af51220f34 Fix of preceding commit. 2017-10-17 19:41:04 +02:00
bubnikv b9d57483d8 perglue.cpp - use static_cast instead of dynamic_cast if possible,
use switch instead of plenty of ifs,
export clone<DynamicPrintConfig> to Perl XS.
2017-10-17 19:19:41 +02:00
bubnikv 746afbd790 Yet another compilation fix? 2017-10-17 18:49:07 +02:00
bubnikv 9a7d1bb566 Another compilation fix. 2017-10-17 18:41:54 +02:00
bubnikv de2c6a2a3d exception what() method shall be noexcept. 2017-10-17 17:53:16 +02:00
bubnikv 67ce4d862b One more fix of the preceding commit. 2017-10-17 17:48:04 +02:00
bubnikv 38aca5047f Fix of the preceding commit for gcc & clang:
Add a class name suffix to the s_cache static members
of the StaticPrintConfig derived classes.
2017-10-17 17:37:03 +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 a91d7cb2f7 Redefined the ==, != operators of Point and BoundingBox classes
to become members of their respective classes to avoid type clashes
through implicit casting operators of ConfigOption classes.
2017-10-17 14:36:30 +02:00
bubnikv a191fbbec8 Fix of a 3D print path preview for the wipe tower: Calculate
the bounding boxes accurately.
2017-10-04 13:50:04 +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 a830a3c161 Fixes the scene disappearing when there are no Prusa MM priming towers. 2017-10-03 14:15:00 +02:00
bubnikv e719e48a84 Fixed a bug in the temperature handling of the Prusa Multi Material
priming towers.
2017-10-03 13:43:34 +02:00
bubnikv eb0117b1c1 Fix of https://github.com/prusa3d/Slic3r/issues/492
When a layer contained the support interface only, it was errorneously
printed with the support base material.
2017-10-03 13:22:37 +02:00
bubnikv 9898024ce9 admesh: changed header_num_facets to uint32 2017-10-03 12:41:53 +02:00
bubnikv 1958673806 Fixed the cubic infill: The cubic infill was 30% flatter than it should
have been.
2017-10-03 11:29:13 +02:00
bubnikv a52a04550e Big endian fix, thanks to @hyperair for hints and initial implementation. 2017-10-03 10:57:16 +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 8089631f10 Fix of the previous commit: Fix compilation on Linux. 2017-09-20 10:03:53 +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 cd084a33c6 Fixed a regression bug, which was made during the porting of
discover_horizontal_shells() fron Perl to C++, where
the already calculated bridge direction was being lost.

Improved constness of the debug methods
    void export_region_slices_to_svg(const char *path) const;
    void export_region_fill_surfaces_to_svg(const char *path) const;
2017-09-14 13:15:32 +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 777dc8c48b Fixed a missing bbox.defined=true assignment. 2017-09-13 15:52:51 +02:00
bubnikv e2a169b0e5 Changed the G-code protocol for cleaning up the priming towers
for the multi material prints.
2017-09-13 13:27:49 +02:00
bubnikv 83b5b9e660 Set a missing bbox.defined flag. 2017-09-13 10:28:02 +02:00
bubnikv 6b2b279889 Fix of "exponentional values generated as G1 F-1.95058e+006 causing problems"
https://github.com/prusa3d/Slic3r/issues/463
2017-09-12 18:20:06 +02:00
bubnikv 98408bbed0 Fixed a crash when slicing leads to no print.
Fixed a bug in TriangleMesh::bounding_box().
2017-09-12 16:48:44 +02:00
bubnikv b08d6f1969 The last priming area is shortened and the excess wipe is moved
into the wipe tower if there is enough space inside the wipe tower.
2017-09-12 15:55:38 +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 100c8f60a5 Added GCode/PrintExtents.cpp,h
Added a check for a collision between the multi material priming
regions with the rest of the print.
2017-09-12 09:01:48 +02:00
bubnikv 748c1ab1de Merge branch 'master' of https://github.com/prusa3d/Slic3r 2017-09-11 09:58:54 +02:00
bubnikv fd3b474a63 Merges https://github.com/prusa3d/Slic3r/pull/509 2017-09-11 09:58:41 +02:00
bubnikv 836dd98113 CMake build system: Adding -fext-numeric-literals when compiling with gcc.
This should fix https://github.com/prusa3d/Slic3r/issues/500
2017-09-11 09:20:22 +02:00
bubnikv 93774087f1 Fixed typo from the previous commit. 2017-09-04 13:55:56 +02:00
bubnikv 2c5304a520 Implemented an initial priming line for a single-material print
on a Prusa Multi-Material printer.
2017-09-04 13:51:05 +02:00
bubnikv 29d9a1e810 Fixed a default locale on Windows for UTF normalization. 2017-09-04 10:34:51 +02:00
bubnikv b35f5780dc Fixed compilation on OSX & LInux 2017-09-04 10:14:56 +02:00
bubnikv b610866d77 Implemented priming of all the filaments of the Prusa Multi Material. 2017-09-01 17:30:18 +02:00
bubnikv 247070cd82 Fixed a regression bug of Slic3r::encode() / decode() 2017-08-30 14:57:13 +02:00
bubnikv dcbc28fd49 Fixed ReleaseWithDebugInfo build. 2017-08-30 14:55:45 +02:00
bubnikv 38e35cefc7 Removed the Perl Build.PL for the XS module. This has been replaced
by the CMake based build system.
2017-08-30 10:03:32 +02:00
bubnikv 4bd694e205 CMake build process: Fixed build on OSX: renamed XS to XS.bundle 2017-08-29 16:37:46 +02:00
bubnikv 6688d6c590 CMake build system: Link perl library on windows only. 2017-08-29 12:41:59 +02:00
bubnikv c0a9c67632 CMake build system: Fix on older linux? 2017-08-28 23:17:24 +02:00
bubnikv ff4e8d94c0 CMake build process: Workaround for an old CMake on Linux. 2017-08-28 23:11:43 +02:00
bubnikv d5c2c252a5 CMake build process: Fix of the Perl Alien::Wx querying script. 2017-08-28 22:23:21 +02:00
bubnikv 0cb491e135 CMake build process:
Added the "test" target to execute the perl prove unit / integration tests.
Added a post-build step to copy the XS.dll & Slic3r/XS.pm to local-lib.
2017-08-28 19:11:16 +02:00
bubnikv cf2f29a5f1 reverted a regression bug in the Perl Wx module minium version
https://github.com/prusa3d/Slic3r/issues/468
2017-08-28 15:59:26 +02:00
bubnikv 48f826c2c5 Disabled a limit of the nozzle diameter 0.4mm for the Prusa Wipe Tower.
Allowed scaling of the extrusion amount over the Prusa Wipe Tower
for layer heights over 0.2mm.
2017-08-28 14:57:00 +02:00
bubnikv 61b89865ff Fixed a regression bug (bundling of multiple STLs into a single model). 2017-08-28 14:54:46 +02:00
Vojtech Bubnik 3469bb2ea6 Merge branch 'master' of https://github.com/prusa3d/Slic3r 2017-08-18 14:18:42 -07:00
Vojtech Bubnik 81e2c6f2db CMake build system: Made the Release build default 2017-08-18 14:18:27 -07:00
Vojtech Bubnik 85ffbf1f57 Merged 2017-08-18 22:47:26 +02:00
Vojtech Bubnik d0c43c99c3 CMake build system: Linux fixes 2017-08-18 22:45:24 +02:00
Vojtech Bubnik 9620596d59 CMake build system - fixes for OSX. Now a working XS.bundle is being generated. 2017-08-18 13:06:10 -07:00
bubnikv ba1c0b0137 CMake build process - fixes of the previous check-ins to build
cleanly on Windows & Linux. There is still a work on OSX:
The XS module has to be linked without perl.lib and with
the following parameters to produce a bundle: -bundle -undefined dynamic_lookup
2017-08-18 21:09:53 +02:00
bubnikv e2a685b8bb CMake build system: Fixes for OSX. 2017-08-18 16:59:36 +02:00
bubnikv 3dbc93c663 CMake: Aadd local-lib to PATH and PERL5LIB environment variables,
so the locally installed modules (mainly the Alien::wxPerl) will be reached.
2017-08-18 14:34:54 +02:00
bubnikv cb1bc0aaf8 CMake build system, initial placeholder for slic3r C binary. 2017-08-18 13:32:35 +02:00
bubnikv 428b7d3f9d CMake: Added all header files to the particular libraries. 2017-08-18 12:41:01 +02:00
bubnikv 2a3d2fb8c1 CMake: Split the globs into separate libraries. 2017-08-18 11:39:24 +02:00
bubnikv 401059066e Switched to Perl local::lib for local compilation.
Taken from upstream Slic3r, thanks @alexrj.
2017-08-18 09:58:50 +02:00
Vojtech Bubnik 952ca18bf9 Modified to compile on Ubuntu 2017-08-17 19:43:14 +02:00
bubnikv 94483202ec CMake build system: Always use the system libexpat on Linux. 2017-08-17 18:33:15 +02:00
bubnikv c0f099c2cf CMake conversion, further steps: Now it compiles on Visual Studio 2013. 2017-08-17 18:27:51 +02:00
bubnikv bb36e78428 Further CMake integration, split the xs CMakeFiles.txt to
FindAlienWx.cmake and FindPerlEmbed.cmake for easier Perl integration.
2017-08-17 13:30:46 +02:00
bubnikv 5673205d2e Initial implementation of a CMake build system for the Slic3r XS module.
Based on https://github.com/CReimer/Slic3r/tree/makefile_pr
Big thanks to @CReimer for his huge effort.
2017-08-16 19:05:08 +02:00
bubnikv 507f2ff45e Comprimed the previous pull request. 2017-08-14 12:56:09 +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
bubnikv 8d5e5519f2 Fix of compilation on Windows 32bit: Include windows.h for the declaration
of MultiByteToWideChar.
2017-08-03 19:49:41 +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 75c72bc59b Fix of "MM incorrect extruder temperature"
https://github.com/prusa3d/Slic3r/issues/443

Change of the PlaceholderParser:
All vector configuration values stored into the PlaceholderParser
are expected to be addressed by the extruder ID, therefore
if a vector configuration value is addressed without an index,
a current extruder ID is used.

Also a small fix of fan handling: The fan speed is set to zero
at the start of the G-code if the cooling for the initial extruder
is disabled.
2017-07-31 15:42:55 +02:00
bubnikv 7181f5d163 PrusaControl file format: Added multi-material support. 2017-07-28 15:48:49 +02:00
bubnikv 812a2c7cbd Further implementation of FillRectilinear3. 2017-07-28 15:47:59 +02:00
bubnikv 137aab9631 Fixed compilation on Linux 2017-07-27 13:21:48 +02:00
bubnikv a6ea01a23f Moved some math macros (sqr, lerp, clamp) to libslic3r.h
Added UNUSED macro to libslic3r.h, used it to reduce some compile warnings.

Split the Int128 class from Clipper library to a separate file,
extended Int128 with intrinsic types wherever possible for performance,
added new geometric predicates.

Added a draft of new FillRectilinear3, which should reduce overfill near the perimeters in the future.
2017-07-27 10:39:43 +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 969e3f4a80 Fixed "Fill angle of any number other than an Integer does not work"
https://github.com/prusa3d/Slic3r/issues/427
Also enabled floating point rotation angle for supports.
2017-07-20 13:38:10 +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 6bb773d0dd Prusa MM Wipe Tower, Improvements of the 1st layer:
Thiner priming line along the wipe tower,
relatively thick infill at the 1st layer to improve adhesion.
2017-07-20 12:58:51 +02:00
bubnikv aaefb76888 Fixed test cases after change of the "sane" extrusion widths.
Changed the default perimeter / infill overlap to 25%.
2017-07-20 11:03:54 +02:00
bubnikv ac672d9dc5 Changed the default "sane" extrusion width parameters to
1x nozzle_dmr for support and top infill,
and 1.125x nozzle_dmr for the rest.
This corresponds roughly to the default values tuned for the Prusa MK2
for normal prints.
2017-07-19 16:06:29 +02:00
bubnikv 2f2c0ddc99 Refactored Fill / Flow for readability.
Added an "overlap" member variable to fill classes in the preparation
for futher move of the "infill / perimeter" overlap to the Fill class.
Moved the orientation predicates from Fill to Geometry.
2017-07-19 15:53:43 +02:00
bubnikv 9c1b1829cf PerimeterGenerator - a bit of refactoring for readability. 2017-07-19 15:42:49 +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