maziggy
0eb083b32e
fix(slicer): read the plate model once per part for the post-slice thumbnail (issue #3135 )
...
The post-slice thumbnail loaded the sliced 3MF with trimesh, whose reader
mishandles the Bambu Studio / OrcaSlicer layout: for every component that
references a file in 3D/Objects/ it re-parses that file and appends all
of its meshes again. N copies of a part came back as N^2 copies of its
triangles, and each component carried every other part of the same file.
25 bins of 10k faces loaded as 6.4M faces; the render took 54 s and
8.4 GB on the event loop, and the server was OOM-killed.
Parse the 3MF directly (lxml, entities/DTD/network off, streamed and
freed element by element), walk objects, components and build items
(p:path on either) with their transforms, and keep each mesh once.
Decimate per unique mesh to its share of a face budget before placing
instances, flip winding on mirrored placements, and skip the thumbnail
above a face ceiling checked both on what decimation can reach and on
what it delivered.
Both slice routes run the render in a thread. The renderer uses
matplotlib's Figure/Agg API instead of pyplot, whose process-global
figure state let a threaded plate render and stl_thumbnail's
event-loop render lay out and close each other's figures.
2026-09-22 10:47:00 +02:00
..
2026-08-30 08:01:42 +02:00
2026-09-22 10:47:00 +02:00
2026-08-23 10:36:50 +02:00
2026-08-17 09:26:13 +02:00
2026-07-29 08:40:42 +02:00
2026-07-22 09:57:27 +02:00
2026-08-25 15:03:34 +02:00
2026-07-18 08:11:44 +02:00
2026-08-23 15:17:09 +02:00
2026-08-25 15:03:34 +02:00
2026-07-18 13:06:01 +02:00
2026-08-28 14:26:34 +02:00
2026-08-29 08:51:33 +02:00
2026-08-17 09:26:13 +02:00
2026-07-19 09:29:54 +02:00
2026-08-27 13:03:15 +02:00
2026-07-21 08:46:02 +02:00
2026-09-19 10:38:54 +02:00
2026-08-29 09:23:48 +02:00
2026-08-08 11:19:33 +02:00
2026-08-28 10:30:32 +02:00
2026-07-30 10:31:22 +02:00
2026-07-30 12:52:11 +02:00
2026-07-30 12:35:27 +02:00
2026-07-30 10:31:22 +02:00
2026-08-03 08:52:23 +02:00
2026-09-20 12:12:56 +02:00
2026-09-20 12:12:56 +02:00
2026-07-28 15:05:28 +02:00
2026-08-25 13:45:57 +02:00
2026-08-11 12:50:42 +02:00
2026-08-14 14:26:30 +02:00
2026-08-03 15:12:02 +02:00
2026-07-30 16:31:09 +02:00
2026-07-31 14:28:17 +02:00
2026-08-18 13:43:46 +02:00
2026-08-29 10:46:36 +02:00
2026-07-18 13:48:14 +02:00
2026-08-17 08:05:02 +02:00
2026-08-18 16:23:32 +02:00
2026-07-30 16:31:09 +02:00
2026-08-29 10:46:36 +02:00
2026-08-29 10:46:36 +02:00
2026-08-15 13:40:21 +02:00
2026-08-17 12:17:12 +02:00
2026-07-30 16:31:09 +02:00
2026-07-30 13:05:15 +02:00
2026-09-19 10:52:15 +02:00
2026-09-19 10:52:15 +02:00
2026-08-17 10:26:38 +02:00
2026-09-18 17:55:06 +02:00
2026-08-28 08:28:27 +02:00
2026-09-18 13:38:02 +02:00
2026-08-25 09:33:52 +02:00
2026-09-21 11:18:35 +02:00
2026-08-27 08:37:35 +02:00
2026-08-29 08:51:33 +02:00
2026-08-28 09:23:30 +02:00
2026-07-18 16:15:09 +02:00
2026-08-13 12:04:56 +02:00
2026-07-31 09:30:06 +02:00
2026-07-31 12:55:05 +02:00
2026-07-13 09:18:17 +02:00
2026-08-16 15:59:59 +02:00
2026-08-04 08:57:34 -04:00
2026-08-06 12:08:36 +02:00
2026-09-20 12:12:56 +02:00
2026-08-06 08:46:02 +02:00
2026-08-25 12:17:23 +02:00
2026-08-25 12:17:23 +02:00
2026-08-24 09:47:39 +02:00
2026-08-24 09:47:39 +02:00
2026-08-22 13:22:56 +02:00
2026-08-28 13:30:27 +02:00
2026-08-25 09:33:52 +02:00
2026-08-27 16:04:41 +02:00
2026-07-18 13:48:14 +02:00
2026-08-09 14:10:18 +02:00
2026-07-30 17:34:13 +01:00
2026-07-12 08:44:53 +02:00
2026-08-25 12:17:23 +02:00
2026-08-25 12:17:23 +02:00
2026-08-23 15:17:09 +02:00
2026-08-02 11:17:49 +02:00
2026-08-14 14:49:55 +02:00
2026-09-20 12:12:56 +02:00
2026-09-20 12:12:56 +02:00
2026-08-25 07:55:49 +02:00
2026-09-20 12:12:56 +02:00
2026-09-18 17:13:26 +02:00
2026-07-14 10:35:58 +02:00
2026-08-25 12:17:23 +02:00
2026-08-13 12:04:56 +02:00
2026-08-17 09:26:13 +02:00
2026-08-25 12:17:23 +02:00
2026-08-14 09:18:55 +02:00
2026-08-14 11:27:50 +02:00
2026-08-25 08:49:24 +02:00
2026-07-28 21:05:29 +00:00
2026-07-28 21:05:29 +00:00
2026-08-01 11:37:01 +02:00
2026-09-07 10:39:10 +02:00
2026-08-02 11:09:32 +02:00
2026-08-13 12:04:56 +02:00
2026-08-18 09:34:03 +02:00
2026-08-11 11:49:30 +02:00
2026-07-11 14:22:31 +02:00
2026-07-30 16:31:09 +02:00
2026-08-10 16:48:10 +02:00
2026-08-03 14:53:21 +02:00
2026-09-18 13:38:02 +02:00
2026-08-25 11:19:46 +02:00
2026-08-26 12:04:42 +02:00
2026-08-26 12:04:42 +02:00
2026-08-19 08:26:43 +02:00
2026-08-22 13:22:56 +02:00
2026-08-01 10:35:22 +02:00
2026-08-26 12:04:42 +02:00
2026-08-08 16:33:41 +02:00
2026-09-07 14:37:49 +02:00
2026-07-17 10:02:19 +02:00
2026-08-14 15:32:40 +02:00
2026-08-25 11:19:46 +02:00
2026-08-25 16:22:43 +02:00
2026-07-18 13:06:01 +02:00
2026-08-27 13:42:55 +02:00
2026-08-23 14:25:45 +02:00
2026-08-22 13:22:56 +02:00
2026-07-20 11:52:18 +02:00
2026-07-20 11:52:18 +02:00
2026-08-15 13:40:21 +02:00
2026-08-15 13:40:21 +02:00
2026-08-15 13:40:21 +02:00
2026-07-07 12:17:46 +02:00
2026-09-18 14:01:36 +02:00
2026-07-07 12:17:46 +02:00
2026-08-15 10:38:51 +02:00
2026-09-07 12:22:26 +02:00
2026-08-15 10:38:51 +02:00
2026-08-09 17:07:34 -04:00
2026-08-19 08:26:43 +02:00
2026-08-15 10:38:51 +02:00
2026-08-15 13:40:21 +02:00
2026-07-19 08:34:38 +02:00
2026-08-05 13:15:04 +02:00
2026-08-10 09:31:25 +02:00
2026-08-05 13:15:04 +02:00
2026-07-24 13:13:04 +02:00
2026-09-18 19:38:24 +02:00
2026-08-10 13:54:44 +02:00
2026-07-17 06:51:51 +02:00
2026-08-22 08:46:07 +02:00
2026-09-18 19:38:24 +02:00
2026-07-22 09:57:27 +02:00
2026-08-28 11:22:03 +02:00
2026-08-09 17:07:34 -04:00
2026-09-18 14:01:36 +02:00
2026-07-20 12:30:39 +02:00
2026-08-15 10:38:51 +02:00
2026-08-15 13:40:21 +02:00
2026-08-15 13:40:21 +02:00
2026-08-04 08:49:49 +02:00
2026-08-18 13:43:46 +02:00
2026-08-15 11:37:01 +02:00
2026-08-11 09:02:52 +02:00
2026-08-15 11:37:01 +02:00
2026-08-14 16:02:53 +02:00
2026-08-24 11:04:33 +02:00
2026-08-03 14:10:02 +02:00
2026-08-28 09:23:30 +02:00
2026-08-29 14:14:26 +02:00
2026-08-29 14:14:26 +02:00
2026-08-09 11:25:09 +02:00
2026-07-22 10:44:05 +02:00
2026-07-31 15:14:01 +02:00
2026-08-11 08:35:23 +02:00
2026-08-27 13:42:55 +02:00
2026-07-22 09:57:27 +02:00
2026-08-15 10:38:51 +02:00
2026-08-27 13:03:15 +02:00
2026-08-25 13:45:57 +02:00
2026-08-28 09:46:37 +02:00
2026-08-14 15:32:40 +02:00
2026-07-30 13:52:56 +02:00
2026-07-15 07:29:16 +02:00
2026-08-14 15:32:40 +02:00
2026-08-26 12:04:42 +02:00
2026-07-14 10:35:58 +02:00
2026-07-31 15:32:08 +02:00
2026-08-09 14:10:18 +02:00
2026-07-29 14:10:38 +02:00
2026-08-03 08:52:23 +02:00
2026-08-13 08:37:16 +02:00
2026-08-05 21:25:46 +02:00
2026-07-29 11:51:30 +02:00
2026-08-30 08:01:42 +02:00
2026-08-13 17:23:41 +02:00
2026-08-13 08:37:16 +02:00
2026-08-13 08:37:16 +02:00
2026-07-18 13:18:59 +02:00
2026-08-03 10:17:28 +02:00
2026-08-29 15:25:26 +02:00
2026-09-20 10:06:47 +02:00