434 Commits

Author SHA1 Message Date
Lukas Matena
fae06e0773 Vectorization of the wipe tower 2024-11-20 16:04:15 +01:00
Lukas Matena
da13a0a80e Vectorization of customgcode 2024-11-20 16:04:15 +01:00
Lukas Matena
360f7a84b4 Polishing:
- virtual bed shows even when dragging which was already outside
- when loading old-arranged project with more than max number of beds, a virtual bed would still be offered
- loading a project file with multiple beds only showed 2 beds initially
- nonprintable objects are not considered into the bed creation logic
- drag and dropping an object does not change active bed
- shells in preview are now shown correctly when switching between beds
- spacing in x takes into account model size (except during the initial rearrange)
- update volumes outside state after project loading
- highlight of selected bed for default beds
2024-11-20 16:04:05 +01:00
Lukas Matena
87a1fe8c65 Multiple beds (part 6):
- arrange
- bed spacing in multiples of bed size
- newly loaded positions are loaded on active bed
TODO: Fix results after convert, split and cut
2024-11-20 13:36:13 +01:00
Lukas Matena
accc4ce266 Multiple beds (part 1):
- create new bed when a volume is dragged into it
- limit maximum number of beds
- keep track of which ModelInstances are on which bed
- show list of beds and allow selecting an active one
- move objects from active bed to the first bed when passing Model to Print::apply (and back)
2024-11-20 13:36:12 +01:00
YuSanka
0a57de800c ConfigWizard: Allow to install and select SLA printer preset, when multipart object is in on the bed.
However, it is still not impossible to select an SLA printer when the object has a modifier.
For this case info dialog will be shown.

+ Model: Deleted model_has_multi_part_objects()

SPE-2547
2024-11-20 07:50:15 +01:00
Lukas Matena
5cd697bdc2 Refactor CutID - first part (SPE-2519) 2024-11-18 23:40:50 +01:00
Lukáš Hejl
886faac74e SPE-2486: Add a new gizmo for fuzzy skin painting. 2024-11-12 15:22:57 +01:00
Lukáš Hejl
84e9da9c6c SPE-1841: Replace default extruder with volume extruder for multi-material segmentation.
Previously, the default extruder wasn't handled inside multi-material segmentation, but this could confuse users, especially for multi-volume objects.
Because with multi-volume, it could happen that in the place where two volumes were touching, there could be a change in the used extruder.
2024-11-08 10:13:34 +01:00
Lukáš Hejl
2fa92a96a4 Refactor TriangleSelector to allow returning indexed triangle set with information about the color of each facet. 2024-11-08 10:13:34 +01:00
Lukas Matena
9237a68ba9 Use ModelWipeTower instead of config for wipe tower pos and rot (3MF part) - SPE-2520 2024-10-16 12:41:27 +02:00
Martin Šach
96e3e77fef Prepare fe for include optimization.
- Add pragmas to keep necessary headers with symbols not explicitly
stated in the file.
- Use include paths that IWYU understands.
2024-07-08 15:37:02 +02:00
Lukas Matena
9c0cb3b47c printrequest implementation:
printrequest reader WIP
Co-authored-by: David Kocik <kocikdav@gmail.com>

transformation matrix loading

Loading filaments from printRequest

Conversion of string to double

Reading PrintRequest when material not installed

empty tree check + allow printrequest for mac

PrintRequest: Set print profile if current doesnt have compatible sla material

followup fix of c24477cd10d92de00874504be434872d49a20ec9

Fix compile error on gcc
2024-06-14 15:32:10 +02:00
Lukáš Hejl
4b8fe98443 SPE-2186: Add shrinkage compensation into filament settings.
There is a limitation that on multi-tool printers, all used filaments must have the same shrinkage compression values.
2024-05-14 17:16:23 +02:00
Lukáš Hejl
e14ba9d431 SPE-2063: Determine correctly which extruders are used when the object is painted by the multi-material painting gizmo.
During the serialization of TriangleSelector and also during reading serialized painting data from 3MF, we cache all used states in the painted triangle mesh.

Based on this information, we can quickly determine which extruders are used and which don't.
2024-05-14 17:16:23 +02:00
Lukáš Hejl
b425fe459d Rename EnforcerBlockerType to TriangleStateType because we no longer use it just as a blocker or an enforcer. 2024-05-14 17:16:23 +02:00
Lukáš Hejl
13e2af71e1 Use more readable data types for storing triangle splitting information. 2024-05-14 17:15:45 +02:00
Lukas Matena
1598759400 Fixed crash on AMF loading (#12332, SPE-2175) 2024-02-26 16:12:53 +01:00
Lukáš Hejl
76435e7add SPE-1840: Rework multi-material segmentation to work directly on the Voronoi diagram without creating a copy of it.
Previous algorithms assume that they can get an invalid Voronoi diagram. Because of that, during the multi-material segmentation, a copy of the Voronoi diagram was created, and there were several attempts to fix missing vertices and edges. But as it shows, this wasn't a good enough approach and sometimes led to several issues like bleeding layers.

After generalization, our approach for detection and repairs of invalid Voronoi diagrams from Arachne, we could assume that multi-material segmentation gets non-invalid Voronoi diagrams.
With this assumption, we reimplement multi-materials segmentation to work directly on the Voronoi diagram. That should make multi-material segmentation more stable.

So, this should fix several issues like bleeding layers. Also, memory consumption should decrease by a lot. Also, there should be some speedup of multi-materials segmentation.
2024-02-08 15:40:20 +01:00
YuSanka
65525b0616 Model: Improved function looks_like_multipart_object().
Check transformed bounding boxes of loaded objects instead of z_min of bounding boxes.
+ BoundingBox: added function shares_boundary() to detect if bounding boxes shares some boundary.

Fix for #11547 - .3mf files with similar sized components aren't being defined as multi-part objects
2024-01-23 12:42:15 +01:00
Filip Sykala - NTB T15p
929f5db49e Remove forgotten code 2023-10-24 12:38:02 +02:00
Filip Sykala - NTB T15p
f05f334e15 Import svg files by button in main bar.
Be carefull: import is made by main thread !!!
2023-10-23 16:50:41 +02:00
Vojtech Bubnik
8dad25efc4 Merge branch 'master' into master_262 2023-09-04 14:44:32 +02:00
ps_copyright
f32859c302 final copyright headers 2023-09-01 14:49:07 +02:00
Vojtech Bubnik
3cfe2f4a3a Merge branch 'vb_arc_welder' into master_262 2023-08-28 15:50:00 +02:00
tamasmeszaros
0b31ef6e1e Beginning of arrange gen2 2023-08-16 09:59:10 +02:00
YuSanka
1b451cdf9f CutGizmo: Big code refactoring.
All manipulations related to cut are extracted to CutUtils now
2023-08-09 13:22:11 +02:00
YuSanka
0c2913f20c CutGizmo: Code refactoring to correct a modifiers processing during a cut.
Now it's work in same way for all types of cut. After cut we leave just only modifiers which are intersecting with solid parts bounding box.
+ Clean code in perform_cut_with_groove. Deleted non-used anymore code.
+ Extract same code (for perform_cut_by_contour and perform_cut_with_groove) to separate functions
+ Save CutInfo for objects which was cut with Tongue and Groove mode
2023-08-07 10:25:01 +02:00
YuSanka
e8bdd9e78d Code refactoring: Rivet is changed to Snap 2023-07-19 10:25:48 +02:00
YuSanka
7cd99d98f5 WIP: Cut with Rivets
* Code refactoring: get_connector_mesh() and apply_cut_connectors() moved from ModelObject to CutGizmo.
* Allow to change values of space and bulges for snaps
2023-07-19 10:25:47 +02:00
YuSanka
9fd3de5e46 WIP: Add new connector - "Rivet"
* Code refactoring for its_make_rivet() to change a shape of rivet
+ Implemented perform the cut with rivets
2023-07-19 10:25:47 +02:00
YuSanka
6a2afc9153 WIP: Add new connector - "Rivet"
* Improves for UI
* Implemented Rivet mesh
2023-07-19 10:25:47 +02:00
YuSanka
92c7a31f42 WIP: Cut with Tongue and Groove
* Added move possibility during X axis for cut plane
* Added possibility to optimize rendering (recalculate new cut only on stop dragging)
* Next fix for flickering (code refactoring for toggle_model_objects_visibility())
2023-07-19 10:25:47 +02:00
YuSanka
159d92cf6a WIP: Cut with Tongue and Groove
* Implemented a check for invalid groove detection
2023-07-19 10:25:47 +02:00
YuSanka
1aa8d8ea99 WIP: Cut with Tongue and Groove
* Implemented preview rendering of groove
2023-07-19 10:25:47 +02:00
Vojtech Bubnik
19062b4d5f ArcWelder path interpolation based on the work by Brad Hochgesang @FormerLurker.
WIP GCode/SmoothPath.cpp,hpp cache for interpolating extrusion path with arches.
Removed Perl test t/geometry.t, replaced with C++ tests.
Refactored ExtrusionEntity and derived classes to hold extrusion attributes in new ExtrusionFlow/ExtrusionAttributes classes.
Reworked path ordering in G-code export to never copy polylines, but to work with a new "flipped" attribute.
Reworked G-code export to interpolate extrusion paths with smooth paths and to extrude those smooth paths.
New parameters: arc_fitting, arc_fitting_tolerance
Renamed GCode class to GCodeGenerator
Moved GCodeWriter.cpp/hpp to GCode/
Moved Wipe from from GCode.cpp,hpp to GCode/Wipe.cpp,hpp
Moved WipeTowerIntegration from GCode.cpp,hpp to GCode/WipeTowerIntegration.cpp,hpp
New variant of douglas_peucker() to simplify range of iterators in place.
Refactored wipe in general and wipe on perimeters / hiding seams.

WIP: Convert estimate_speed_from_extrusion_quality() and its application to smooth paths.
WIP: Cooling buffer to process G2G3, disable arc fitting for filters that cannot process it.
2023-07-13 11:54:42 +02:00
YuSanka
0e452dcf74 Fix for #10667 - Scaling blocked (or not blocked) incorrecty after cut feature is used
* cut_id for cut object is updated from attributes before all manipulations with perform a cut
 * synchronization of the cut_id for whole model is execute now after all manipulations, related to the cut
2023-05-31 11:18:40 +02:00
David Kocik
d8e39519f2 Concider projects with .zip extension that are 3mf projects as it would have .3mf extension. 2023-05-26 09:54:13 +02:00
enricoturri1966
2f7f3578d5 Faster sequential print clearance contours calculation by parallelizing method ModelObject::convex_hull_2d() and function its_convex_hull_2d_above() 2023-05-16 13:04:24 +02:00
Lukas Matena
e4c01a5857 Cut fixes:
- When cutting a scaled part, do not apply the transformation twice
- Right click does not trigger part selection when any modifier is used
- When 'flip plane' is clicked, extra render is forced
- The choice to keep object A/B is enabled even when part selection is active
- 'Cut into' radio buttons are disabled when part selection is active
- Added a missing update of connector state
- Amended tooltip
2023-05-12 15:40:40 +02:00
Lukas Matena
732dd0f6ac Cut: fixed rendering of individual parts, removed some unnecessary variables 2023-05-12 15:40:40 +02:00
YuSanka
1a7f46001b Cut: Process cut in respect to the selected parts 2023-05-12 15:40:40 +02:00
YuSanka
1c4d43b3a4 Cut WIP: Use contours to perform a cut. 2023-05-12 15:40:39 +02:00
enricoturri1966
663465299b Small refactoring 2023-05-10 11:15:39 +02:00
tamasmeszaros
362267431b Fix transformation assembly problem for arrange polyogon 2023-05-03 09:21:57 +02:00
tamasmeszaros
6831b7094a Trying to fix transformation assembly problem for arrange polyogon 2023-05-03 09:21:57 +02:00
enricoturri1966
5bb7428aa4 SPE-1655 - Fixed adding an instance to a mirrored object 2023-04-13 13:09:32 +02:00
enricoturri1966
6084a92d9b Fixed conflicts after merge with master 2023-03-30 08:52:20 +02:00
Filip Sykala - NTB T15p
ca5b310e43 Fix: moving with text object(not volume) over build plate by canvas dragging 2023-03-15 11:30:41 +01:00
enricoturri1966
4f7686439c Merge branch 'master' of https://github.com/Prusa-Development/PrusaSlicerPrivate into et_transformations 2023-03-10 09:49:23 +01:00