137 Commits

Author SHA1 Message Date
YuSanka
4da322d527 CutGizmo: Some beautification/reorganization 2022-12-16 10:57:36 +01:00
YuSanka
0d512a4256 Cut: Extended detection if connector is outside of cut contour
It respects to the whole connector contour now
2022-12-09 18:26:59 +01:00
Lukas Matena
f81382f604 Generic sphere shape is now created by recursive division of an icosahedron 2022-12-08 14:55:32 +01:00
Lukas Matena
85ad56b43b Optimization: std::vector<bool> can be quite slow to access 2022-12-07 16:15:25 +01:00
Vojtech Bubnik
96ab500a13 Fixing Cut numerical issues on 45 degree rotated cube and
on 90 degree rotated cylinder.
2022-12-06 11:45:05 +01:00
Vojtech Bubnik
9a682a10cb Merge remote-tracking branch 'remotes/origin/fs_emboss' 2022-11-28 17:46:12 +01:00
Vojtech Bubnik
6e653d9070 Merge remote-tracking branch 'remotes/origin/master' into vb_treesupports 2022-11-02 17:21:36 +01:00
YuSanka
fbcdd4191b Merge remote-tracking branch 'PRIVATE/master' into ys_emboss_with_master 2022-10-27 13:09:55 +02:00
Vojtech Bubnik
ee626eb65a WIP: Layers split into islands, islands overlapping in Z interconnected
into a graph with links to the layer above / below.

In addition:
Members of LayerRegion were made private, public interface const only.
this->m_xxx replaced with just m_xxx
SurfacesPtr was made a vector of const pointers.
2022-10-26 18:41:39 +02:00
YuSanka
b4f38883a8 Merge remote-tracking branch 'PRIVATE/master' into ys_cut 2022-10-03 11:30:49 +02:00
Filip Sykala - NTB T15p
a78122bce7 Merge branch 'master' into fs_emboss 2022-09-26 12:33:01 +02:00
YuSanka
7a1c118924 Split object : Check if new objects don't have a zero volume
Related to :
 * #8931 - Split to objects crashes Prusa Slicer
 * SPE-1221(https://dev.prusa3d.com/browse/SPE-1221) - Split to objects fail
2022-09-23 16:37:33 +02:00
Filip Sykala - NTB T15p
c549c6afbe Merge branch 'master' into fs_emboss
# Conflicts:
#	src/libslic3r/CMakeLists.txt
#	src/libslic3r/Format/3mf.cpp
#	src/libslic3r/Model.hpp
#	src/libslic3r/Point.hpp
#	src/libslic3r/Technologies.hpp
#	src/slic3r/CMakeLists.txt
#	src/slic3r/GUI/GLCanvas3D.cpp
#	src/slic3r/GUI/GLSelectionRectangle.cpp
#	src/slic3r/GUI/GUI_Factories.hpp
#	src/slic3r/GUI/Gizmos/GLGizmoBase.cpp
#	src/slic3r/GUI/Gizmos/GLGizmoBase.hpp
#	src/slic3r/GUI/Gizmos/GLGizmoMove.cpp
#	src/slic3r/GUI/Gizmos/GLGizmoMove.hpp
#	src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp
#	src/slic3r/GUI/Gizmos/GLGizmoRotate.hpp
#	src/slic3r/GUI/MeshUtils.cpp
#	src/slic3r/GUI/MeshUtils.hpp
#	src/slic3r/GUI/ObjectDataViewModel.cpp
#	src/slic3r/GUI/ObjectDataViewModel.hpp
#	src/slic3r/GUI/Selection.cpp
2022-08-31 15:22:10 +02:00
YuSanka
79e9df4b64 Merge remote-tracking branch 'PRIVATE/master' into ys_cut 2022-08-17 10:05:44 +02:00
Lukas Matena
bce2b148f4 Merged 2.5.0-beta1 into master (NO CONFLICTS FIXED) 2022-08-15 13:41:40 +02:00
tamasmeszaros
88ba89dbbc STEP: Implementation ported from BambuStudio:
CMake handling is different

STEP: Removed preprocessing stage

STEP: Small refactoring

STEP: Bigger refactoring

STEP: Changed naming on loaded object and volumes:
If the STEP contains exactly one named volume, the object and its first
volume will both have that name. Otherwise, filename w/o suffix is used
as object name and volumes are named using names from the STEP (if there
is none, untranslated "PartN" string is used).

STEP: Load the libraries dynamically on Win

wip
2022-08-11 16:49:13 +02:00
YuSanka
2ac3861b2a Merge remote-tracking branch 'PRIVATE/master' into ys_cut 2022-08-08 10:57:38 +02:00
enricoturri1966
0388132acd Tech ENABLE_SHOW_NON_MANIFOLD_EDGES set as default 2022-07-28 08:55:53 +02:00
YuSanka
301d0d5288 Cut WIP:
* Processed Auto/Manual connetor's mode
* Processed Dowel type of connectors
* Added TriangeMesh::its_make_frustum_dowel
2022-03-22 11:25:48 +01:00
Filip Sykala
87f22765ba Separate functionality 2022-03-15 19:53:43 +01:00
Filip Sykala
2a62881c39 rename its storing functions 2022-03-02 12:23:22 +01:00
enricoturri1966
18e2cc2298 Tech ENABLE_SHOW_NON_MANIFOLD_EDGES - 1st installment - Calculate and show in 3D view non-manifold edges as lines 2022-01-20 13:32:24 +01:00
Vojtech Bubnik
5fd279cbc8 Fixing clang compiler warnings 2021-11-30 10:50:27 +01:00
enricoturri1966
9af9b9b35d Tech ENABLE_OUT_OF_BED_DETECTION_IMPROVEMENTS set as default 2021-11-16 12:39:54 +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
tamasmeszaros
549c98ac88 Fix its_number_of_patches returning bool instead of size_t 2021-11-11 10:02:58 +01:00
tamasmeszaros
c4c8b7608e Fix some mesh errors in sl1 archive reconstruction 2021-11-05 15:43:40 +01:00
Vojtech Bubnik
3021a6f57f Fixing previous commit for QHull configured for doubles, not floats. 2021-10-22 15:20:40 +02:00
Vojtech Bubnik
b15db6fdb7 Fixed previous commit, which broke debug compilation. 2021-10-22 15:11:51 +02:00
Vojtech Bubnik
d43ae66eca reduced copy / paste redudancy by extracting a new function
to produce convex hull: its_convex_hull()
2021-10-22 14:02:53 +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
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
2e779d8594 Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_sinking_objects_collision 2021-10-04 08:30:13 +02:00
Lukas Matena
4ca2401b69 Several minor improvements and fixed warnings 2021-10-01 14:31:22 +02:00
Vojtech Bubnik
68de2a49a3 Fixed update of mesh volume after applying a transformation.
Fixes flipped normals when importing some 3MFs.
2021-10-01 14:28: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
b19c742455 Fixed conflicts after merge with master 2021-09-30 10:31:25 +02:00
tamasmeszaros
acd2448f10 Fix stl export on Linux 2021-09-24 10:15:46 +02:00
Vojtech Bubnik
a5a7f64db0 Mesh statistics for imported STLs: Added backwards_edges to open_edges,
so that a mesh with incorrectly oriented faces will not be considered
a manifold.

Added assert for 3D convex hulls constructed by QHull. They shall be
manifold (however sometimes they are not).
2021-09-21 16:04:04 +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
Lukáš Hejl
40e4116d9a Added a missing include (GCC 11.1). 2021-09-21 10:45:57 +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
6d70ada637 Follow-up of 2f95c7721f9a1093bf87be296eacfc3800439981 - Even faster implementation of method TriangleMesh::transformed_bounding_box(const Transform3d& trafo, double world_min_z) 2021-09-17 09:45:50 +02:00
enricoturri1966
2f95c7721f Follow-up of 5a84b46ec9a037adf677489d2051b3baef9fe4e1 - Faster implementation of method TriangleMesh::transformed_bounding_box(const Transform3d& trafo, double world_min_z) 2021-09-17 08:42:01 +02:00
enricoturri1966
5a84b46ec9 Fix of detection of the out of bed state for sinking objects 2021-09-16 13:38:02 +02:00
Vojtech Bubnik
9d29eddf16 WIP: admesh eradication
follow-up to 58d8ab3deaaac1049439728d5a0f46c4b6a592f5
2021-09-14 14:51:40 +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
Vojtech Bubnik
1c76df89ea Fix of paint on supports don't work for object that has been scaled up #6718
The triangle-ray intersection function used a hard coded epsilon,
which did not work for triangle meshes, that were either too small
or too large. Newly the epsilon may be provided to the AABBTreeIndirect
search functions externally and IndexedMesh calculates a suitable
epsilon on demand from an average triangle mesh edge length.
2021-08-27 21:04:18 +02:00