Descrizione |
---|
Esporta verso il software slicer per stampanti 3D. Esporta il file stl nella stessa directory del file originale del disegno, poi lo apre con il software di analisi. Versione macro: 1.0 Ultima modifica: 2013-10-10 Versione FreeCAD: All Download: ToolBar Icon Autore: cae2100 |
Autore |
cae2100 |
Download |
ToolBar Icon |
Link |
Raccolta di macro Come installare le macro Personalizzare la toolbar |
Versione macro |
1.0 |
Data ultima modifica |
2013-10-10 |
Versioni di FreeCAD |
All |
Scorciatoia |
Nessuna |
Vedere anche |
Macro 3d Printer Slicer Individual Parts |
Questo codice esporta il progetto attivo in un file STL, e lo apre con il software di analisi preferito. Questo esempio è adatto a KISSlicer, ma può essere modificato e utilizzato con Slic3r, Cura, o qualsiasi altro software per stampanti 3d. Può anche essere leggermente modificato per essere aperto dai software CAM per macchine CNC (a controllo numerico).
È meglio creare prima un collegamento nella barra degli strumenti che punti alla macro poi, quando si è pronti per analizzare l'oggetto, fare clic su di esso per far apparire l'oggetto nell'interfaccia del software di analisi, così come appare nello schermo di FreeCAD e pronto per essere analizzato. Inoltre, è possibile creare un file STL con lo stesso nome del file del progetto e nella stessa directory del file originale, come backup.
La variabile SLICER può essere cambiata a piacere per adattare il codice a qualsiasi software di analisi, basta accertarsi di impostarla, prima di eseguire lo script altrimenti si riceve un messaggio di errore.
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])
Grazie a Wmayer per il suo aiuto nella stesura di questo script.
Discussione nel forum : https://forum.freecadweb.org/viewtopic.php?f=10&t=4686