Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
310 commits
Select commit Hold shift + click to select a range
9080d9c
Prevent non printing meshes from affecting layer positions
fieldOfView Feb 17, 2018
e63e60f
Speed up slicing
fieldOfView Feb 17, 2018
01177cb
Disable tree support and some per model settings
fieldOfView Feb 17, 2018
cce1bd2
Increase belt offset range
fieldOfView Feb 17, 2018
3c53544
Add a cutting mesh to the bottom of objects touching the belt
fieldOfView Feb 18, 2018
d6b1aff
Add settings to enable adjustment mesh for walls touching the belt
fieldOfView Feb 19, 2018
dfa9bd3
Use setting values for belt layer speed & flow
fieldOfView Feb 19, 2018
4b3365d
Adjust belt wall flow for gantry angle
fieldOfView Feb 19, 2018
25afc0b
Print multiple copies from a single gcode file
fieldOfView Feb 19, 2018
6fd111d
Add SidebarSimple to plugin so it can be modified
fieldOfView Feb 20, 2018
aed8fb8
Merge branch '3.2' into bb-3.2
fieldOfView Feb 20, 2018
7cdfdda
Fix crash for non-blackbelt printers
fieldOfView Feb 22, 2018
bb3a617
Remove unused Loader
fieldOfView Feb 22, 2018
80a090a
Add nr of copies to simple mode
fieldOfView Feb 22, 2018
874794c
Move decorator and singleton classes to their own files
fieldOfView Feb 26, 2018
018b49c
Fix creating extruder messages for curaengine
fieldOfView Feb 26, 2018
10f6ce4
Fix missing import
fieldOfView Feb 27, 2018
40f468c
Update formula for belt offset
fieldOfView Feb 27, 2018
1393716
Restructure onEngineCreated
fieldOfView Feb 27, 2018
5675d98
Remove nozzle from layerview for slanted gantry printers
fieldOfView Feb 27, 2018
0a7277d
Disable usb printing (but keep octoprint)
fieldOfView Feb 27, 2018
17f1e0d
Copy extruder variant to global stack
fieldOfView Feb 28, 2018
51d1386
Round z_offset to sane precision
fieldOfView Feb 28, 2018
80af85a
Adjust default settings
fieldOfView Feb 28, 2018
d26644c
Fix loading default material and quality
fieldOfView Feb 28, 2018
3d1c191
Disable first layer options
fieldOfView Mar 1, 2018
b776353
Remove blackbelt_extruder and add new hotfix to select proper material
fieldOfView Mar 1, 2018
77675ab
Revert "Disable usb printing (but keep octoprint)"
fieldOfView Mar 12, 2018
a9e38c7
Fix crash when adding a blackbelt printer
fieldOfView Mar 12, 2018
68682a4
Adjust printing settings
fieldOfView Mar 12, 2018
105a62b
Change default set of visible settings
fieldOfView Mar 12, 2018
08fdcd1
Remove USB printing device, but try to keep firmware upgrade action
fieldOfView Mar 12, 2018
e4f05e4
Tweak settings for better inheritance
fieldOfView Mar 12, 2018
e623cfd
Disable update checker plugin (because it checks the wrong version)
fieldOfView Mar 13, 2018
7fd57a2
Tweak settings
fieldOfView Mar 16, 2018
8cf568d
Reset setting visibility on first start of 3.2.1
fieldOfView Mar 16, 2018
ba481da
Fix writing gcode for non-blackbelt printers
fieldOfView Mar 16, 2018
0ebcf78
Fix getting bed temperature from extruder stack
fieldOfView Mar 16, 2018
f1b6a42
Fix updating setting visibility on first run
fieldOfView Mar 18, 2018
86945e3
Reorder code
fieldOfView Mar 18, 2018
67972e1
Merge branch 'master' into bb-master
fieldOfView Mar 19, 2018
96780d0
Merge branch '3.3' into bb-3.3
fieldOfView Mar 26, 2018
2f04fe2
Add hardware_type to variants
fieldOfView Mar 26, 2018
c6be3fc
Update patches
fieldOfView Mar 26, 2018
faca4e0
Fix upgrade issues
fieldOfView Mar 26, 2018
f55361a
Merge branch '3.3' into bb-3.3
fieldOfView Mar 29, 2018
c275e3e
Update definition & variants
fieldOfView Mar 29, 2018
7c4e086
Revert to using compound variants
fieldOfView Mar 30, 2018
ceb6a02
Fix hotfixes
fieldOfView Mar 30, 2018
9525101
Update sidebar patches
fieldOfView Mar 30, 2018
66b2b75
Merge branch '3.3' into bb-3.3
fieldOfView May 22, 2018
dbddc3c
Patch MaterialManager to show only PLA, nGen and HT for blackbelt pri…
fieldOfView May 23, 2018
59a3476
Make MaterialManager patch less hardcoded
fieldOfView May 23, 2018
adcfbb4
Fix setting variant in the sidebar
fieldOfView May 23, 2018
da3136c
Fix fan control for blackbelt printers (primary and secondary)
fieldOfView May 23, 2018
ee9285b
Prevent a crash when profile is set to "unsupported"
fieldOfView May 28, 2018
4ea29a5
Fix moving Blackbelt category to the top
fieldOfView May 28, 2018
469163c
Add options to print a faux raft
fieldOfView May 28, 2018
1e0474c
Fix raft height and hide unused raft settings
fieldOfView May 28, 2018
47b1e98
Fix raft thickness & gap
fieldOfView May 28, 2018
6308a06
Fill raft
fieldOfView May 28, 2018
ef1dbb2
Don't adjust belt wall and print raft at the same time
fieldOfView May 28, 2018
86294aa
Add a mesh that cuts off the bottom of models if they extend under th…
fieldOfView May 30, 2018
963ca52
Merge branch '3.4' into bb-3.4
fieldOfView Jun 4, 2018
271121a
Update BuildVolumePatches for Cura 3.4
fieldOfView Jun 4, 2018
d448b8f
Update variant/quality version for Cura 3.4
fieldOfView Jun 4, 2018
fa1d5cd
Add comments about patches
fieldOfView Jun 4, 2018
6e3a02a
Update MaterialManagerPatches for Cura 3.4
fieldOfView Jun 4, 2018
f37cb4b
Update patched sidebar for Cura 3.4
fieldOfView Jun 4, 2018
eabb756
Fix a crash on startup
fieldOfView Jun 4, 2018
bab84ef
Fix "unable to slice" error
fieldOfView Jun 4, 2018
46d0e97
Create custom mesh for raft instead of reusing ConvexHullNode as is
fieldOfView Jun 4, 2018
52e037f
Cleanup code duplication
fieldOfView Jun 5, 2018
be5a846
Remove a QML error
fieldOfView Jun 5, 2018
e80154a
Merge branch '3.4' into bb-3.4
fieldOfView Jun 11, 2018
28eb900
Delay patching curaengine backend until it has loaded
fieldOfView Jun 11, 2018
de7d162
Add a blackbelt setting visibility preset
fieldOfView Jun 11, 2018
9a84fc4
Reimplement 28eb900b4ab850f7a18844ea3fedab1c24a9c554
fieldOfView Jun 11, 2018
a304041
Add global quality profile
fieldOfView Jun 11, 2018
93858d8
Add missing blackbelt visibilit profile file
fieldOfView Jun 11, 2018
00e4da9
Merge branch '3.4' into bb-3.4
fieldOfView Jun 26, 2018
252da32
Fix getting sending settings from extruder stack to CuraEngine
fieldOfView Jun 26, 2018
df0533a
Remove belt mesh generation
fieldOfView Jun 26, 2018
b018d92
Reimplement belt wall as postprocessing action
fieldOfView Jun 26, 2018
ba1b418
Select the current profile when showing the profiles page
fieldOfView Jun 26, 2018
1714233
Fix color of selected items in Profiles and Materials pages
fieldOfView Jun 26, 2018
43b0f8e
Remove inheritance warning for fan speed
fieldOfView Jun 26, 2018
8f5957e
Add a setting to change secondary fan speed
fieldOfView Jun 27, 2018
968d3a5
Use gantry angle and nozzle size as prefix for Blackbelt printers
fieldOfView Jun 27, 2018
c26bab2
Add material name to the prefix
fieldOfView Jun 27, 2018
a5a5b62
Add a BlackBelt theme
fieldOfView Jun 27, 2018
b9ae781
Merge branch '3.4' into bb-3.4
fieldOfView Jun 27, 2018
9ff7fe5
Improve code legibility
fieldOfView Jun 28, 2018
809b067
Add a settings summary to the top of the gcode
fieldOfView Jun 28, 2018
0a3f5bf
Fix firmware upload on Windows...
fieldOfView Jun 29, 2018
b600a77
Fix a bright line/gap between the viewport and sidebar due to rounding
fieldOfView Jun 26, 2018
df70646
Update settings
fieldOfView Jul 2, 2018
1b3f12c
Increase version number
fieldOfView Jul 2, 2018
13aa599
Improve material filtering
fieldOfView Jul 2, 2018
6cdd2e7
Create new material from preferred material instead of generic_pla
fieldOfView Jul 2, 2018
14d5259
Make sure configuration gets updated for BlackBelt specificness
fieldOfView Jul 3, 2018
883815a
Exclude long strings from settings overview in gcode
fieldOfView Jul 3, 2018
ae51a48
Remove dot from nozzle size in job prefix
fieldOfView Jul 3, 2018
6c86855
Fix setting default active visibility preset setting
fieldOfView Jul 4, 2018
d2cf0e1
Fix implementation of belt wall
fieldOfView Jul 4, 2018
b967b42
Fix global settings in profiles
fieldOfView Jul 4, 2018
3b7f97e
Don't adjust belt layer speed if original speed is lower
fieldOfView Jul 5, 2018
cb5bccb
Make sure extruder stack has proper quality profile selected
fieldOfView Jul 5, 2018
57da09e
Fix setting values from material xml profiles
fieldOfView Jul 5, 2018
04ebe58
Enable Belt Layer in combination with Raft
fieldOfView Jul 5, 2018
2d2e2f9
Tweak theme
fieldOfView Jul 5, 2018
e1be4e6
Fix a theming issue
fieldOfView Jul 8, 2018
5616b59
Implement layer height slider for BlackBelt printers
fieldOfView Jul 8, 2018
fcf3e31
Fix layer height slider for BlackBelt printers
fieldOfView Jul 8, 2018
c518225
Fix layout issues
fieldOfView Jul 8, 2018
9211521
Add BlackBelt changes to ChangeLog
fieldOfView Jul 9, 2018
b9ddf87
Move settings that apply to all belt-printers to own definition
fieldOfView Jul 9, 2018
81895fb
Move profile into printer definition
fieldOfView Jul 9, 2018
3912177
Resolve bed temperature properly from extruder value
fieldOfView Jul 9, 2018
77de192
Tweak tooltip shade
fieldOfView Jul 9, 2018
0638915
Tweak Belt Air Gap
fieldOfView Jul 9, 2018
03f37a5
Fix formatting strings in setting summary
fieldOfView Jul 9, 2018
e23ddc7
Update README.md
fieldOfView Jul 10, 2018
4d1149e
Improve start gcode
fieldOfView Jul 10, 2018
c2fb15d
Adjust LayerView data to show Belt Wall
fieldOfView Jul 10, 2018
f152750
Cleanup
fieldOfView Jul 10, 2018
22ad1bc
Fix raft being printed twice
fieldOfView Jul 10, 2018
b90e93b
Show faux-raft as helper in LayerView
fieldOfView Jul 10, 2018
dfa47c3
Merge branch '3.4' into bb-3.4
fieldOfView Jul 10, 2018
c41c421
Update ChangeLog.txt for 3.4.1
fieldOfView Jul 10, 2018
7704e8e
Profile and branding tweaks
fieldOfView Jul 10, 2018
31ee3e9
Add Raft Extra Margin setting
fieldOfView Jul 10, 2018
fedffe2
Fix holes in belt wall visualisation
fieldOfView Jul 10, 2018
a9c6fb3
Adjust layerdata position for raft
fieldOfView Jul 10, 2018
60d5449
Enforce focus on save button to ensure edits to jobname happen before…
fieldOfView Jul 11, 2018
383fc02
Add 1.0 and 0.25 nozzles
fieldOfView Jul 11, 2018
1e72aa3
Fix simple mode layer height slider for 0.25mm nozzles
fieldOfView Jul 11, 2018
46d459f
Tweak Retraction Extra Prime Amount
fieldOfView Jul 11, 2018
62c9815
Fix feedrate in belt wall visualisation
fieldOfView Jul 11, 2018
c319594
Tweak default Raft Air Gap
fieldOfView Jul 12, 2018
4565319
Prevent arrange after load for blackbelt printers
fieldOfView Jul 15, 2018
7bbeda4
Place objects in a line instead of arranging
fieldOfView Jul 15, 2018
375a96c
Patch Arrange All for Blackbelt printers
fieldOfView Jul 15, 2018
31a5b57
Reenable usb outputdevice, but disable manual control & printing
fieldOfView Jul 16, 2018
0fcc767
Fix flashing "default" firmware
fieldOfView Jul 16, 2018
9edd384
Add blackbelt firmware (bb-1.1.8 branch)
fieldOfView Jul 16, 2018
23b83dc
Update changelog
fieldOfView Jul 16, 2018
25cf9dd
Tweak profile
fieldOfView Jul 17, 2018
ac13dd8
Fix material flow
fieldOfView Jul 21, 2018
2d4e6c7
Fix adjusted belt wall preview for support meshes
fieldOfView Jul 21, 2018
7cbadf0
Add CuraVersion to force version for bb cura
fieldOfView Jul 22, 2018
89c88ea
Update BlackBeltPlugin version
fieldOfView Jul 22, 2018
e0e1623
Add 3.4.2 changes to changelog
fieldOfView Jul 24, 2018
57af2a0
Change BLACKBELT 3D branding
fieldOfView Jul 31, 2018
fd39541
Fix belt flow compensation bug
fieldOfView Aug 17, 2018
169d67d
Purge extruder off the belt
fieldOfView Aug 17, 2018
68e950c
Turn off fans after printing completes
fieldOfView Aug 22, 2018
4d1fce1
Merge branch '3.5' into bb-3.5
fieldOfView Sep 12, 2018
b033bef
Remove deprecated calls to Preferences.getInstance()
fieldOfView Sep 12, 2018
6b4b5f2
Increase API version
fieldOfView Sep 12, 2018
fb82610
Update MaterialManager patch
fieldOfView Sep 12, 2018
31e7171
Add blackbelt extruder and update setting_version
fieldOfView Sep 12, 2018
1b01e0a
Update Cura version and SDK version
fieldOfView Sep 12, 2018
4e8b5d7
Merge branch '3.5' into bb-3.5
fieldOfView Sep 14, 2018
b242d57
Merge branch '3.5' into bb-3.5
fieldOfView Sep 18, 2018
197267d
Update patches for Cura 3.5
fieldOfView Sep 18, 2018
dd3b144
Update patched StartSliceJob for 3.5
fieldOfView Sep 18, 2018
262d8e9
Reenable "generate support" for beltprinters...
fieldOfView Sep 19, 2018
42a0dc5
Create support meshes on the fly if needed
fieldOfView Sep 19, 2018
905b61d
Fix select model on load
fieldOfView Sep 20, 2018
321a56c
Allow setting the support angle
fieldOfView Sep 20, 2018
b0845ac
Fix sending extruder stack settings to CuraEngine
fieldOfView Sep 20, 2018
ead37ab
Add a generic beltprinter definition
fieldOfView Sep 20, 2018
b2f0317
Add missing blackbelt extruder
fieldOfView Sep 20, 2018
b48143e
Make support meshes adapt to gantry angle
fieldOfView Sep 20, 2018
353f2db
Fix recommended sidebar layout issue
fieldOfView Sep 20, 2018
a4f5834
Allow setting a minimal height for faces to be supported
fieldOfView Sep 20, 2018
528cbb8
Add a setting to favor placement of support structures in front of th…
fieldOfView Sep 20, 2018
4969909
Filter upwards facing faces from faces needing support
fieldOfView Sep 20, 2018
4e5de21
Refactor for ease of testing and debugging
fieldOfView Sep 21, 2018
57c0cf0
Add a blackbelt-specific version of multiplying models
fieldOfView Sep 23, 2018
4a6e7b2
Fix showing belt wall visualization for 1.0 nozzle
fieldOfView Sep 23, 2018
c333c09
Fix an infinite loop when loading meshes that don't fit the build volume
fieldOfView Sep 24, 2018
77b0292
Fix a crash when switching from non-blackbelt to blackbelt printer
fieldOfView Sep 24, 2018
eaa74ac
Disable adaptive layer height, reenable support interfaces
fieldOfView Sep 25, 2018
f7476da
Update default print settings
fieldOfView Sep 25, 2018
2a4fd59
Merge branch '3.5' into bb-3.5
fieldOfView Sep 28, 2018
b2c9231
Make MYPY happy
fieldOfView Sep 28, 2018
6001563
Always enable support settings
fieldOfView Oct 1, 2018
85a5add
Don't skip empty first layers in the layer view
fieldOfView Oct 8, 2018
e5eef67
Fix setting summary for settings that are not settable per extruder, …
fieldOfView Oct 8, 2018
7020a54
Fix default extruder in start/end gcode
fieldOfView Oct 8, 2018
a70bed4
Remove unused variable
fieldOfView Oct 8, 2018
0752c63
Merge branch '3.5' into bb-3.5
fieldOfView Oct 9, 2018
bc93d81
Speed up slicing by removing empty layers before slicing
fieldOfView Oct 11, 2018
5734c07
Add a setting to filter out small support "towers"
fieldOfView Oct 15, 2018
7210114
Implement "Support Mesh Dropdown" for support meshes only
fieldOfView Oct 15, 2018
840469c
Merge branch '3.5' into bb-3.5
fieldOfView Oct 16, 2018
8843256
Send extruder settings ordered by extruder position
fieldOfView Oct 16, 2018
c49e9d6
Update firmware to bb-1.1.9
fieldOfView Oct 18, 2018
87ded4b
Add major Blackbelt changes
fieldOfView Oct 18, 2018
83772bd
Update version
fieldOfView Oct 18, 2018
395f0e0
Update firmware version
fieldOfView Oct 23, 2018
a613dc5
Adjust default settings
fieldOfView Oct 23, 2018
846cb57
Remove QML error when switching setting visibility profiles
fieldOfView Oct 23, 2018
ede065a
Merge branch '3.6' into bb-3.6
fieldOfView Nov 13, 2018
39d9526
Update version
fieldOfView Nov 13, 2018
2c9ad64
Update patches for 3.6
fieldOfView Nov 13, 2018
bd1fb42
Enable gyroid infill
fieldOfView Nov 13, 2018
28f5a59
Patch gcode reader flavor parser to display slanted gantry gcode prop…
fieldOfView Nov 13, 2018
aa0a4aa
Add a tolerance for detecting belt walls
fieldOfView Nov 14, 2018
b6b7ec8
Fix typing issues
fieldOfView Nov 15, 2018
b7f10fb
Fix slicing with raft meshes enabled
fieldOfView Nov 15, 2018
a999048
Update changelog
fieldOfView Nov 21, 2018
d2e5ba5
Fix updating job prefix when changing variant/material
fieldOfView Nov 21, 2018
5736be9
Add default plugins to bundled packages
fieldOfView Nov 28, 2018
054dd6b
Update firmware
fieldOfView Nov 30, 2018
6522248
Adjust default settings
fieldOfView Nov 30, 2018
cd6af8e
Formatting
fieldOfView Dec 7, 2018
7d3467d
Add default material spool weight and cost to cura preferences
fieldOfView Dec 11, 2018
4ec8c7e
Fix crash when creating a new material
fieldOfView Dec 12, 2018
e0ba8e7
Adjust settings
fieldOfView Dec 12, 2018
16df091
Derive jobname from material name instead of material type
fieldOfView Dec 12, 2018
3826eec
Remove BETA
fieldOfView Dec 12, 2018
31b29cb
Add pricing info for Colorfabb PLA Economy
fieldOfView Dec 12, 2018
d535105
Remove finalize bits (M140 S0 etc) before end gcode
fieldOfView Dec 13, 2018
d8e4483
Make blackbelt_belt_wall_enabled settable in material
fieldOfView Dec 13, 2018
30f24bb
Tweak profiles for bb-3.6
fieldOfView Dec 13, 2018
fc3b602
Import files from BlackBelt for 3.6.2
fieldOfView Oct 23, 2020
3ad4d95
Set version to 3.6.2
fieldOfView Oct 23, 2020
6e9e570
Make blackbeltvd inherit from blackbelt definition
fieldOfView Oct 29, 2020
60a8d5c
Move repetitions setting to blackbelt printer definition
fieldOfView Oct 29, 2020
fc4aa98
Hide podoprinter definition
fieldOfView Oct 29, 2020
48a48ff
Add BLACKBELT Cura.ico
fieldOfView Oct 29, 2020
6d12124
Tweak profiles
fieldOfView Nov 19, 2020
8fef07a
Tweak profiles
fieldOfView Dec 8, 2020
ebd3aaf
Update firmware files
fieldOfView Dec 8, 2020
23de14d
Update theme
fieldOfView Dec 9, 2020
9a5f4b3
Add message when printer uses non-default start/end gcode
fieldOfView Dec 9, 2020
4e18b19
Remove coasting volume warnings
fieldOfView Dec 15, 2020
9d38d6e
Merge remote-tracking branch 'bb/bb-3.6' into CURA-12568_belt_proto
rburema Jun 10, 2025
56e0dd8
Early investigation on wether we can/want to reurrect limited belt-pr…
rburema Jun 11, 2025
390a1ed
Investigate bel-slicing: Add after-processing patches to existing code.
rburema Jun 18, 2025
7b4db26
Belt-prototype: Throw everything away but the minimum(?) patches.
rburema Jun 18, 2025
b79b95c
empty-out CuraVersion
rburema Jun 18, 2025
6c6c357
del CuraVersion
rburema Jun 18, 2025
bd731b3
restore .gitignore
rburema Jun 18, 2025
aaef8ac
Make it build and delete some files not needed for purpose.
rburema Jun 18, 2025
31f7733
Apply printer-linter format
rburema Jun 18, 2025
0209067
Fix angle to 28 degrees for now.
rburema Jun 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added BLACKBELT Cura.ico
Binary file not shown.
2 changes: 1 addition & 1 deletion conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -582,7 +582,7 @@ def _make_internal_distinct(self):
continue
with theme_path.open("r") as theme_file:
theme = json.load(theme_file)
if theme["colors"]:
if "colors" in theme:
theme["colors"]["main_window_header_background"] = test_colors[biweekly_day]
with theme_path.open("w") as theme_file:
json.dump(theme, theme_file)
Expand Down
75 changes: 75 additions & 0 deletions plugins/CuraEngineBackend/BlackBeltDecorator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Copyright (c) 2018 fieldOfView
# The Blackbelt plugin is released under the terms of the LGPLv3 or higher.

from UM.Scene.SceneNodeDecorator import SceneNodeDecorator
from UM.Application import Application

from UM.Math.Matrix import Matrix

import math

## Decorator for easy access to gantry angle and transform matrix.
class BlackBeltDecorator(SceneNodeDecorator):
def __init__(self):
super().__init__()
self._gantry_angle = 0
self._transform_matrix = Matrix()
self._scene_front_offset = 0

@staticmethod
def calculateTransformData() -> Matrix:
global_stack = Application.getInstance().getGlobalContainerStack()

#self._scene_front_offset = 0
#gantry_angle = 0.7 #global_stack.getProperty("blackbelt_gantry_angle", "value")
#if not gantry_angle:
#self._gantry_angle = 0
#self._transform_matrix = Matrix()
# return Matrix()
gantry_angle = 0.48869219 #math.radians(float(gantry_angle))

machine_depth = global_stack.getProperty("machine_depth", "value")

matrix = Matrix()
matrix.setColumn(1, [0, 1 / math.tan(gantry_angle), 1, (machine_depth / 2) * (1 - math.cos(gantry_angle))])
matrix.setColumn(2, [0, - 1 / math.sin(gantry_angle), 0, machine_depth / 2])
#self._transform_matrix = matrix
return matrix

# The above magic transform matrix is composed as follows:
"""
import numpy
matrix_data = numpy.identity(4)
matrix_data[2, 2] = 1/math.sin(self._gantry_angle) # scale Z
matrix_data[1, 2] = -1/math.tan(self._gantry_angle) # shear ZY
matrix = Matrix(matrix_data)

matrix_data = numpy.identity(4)
# use front buildvolume face instead of bottom face
matrix_data[1, 1] = 0
matrix_data[1, 2] = 1
matrix_data[2, 1] = -1
matrix_data[2, 2] = 0
axes_matrix = Matrix(matrix_data)

matrix.multiply(axes_matrix)

# bottom face has origin at the center, front face has origin at one side
matrix.translate(Vector(0, - math.sin(self._gantry_angle) * machine_depth / 2, 0))
# make sure objects are not transformed to be below the buildplate
matrix.translate(Vector(0, 0, machine_depth / 2))

self._transform_matrix = matrix
"""

def getGantryAngle(self):
return self._gantry_angle

def getTransformMatrix(self):
return self._transform_matrix

def setSceneFrontOffset(self, front_offset):
self._scene_front_offset = front_offset

def getSceneFrontOffset(self):
return self._scene_front_offset
1 change: 1 addition & 0 deletions plugins/CuraEngineBackend/CuraEngineBackend.py
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,7 @@ def slice(self) -> None:
self.determineAutoSlicing() # Switch timer on or off if appropriate

slice_message = self._socket.createMessage("cura.proto.Slice")

self._start_slice_job = StartSliceJob(slice_message)
self._start_slice_job_build_plate = build_plate_to_be_sliced
self._start_slice_job.setBuildPlate(self._start_slice_job_build_plate)
Expand Down
73 changes: 73 additions & 0 deletions plugins/CuraEngineBackend/ProcessSlicedLayersJob.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import sys

from UM.Job import Job
from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
from UM.Scene.SceneNode import SceneNode
from UM.Application import Application
from UM.Mesh.MeshData import MeshData
from UM.View.GL.OpenGLContext import OpenGLContext
Expand All @@ -14,6 +16,7 @@
from UM.Logger import Logger

from UM.Math.Vector import Vector
from UM.Math.Matrix import Matrix

from cura.Scene.BuildPlateDecorator import BuildPlateDecorator
from cura.Scene.CuraSceneNode import CuraSceneNode
Expand All @@ -27,6 +30,7 @@
from cura.Machines.Models.ExtrudersModel import ExtrudersModel
catalog = i18nCatalog("cura")

EPSILON = 1e-5 # used for float comparison

def colorCodeToRGBA(color_code):
"""Return a 4-tuple with floats 0-1 representing the html color code
Expand Down Expand Up @@ -115,6 +119,11 @@ def run(self):
if layer.id < 0:
negative_layers += 1

### START PATCH
global_container_stack = Application.getInstance().getGlobalContainerStack()
half_outer_wall_thickness = global_container_stack.getProperty("wall_line_width_0", "value") / 2
### END PATCH

current_layer = 0

for layer in self._layers:
Expand Down Expand Up @@ -159,6 +168,58 @@ def run(self):
line_feedrates = numpy.fromstring(polygon.line_feedrate, dtype = "f4") # Convert bytearray to numpy array
line_feedrates = line_feedrates.reshape((-1,1)) # We get a linear list of pairs that make up the points, so make numpy interpret them correctly.

### START PATCH
# Adjust layer data to show Raft line type, if it is enabled
if global_container_stack.getProperty("blackbelt_raft", "value"):
raft_thickness = global_container_stack.getProperty("blackbelt_raft_thickness", "value")

extrusion_started = False
for index, segment_type in enumerate(line_types):
if points[index + 1][1] <= half_outer_wall_thickness + raft_thickness:
if segment_type in [LayerPolygon.LayerPolygon.Inset0Type, LayerPolygon.LayerPolygon.InsetXType]:
line_types[index] = LayerPolygon.LayerPolygon.SkirtType
extrusion_started = True
elif extrusion_started:
break

# Adjust layer data to show Belt Wall feed rate, if it is enabled
if global_container_stack.getProperty("blackbelt_belt_wall_enabled", "value"):
belt_wall_feedrate = global_container_stack.getProperty("blackbelt_belt_wall_speed", "value")

belt_wall_indices = []
for index,point in enumerate(points):
if point[1] <= half_outer_wall_thickness + EPSILON:
if last_point_hit_wall and line_feedrates[index - 1] > belt_wall_feedrate:
belt_wall_indices.append(index)
last_point_hit_wall = True
else:
last_point_hit_wall = False

dimensionality = points.shape[1]
edited_points = points.flatten()
line_types = line_types.flatten()
line_widths = line_widths.flatten()
line_thicknesses = line_thicknesses.flatten()
line_feedrates = line_feedrates.flatten()
for index in reversed(belt_wall_indices):
edited_points = numpy.insert(edited_points, dimensionality * (index), numpy.append(points[index - 1], points[index]))
line_types = numpy.insert(line_types, index, [line_types[index - 1]] * 2)
line_widths = numpy.insert(line_widths, index, [line_widths[index - 1]] * 2)
line_thicknesses = numpy.insert(line_thicknesses, index, [line_thicknesses[index - 1]] * 2)
line_feedrates = numpy.insert(line_feedrates, index - 1, [belt_wall_feedrate] * 2)

# Fix shape of adjusted data
if polygon.point_type == 0:
points = edited_points.reshape((-1,2)) # We get a linear list of pairs that make up the points, so make numpy interpret them correctly.
else:
points = edited_points.reshape((-1,3))

line_types = line_types.reshape((-1,1))
line_widths = line_widths.reshape((-1,1))
line_thicknesses = line_thicknesses.reshape((-1,1))
line_feedrates = line_feedrates.reshape((-1,1))
### END PATCH

# Create a new 3D-array, copy the 2D points over and insert the right height.
# This uses manual array creation + copy rather than numpy.insert since this is
# faster.
Expand Down Expand Up @@ -242,6 +303,18 @@ def run(self):
if not settings.getProperty("machine_center_is_zero", "value"):
new_node.setPosition(Vector(-settings.getProperty("machine_width", "value") / 2, 0.0, settings.getProperty("machine_depth", "value") / 2))

### START PATCH
transform = self._scene.getRoot().callDecoration("getTransformMatrix")
if transform and transform != Matrix():
transform_matrix = new_node.getLocalTransformation().preMultiply(transform.getInverse())
new_node.setTransformation(transform_matrix)
front_offset = self._scene.getRoot().callDecoration("getSceneFrontOffset")
if global_container_stack.getProperty("blackbelt_raft", "value"):
front_offset = front_offset - global_container_stack.getProperty("blackbelt_raft_margin", "value") \
- global_container_stack.getProperty("blackbelt_raft_thickness", "value")
new_node.translate(Vector(0, 0, front_offset), SceneNode.TransformSpace.World)
### END PATCH

if self._progress_message:
self._progress_message.setProgress(100)

Expand Down
Loading
Loading