Commit Graph

147 Commits

Author SHA1 Message Date
Dion Moult a341ad29f3 port: SVG edge classification (#3668) onto wgpu [worklist #114-120]
Ports the 7-commit v0.8.0 SVG edge-classification feature (f0970b90b +
6 follow-ups) onto wgpu's heavily-diverged serializer. Reconstructed
block-by-block rather than merged, because both sides rewrote
SvgSerializer (v0.8.0 +419, wgpu +778) and git's conflict alignment was
misleading.

Key wgpu adaptations reasoned per block:
- IfcUtil::IfcBaseEntity* (pointer identity) -> express::Base (value),
  incl. as a std::map key in draw_hlr (express::Base has operator<);
  nullptr fallback -> express::Base{}
- boost::optional -> std::optional (css_class, dash_array)
- hlr_calc::result_type pair -> 3-tuple (adds per-edge class label)
- draw_hlr restructured with a group_by_product map: ONE path_object per
  product so multiple class buckets share a group and per-path classes
  survive Bonsai's merge (NOT naive per-item threading, which fragments
  groups -- caught during visual verification)
- settings wired into wgpu's apply_settings() (ctor-called), NOT the
  feature's added ready() call which wgpu already solved differently
- logger_.Warning -> logger().warning in write(geometry_data)

Verified end-to-end via IfcConvert on a curved-geometry stress scene
(Suzanne/Torus/Sphere/Cube/Cone/...): edges classify into outline/sharp/
crease/boundary/flush with correct per-product grouping and CSS styling.
Requires the model's storey to carry an Elevation and --svg-project to
trigger the HLR projection.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-25 23:16:38 +10:00
Andrej730 34f8a2c54e Serialized.setFile: use file ref instead of pointer for safety 2026-07-24 21:50:49 +05:00
Thomas Krijnen 561a23cfbc After-merge clean-ups 2026-07-09 22:01:21 +02:00
Thomas Krijnen 7fc2d9a998 Merge remote-tracking branch 'origin/v0.8.0' into ifcviewer-wgpu 2026-07-09 13:21:39 +02:00
Thomas Krijnen 8bd22178f7 OCC_VER Compatibility 2026-06-29 11:30:37 +02:00
Frozen Forest Reality Technologies 7f49c945b9 OCCT 8.0 Update Part 3 2026-06-29 11:30:36 +02:00
Frozen Forest Reality Technologies 81f71e6418 OCCT 8.0 Update Part 2 2026-06-29 11:30:36 +02:00
Frozen Forest Reality Technologies 6318610bdb OCCT Update to 8.0 Part 1 2026-06-29 11:30:36 +02:00
Thomas Krijnen a7738eeb64 Pass around non-static logger instances and programmatic access to messages in-memory 2026-06-10 18:40:17 +02:00
Thomas Krijnen a751fb956d Introduce unique error codes 2026-06-10 18:40:17 +02:00
Thomas Krijnen c3a10694ba draw.py use settings instead of direct member methods 2026-05-09 21:19:55 +02:00
Thomas Krijnen b599ee1040 More work on isolating into plug-ins 2026-04-18 15:46:21 +02:00
Thomas Krijnen a07f56db6f Restructure and rename 2026-03-31 15:32:36 +02:00
Thomas Krijnen 7098beb819 Work towards v1.0 data model with encapsulated weak_ptr as basis for instances 2026-01-05 21:42:01 +01:00
Thomas Krijnen 44ef409335 Don't check for drawing semantics on qto or predefpset #7304 2025-10-31 09:56:54 +01:00
Thomas Krijnen 9d9e9ed4cb Merge remote-tracking branch 'origin/v0.8.0' into tfk-rocksdb-storage 2025-08-26 10:17:57 +02:00
Thomas Krijnen 7e2b9dc7f3 Warn about failure to create camera from IfcAnnotation/DRAWING in Svgserializer 2025-08-06 09:22:47 +02:00
Thomas Krijnen 360e08f268 SVG matrix #5676 2025-04-17 15:25:35 +02:00
Thomas Krijnen ce4407ff3c Some successes writing and reading 2025-02-27 22:07:31 +01:00
Thomas Krijnen 81bdb551ab SvgSerializer fix: Z == 2 2024-08-23 20:43:27 +02:00
Thomas Krijnen d80bcd1a94 Unify variant storage (#5118) 2024-08-23 20:29:07 +02:00
Thomas Krijnen a689fc6377 Consistency TopExp_Explorer::Current() 2024-08-02 04:50:06 +02:00
Thomas Krijnen a4532cc722 Remove assumptions on solid topology in SVG camera frustrum detection #4924 2024-07-03 20:04:52 +02:00
Thomas Krijnen 75b9e6cec9 setOnlyValid() option that skips and logs invalid topology #4130 2024-04-17 14:57:44 +02:00
Dion Moult bceac22ca0 See #4389. Accommodate null pset values when serializing to SVG. 2024-04-17 14:42:55 +02:00
Thomas Krijnen 7f37ba2fad convert closed wires to faces prior to processing in svg serializer #4283 2024-04-17 13:41:05 +02:00
Thomas Krijnen dc84f84e86 #3660 setSegmentProjection() / --svg-segment-projection options 2024-04-16 10:26:51 +02:00
Thomas Krijnen 0b673f725e #3158 Fix unify inputs 2024-04-16 10:25:02 +02:00
Dion Moult 9cb3ce1f9a See #2894. Implement SVG mirroring options (typically used for RCPs or useful when converting to other things like DXF). 2024-04-16 10:24:54 +02:00
Thomas Krijnen 23d096be07 SVG serialization UnifyInputs option 2024-04-16 10:10:48 +02:00
Thomas Krijnen 09d7cd97c8 SVG prefiltering elements based on large faces 2024-04-15 13:28:13 +02:00
Thomas Krijnen 01ad84901c #2942 Escape SVG text labels 2024-04-15 11:17:03 +02:00
Thomas Krijnen 65e874c67f Drastic settings refactoring 2023-11-15 10:32:33 +01:00
Thomas Krijnen 65a5646bf0 Major update: taxonomy shared pointers, collection type safety, work towards hashing 2023-07-27 16:42:06 +08:00
Thomas Krijnen c32c88b1a0 Merge remote-tracking branch 'origin/v0.7.0' into v0.8.0 2023-03-29 12:55:05 +02:00
Thomas Krijnen 2b1b79bf1c Make occt optional 2023-03-22 11:17:14 +01:00
Thomas Krijnen c78b2893de Proceed with merge 2023-03-21 20:15:01 +01:00
Thomas Krijnen d1217e61c4 #2822 svg: begin group lazily when data is actually being appended 2023-03-06 09:16:27 +01:00
Thomas Krijnen b521b68fd8 svg: compiler warnings 2023-03-06 09:15:27 +01:00
Thomas Krijnen c9302cde7c svg: prevent garbage data on empty path 2023-03-06 09:14:40 +01:00
Thomas Krijnen 3736a8b4b4 Refactoring 2022-11-13 11:04:16 +01:00
Thomas Krijnen 2ab4e44248 #2256 try explicit cast for clang 2022-07-05 09:46:19 +02:00
Thomas Krijnen 461b78665a OCCT 7.6 compatibility 2022-04-04 08:29:29 +00:00
Thomas Krijnen 96902bf38a Safeguard against runtime error when invoking HLR without storey containment 2022-02-27 20:57:05 +01:00
Thomas Krijnen 5dfe85691b #1153 Exclude walls and slabs in profile edges hack 2022-02-27 12:55:39 +01:00
Thomas Krijnen 3b7bf8844a Update default SVG CSS for projections 2022-02-27 12:55:11 +01:00
Thomas Krijnen eccf72ee8a #1153 option to preprocess shape into sets of profile edges 2021-11-20 14:02:12 +01:00
Thomas Krijnen c203b78d34 #1153 #1852 project points to form SVG HLR cut plane 2021-11-05 13:27:27 +01:00
Thomas Krijnen 5633445008 #1153 evenodd 2021-11-05 11:21:19 +01:00
Thomas Krijnen 06a988e141 #1153 boolean subtraction on parts 2021-11-05 11:04:46 +01:00