Commit graph

319 commits

Author SHA1 Message Date
Lukáš Hejl
46c827c7fc Fixed Clang 12 compiler warnings. 2022-01-28 14:52:22 +01:00
enricoturri1966
781b457035 Tech ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED set as default 2021-11-30 09:41:43 +01:00
Vojtech Bubnik
f5c23871e8 Follow-up to 77548df00f
(Fixed missing sinking property in objects list for multipart objects
with a part completely below the printbed):

It was not possible to slice an object with some part completely below
the print bed. The BuildVolume collision check newly supports
a "completely below print bed" return status,
Model evaluates this "completely below print bed status" allowing
objects with some volumes completely below the print bed to print.
2021-11-19 10:32:46 +01:00
tamasmeszaros
c6de3e84eb Trying to solve forward compatibility for SLA relative_corrections 2021-11-19 09:47:57 +01:00
Vojtech Bubnik
58c93196d5 Merge branch 'master' of https://github.com/Prusa3D/PrusaSlicer 2021-11-16 10:18:58 +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
YuSanka
f535b592ac Fixed a crash when loading STL file (from 02c18dbc52)
+ Added info_icon next to the "Volume" value
2021-11-16 09:42:20 +01:00
YuSanka
02c18dbc52 Sidebar: Info box: Fixed value of the "Volume"
+ Hidden "Materials" item
2021-11-15 17:36:01 +01:00
tamasmeszaros
17686b4814 Slight performance boost
follow up to f7db7c0
2021-11-11 11:12:03 +01:00
enricoturri1966
f7db7c0a26 #7282 - Fixed crash after splitting object into parts (missing or degenerate convex hulls) 2021-11-10 12:07:43 +01:00
enricoturri1966
ab6ceaa68c #7246 - Fixed rrror when resize object to bed limit 2021-11-09 12:29:22 +01:00
enricoturri1966
5190a1f425 #7258 - Fixed cut of merged object 2021-11-08 12:56:38 +01:00
enricoturri1966
145f0489b8 Fixed crash when a part of a multipart object is completely below the printbed 2021-10-27 08:56:10 +02:00
Vojtech Bubnik
0bc2448e22 Documented the new print bed collision detection algorithm requirements:
Only convex print bed is supported.
Optimization of collision detection by precomputing the print bed shape type.
2021-10-23 15:29:18 +02:00
Vojtech Bubnik
36baae05f1 Commented out unused and expensive printbed_collision_state() 2021-10-23 15:29:18 +02:00
enricoturri1966
29340c1560 Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_sinking_objects_collision 2021-10-07 14:22:06 +02:00
YuSanka
c15be26bff Check if object's size appears to be zero, when loading the model file. 2021-10-07 09:12:31 +02:00
YuSanka
7340488aaf ObjectList: Fixes
* Fixed update of a warning icon for multi-part object, when some part with errors was deleted
 * Fixed a crash when selecting non-Object and non-Volume item (in get_mesh_errors_info() was missed check of the obj_idx)

+ Follow-up 1cc7b4ba97 - some code refactoring:
  * fixed RepairedMeshErrors.merge()
  * get_mesh_errors_count() renamed to get_repaired_errors_count()
2021-10-06 17:24:40 +02:00
enricoturri1966
fe4baa33f6 Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_sinking_objects_collision 2021-10-06 13:48:27 +02:00
YuSanka
1cc7b4ba97 Save/Load repaired errors from/to a mesh statistics to/from a 3MF 2021-10-06 10:57:28 +02:00
enricoturri1966
4521945bb3 Tech ENABLE_OUT_OF_BED_DETECTION_IMPROVEMENTS - Faster printbed collision detection using the new function Geometry::intersect() 2021-10-04 14:07:45 +02:00
enricoturri1966
f84838028b Tech ENABLE_FIX_SINKING_OBJECT_OUT_OF_BED_DETECTION merged into tech ENABLE_OUT_OF_BED_DETECTION_IMPROVEMENTS 2021-10-01 13:13:26 +02:00
enricoturri1966
f3bd5e96c5 Tech ENABLE_OUT_OF_BED_DETECTION_IMPROVEMENTS - Fixed detection of collision with circular printbed in backend 2021-10-01 07:28:10 +02:00
enricoturri1966
13ef817a99 Tech ENABLE_OUT_OF_BED_DETECTION_IMPROVEMENTS - Enable detection of collision with circular printbed in backend 2021-09-30 14:51:09 +02:00
enricoturri1966
b19c742455 Fixed conflicts after merge with master 2021-09-30 10:31:25 +02:00
YuSanka
238e65e455 Improvements for statistics information:
+ Show 2 groups of errors: "Auto-repared" and "Remaning".
 + Use different icons for volumes with/without remaining errors
 + Fixed update of the ObjectList warnings icons after switch the color mode of a PrusaSlicer
 + Some code refactoring: Use same code for tooltips for "exclamation"-icon from an ObjectList and from a Sidebar->ObjectInfo
2021-09-21 17:20:12 +02:00
enricoturri1966
1dad3c20f7 Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_sinking_objects_collision 2021-09-21 13:52:10 +02:00
Vojtech Bubnik
8a2a9dba2f 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
enricoturri1966
92bf9a664d Fix of detection of the out of bed state for sinking objects in backend 2021-09-17 14:47:19 +02:00
Lukas Matena
677cb58000 Fix several warnings 2021-09-15 16:36:59 +02:00
Vojtech Bubnik
58d8ab3dea 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
enricoturri1966
639cf17e19 Fixed conflicts after merge with master 2021-09-01 13:28:10 +02:00
Lukáš Hejl
ccf671dcc9 Added versioning of the structure of stored data for all three painting gizmos (fdm supports, seam and multi-material). 2021-08-31 15:05:11 +02:00
Lukas Matena
270c076e77 Fixed undo/redo issue when clear method of FacetsAnnotation and ModelConfig
reset timestamp to 1. This led to a bug where e.g. deleting painted facets
through the respective item in object list followed by  possible other actions
and undo restored the painted facets from the time when the project was loaded.
I'm not sure if there was any other situation where this problem manifested.
2021-08-31 09:16:09 +02:00
enricoturri1966
dbaaa35534 Tech ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED -> 1st installment: Allow to save/load empty projects 2021-08-26 10:38:14 +02:00
enricoturri1966
67bc29299a Fixed sinking object popping up on bed when adding a modifier 2021-08-26 08:34:43 +02:00
enricoturri1966
ca098d5763 Fixed manipulation of sinking multipart objects resulting in wrong object/parts positioning 2021-08-25 15:01:15 +02:00
enricoturri1966
38cd7fea65 Fixed update of backend after the changes introduced with b3010a817b (Do not allow objects to be placed fully below bed) and pop object on the bed when only one part is left 2021-08-25 12:39:46 +02:00
enricoturri1966
720a65c4fd #6806 - Fixed naming of multipart objects when loaded from 3mf files 2021-08-23 09:57:35 +02:00
Vojtech Bubnik
deda13ffc7 Fixed previous commit 2021-08-05 17:34:04 +02:00
Vojtech Bubnik
49fdf3da7b follow-up to a86e7107a5:
Make is_converted_from_meters / is_converted_from_inches exclusive-or.
Maybe it would be better to make a single enum from the two booleans,
if they are exclusive-or?
2021-08-05 15:35:44 +02:00
Lukas Matena
bc81c22ea9 CLI: Ensure that objects are on bed by default, new CLI config option:
'dont-ensure-on-bed' (which allows to override). This was the original
behaviour in Slic3r and Sli3rPE, probably broken long ago when CLI
was ported from  Perl.
Also, --scale-to-fit should now work again (#5772)
2021-08-04 12:15:37 +02:00
Lukáš Hejl
742a373c1f Added invalidation of the sliced object when gap-fill enabled/disabled if the object is painted using the multi-material painting gizmo.
Filtering of unprintable regions in multi-material segmentation depends on if gap-fill is enabled or not. So sliced object is invalidated when gap-fill was enabled/disabled by option "gap_fill_enabled" or by changing "gap_fill_speed" to force recomputation of the multi-material segmentation.
2021-08-03 13:03:06 +02:00
Vojtech Bubnik
1659e4c77f Fixed splitting of triangle meshes, where the splitting function
may produce a single triangle, which is then removed by the repair function.
2021-07-29 15:02:50 +02:00
Lukáš Hejl
38866b65b0 Get rid of unnecessary double calling of TriangleSelector::reset() in some cases when TriangleSelector::deserialize() is called. 2021-07-29 11:45:01 +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
bf7b554235 Disable reload from disk for built-in objects 2021-07-16 12:30:47 +02:00
Vojtech Bubnik
19e3998bd0 Merge branch 'vb_mmu_top_bottom' 2021-07-13 11:08:52 +02:00
tamasmeszaros
7fce368cca Fix crash after SL1 import 2021-06-29 11:40:50 +02:00
Vojtech Bubnik
e4e8c5df12 As an example of using the enum_bitmask infrastructure for type safe
sets of optional boolean parameters, the cut function "keep upper",
"keep lower" and "flip lower" boolean parameters were converted into
a single type safe enum_bitmask. Such a coding style is certainly
wordier than the original code, but much safer and more readable
than the error prone "boolean, boolean, boolean" function call
parameter list.
2021-06-27 17:36:25 +02:00