Import -> FreeCAD-Module in einem externen Python-Script/Python-Interpreten (Fehler:ImportError: DLL load failed)

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
Post Reply
Inspector
Posts: 1
Joined: Sat Apr 18, 2020 12:57 pm

Import -> FreeCAD-Module in einem externen Python-Script/Python-Interpreten (Fehler:ImportError: DLL load failed)

Post by Inspector »

Hallo liebe FreeCAD-Community,

ich möchte gerne die FreeCAD-Module in einem externen Python-Script einbinden. Habe zum testen eine simple GUI zum erstellen eines Würfels mit variabler Kantenlange erstellt. Den man dann als STL exportieren kann (Einfach nur um das Einbinden zu testen). Wenn ich das Script über die FreeCADCmd.exe ausführe, funktioniert alles einwandfrei. Unter Ubuntu funktioniert das Importieren der FreeCAD-Module auch.

Allerdings funktioniert das unter Windows bei mir nicht und ich bekomme immer diese Fehlermeldung:
import_error_dll.PNG
import_error_dll.PNG (7.72 KiB) Viewed 712 times

Code: Select all

# -*- coding: utf-8 -*-
FREECADPATH1 = 'C:/Program Files/FreeCAD 0.18/lib'
FREECADPATH2 = 'C:/Program Files/FreeCAD 0.18/bin'

import sys

sys.path.append(FREECADPATH1)
sys.path.append(FREECADPATH2)


from PySide2.QtWidgets import *
from PySide2.QtCore import *
from PySide2.QtGui import *

import FreeCAD as App


class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.setWindowTitle("create a Cube")
        self.setGeometry(100, 100, 570, 320)

        self.initUI()

    def initUI(self):
        self.centralwidget = QWidget(self)
        self.centralwidget.setObjectName("centralwidget")
        #MainLayout
        self.verticalLayoutWidget = QWidget(self.centralwidget)
        self.verticalLayoutWidget.setGeometry(QRect(10, 10, 550, 300))

        self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget)

        self.label_1 = QLabel()
        self.label_1.setText("Erstellt ein Würfel mit dem FreeCAD-Modul")
        self.label_1.setFont(QFont("Arial", 14, QFont.Bold))
        self.verticalLayout.addWidget(self.label_1)

        self.lcd = QLCDNumber()
        self.lcd.display(1)
        #self.lcd.setFixedHeight(50)
        self.lcd.setBaseSize(100,100)
        self.verticalLayout.addWidget(self.lcd)

        self.horizontalSlider = QSlider()
        self.horizontalSlider.setOrientation(Qt.Horizontal)
        self.horizontalSlider.setMaximum(100)
        self.horizontalSlider.setMinimum(1)
        self.horizontalSlider.setValue(1)
        self.verticalLayout.addWidget(self.horizontalSlider)

        self.horizontalSlider.valueChanged['int'].connect(self.lcd.display)

        self.pushbutton_1 = QPushButton()
        self.pushbutton_1.setText("Create")
        self.pushbutton_1.clicked.connect(self.action)
        self.verticalLayout.addWidget(self.pushbutton_1)

        self.pushbutton_2 = QPushButton()
        self.pushbutton_2.setText("Save")
        self.pushbutton_2.clicked.connect(self.savePart)
        self.verticalLayout.addWidget(self.pushbutton_2)

        self.lineEdit = QLineEdit(self.verticalLayoutWidget)
        self.lineEdit.setText("C:/Users/")
        self.verticalLayout.addWidget(self.lineEdit)

        self.pushbutton_3 = QPushButton()
        self.pushbutton_3.setText("Export to STL")
        self.pushbutton_3.clicked.connect(self.exportSTL)
        self.verticalLayout.addWidget(self.pushbutton_3)

        self.setCentralWidget(self.centralwidget)

    def action(self):
        self.edgeLength = self.horizontalSlider.value()
        FreeConstructor.createCube(self.edgeLength)

    def savePart(self):
        self.path = self.lineEdit.text()
        FreeConstructor.save(self.path)

    def exportSTL(self):
        self.path = self.lineEdit.text()
        FreeConstructor.exportSTL(self.path)

class FreeCADmethod():
    def __init__(self):
        self.docName = "CubeX"
        App.newDocument(self.docName)
        App.ActiveDocument = App.getDocument(self.docName)
        self.mydoc = App.getDocument(self.docName)


    def save(self, path):

        App.getDocument(self.docName).saveAs(u"" + path + self.docName + ".FCStd")

    def exportSTL(self, path):

        doc = App.activeDocument()

        objBox = doc.getObject("myBox")

        filename = path + self.docName + ".stl"
        objBox.Shape.exportStl(filename)


    def createCube(self, edgeLength):

        self.box = self.mydoc.addObject("Part::Box","myBox")
        self.box.Height = edgeLength
        self.box.Width = edgeLength
        self.box.Length = edgeLength

        self.mydoc.recompute()


if __name__ == "__main__":

    app = QApplication(sys.argv)
    window = MainWindow()
    FreeConstructor = FreeCADmethod()
    window.show()
    sys.exit(app.exec_())
Kann mir da jemand weiterhelfen? Habe auch schon den externen Python-Interpreten zu Version 3.6.6, sowie 64-Bit -> 32 Bit Version gewechselt. Hat aber nichts geändert..

System-Infos
OS: Windows 10
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.4 (GitTag)
Build type: Release
Branch: releases/FreeCAD-0-18
Hash: 980bf9060e28555fecd9e3462f68ca74007b70f8
Python version: 3.6.6
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: German/Germany (de_DE)

Externer Python-Interpret
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32
Attachments
makeCube_gui.py
(3.71 KiB) Downloaded 14 times
Post Reply