This change introduces support for 3Dconnexion SpaceMouse devices on Linux
within the 3DConnexion plugin.
Key changes:
- Added `LinuxSpacenavClient.py`, which uses `ctypes` to interface with the
system-provided `libspnav.so.0` library. This client handles opening a
connection to the `spacenavd` daemon and polling for motion and button
events.
- Modified `NavlibClient.py` to include platform detection. On Linux, it
now uses `LinuxSpacenavClient` for device input. On Windows and macOS,
it continues to use the existing `pynavlib`.
- Updated the plugin initialization in `plugins/3DConnexion/__init__.py`
to gracefully handle cases where `libspnav.so.0` might be missing or
`spacenavd` is not accessible on Linux, disabling the plugin in such
scenarios.
- The core camera manipulation logic in `NavlibClient.py` has been adapted
to accept transformation matrices from either `pynavlib` or the new
Linux client, aiming for consistent behavior.
- Placeholder adaptations for some `pynavlib`-specific methods have been
added for the Linux path, returning `None` or basic Python types where
`pynav.*` types were previously used.
This implementation relies on you having `spacenavd` (version 0.6 or newer recommended)
installed and running, along with `libspnav0` (or equivalent).
Testing for this feature is currently manual, involving checking device
response for camera manipulation (pan, zoom, rotate) within Cura on a
Linux environment with a configured SpaceMouse.
Output:
They don't properly work since the conan2 migration, and it seems nobody is actually using them anymore, so deactivating them for now, and will reactivate when we have fixed the conan packages versions issues.
CURA-12101
There is a specific unit test that disallows custom settings in printer definitions, so this looks like the proper way of doing it. New settings are disabled by default so should be visible only for the printer that explicitly sets them enabled.
CURA-12101
The disallowed area is the place where the print head goes to cut the filament, so it must really be avoided. On other models this place is outside the build area.
I also reduced the printable size, otherwise the head would sometimes bump into the borders and gets shifted.
CURA-12101
The printer parses the machine_start_gcode to allow selecting the filaments mapping at start time, without it the user has to set the filaments in fixed order. This is probably a security to ensure the proper filament is loaded at start.
Contributes to CURA-12465, this should help with getting more focus in the input we are receiving from the slicing crashes. The old one was a bit outdated.
This would cause the 3MF projects from other vendors, which isn't a 'project' to us in the sense that it isn't a Cura project, to have their models 'arranged', unless the file was opened via 'recent files', in which case the open mode was set to always ask instead.
done as part of CURA-12099
CURA-12346
For some dark reason, importing the ExtruderStack class in the ThreeMFWriter somehow corrupts the loading of the extruders stacks. As it is imported only for typing, do the import only for type-checking.