Macro 3d Printer Slicer Individual Parts/de

3D-Drucker-Slicer Einzelteile

Beschreibung
In eine Slicing-Software für 3D-Drucker exportieren, basierend auf einem ähnlichen Makro von cae2100. Exportiert eine einzelne STL-Datei für jedes sichtbare Teil in dasselbe Verzeichnis wie die ursprüngliche Designdatei und öffnet sie dann in der Slicing-Software.
Wenn dieser Code ausgeführt wird, exportiert er das aktuell geöffnete Design in mehrere STL-Dateien, die nach den Bezeichnungen der Teile benannt sind, und öffnet sie in der von Ihnen verwendeten Slicing-Software. Das Makro sucht nach „Cura” im Pfad, aber es kann jede andere Slicing-Software hinzufügt werden, indem die Zeichenfolge im Makro geändert wird.

Versionsmakro : 1.1
Datum der letzten Änderung : 2020-10-30
FreeCAD version : Alle
Herunterladen : Werkzeugleisten-Symbol
Autor: WayofWood
Autor
WayofWood
Herunterladen
Werkzeugleisten-Symbol
Links
Macro-Version
1.1
Datum der letzten Änderung
2020-10-30
FreeCAD-Version(s)
Alle
Standardverknüpfung
None
Siehe auch
Makro 3D-Drucker-Slicer

Beschreibung

Wenn dieser Code ausgeführt wird, exportiert er die sichtbaren Körper auf der obersten Ebene (Körper, die tiefer in der Baumstruktur liegen, werden ignoriert) des aktuell geöffneten Entwurfs in einzelne STL-Dateien und öffnet diese in der verwendeten Slicing-Software. Dieses Makro sucht standardmäßig nach Cura, durch Ändern der Variable SLICERAPP im Quellcode kann ein beliebiger anderen Slicer ausgewählt werden.

Am besten erstellt man einen Link zum Makro in der Symbolleiste. Zum Schneiden des Objekts, einfach darauf klicken, und die Objekte, wie sie in FreeCAD auf dem Bildschirm angezeigt werden, erscheinen in der Benutzeroberfläche der Slicer-Software und sind bereit zum Slicen. Außerdem werden mehrere STL-Dateien mit dem gleichen Dateinamen wie die Konstruktionsdatei und der Teilebezeichnung im gleichen Verzeichnis wie die Konstruktionsdatei erstellt.

Skript

Die Variable SLICERAPP kann auf jede beliebige Slicing-Software der Wahl geändert werden. Wenn ein bestimmtes Objekt nicht exportiert wird, muss möglicherweise der entsprechende Typ zum doexport-Array hinzufügt werden.

Werkzeugleisten-Symbol

Macro_3d_Printer_Slicer_Individual_Parts.py

import FreeCAD
import Mesh
import sys
import math
import os
import subprocess

SLICERAPP= "cura"		 			# Put your Slicer program here

# 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(".FCStd", "--")
visible_objs = []
# Get Objects in document
doc = App.ActiveDocument
objs = doc.Objects
stlFile = ""
stlFiles = [ SLICERAPP ]
# hide all
for obj in objs:
   print(obj.Label + "//" + obj.TypeId)
   print(len(obj.InList))
   if obj.ViewObject.isVisible() and hasattr(obj, 'Shape') and (len(obj.InList) <= 1):
      visible_objs.append(obj)
for obj in visible_objs:
  stlFile = OutDir+str(obj.Label)+".stl"
  Mesh.export([obj],stlFile)
  stlFiles.append(stlFile)
  print ("Exporting " + stlFile + "\n")
print ("Calling subprocess: " + str(stlFiles)+"\n")
subprocess.Popen(stlFiles)

Danksagung

Dank an cae2100 für die Entwicklung des originalen Makro-Codes - ebenfalls hier verfügbar.
Dank an Wmayer für seine Hilfe beim Schreiben dieses Skripts.
Originaler Foren-Beitrag: https://forum.freecad.org/viewtopic.php?f=10&t=4686