Commit Graph

71 Commits

Author SHA1 Message Date
53a5c23d0f Eradicated admesh from TriangleMesh:
TriangleMesh newly only holds indexed_triangle_set and
TriangleMeshStats. TriangleMeshStats contains an excerpt of stl_stats.
TriangleMeshStats are updated when initializing with indexed_triangle_set.

Admesh triangle mesh fixing is newly only used when loading an STL.
AMF / 3MF / OBJ file formats are already indexed triangle sets, thus
they are no more converted to admesh stl_file format, nor fixed
through admesh repair machinery. When importing AMF / 3MF / OBJ files,
volume is calculated and if negative, all faces are flipped. Also
a bounding box and number of open edges is calculated.

Implemented its_number_of_patches(), its_num_open_edges()
Optimized its_split(), its_is_splittable() using a visitor pattern.

Reworked QHull integration into TriangleMesh:
    1) Face normals were not right.
    2) Indexed triangle set is newly emitted instead of duplicating
       vertices for each face.

Fixed cut_mesh(): Orient the triangulated faces correctly.
2021-09-20 17:12:22 +02:00
01451d2e63 Removed the PRUS format parser. WIP: admesh eradication:
stl_stats are newly only accessed by TriangleMesh::stats(),
most of the direct access to TriangleMesh::stl is gone with the exception
of parsing input files (3MF, AMF, obj).
2021-09-14 11:58:14 +02:00
c5304750d9 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
f3cef4035e Trying to fix perl bindings 2020-09-24 16:18:56 +02:00
e54c3a74e5 Fixed includes 2020-06-24 09:20:04 +02:00
2275698f1b Add ModelArrange.hpp as extension to Model.hpp, use it for duplicating
Refactored Arrange interface: remove the union based BedShapeHint, replace it with proper function overloads

WARN: this commit is only intermediate, it does not compile.
2020-04-23 18:19:03 +02:00
be350a00f0 Reworked the Perl unit / integration tests to use the same Print
interface that the application is using. Old interface used just
for the integration tests was removed.
2019-06-20 20:23:05 +02:00
872983ff00 Removed the layer_height_ranges from the Perl bindings and unit tests. 2019-06-20 16:28:37 +02:00
c1fed74010 Sharing TriangleMesh objects between the front end (UI) and back end
(background processing)
2019-06-11 17:08:47 +02:00
b63e015655 Fixed Perl bindings 2019-02-25 08:55:25 +01:00
ee77f2592b WIP: Command line slicing for SLA.
Removed some layer height editing bindings from Perl.
2018-12-11 13:16:09 +01:00
f9d72376d0 Fix build 2018-11-19 11:39:17 +01:00
d79e2d8fa6 Separated Print / PrintObject into PrintBase.cpp/h to support SLAPrint 2018-11-08 14:23:17 +01:00
42edbe6b0c Fixed some issues with front end / back end synchronization. 2018-11-05 17:52:55 +01:00
e5758e9ef2 ModelBase ID refactoring, starting to work.
Now it remains to clean up some of the no more used Model interfaces.
2018-11-02 19:49:40 +01:00
65e01146e7 Merge branch 'dev_native' into vb_dev_native_background_processing 2018-10-18 18:03:17 +02:00
18199b33f0 WIP: Reconstruction of background processing update timer,
added unique IDs to the Model / ModelObject / ModelVolume objects,
added a copy of Model hierarchy at the Print,
WIP: new Print::apply() method to update the Print's copy of Model,
to update the Print's PrintObjects, to update status of the Print and
PrintObjects, and to possibly stop the background processing.
2018-10-17 11:12:38 +02:00
069be62c6f ModelInstance's full 3D transform set as default 2018-10-16 09:51:30 +02:00
3cc0b4abd4 Merge remote-tracking branch 'origin/dev2' into dev_native 2018-09-25 15:33:51 +02:00
5c26e5d70d Updated AMF/3MF import to pass configuration into a DynamicPrintConfig
instead of PresetBundle.
2018-09-25 11:53:05 +02:00
c1f794ca08 ModelInstance full 3D transform code moved into a single technology 2018-09-25 10:42:11 +02:00
4c319150f1 1st installment of ModelInstance 3D scale components 2018-09-24 15:54:09 +02:00
95b87e042b Fixed arrange for objects with 3D rotations 2018-09-24 15:21:18 +02:00
f1454578f4 1st installment of ModelInstance 3D rotation components 2018-09-20 15:00:40 +02:00
51e650f6bf Merged with dev 2018-09-17 15:12:13 +02:00
a3bd7c110f Fixed conflicts after merging with master 2018-08-27 14:00:53 +02:00
7f49697944 Eradicated the Pointf class, replaced with Eigen Vector3d 2018-08-21 21:05:24 +02:00
b616a0c183 Completely replaced the homebrew Pointf3 class with Eigen Vec3d.
Replaced the unscale macro with a template, implemented templates
for unscaling Eigen vectors.
2018-08-21 17:43:05 +02:00
64022acfff Lay flat - rotation is now done in one go directly about the necessary axis 2018-08-21 15:40:11 +02:00
6ae3284249 Merge with master branch 2018-05-09 10:16:28 +02:00
578a7eb4e8 Max count of auto assigned extruders when splitting object set as dependent of current printer 2018-05-07 16:13:58 +02:00
71d9500b2e More robust fix for 3D view and GUI buttons not in synch when object's size is almost identical to print volume's size 2018-04-24 09:00:33 +02:00
4b8bd48663 AMF and 3MF export - Export of print config customizable by user in the select file dialog 2018-03-22 13:49:48 +01:00
bdd2d725c8 Out of bed detection - 1st installment 2018-03-09 10:40:42 +01:00
f5f27859e0 AMF I/O - Embedded config data + zip formatting 2018-02-14 14:30:03 +01:00
8885f5e344 3mf import/export of config data 2018-02-13 15:19:55 +01:00
33553e1c50 3mf Exporter - 1st installment 2018-02-08 13:26:50 +01:00
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
b724d789fd New feature: Splitting an object into a multi-part volume. 2017-06-15 15:38:15 +02:00
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
ff9d565ba7 Implemented UI for ordering volumes
https://github.com/prusa3d/Slic3r/issues/277
2017-05-20 22:02:04 +02:00
4010dd71f6 Support Prusa Control project files (.PRUS) by the GUI. 2017-02-27 16:09:22 +01:00
ee619701d8 Got rid of the Perl Format::STL, Format::AMF, Format::OBJ for good. 2017-02-27 01:03:00 +01:00
25dfe7278c Initial rewrite of the file accessors from Perl to C++.
This is especially important for the extremely slow AMF parser.
Also there is a new file handler for the Prusa Control 'PRUS' format.
2017-02-26 21:46:33 +01:00
a4dd6c7ce5 Added missing get_volume() method to the PrintObject Perl interface. 2017-02-22 16:05:14 +01:00
88e34ff5de Store / retrieve layer height profile from the AMF file.
Reset the layer height profile when changing a print profile to an incompatible one.
Reset button on the layer height bar.
Fixed an update issue on zooming by a scroll wheel.
Fixed an issue when loading an AMF file: Object names are now retained.
2017-02-09 14:56:13 +01:00
43ac693900 Added a tooltip overlay for the variable layer height edit tool.
Short methods of PrintState made inline.
Added layer height profile to a Model class.
2017-02-07 18:17:12 +01:00
6217622865 Hopefully a fix of https://github.com/prusa3d/Slic3r/issues/11
Replaced eval { die } construct with a bool return value indicating
success or failure of an automatic arrangement of parts on the print bed.

Don't know exactly what is happening here, but throwing a "die" inside
a XS function and then catching it inside an eval {} block is suspcious.
2016-11-04 15:03:51 +01:00
4913e90e10 Remove any Perl related code from libslic3r 2015-12-08 00:39:54 +01:00
ed75219215 Ported mode Model methods to XS 2015-12-02 18:06:18 +01:00