Commit Graph

29746 Commits

Author SHA1 Message Date
thysson2701
5b9674b578 fix(build): sync GLCanvas3D.hpp render_overlay/is_camera_* signatures with ImageMap cpp 2026-07-21 22:58:06 +02:00
thysson2701
61eab0d5d9 fix(build): drop obsolete keep_painting arg from fix_model_with_cgal_gui call in GLGizmoCut 2026-07-21 22:54:38 +02:00
thysson2701
a9faa45f34 fix(build): restore kx-v2.4.2 GLGizmoCut.cpp to match reverted CutUtils and v2.4.2 gizmo header 2026-07-21 22:51:02 +02:00
thysson2701
91e3b9b5a4 fix(build): sync GUI_App.hpp cloud-provider method declarations with ImageMap cpp 2026-07-21 22:42:44 +02:00
thysson2701
3f82c721e4 fix(build): declare cloud-provider is_user_login(provider) and get_printer_cloud_provider in GUI_App.hpp 2026-07-21 22:35:07 +02:00
thysson2701
2ea3d2c620 fix(build): restore kx-v2.4.2 TreeSupport3D.cpp (ImageMap version used pre-rename support members) 2026-07-21 22:28:43 +02:00
thysson2701
bc40e58f6e fix(build): convert Points3 to 2D Points for wipe path construction in extrude_path 2026-07-21 22:25:15 +02:00
thysson2701
a5840f12a8 fix(build): to_point() for next_point seam-gap fallback in GCode.cpp 2026-07-21 22:22:32 +02:00
thysson2701
795c47c2c2 fix(build): convert ProcessedPoint.p (Point3) to 2D for gradient Line/Point ops in GCode.cpp 2026-07-21 22:19:06 +02:00
thysson2701
868858eaa5 fix(build): reconcile PresetBundle/Print::apply signatures with ImageMap headers, Line(Point3) conversions 2026-07-21 22:15:10 +02:00
thysson2701
9fc680569e fix(build): m_last_pos.to_point() for chained_path_from in extrude_infill 2026-07-21 22:10:59 +02:00
thysson2701
c8f399fdba fix(build): remove nonexistent exterior_facets reset, Point3->Point in rotate center 2026-07-21 22:08:14 +02:00
thysson2701
3259f12b04 fix(build): Point3->Point conversion for wipe-loop angle detection in GCode.cpp 2026-07-21 22:04:41 +02:00
thysson2701
f5e2ee9094 fix(build): add remap_paint param to split() defs, Point3 typing in LayerRegion.cpp 2026-07-21 21:59:00 +02:00
thysson2701
41589a2033 fix(build): Point3->Point conversions in GCode, Polyline3 + model_rotation_rad arg in LayerRegion 2026-07-21 21:56:02 +02:00
thysson2701
a8d33bbc8e fix(build): more Point3 typing for polyline.points access in GCode.cpp 2026-07-21 21:50:54 +02:00
thysson2701
fceb087be1 fix(build): resolve Point/Point3 Eigen size mismatches in GCode.cpp 2026-07-21 21:46:01 +02:00
thysson2701
6536e18423 fix(build): Polyline3/Line3 conversions in GCode.cpp wipe+gradient, add sparse_infill_filament config 2026-07-21 21:38:55 +02:00
thysson2701
c73261ca6b fix(build): restore ImageMap GCode.hpp, merge ZAA by-value/skirt signatures 2026-07-21 21:33:24 +02:00
thysson2701
2405572fee fix(build): add missing wall_filament/sparse_infill_filament/solid_infill_filament declarations to LayerTools 2026-07-21 21:27:14 +02:00
thysson2701
6eb4f7c321 fix(build): replace ImageMap GCode.hpp with ZAA version, fix GCode.cpp type conflicts 2026-07-21 15:40:30 +02:00
thysson2701
e15298249a fix(build): convert Point3 lerp results and polyline points to Point in Fill.cpp 2026-07-21 15:31:48 +02:00
thysson2701
f81987e6cc fix(build): add Polyline3::is_closed() and fix Point3 reference in Fill.cpp 2026-07-21 15:24:35 +02:00
thysson2701
6d14497ddc fix(build): add missing ImageMap config fields and fix Polyline3 assignments in Fill.cpp
PrintConfig.hpp: add wall_filament and solid_infill_filament config fields
that ImageMap's Fill.cpp uses for texture zone filament assignment.

Fill.cpp: wrap 2D Polyline in Polyline3() constructor where ExtrusionPath::polyline
(now Polyline3 from ZAA) is assigned from locally created 2D paths.
Fix boundary-skin helper functions to accept Polyline3 instead of Polyline.
Use to_points() to convert Points3 to Points for Polygon constructor.
2026-07-21 15:20:42 +02:00
thysson2701
dbbb28d365 fix(build): wrap 2D Polyline assignments in Polyline3() for ZAA-extended ExtrusionPath
ExtrusionPath::polyline is now Polyline3 (from ZAA commit). Direct assignment
of Polyline{...} (2D) fails. Use Polyline3(Polyline{...}) constructor which
embeds 2D points at z=0.
2026-07-21 15:13:49 +02:00
thysson2701
22637721a5 fix(build): replace ImageMap ExtrusionEntity.hpp with ZAA-compatible version
The merge took the ImageMap version of ExtrusionEntity.hpp (2D Polyline)
but the ZAA version of ExtrusionEntity.cpp (expects Polyline3, z_contoured,
first_point3, etc.). Replace the header with the post-ZAA version from
commit 95736445a4 so .hpp and .cpp are consistent. Update
ExtrusionEntityCollection to return Point by value matching the new
virtual signature. Also sync ExtrusionSimulator.cpp from ZAA commit.
2026-07-21 15:11:54 +02:00
thysson2701
8b805d8cc9 fix(build): revert CutUtils to v2.4.2 — ImageMap texture-remap additions broke signatures
The ImageMap fork removed src_object from perform_by_contour and saved_paintings
from finalize, making the .cpp incompatible with the v2.4.2 header. Reset both
files to v2.4.2 baseline; texture remapping on cut is an ImageMap-only feature
not yet ported.
2026-07-21 15:00:48 +02:00
thysson2701
7b554e1f50 fix(build): fix remaining ImageMap merge type conflicts
- ExtrusionEntityCollection: first/last_point() must return const Point&
  to match the virtual signature in ExtrusionEntity base class
- AppConfig: remove ImageMap-specific VERSION_CHECK_URL_LEGACY,
  VERSION_CHECK_MODE, VERSION_DOWNLOAD_URL constants; simplify methods
  to use our single Gitea URL
- ExtrusionProcessor: restore dimension-bridging in maybe_unscale lambda
  so 2D polyline points work with the 3D (Linef3) boundary distancer
  used in the ZAA overhang slowdown path
2026-07-21 14:54:25 +02:00
thysson2701
4622a0d882 fix(build): remove ImageMap-specific Point3/Polyline3 types incompatible with v2.4.2
ExtrusionEntityCollection.hpp had first_point3()/last_point3() overrides
that reference Point3 and methods not present in the v2.4.2 ExtrusionEntity
base class. Print.hpp used Polyline3() wrappers where plain Polyline is
the correct type. Both are leftovers from the ImageMap fork's 3D geometry
extension that did not merge cleanly.
2026-07-21 14:48:30 +02:00
thysson2701
1f5a76df74 fix(build): ensure Eigen3::Eigen target exists before deps_src configuration
In static builds find_package(Eigen3) is skipped, leaving Eigen3::Eigen
undefined when admesh and clipper try to link against it. Add an
unconditional find_package(Eigen3 CONFIG QUIET) guard in the main
CMakeLists before add_subdirectory(deps_src). deps_src/eigen now simply
provides the unnamespaced alias and fatals clearly if the target is missing.
2026-07-21 14:34:53 +02:00
thysson2701
0f1e69110f fix(build): resolve Eigen3::Eigen via CMAKE_PREFIX_PATH fallback
find_package(Eigen3 CONFIG) may not work in static builds where
find_package is skipped globally. As fallback, manually create the
Eigen3::Eigen IMPORTED target pointing to the eigen3 headers installed
by deps/ (under CMAKE_PREFIX_PATH/include/eigen3). This ensures libigl
and admesh always get a modern Eigen (5.x) with Eigen::all support.
2026-07-21 14:33:28 +02:00
thysson2701
563ade1276 fix(build): use pre-built Eigen3 from deps/ instead of bundled 3.3.7
deps_src/eigen contained Eigen 3.3.7 from the ImageMap fork, which
predates the Eigen::all placeholder (requires Eigen 3.4+). libigl in
deps_src uses Eigen::all, causing build failures. Switch to find_package
so the Eigen3::Eigen target resolves to the Eigen 5.0.1 installed by
deps/ CMakeLists via CMAKE_PREFIX_PATH.
2026-07-21 14:30:48 +02:00
thysson2701
5abd88de31 fix(build): add Eigen3::Eigen alias for CMake target compatibility 2026-07-21 14:24:00 +02:00
thysson2701
d8be383669 fix(build): add missing deps_src/eigen from ImageMap fork 2026-07-21 14:19:17 +02:00
thysson2701
ed7fd34cfc fix(profile): Kobra X bed_temperature_formula auf by_first_filament setzen
G9111 hat während des Auto-Levelings auf den höchsten Bett-Temp-Wert
aller Projekt-Filamente geheizt statt auf die Temp des aktiven Filaments.
Fixes #4 (OrcaSlicer-KX), related KX-Bridge-Release#96.
2026-07-21 14:03:43 +02:00
thysson2701
b200a85a20 fix(branding): KX-Logo in allen UI-Dialogen korrekt anzeigen
- Splash: SVG durch direktes PNG-Laden ersetzt (nanosvg rendert kein
  eingebettetes Raster-PNG)
- About-Dialog: Logo auf 125px skaliert statt unkontrolliert 192px
- TroubleshootDialog, UpdateDialogs, ReleaseNote, MsgDialog:
  OrcaSlicer.svg → OrcaSlicer_192px.png (bereits KX-Logo)
2026-07-21 14:03:39 +02:00
thysson2701
392741b6ac feat(updater): Versionsprüfung auf Gitea OrcaSlicer-KX Releases umleiten
Ersetzt die orcaslicer.com/latest URL durch die Gitea API:
  https://gitea.it-drui.de/api/v1/repos/viewit/OrcaSlicer-KX/releases/latest

Das Gitea-JSON hat dasselbe Format wie GitHub (tag_name, html_url,
prerelease) — der bestehende Parser in check_new_version_sf() funktioniert
ohne weitere Änderungen. Telemetrie-Query-Parameter und Upstream-Signaturen
werden nicht mehr angehängt.
2026-07-21 14:03:34 +02:00
thysson2701
d9051009a5 fix(branding): About-Dialog lädt KX-Logo als PNG statt SVG
nanosvg unterstützt keine eingebetteten Rasterbilder (data:image/png).
Direkt OrcaSlicer_192px.png laden — bereits durch das KX-Logo ersetzt.
2026-07-21 14:03:14 +02:00
thysson2701
0df211a900 feat(branding): OrcaKX-Logo als App-Icon und About/Splash-Logo einsetzen
Ersetzt alle OrcaSlicer-Logos durch das Orca-KX Fork-Logo (Kobra + Orca).
Betrifft: PNG-Icons (32/64/128/154/192px), Windows .ico, macOS .icns,
About-Dialog SVGs (light + dark) und Splash-Screen SVGs.
2026-07-21 14:03:14 +02:00
thysson2701
055b5ff086 fix(compat): add aliases for wall_filament → outer_wall_filament_id; fix verify_build.sh
Adds .aliases = { "wall_filament", "wall_filament_id", "outer_wall_filament",
"perimeter_extruder" } to outer_wall_filament_id and .aliases = { "inner_wall_filament" }
to inner_wall_filament_id in PrintConfig.cpp so that old .3mf files using these legacy
keys do not throw UnknownOptionException on load.

Also corrects verify_build.sh CHECKS to search for "tray_sub_brands" (the actual binary
string) instead of the stale "filament_sub_brands".
2026-07-21 14:02:58 +02:00
thysson2701
b7f6c5b1cd fix(preset): Legacy-Aliases durch korrekte _id-Keys in s_Preset_print_options ersetzen
wall_filament, sparse_infill_filament, solid_infill_filament waren
unregistrierte Legacy-Aliases die beim Start UnknownOptionException
in apply_only() verursachten. Durch die korrekten registrierten Keys
(outer/inner_wall_filament_id, sparse/internal_solid/top/bottom_surface
_filament_id) ersetzt. Ausserdem fehlende Upstream-2.4.0-Keys ergaenzt:
lightning_*, bridge_line_width, relative_bridge_angle,
support_parallel_printheads, parallel_printheads_*, flashforge_serial_number.
2026-07-21 14:02:54 +02:00
thysson2701
93b3c05278 fix(ams): exclude empty placeholder slots from AMS filament mapping
Empty AMS slots (is_tray_info_ready()==false) were included in
tray_filaments with id=0. The distance-map then stored tray_id=0 for
those slots, causing the greedy mapper to assign real project filaments
to the placeholder entry instead of their actual physical slot. On a
6-slot ACS/ACE with Slot 1 empty this shifted all mapped filaments by
one position.

Fix: skip any tray that is not ready (no color/type) before calling
_parse_tray_info() so only loaded slots enter the mapping pool.

Also keep index-alignment in get_ams_cobox_infos(): empty AMS entries
(filament_id empty) now push placeholder strings instead of being
silently skipped. This prevents the Overwriting-mode tab from accessing
m_ams_combo_info.ams_filament_colors at a shifted index, which caused
an out-of-bounds read and subsequent crash when switching sync modes
while a placeholder slot was present.

Fixes KX-Bridge-Release issue #67 comment #480 (slot-index shift +
Overwriting crash).
2026-07-21 14:02:32 +02:00
thysson2701
fc289241d9 fix(moonraker): re-resolve host on user→user preset switch for AMS sync
Two Moonraker user presets on different ports (:7125, :7126) share the
same printer agent type. switch_printer_agent() only called select_machine()
when the agent *type* changed — not when the host changed within the same
agent. A user→user preset switch therefore left the MachineObject pointing
at the first connected printer, causing AMS sync to always query the wrong
host.

Fix: when the agent type stays the same (and is not the BBL agent),
also call select_machine() so the host is re-resolved from the current
preset and set_selected_machine() reconnects to the correct Moonraker
instance.

Fixes: AMS Sync locked to first printer in multi-printer sessions (SirPeroples)
2026-07-21 14:02:31 +02:00
thysson2701
0971ed4ca8 feat(experimental): merge OrcaSlicer-ImageMap fork (texture/image printing)
Merges sentientstardust-dev/OrcaSlicer-ImageMap onto v2.4.2 base.
Includes CMYK texture mapping, side-surface image printing, OBJ/GLTF
texture import, image projection, and prime tower image rendering.

ImageMap base: OrcaSlicer commit 2026-04-26 (between v2.4.1 and v2.4.2)
KX-specific patches (Moonraker/AMS, updater, profile) to be applied on top.

EXPERIMENTAL — not for production use.
2026-07-21 14:02:25 +02:00
SoftFever
8500fcdcca Fix version was not properly updated on non windows OS (#14617)
Fixed an issue where on non-Windows systems, the version was not properly written to the appconfig.
2026-07-06 22:18:06 +08:00
SoftFever
c95887a93f one time bump microsoft appstore version to 2.4.3 2026-07-06 17:37:47 +08:00
SoftFever
d3405cf461 bump version to 2.4.2 2026-07-06 12:31:54 +08:00
SoftFever
a524ec7dde Fixes invalid inherits/compatible_printers/compatible_prints references that point at a deleted or renamed preset. (#14595)
* fix profile reference for Creality

* fix profile reference for Blocks

* fix profile reference for OrcaArena

* fix profile reference for re3D

* fix profile reference for Chuanying

* fix profile reference for Prusa

* fix profile reference for Wanhao France

* fix profile reference for MagicMaker

* fix profile reference for Afinia

Remove the ABS/ABS+/PLA/TPU/Value ABS/Value PLA filament presets that referenced the non-existent "Afinia H400 Pro" printer. The real printer is "Afinia H+1(HS)", already served by the @HS filament variants.

* fix profile reference for Comgrow

Remove the orphaned "0.20mm Standard @Comgrow T500 1.0" process preset and its process_list entry. Its only compatible printer "Comgrow T500 1.0 nozzle" never existed (the T500 model defines nozzle diameters 0.4/0.6/0.8 only).

* always run check_preset_references
2026-07-06 12:31:54 +08:00
SoftFever
55d0108cd3 Show preset name in cloud sync conflict and error messages (#14592)
The 409 conflict notification, the force-push confirmation dialog, and the payload-too-large (413) dialog now name the affected preset. The name was already parsed from the conflict body but never surfaced. The account-level preset-limit message stays generic since it isn't about one specific preset.
2026-07-06 12:27:47 +08:00
SoftFever
d91972e576 Fix reload from disk for STEP models after reopening a project (#12992) (#14591)
* Fix reload from disk for STEP models after reopening a project (#12992)

reload_from_disk matched reloaded source volumes with an exact
source.input_file string comparison. After a project is saved and
reopened, the stored source path is only the filename (the default,
non-full-path save) while a freshly re-imported volume carries a full
path, so the comparison never matched: reload fell into fail_list and
the "locate file" dialog was effectively useless for STEP models.

Fall back to a case-insensitive filename comparison when the exact
paths differ, so the existing same-folder source lookup (and the
locate dialog) can reload the model. Projects that stored absolute
source paths still match exactly as before; no 3mf format change.

* Add Preferences option to store full source paths in projects

Expose the existing export_sources_full_pathnames setting (previously
only editable in the config file) as a checkbox under Preferences >
General > Project. Enabling it stores absolute source paths in saved
projects, so "Reload from disk" works when the source file is kept in
a different folder than the project (companion to #12992).
2026-07-06 12:27:47 +08:00