1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
# Copyright (c) 2015 Ultimaker B.V.
# Uranium is released under the terms of the LGPLv3 or higher.
from UM.Scene.ToolHandle import ToolHandle
from UM.Mesh.MeshBuilder import MeshBuilder
from UM.Math.Vector import Vector
import math
## Provides the circular toolhandles for each axis for the rotate tool
class RotateToolHandle(ToolHandle):
def __init__(self, parent = None):
super().__init__(parent)
self._inner_radius = 40
self._outer_radius = 40.5
self._line_width = 0.5
self._active_inner_radius = 37
self._active_outer_radius = 44
self._active_line_width = 3
def buildMesh(self):
#SOLIDMESH
mb = MeshBuilder()
mb.addDonut(
inner_radius = self._inner_radius,
outer_radius = self._outer_radius,
width = self._line_width,
color = self._z_axis_color
)
mb.addDonut(
inner_radius = self._inner_radius,
outer_radius = self._outer_radius,
width = self._line_width,
axis = Vector.Unit_X,
angle = math.pi / 2,
color = self._y_axis_color
)
mb.addDonut(
inner_radius = self._inner_radius,
outer_radius = self._outer_radius,
width = self._line_width,
axis = Vector.Unit_Y,
angle = math.pi / 2,
color = self._x_axis_color
)
self.setSolidMesh(mb.build())
#SELECTIONMESH
mb = MeshBuilder()
mb.addDonut(
inner_radius = self._active_inner_radius,
outer_radius = self._active_outer_radius,
width = self._active_line_width,
color = ToolHandle.ZAxisSelectionColor
)
mb.addDonut(
inner_radius = self._active_inner_radius,
outer_radius = self._active_outer_radius,
width = self._active_line_width,
axis = Vector.Unit_X,
angle = math.pi / 2,
color = ToolHandle.YAxisSelectionColor
)
mb.addDonut(
inner_radius = self._active_inner_radius,
outer_radius = self._active_outer_radius,
width = self._active_line_width,
axis = Vector.Unit_Y,
angle = math.pi / 2,
color = ToolHandle.XAxisSelectionColor
)
self.setSelectionMesh(mb.build())
|