Macro 3d Printer Slicer

From FreeCAD Documentation
Jump to navigation Jump to search
This page is a translated version of the page Macro 3d Printer Slicer and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎français • ‎italiano • ‎čeština

Macro 3d Printer Slicer.png Macro_3d_Printer_Slicer

Description
Exporter le projet dans un logiciel de tranchage pour utilisation dans une imprimantes 3D. Exporte le fichier stl dans le même répertoire que fichier original, puis l'ouvre dans le logiciel de tranchage.

Version macro : 1.0
Date dernière modification : 2013-10-10
Version FreeCAD : All
Téléchargement : ToolBar Icon
Auteur
cae2100
Téléchargement
ToolBar Icon
Liens
Version Macro
1.0
Dernière modification
2013-10-10
Version(s) FreeCAD
All
Raccourci clavier
None
Voir aussi
None


Description

Copiez le code suivant, lorsqu'il est exécuté, il exporte le projet en fichier .STL pour l'ouvrir dans le logiciel de découpage en tranches que vous utilisez. Cet exemple est écrit pour le logiciel KISSlicer, mais peut être modifié pour être utilisé avec Slic3r, Cura ou tout autre logiciel pour imprimante 3d. Il peut également être légèrement modifié pour être ouvert dans un logiciel de FAO pour machines CNC.

Il est préférable de créer un lien dans la barre d'outils qui pointe vers la macro, quand vous êtes prêt à trancher l'objet, cliquez simplement sur le bouton et votre objet sera affiché sur l'interface de votre logiciel de tranchage, tel qu'il apparaît dans l'écran de FreeCAD et prêt à être tranché. Il créera également un fichier .STL avec le même nom et dans le même répertoire que le fichier original.

Macro 3d Printer Slicer 00.png

Script

Le script peut être modifiés pour être utilisé avec n'importe quel logiciel de tranchage de votre choix, assurez-vous juste de modifier le script avant de l'exécuter, ou une erreur d'exécution de script sera signalée.

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

Merci à Wmayer pour son aide dans la rédaction de ce script.