Macro 3d Printer Slicer

From FreeCAD Documentation
Jump to: navigation, search
This page is a translated version of the page Macro 3d Printer Slicer and the translation is 100% complete.

Other languages:
čeština • ‎Deutsch • ‎English • ‎français • ‎italiano

Macro 3d Printer Slicer.png Macro_3d_Printer_Slicer

Beschreibung
Export in Slicing-Software für 3D-Drucker. Exportiert die STL-Datei in das gleiche Verzeichnis wie die ursprüngliche Designdatei und öffnet sie dann in Slicing-Software.

Versionsmakro : 0.1
Datum der letzten Änderung : 2013-10-10
FreeCAD version : All
Herunterladen : ToolBar Icon
Autor
cae2100
Herunterladen
ToolBar Icon
Links
Macro-Version
0.1
Datum der letzten Änderung
2013-10-10
FreeCAD-Version(s)
All
Standardverknüpfung
None
Siehe auch
None


Beschreibung

Wenn dieser Code ausgeführt wird, wird der derzeit geöffnete Entwurf in eine STL-Datei exportiert und in der von Ihnen verwendeten Slicing-Software geöffnet. Dieses Beispiel ist für KISSlicer, kann aber zur Verwendung geändert werden Slic3r, Cura, oder eine andere 3D-Druckersoftware. Sie kann auch leicht modifiziert werden, um die CAM-Software für CNC-Maschinen zu öffnen.

Es wird am besten durch Erstellen eines Links zu dem Makro in der Symbolleiste verwendet. Wenn Sie zum Schneiden des Objekts bereit sind, klicken Sie einfach darauf. Das Objekt wird in FreeCAD auf dem Bildschirm angezeigt und erscheint auf der Benutzeroberfläche der Slicing-Software . Außerdem wird eine STL-Datei mit demselben Dateinamen wie die Designdatei in demselben Verzeichnis wie die Designdatei als Sicherung erstellt.

Macro 3d Printer Slicer 00.png

Skript

Die SLICER-Variable kann in eine beliebige Slicing-Software Ihrer Wahl geändert werden. Vergewissern Sie sich, dass Sie die Variable gesetzt haben, bevor Sie sie ausführen, oder es wird ein Fehler im Skript angezeigt.

ToolBar Icon Macro 3d Printer Slicer.png

Macro_3d_Printer_Slicer.py

import FreeCAD
import Mesh
import sys
import math
import os
import subprocess
# some fuctions
def getPlacement(quat,vect,obj):
  if quat[3] > -1  and quat[3] < 1:
    delta = math.acos(quat[3])*2.0
    scale = math.sin(delta/2)
    rx = quat[0]/scale
    ry = quat[1]/scale
    rz = quat[2]/scale
  else:
    delta = 0
    rx = 0
    ry = 0
    rz = 1
  info0 = "translation "+str(vect.x)+" "+str(vect.y)+" "+str(vect.z)
  info1 = "rotation "+str(rx)+" "+str(ry)+" "+str(rz)+" "+str(delta)
  return info0+" "+info1
# some definitions
placement = App.Placement(App.Vector(0,0,0),App.Rotation(0,0,0,1))
# user need to set this directory where slicing software is located
OutDir = FreeCAD.ActiveDocument.FileName.replace(FreeCAD.ActiveDocument.Label + ".fcstd", "")
visible_objs = []
SLICER = "/kisslicer location/"                          # Put your Slicer program location here
os.chdir(SLICER)
# Get Objects in document
doc = App.ActiveDocument
objs = doc.Objects
# hide all
for obj in objs:
   if obj.ViewObject.isVisible():
      visible_objs.append(obj)
for obj in visible_objs:
  # get volume
  volume = obj.Shape.Volume
  # get Rotation and translation of volume
  quat = obj.Placement.Rotation.Q
  vect = obj.Placement.Base
  pinfo = getPlacement(quat,vect,obj)
  # reset placement, export it and set at original placement
  oldPlacement = obj.Placement
  obj.Placement = placement
  obj.Placement = oldPlacement   
stlFile = OutDir+str(doc.Label)+".stl"
Mesh.export(visible_objs,stlFile)
subprocess.Popen([SLICER + "KISSlicer", stlFile])

Credits

Dank an Wmayer für seine Hilfe beim Schreiben dieses Skripts.
Ursprüngliches Forumsthema: http://forum.freecadweb.org/viewtopic.php?f=10&t=4686