UltiMaker uses functional, analytical and tracking cookies. Tracking cookies enhance your experience on our website and may also collect your personal data outside of Ultimaker websites. If you agree with the use of tracking cookies, click “I agree, continue browsing”. You can withdraw your consent at any time. If you do not consent with the use of tracking cookies, click “Refuse”. You can find more information about cookies on our Privacy and Cookie Policy page.
I am trying to use a DLL inside a cura plugin but for some reason it wil not load the DLL for me.
i have a DLL set up that gives coordinates comming from our eye tracker and sends them to the python script.
i have a python script (Script A) that calls this DLL and has a few easy calls for other python scripts to use.
Calling Script A from command line (going through __main__) it loads the DLL and starts outputting coords in a while loop on my cmd window.
When trying to use this Script A in another Script B it does not seem to load the DLL.
Error Message:
2020-08-06 13:45:26,268 - ERROR - [MainThread] UM.Logger.logException [84]: Exception: Error loading plugin PrepareStageSR:
2020-08-06 13:45:26,271 - ERROR - [MainThread] UM.Logger.logException [88]: Traceback (most recent call last):
2020-08-06 13:45:26,273 - ERROR - [MainThread] UM.Logger.logException [88]: File "D:\Git\Cura Project\Uranium\UM\PluginRegistry.py", line 379, in loadPlugin
2020-08-06 13:45:26,274 - ERROR - [MainThread] UM.Logger.logException [88]: to_register = plugin.register(self._application) # type: ignore # We catch AttributeError on this in case register() doesn't exist.
2020-08-06 13:45:26,276 - ERROR - [MainThread] UM.Logger.logException [88]: File "D:\Git\Cura Project\Cura\cura\..\plugins\PrepareStageSR\__init__.py", line 19, in register
2020-08-06 13:45:26,278 - ERROR - [MainThread] UM.Logger.logException [88]: "stage": PrepareStage.PrepareStage()
2020-08-06 13:45:26,280 - ERROR - [MainThread] UM.Logger.logException [88]: File "D:\Git\Cura Project\Cura\cura\..\plugins\PrepareStageSR\PrepareStage.py", line 14, in __init__
2020-08-06 13:45:26,281 - ERROR - [MainThread] UM.Logger.logException [88]: sr = SR()
2020-08-06 13:45:26,282 - ERROR - [MainThread] UM.Logger.logException [88]: File "D:\Git\Cura Project\Cura\cura\..\plugins\PrepareStageSR\SR_EyeCoords.py", line 36, in __init__
2020-08-06 13:45:26,283 - ERROR - [MainThread] UM.Logger.logException [88]: self.c_lib = ctypes.CDLL("SRPython")
2020-08-06 13:45:26,284 - ERROR - [MainThread] UM.Logger.logException [88]: File "C:\Users\tom.hendriks\AppData\Local\Programs\Python\Python35\lib\ctypes\__init__.py", line 351, in __init__
2020-08-06 13:45:26,286 - ERROR - [MainThread] UM.Logger.logException [88]: self._handle = _dlopen(self._name, mode)
2020-08-06 13:45:26,287 - ERROR - [MainThread] UM.Logger.logException [88]: OSError: [WinError 126] The specified module could not be found
my "SR_EyeCoords.py" (calling __main__ does work!)
import ctypes
import pathlib
import time
class SR_Eye:
__slots__ = ["x", "y", "z"]
def __init__(self, x=0, y=0, z=0):
self.x = x
self.y = y
self.z = z
def __str__(self):
return (str(self.x) + ", " + str(self.y) + ", " + str(self.z))
class SR_EyePair:
__slots__ = ["left", "right"]
def __init__(self, left, right):
self.left = left
self.right = right
def __str__(self):
return (str(self.left) + " : " + str(self.right))
class SR:
def __init__(self):
self.c_lib = ctypes.CDLL("SRPython")
self.c_lib.Setup()
self.c_lib.GetEyeValue.restype = ctypes.c_float
def GetCurrentEyePair(self):
lx = self.c_lib.GetEyeValue(0,0)
ly = self.c_lib.GetEyeValue(0,1)
lz = self.c_lib.GetEyeValue(0,2)
rx = self.c_lib.GetEyeValue(1,0)
ry = self.c_lib.GetEyeValue(1,1)
rz = self.c_lib.GetEyeValue(1,2)
eyeL = SR_Eye(lx,ly,lz)
eyeR = SR_Eye(rx,ry,rz)
eyePair = SR_EyePair(eyeL, eyeR)
return eyePair
if __name__ == '__main__':
# SR_EyeCoords.py executed as script outputs eye Coord every second
sr = SR()
while 1:
print(sr.GetCurrentEyePair())
time.sleep(1) #sleep for 1 second
Snippet of the PrepareStage.py (using a coppy of the normal preparestage as a base since i'm not that familiar with the plugin development yet)
from cura.Stages.CuraStage import CuraStage
from PrepareStageSR.SR_EyeCoords import *
## Stage for preparing model (slicing).
class PrepareStage(CuraStage):
def __init__(self, parent = None):
sr = SR() #crash on this line
eyePair = sr.GetCurrentEyePair()
Loading DLL in Cura
in UltiMaker Cura
Posted
Hey forum,
I am trying to use a DLL inside a cura plugin but for some reason it wil not load the DLL for me.
i have a DLL set up that gives coordinates comming from our eye tracker and sends them to the python script.
i have a python script (Script A) that calls this DLL and has a few easy calls for other python scripts to use.
Calling Script A from command line (going through __main__) it loads the DLL and starts outputting coords in a while loop on my cmd window.
When trying to use this Script A in another Script B it does not seem to load the DLL.
Error Message:
2020-08-06 13:45:26,268 - ERROR - [MainThread] UM.Logger.logException [84]: Exception: Error loading plugin PrepareStageSR: 2020-08-06 13:45:26,271 - ERROR - [MainThread] UM.Logger.logException [88]: Traceback (most recent call last): 2020-08-06 13:45:26,273 - ERROR - [MainThread] UM.Logger.logException [88]: File "D:\Git\Cura Project\Uranium\UM\PluginRegistry.py", line 379, in loadPlugin 2020-08-06 13:45:26,274 - ERROR - [MainThread] UM.Logger.logException [88]: to_register = plugin.register(self._application) # type: ignore # We catch AttributeError on this in case register() doesn't exist. 2020-08-06 13:45:26,276 - ERROR - [MainThread] UM.Logger.logException [88]: File "D:\Git\Cura Project\Cura\cura\..\plugins\PrepareStageSR\__init__.py", line 19, in register 2020-08-06 13:45:26,278 - ERROR - [MainThread] UM.Logger.logException [88]: "stage": PrepareStage.PrepareStage() 2020-08-06 13:45:26,280 - ERROR - [MainThread] UM.Logger.logException [88]: File "D:\Git\Cura Project\Cura\cura\..\plugins\PrepareStageSR\PrepareStage.py", line 14, in __init__ 2020-08-06 13:45:26,281 - ERROR - [MainThread] UM.Logger.logException [88]: sr = SR() 2020-08-06 13:45:26,282 - ERROR - [MainThread] UM.Logger.logException [88]: File "D:\Git\Cura Project\Cura\cura\..\plugins\PrepareStageSR\SR_EyeCoords.py", line 36, in __init__ 2020-08-06 13:45:26,283 - ERROR - [MainThread] UM.Logger.logException [88]: self.c_lib = ctypes.CDLL("SRPython") 2020-08-06 13:45:26,284 - ERROR - [MainThread] UM.Logger.logException [88]: File "C:\Users\tom.hendriks\AppData\Local\Programs\Python\Python35\lib\ctypes\__init__.py", line 351, in __init__ 2020-08-06 13:45:26,286 - ERROR - [MainThread] UM.Logger.logException [88]: self._handle = _dlopen(self._name, mode) 2020-08-06 13:45:26,287 - ERROR - [MainThread] UM.Logger.logException [88]: OSError: [WinError 126] The specified module could not be found
my "SR_EyeCoords.py" (calling __main__ does work!)
import ctypes import pathlib import time class SR_Eye: __slots__ = ["x", "y", "z"] def __init__(self, x=0, y=0, z=0): self.x = x self.y = y self.z = z def __str__(self): return (str(self.x) + ", " + str(self.y) + ", " + str(self.z)) class SR_EyePair: __slots__ = ["left", "right"] def __init__(self, left, right): self.left = left self.right = right def __str__(self): return (str(self.left) + " : " + str(self.right)) class SR: def __init__(self): self.c_lib = ctypes.CDLL("SRPython") self.c_lib.Setup() self.c_lib.GetEyeValue.restype = ctypes.c_float def GetCurrentEyePair(self): lx = self.c_lib.GetEyeValue(0,0) ly = self.c_lib.GetEyeValue(0,1) lz = self.c_lib.GetEyeValue(0,2) rx = self.c_lib.GetEyeValue(1,0) ry = self.c_lib.GetEyeValue(1,1) rz = self.c_lib.GetEyeValue(1,2) eyeL = SR_Eye(lx,ly,lz) eyeR = SR_Eye(rx,ry,rz) eyePair = SR_EyePair(eyeL, eyeR) return eyePair if __name__ == '__main__': # SR_EyeCoords.py executed as script outputs eye Coord every second sr = SR() while 1: print(sr.GetCurrentEyePair()) time.sleep(1) #sleep for 1 second
Snippet of the PrepareStage.py (using a coppy of the normal preparestage as a base since i'm not that familiar with the plugin development yet)
from cura.Stages.CuraStage import CuraStage from PrepareStageSR.SR_EyeCoords import * ## Stage for preparing model (slicing). class PrepareStage(CuraStage): def __init__(self, parent = None): sr = SR() #crash on this line eyePair = sr.GetCurrentEyePair()