Jump to content

Макро 3D-принтер слайсер

From FreeCAD Documentation
Revision as of 08:00, 11 June 2026 by 79.140.31.228 (talk) (Created page with "== Благодарность == Благодарим [https://forum.freecad.org/viewtopic.php?f=10&t=4686 Wmayer] за помощь в написании этого скрипта.<br /> Оригинальная тема на форуме: https://forum.freecad.org/viewtopic.php?f=10&t=4686")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Macro_3d_Printer_Slicer

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
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 можно изменить на любое слайсинговое ПО на ваш выбор, просто убедитесь, что вы установили его перед запуском, иначе скрипт выдаст ошибку.

ToolBar Icon

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