FlyingSamson / SpaceMouseTool

A tool to manipulate the camera of Cura using a space mouse
GNU Affero General Public License v3.0
17 stars 2 forks source link

Use of spacemouse buttons causes crash of cura 5.1.1 #13

Closed gg48gg closed 10 months ago

gg48gg commented 1 year ago

First, Thank you for the plugin. Works awesome!!! ...except for the buttons...

Cura crashes when pushing a button. Workaround is to disable buttons (in 3dconnexion manager) when using SpaceMouseTool in Cura. Please let me know if you need more information. I'm happy to contribute in any way I can.

The following is the error:

Traceback (most recent call last):
  File "C:\Users\ghara\AppData\Roaming\cura\5.1\plugins\SpaceMouseTool\SpaceMouseTool.py", line 354, in spacemouse_button_press_callback
    if (keyboardModifiers & QtCore.Qt.ShiftModifier) == QtCore.Qt.ShiftModifier:
AttributeError: type object 'Qt' has no attribute 'ShiftModifier'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\ghara\AppData\Roaming\cura\5.1\plugins\SpaceMouseTool\SpaceMouseTool.py", line 419, in nativeEventFilter
    process_win_event(message.ascapsule())
SystemError: <built-in function process_win_event> returned a result with an exception set
Thread 0x00000a40 (most recent call first):
  File "UM\Backend\Backend.py", line 165 in _storeStderrToLogThread
  File "threading.py", line 946 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x000004f4 (most recent call first):
  File "UM\Backend\Backend.py", line 153 in _storeOutputToLogThread
  File "threading.py", line 946 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x000059e8 (most recent call first):
  File "C:\Program Files\Ultimaker Cura 5.1.1\share\cura\plugins\USBPrinting\USBPrinterOutputDeviceManager.py", line 88 in _updateThread
  File "threading.py", line 946 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x00006540 (most recent call first):
  File "threading.py", line 324 in wait
  File "zeroconf\__init__.py", line 2534 in wait
  File "zeroconf\__init__.py", line 1715 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x0000258c (most recent call first):
  File "threading.py", line 324 in wait
  File "threading.py", line 600 in wait
  File "C:\Program Files\Ultimaker Cura 5.1.1\share\cura\plugins\UM3NetworkPrinting\src\Network\ZeroConfClient.py", line 81 in _handleOnServiceChangedRequests
  File "threading.py", line 946 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x00004ce0 (most recent call first):
  File "zeroconf\__init__.py", line 1369 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x000036a8 (most recent call first):
  File "C:\Program Files\Ultimaker Cura 5.1.1\share\cura\plugins\RemovableDriveOutputDevice\RemovableDrivePlugin.py", line 61 in _updateThread
  File "threading.py", line 946 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x00004cb4 (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x000018f4 (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x00003110 (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x00001b28 (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x0000498c (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x00004500 (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x00003f94 (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x00006b78 (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x00005d60 (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x000021d0 (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x00004f14 (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x0000352c (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x00002bd4 (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x00002654 (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x0000167c (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Thread 0x000026a0 (most recent call first):
  File "threading.py", line 320 in wait
  File "threading.py", line 460 in acquire
  File "UM\JobQueue.py", line 98 in _nextJob
  File "UM\JobQueue.py", line 124 in run
  File "threading.py", line 1009 in _bootstrap_inner
  File "threading.py", line 966 in _bootstrap

Current thread 0x0000279c (most recent call first):
  File "cura\CrashHandler.py", line 397 in _logInfoWidget
  File "cura\CrashHandler.py", line 182 in _createDialog
  File "cura\CrashHandler.py", line 86 in __init__
  File "cura_app.py", line 165 in exceptHook
  File "UM\Qt\QtApplication.py", line 414 in exec
  File "cura\CuraApplication.py", line 888 in run
  File "cura_app.py", line 239 in <module>
gg48gg commented 1 year ago

adding screenshot: https://imgur.com/a/gvzjRzS

gg48gg commented 1 year ago

Button settings that make it crash: https://imgur.com/a/84QBV8t Button settings for workaround: https://imgur.com/a/s8nikBi Other settings: https://imgur.com/a/HsEzJjS

gg48gg commented 1 year ago

also I do have some customizations. The original was not working for me:

gharari@DESKTOP-xxxxx:/mnt/c/Users/ghara/AppData/Roaming/cura/5.1/plugins/SpaceMouseTool$ diff OrigSpaceMouseTool.py SpaceMouseTool.py
125c125
<         moveVec = moveVec.set(x=-tx, y=tz)
---
>         moveVec = moveVec.set(x=-tx, y=ty)
130c130
<             moveVec = moveVec.set(z=-ty)
---
>             moveVec = moveVec.set(z=-tz)
134c134
<             zoomFactor = camera.getZoomFactor() - SpaceMouseTool._zoomScale * ty
---
>             zoomFactor = camera.getZoomFactor() - SpaceMouseTool._zoomScale * tz
151c151,152
<         axisInViewSpace = np.array([-axisX, axisZ, -axisY, 1])
---
>         # Gil reversed Y and Z
>         axisInViewSpace = np.array([-axisX, axisY, -axisZ, 1])
gg48gg commented 1 year ago

OrigSpaceMouseTool.py.txt SpaceMouseTool.py.txt

FlyingSamson commented 1 year ago

Lets have a look at the real problem of Cura crashing when buttons are defined. Are you sure that the first image (i.e., left button Front View, right button Top View) shows the configuration that you were using when the above stack trace occurred? I'm asking because the trace says something about ShiftModifier. Just want to make sure.

I'm wondering if you could figure out which version of PyQt is used in your instance of Cura, since according to the doc there should be a ShiftModifier in QtCore.Qt.

FlyingSamson commented 1 year ago

Ah hang on, I think I found the problem. I will open a branch with a fix soon and will then ask you to try again, as I do not have a Windows system with modern enough GPU to run the current version of Cura.

FlyingSamson commented 1 year ago

Please give this commit a try

FlyingSamson commented 10 months ago

Should be fixed in v1.4.0. Please reopen if the issue should still persist.