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:
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_())
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