Commit Graph

279 Commits

Author SHA1 Message Date
Lukáš Hejl
0463518dc3 Attempted to reenable the old pressure equalizer and fix its issues. 2022-06-09 21:07:41 +02:00
Vojtech Bubnik
8ed6d1b466 WIP: Implemented support for QOI G-code thumbnail format as requested
by the RepRapFirmware team due to their low RAM budget for decompression.
Bundled the QOI image compression library.
2022-06-08 21:12:00 +02:00
tamasmeszaros
99c9e4a61d Fix collision after arrange when 'complete Individual objects' is ON
fixes #8335
2022-06-02 09:28:09 +02:00
Lukas Matena
6a5443dad2 Yet another fixup of previous commit 2022-04-01 11:30:03 +02:00
Lukas Matena
037a866f22 Fixup of previous commit:
the previous fix only works for objects that have equal height
2022-04-01 09:54:49 +02:00
Lukas Matena
2ecfdea070 Fix of #7711, #7903, #8044 (wipe tower refusing to slice when layer height modifier is used):
Same settings of the layer height modifier does not guarantee to always produce profiles
exactly equal numerically. This is broken since 71ba15b.
2022-03-31 10:47:19 +02:00
Vojtech Bubnik
3e9e3fd102 Follow-up to 58d64bae77
Disabled check for "G92 E0" in layer change G-code for other firmware types
than Marlin 2 and Marlin Legacy. We don't know whether other firmware
flavors are sensitive to E axis accumulation error and we know that
RepRapFirmware is not.

Fixes #7846
2022-02-14 15:11:19 +01:00
Vojtech Bubnik
56e189943f Follow-up to 3e7a4d4648
Allowed for localization of error messages.
2022-01-31 11:27:32 +01:00
Vojtech Bubnik
58d64bae77 Fix of #6336 #5073: Throw an error if G92 E0 is missing in layer change
G-code with relative extruder addressing. Also thrown an error,
if G92 E0 is used with absolute extruder addressing.
2022-01-31 10:19:01 +01:00
Lukas Matena
d2664ea295 Fixed crashes with specific configuration of draft shield:
the crashing cases were:
- skirts=0 + dsEnabled
- skirt_height=0 + dsLimited

Also, when ooze_prevention is enabled with multiple extruders and skirt is disabled, 2.4.0 does not generate infinite skirt.
Version 2.3.3 does, ooze prevention overrides the disabled skirt. This commit reinstates the old behaviour.

The issues were introduced in b466f18.
2022-01-21 11:07:18 +01:00
YuSanka
8a387fc52d WIP: First IU implementation for G-code substitutions 2022-01-17 12:29:47 +01:00
Vojtech Bubnik
a591d9e9fe Implemented new placeholders for output file name:
1) "initial_filament_type", "printing_filament_types" - really useful
   for multi-material prints

the two other are not so useful, they may become useful once
the output file name template will support not yet defined
vector variables:
2) "initial_tool", "initial_extruder" - zero based index of first extruder
3) "num_printing_extruders" - number of printing extruders.

Fixes Filename incorrect when exporting G-Code with MMU. Always refers filament type in extruder 1 #5300
Fixes Export Filename nicht richtig #7673
Fixes wrong filename - always Filament in from the first extruder #7684
2022-01-10 17:57:03 +01:00
Vojtech Bubnik
4158f9ec8e New config value "gcode_resolution" replaces the hard coded RESOLUTION
value, which was set to 0.0125mm.
2021-11-30 17:52:05 +01:00
Vojtech Bubnik
cc44089440 New BuildVolume class was created, which detects build volume type (rectangular,
circular, convex, concave) and performs efficient collision detection agains these build
volumes. As of now, collision detection is performed against a convex
hull of a concave build volume for efficency.

GCodeProcessor::Result renamed out of GCodeProcessor to GCodeProcessorResult,
so it could be forward declared.

Plater newly exports BuildVolume, not Bed3D. Bed3D is a rendering class,
while BuildVolume is a purely geometric class.

Reduced usage of global wxGetApp, the Bed3D is passed as a parameter
to View3D/Preview/GLCanvas.

Convex hull code was extracted from Geometry.cpp/hpp to Geometry/ConvexHulll.cpp,hpp.
New test inside_convex_polygon().
New efficent point inside polygon test: Decompose convex hull
to bottom / top parts and use the decomposition to detect point inside
a convex polygon in O(log n). decompose_convex_polygon_top_bottom(),
inside_convex_polygon().

New Circle constructing functions: circle_ransac() and circle_taubin_newton().

New polygon_is_convex() test with unit tests.
2021-11-16 10:15:51 +01:00
Vojtech Bubnik
a6f4b9b71f Snug supports: Extrude interface layers 45 degrees from the base layer,
flip direction of the infill layer with each interface layer.
Unfortunately the flipping of support interface directions may not work
reliably due to base support layer heights growing at different rate
from the interface layers.
2021-10-14 13:56:04 +02:00
Lukas Matena
71ba15b6f0 Fixed comparison of layer height profiles when printing with wipe tower:
while the layer height profile vector may not contain all print z
values, the only real case with two eqiuvalent layer height profiles is
when one was created as a copy of another, so the vectors should in fact be equal.
2021-09-15 16:37:41 +02:00
Vojtech Bubnik
cab71073a1 Some reduction of unnecessary conversions when calling ClipperUtils. 2021-09-13 15:13:10 +02:00
Vojtech Bubnik
f9a5ee725d Follow-up to ae7d6db1d9
Exporting G-code on a worker thread did not work correctly as the worker
threads were using user's locale, not "C" locale.
The "C" locale is newly enforced to TBB worker threads by
name_tbb_thread_pool_threads_set_locale()
2021-09-13 13:04:12 +02:00
Vojtech Bubnik
b29c0ead7d Implemented configurable speed and acceleration settings for the first
object layer over raft interface:
"first_layer_speed_over_raft", "first_layer_acceleration_over_raft".
Fixes I have a question about the speed of the first layer after the raft. #6623
Fixes Layer After Raft Is Not Considered First Layer! #6166
2021-08-31 16:03:14 +02:00
Lukas Matena
3fc4cc84a7 Fixed invalidation when first_layer_height is changed 2021-08-25 12:01:51 +02:00
enricoturri1966
65b3be92fe Techs DISABLE_ALLOW_NEGATIVE_Z_FOR_SLA and ENABLE_ALLOW_NEGATIVE_Z set as default 2021-07-22 11:26:31 +02:00
enricoturri1966
c61785f775 Tech ENABLE_SEQUENTIAL_LIMITS set as default 2021-07-20 12:05:15 +02:00
Lukas Matena
b466f18326 Draft shield option is now an enum (Disabled/Limited/Enabled) 2021-07-14 16:02:04 +02:00
Lukas Matena
6eeedf2bc6 Skirt is now generated around brims, unless 'draft shield' is checked 2021-07-14 16:02:04 +02:00
Lukas Matena
63566a92b3 Merged psSkirt and psBrim 2021-07-14 16:02:04 +02:00
Vojtech Bubnik
19e3998bd0 Merge branch 'vb_mmu_top_bottom' 2021-07-13 11:08:52 +02:00
Roman Beránek
e13535f822
drop deprecated TBB components (#6590)
Quite some time ago, many of the TBB components were deprecated in favor
of their near-equivalents in the STL or, in the case of task_scheduler_init,
were broken up and reconstituted under a less ad-hoc logic. Every time a header
file marked deprecated gets included, a rather loud warning is emitted, which
leads to a complete TBB's domination over the stderr stream during build time,
making it harder to notice _legitimate_ warnings.

Instead of merely muting the output with TBB_SUPPRESS_DEPRECATED_MESSAGES,
perform a genuine migration away from the deprecated components with the added
benefit of achieving a source compatibility with oneTBB, the successor to TBB
which has dropped the deprecated API for good.

What got replaced for what?

| Deprecated				| Replacement					|
| ------------------------------------- | --------------------------------------------- |
| `tbb::atomic`				| `std::atomic`					|
| `tbb::mutex`				| `std::mutex`					|
| `tbb::mutex::scoped_lock`		| `std::scoped_lock<std::mutex>`		|
| `tbb::mutex::scoped_lock` (empty)	| `std::unique_lock<std::mutex>` (deferred)	|
| `tbb::task_scheduler_init`		| `tbb::global_control`				|
| `tbb::this_thread`			| `std::this_thread`				|

Signed-off-by: Roman Beranek <roman.beranek@prusa3d.com>
2021-06-23 11:48:48 +02:00
Vojtech Bubnik
0d70a2be69 Renamed create_face_neighbors_index() to its_face_edge_ids().
Renamed its_create_neighbors_index() / its_create_neighbors_index_par() to its_face_neighbors() / its_face_neighbors_par().
New variant of its_face_edge_ids() to create edge IDs from face neighbors.
Fixed some incorrect use of _NDEBUG, it should be NDEBUG.
PrintObject::slice_support_volumes() returns newly Polygons, which are cheaper than ExPolygons.
Updated SeamPlacer and SupportMaterial to use regions defined as Polygons, not ExPolygons.
TriangleSelector::get_facets_strict() returning a patch with T-joints retriangulated.
New slice_mesh_slabs() - slicing projections of a triangle patch into top / bottom layers of slices, for MMU top / bottom segmentation.
TriangleMeshSlicer - use 64 mutexes instead of one when scattering sliced triangles into layers. This makes a big difference on modern many core desktop computers.
When applying MM segmented regions to input regions, the split regions are now re-merged with 10x higher positive offset epsilon to avoid creating gaps.
When testing for existence of paint-on supports or seam, use a more efficient has_facets() test, which does not deserialize into the expensive TriangleSelector tree structure.
GLIndexedVertexArray newly uses Eigen::AlignedBox<float, 3> for efficiency instead of our double based BoundingBoxf3.
Improved MMU painting refresh speed by optimizing generation of the vertex buffers.
Refactored MMU segmentation - projection of painted surfaces from top / bottom.
	1) Parallelized.
	2) Using the new slice_mesh_slabs() instead of projecting one triangle by the other and merging them with Clipper.
2021-06-20 15:21:12 +02:00
Martin Budden
bd6badf123 Added option to independently set z axis travel speed 2021-05-31 21:20:43 +02:00
enricoturri1966
6192a3eaf7 Tech ENABLE_SEQUENTIAL_LIMITS -> Improved performance when showing sequential print clearance regions contours while dragging objects 2021-05-24 12:11:49 +02:00
enricoturri1966
a929b29a0b Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_sequential_limits 2021-05-14 15:06:44 +02:00
enricoturri1966
ca14ea4c33 Tech ENABLE_ALLOW_NEGATIVE_Z -> ModelObject::convex_hull_2d() and sequential_print_horizontal_clearance_valid() modified to take in account for sinking instances 2021-05-14 15:02:54 +02:00
enricoturri1966
6bddacee44 Fixed conflicts after merge with master 2021-05-13 14:10:42 +02:00
enricoturri1966
e330b66981 Small refactoring 2021-05-13 13:57:09 +02:00
enricoturri1966
75677ba810 Tech ENABLE_SEQUENTIAL_LIMITS -> 1st installment of visualization of objects clearance for sequential prints 2021-05-11 13:12:25 +02:00
Vojtech Bubnik
dd72016159 FDM backend refactoring for const correctness, clarity ... 2021-05-06 15:08:57 +02:00
Vojtech Bubnik
0ca6b12da1 Print/PrintObject/PrintRegion refactoring:
Newly the PrintObjects own PrintRegions and Print contains references
to PrintRegions owned by PrintObjects, so that a PrintRegion of the same
content is referenced by Print only once.

The refactoring is a WIP to support multi-material painting.
2021-05-06 13:01:09 +02:00
Vojtech Bubnik
ee15f00574 FDM backend refactoring: Return PrintRegion by reference, not by pointer.
Added PrintRegion hashing.
2021-05-05 18:13:58 +02:00
Vojtech Bubnik
714149dab2 WIP: Moving ownership of PrintRegions to PrintObjects. 2021-05-05 16:21:55 +02:00
Vojtech Bubnik
d6c5961eb0 Factored out the Print::apply() method and its dependending free functions
into PrintApply.cpp module.
2021-05-05 14:30:09 +02:00
Vojtech Bubnik
72ce8cb28d PrintRegion refactoring: Getting rid of the Print pointer. 2021-05-05 14:17:36 +02:00
Vojtech Bubnik
0c1953a929 Further fixes of the first_layer_height refactoring. 2021-04-21 14:34:49 +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
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
Lukas Matena
5d636ab853 Wipe tower: respect first_layer_speed 2021-04-06 15:37:39 +02:00
Lukas Matena
a6ddab856b Wipe tower: refactoring of brim and solid infill on first layer 2021-04-05 23:39:27 +02:00
Lukas Matena
cc7ef40e20 Wipe tower: remove unfinished square wipe tower option 2021-04-05 23:39:27 +02: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
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