Макро 3D-принтер слайсер
| Description |
|---|
| Экспорт в слайсинг-программу для 3D-принтеров. Экспортирует STL-файл в ту же папку, что и исходный файл разработки, а затем открывает его в слайсинг-программе. Этот код, при запуске, экспортирует текущую открытую разработку в STL-файл и открывает его в слайсинг-программе, которую вы используете. Этот пример для KISSlicer, но его можно изменить для использования Slic3r, Cura, или любой другой программой для 3D-печати. Его также можно слегка модифицировать, чтобы открывать CAM-программы для станков с ЧПУ. Macro version: 1.0 Last modified: 2013-10-10 FreeCAD version: All Download: ToolBar Icon Author: cae2100 |
| Author |
| cae2100 |
| Download |
| ToolBar Icon |
| Links |
| Macros recipes How to install macros |
| Macro Version |
| 1.0 |
| Date last modified |
| 2013-10-10 |
| FreeCAD Version(s) |
| All |
| Default shortcut |
| None |
| See also |
| Macro 3d Printer Slicer Individual Parts |
Описание
Этот код при запуске экспортирует текущую открытую разработку в STL-файл и откроет его в слайсинговом софте, который вы используете. Этот пример предназначен для KISSlicer, но его можно изменить для использования в Slic3r, Cura или любой другой программе для 3D-печати. Его также можно немного изменить для открытия CAM-программы для ЧПУ станков.
Лучше всего использовать его, создав ссылку на макрос на панели инструментов, и когда вы будете готовы нарезать объект, просто нажмите на неё, и ваш объект, как он отображается на экране в FreeCAD, появится в интерфейсе вашей слайсинг-программы, готовый к нарезке. Также будет создан STL-файл с тем же именем, что и файл разработки, в той же папке, что и файл разработки, в качестве резервной копии.
Скрипт
Переменную SLICER можно изменить на любое слайсинговое ПО на ваш выбор, просто убедитесь, что вы установили его перед запуском, иначе скрипт выдаст ошибку.
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])
Благодарность
Благодарим Wmayer за помощь в написании этого скрипта.
Оригинальная тема на форуме: https://forum.freecad.org/viewtopic.php?f=10&t=4686
