molde 0.1.3__py3-none-any.whl → 0.1.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. molde/__init__.py +12 -6
  2. molde/__main__.py +74 -74
  3. molde/actors/__init__.py +5 -5
  4. molde/actors/common_symbols_actor.py +164 -164
  5. molde/actors/ghost_actor.py +12 -12
  6. molde/actors/lines_actor.py +31 -31
  7. molde/actors/round_points_actor.py +7 -7
  8. molde/actors/square_points_actor.py +32 -32
  9. molde/colors/__init__.py +1 -1
  10. molde/colors/color.py +150 -120
  11. molde/colors/color_names.py +124 -124
  12. molde/interactor_styles/__init__.py +2 -2
  13. molde/interactor_styles/arcball_camera_style.py +288 -288
  14. molde/interactor_styles/box_selection_style.py +70 -70
  15. molde/main_window.ui +864 -864
  16. molde/pickers/__init__.py +2 -2
  17. molde/pickers/cell_area_picker.py +61 -61
  18. molde/pickers/cell_property_area_picker.py +84 -84
  19. molde/poly_data/__init__.py +13 -13
  20. molde/poly_data/lines_data.py +23 -23
  21. molde/poly_data/vertices_data.py +24 -24
  22. molde/render_widgets/__init__.py +2 -2
  23. molde/render_widgets/animated_render_widget.py +164 -164
  24. molde/render_widgets/common_render_widget.py +429 -433
  25. molde/stylesheets/__init__.py +120 -119
  26. molde/stylesheets/common.qss +16 -16
  27. molde/stylesheets/create_color_page.py +61 -61
  28. molde/stylesheets/mainwindow.ui +611 -611
  29. molde/stylesheets/qcheckbox.qss +23 -18
  30. molde/stylesheets/qinputs.qss +81 -78
  31. molde/stylesheets/qlayouts.qss +23 -22
  32. molde/stylesheets/qmenubar.qss +12 -12
  33. molde/stylesheets/qprogressbar.qss +11 -11
  34. molde/stylesheets/qpushbutton.qss +91 -91
  35. molde/stylesheets/qradiobutton.qss +30 -30
  36. molde/stylesheets/qscrollbar.qss +29 -29
  37. molde/stylesheets/qslider.qss +61 -61
  38. molde/stylesheets/qtablewidget.qss +27 -27
  39. molde/stylesheets/qtabwidget.qss +28 -29
  40. molde/stylesheets/qtoolbar.qss +52 -62
  41. molde/stylesheets/qtoolbuttons.qss +14 -14
  42. molde/stylesheets/qtreewidget.qss +25 -25
  43. molde/ui_files/messages/new_loading_window.ui +73 -73
  44. molde/utils/__init__.py +8 -8
  45. molde/utils/format_sequences.py +44 -44
  46. molde/utils/poly_data_utils.py +66 -66
  47. molde/utils/tree_info.py +52 -52
  48. molde/windows/loading_window.py +189 -189
  49. {molde-0.1.3.dist-info → molde-0.1.4.dist-info}/METADATA +6 -4
  50. molde-0.1.4.dist-info/RECORD +68 -0
  51. {molde-0.1.3.dist-info → molde-0.1.4.dist-info}/WHEEL +1 -1
  52. molde-0.1.3.dist-info/RECORD +0 -68
molde/__init__.py CHANGED
@@ -1,6 +1,12 @@
1
- from pathlib import Path
2
-
3
- from .colors import Color
4
-
5
- MOLDE_DIR = Path(__file__).parent
6
- UI_DIR = MOLDE_DIR / "ui_files/"
1
+ from pathlib import Path
2
+ from qtpy.uic import loadUi
3
+ from .colors import Color
4
+ from PySide6.QtCore import QDir
5
+
6
+ MOLDE_DIR = Path(__file__).parent
7
+ UI_DIR = MOLDE_DIR / "ui_files/"
8
+
9
+ def load_ui(uifile: str | Path, baseinstance, working_directory: str| Path = None):
10
+ if working_directory is not None:
11
+ working_directory = QDir(working_directory)
12
+ return loadUi(uifile, baseinstance, working_directory)
molde/__main__.py CHANGED
@@ -1,74 +1,74 @@
1
- import os, sys
2
- from PyQt5.QtWidgets import QMainWindow, QApplication, QMessageBox, QLineEdit, QTableWidgetItem, QPushButton, QLabel
3
- from PyQt5.QtGui import QColor
4
- from PyQt5 import uic
5
- from PyQt5.QtCore import Qt
6
- from time import time
7
-
8
- from vtkmodules.vtkFiltersSources import vtkCylinderSource
9
- from vtkmodules.vtkRenderingCore import vtkPolyDataMapper, vtkActor
10
-
11
- from molde import MOLDE_DIR
12
- from molde import stylesheets
13
- from molde.render_widgets.common_render_widget import CommonRenderWidget
14
-
15
-
16
- class Example(QMainWindow):
17
- def __init__(self, parent=None) -> None:
18
- super().__init__(parent)
19
- uic.loadUi(MOLDE_DIR / "stylesheets/mainwindow.ui", self)
20
- self.current_theme = "light"
21
-
22
- self.change_theme_button.clicked.connect(self.change_theme)
23
- self.render_widget: CommonRenderWidget
24
- self.render_widget.create_axes()
25
- self.render_widget.create_scale_bar()
26
- self.render_widget.create_color_bar()
27
- self.render_widget.set_info_text("Hola\nque\ntal?")
28
-
29
- cylinder = vtkCylinderSource()
30
- cylinder.SetResolution(8)
31
- cylinder_mapper = vtkPolyDataMapper()
32
- cylinder_mapper.SetInputConnection(cylinder.GetOutputPort())
33
- cylinder_actor = vtkActor()
34
- cylinder_actor.SetMapper(cylinder_mapper)
35
- self.render_widget.add_actors(cylinder_actor)
36
-
37
- self.botao1 = QPushButton()
38
- self.label = QLabel("Olha o sapooo")
39
- self.botao1.setText("Olha a faca")
40
- self.toolbar_2.addWidget(self.label)
41
- self.toolbar_2.addWidget(self.botao1)
42
-
43
- item = QTableWidgetItem("fr")
44
- item.setBackground(QColor("#FF0000"))
45
- self.tableWidget.setItem(0, 0, item)
46
- self.show()
47
-
48
- def change_theme(self):
49
- if self.current_theme == "light":
50
- self.current_theme = "dark"
51
- else:
52
- self.current_theme = "light"
53
-
54
- self.render_widget.set_theme(self.current_theme)
55
- stylesheets.set_theme(self.current_theme)
56
-
57
- def closeEvent(self, event):
58
- close = QMessageBox.question(
59
- self,
60
- "QUIT",
61
- "Would you like to close the application?",
62
- QMessageBox.Yes | QMessageBox.No
63
- )
64
- QApplication.quit()
65
-
66
-
67
- if __name__ == "__main__":
68
- # Make the window scale evenly for every monitor
69
- os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1"
70
-
71
- app = QApplication(sys.argv)
72
- e = Example()
73
- e.change_theme()
74
- sys.exit(app.exec())
1
+ import os, sys
2
+ from qtpy.QtWidgets import QMainWindow, QApplication, QMessageBox, QLineEdit, QTableWidgetItem, QPushButton, QLabel
3
+ from qtpy.QtGui import QColor
4
+ from qtpy import uic
5
+ from qtpy.QtCore import Qt
6
+ from time import time
7
+
8
+ from vtkmodules.vtkFiltersSources import vtkCylinderSource
9
+ from vtkmodules.vtkRenderingCore import vtkPolyDataMapper, vtkActor
10
+
11
+ from molde import MOLDE_DIR
12
+ from molde import stylesheets
13
+ from molde.render_widgets.common_render_widget import CommonRenderWidget
14
+
15
+
16
+ class Example(QMainWindow):
17
+ def __init__(self, parent=None) -> None:
18
+ super().__init__(parent)
19
+ uic.loadUi(MOLDE_DIR / "stylesheets/mainwindow.ui", self)
20
+ self.current_theme = "light"
21
+
22
+ self.change_theme_button.clicked.connect(self.change_theme)
23
+ # self.render_widget: CommonRenderWidget
24
+ # self.render_widget.create_axes()
25
+ # self.render_widget.create_scale_bar()
26
+ # self.render_widget.create_color_bar()
27
+ # self.render_widget.set_info_text("Hola\nque\ntal?")
28
+
29
+ cylinder = vtkCylinderSource()
30
+ cylinder.SetResolution(8)
31
+ cylinder_mapper = vtkPolyDataMapper()
32
+ cylinder_mapper.SetInputConnection(cylinder.GetOutputPort())
33
+ cylinder_actor = vtkActor()
34
+ cylinder_actor.SetMapper(cylinder_mapper)
35
+ # self.render_widget.add_actors(cylinder_actor)
36
+
37
+ self.botao1 = QPushButton()
38
+ self.label = QLabel("Olha o sapooo")
39
+ self.botao1.setText("Olha a faca")
40
+ self.toolbar_2.addWidget(self.label)
41
+ self.toolbar_2.addWidget(self.botao1)
42
+
43
+ item = QTableWidgetItem("fr")
44
+ item.setBackground(QColor("#FF0000"))
45
+ self.tableWidget.setItem(0, 0, item)
46
+ self.show()
47
+
48
+ def change_theme(self):
49
+ if self.current_theme == "light":
50
+ self.current_theme = "dark"
51
+ else:
52
+ self.current_theme = "light"
53
+
54
+ # self.render_widget.set_theme(self.current_theme)
55
+ stylesheets.set_theme(self.current_theme)
56
+
57
+ def closeEvent(self, event):
58
+ close = QMessageBox.question(
59
+ self,
60
+ "QUIT",
61
+ "Would you like to close the application?",
62
+ QMessageBox.Yes | QMessageBox.No
63
+ )
64
+ QApplication.quit()
65
+
66
+
67
+ if __name__ == "__main__":
68
+ # Make the window scale evenly for every monitor
69
+ os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1"
70
+
71
+ app = QApplication(sys.argv)
72
+ e = Example()
73
+ e.change_theme()
74
+ sys.exit(app.exec())
molde/actors/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
- from .ghost_actor import GhostActor
2
- from .lines_actor import LinesActor
3
- from .round_points_actor import RoundPointsActor
4
- from .square_points_actor import SquarePointsActor
5
- from .common_symbols_actor import CommonSymbolsActorFixedSize, CommonSymbolsActorVariableSize
1
+ from .ghost_actor import GhostActor
2
+ from .lines_actor import LinesActor
3
+ from .round_points_actor import RoundPointsActor
4
+ from .square_points_actor import SquarePointsActor
5
+ from .common_symbols_actor import CommonSymbolsActorFixedSize, CommonSymbolsActorVariableSize
@@ -1,164 +1,164 @@
1
- from dataclasses import dataclass
2
-
3
- from molde import Color
4
- from molde.utils import transform_polydata
5
- from vtkmodules.vtkCommonCore import (
6
- vtkDoubleArray,
7
- vtkIntArray,
8
- vtkPoints,
9
- vtkUnsignedCharArray,
10
- )
11
- from vtkmodules.vtkCommonDataModel import vtkPolyData
12
- from vtkmodules.vtkRenderingCore import vtkActor, vtkDistanceToCamera, vtkGlyph3DMapper, vtkRenderer
13
-
14
- Triple = tuple[float, float, float]
15
-
16
-
17
- @dataclass
18
- class Symbol:
19
- shape_name: str
20
- position: Triple
21
- orientation: Triple
22
- color: Color
23
- scale: float
24
-
25
-
26
- class CommonSymbolsActor(vtkActor):
27
- def __init__(self, *args, **kwargs):
28
- self._shapes: dict[str, vtkPolyData] = dict()
29
- self._symbols: list[Symbol] = list()
30
-
31
- def register_shape(
32
- self,
33
- name: str,
34
- shape: vtkPolyData,
35
- position: Triple = (0, 0, 0),
36
- rotation: Triple = (0, 0, 0),
37
- scale: Triple = (1, 1, 1),
38
- ):
39
- self._shapes[name] = transform_polydata(
40
- shape,
41
- position,
42
- rotation,
43
- scale,
44
- )
45
-
46
- def add_symbol(
47
- self,
48
- shape_name: str,
49
- position: Triple,
50
- orientation: Triple,
51
- color: Triple,
52
- scale: float = 1,
53
- ):
54
- symbol = Symbol(
55
- shape_name,
56
- position,
57
- orientation,
58
- color,
59
- scale,
60
- )
61
- self._symbols.append(symbol)
62
-
63
- def clear_shapes(self):
64
- self._shapes.clear()
65
-
66
- def clear_symbols(self):
67
- self._symbols.clear()
68
-
69
- def clear_all(self):
70
- self.clear_shapes()
71
- self.clear_symbols()
72
-
73
- def common_build(self):
74
- self.data = vtkPolyData()
75
- points = vtkPoints()
76
-
77
- self.mapper: vtkGlyph3DMapper = vtkGlyph3DMapper()
78
- self.SetMapper(self.mapper)
79
-
80
- sources = vtkIntArray()
81
- sources.SetName("sources")
82
-
83
- rotations = vtkDoubleArray()
84
- rotations.SetNumberOfComponents(3)
85
- rotations.SetName("rotations")
86
-
87
- scales = vtkDoubleArray()
88
- scales.SetName("scales")
89
-
90
- colors = vtkUnsignedCharArray()
91
- colors.SetNumberOfComponents(3)
92
- colors.SetName("colors")
93
-
94
- shape_name_to_index = dict()
95
- for index, (name, shape) in enumerate(self._shapes.items()):
96
- shape_name_to_index[name] = index
97
- self.mapper.SetSourceData(index, shape)
98
-
99
- for symbol in self._symbols:
100
- points.InsertNextPoint(symbol.position)
101
- rotations.InsertNextTuple(symbol.orientation)
102
- colors.InsertNextTuple(symbol.color.to_rgb())
103
- scales.InsertNextValue(symbol.scale)
104
- sources.InsertNextValue(shape_name_to_index[symbol.shape_name])
105
-
106
- self.data.SetPoints(points)
107
- self.data.GetPointData().AddArray(sources)
108
- self.data.GetPointData().AddArray(rotations)
109
- self.data.GetPointData().AddArray(scales)
110
- self.data.GetPointData().SetScalars(colors)
111
-
112
- def set_zbuffer_offsets(self, factor: float, units: float):
113
- """
114
- This functions is usefull to make a object appear in front of the others.
115
- If the object should never be hidden, the parameters should be set to
116
- factor = 1 and offset = -66000.
117
- """
118
- self.mapper.SetResolveCoincidentTopologyToPolygonOffset()
119
- self.mapper.SetRelativeCoincidentTopologyLineOffsetParameters(factor, units)
120
- self.mapper.SetRelativeCoincidentTopologyPolygonOffsetParameters(factor, units)
121
- self.mapper.SetRelativeCoincidentTopologyPointOffsetParameter(units)
122
- self.mapper.Update()
123
-
124
-
125
- class CommonSymbolsActorFixedSize(CommonSymbolsActor):
126
- def build(self):
127
- self.common_build()
128
-
129
- self.mapper.SetInputData(self.data)
130
- self.mapper.SetSourceIndexArray("sources")
131
- self.mapper.SetOrientationArray("rotations")
132
- self.mapper.SetScaleArray("scales")
133
- self.mapper.SourceIndexingOn()
134
- self.mapper.ScalarVisibilityOn()
135
- self.mapper.SetScaleModeToScaleByMagnitude()
136
- self.mapper.SetScalarModeToUsePointData()
137
- self.mapper.SetOrientationModeToDirection()
138
- self.mapper.Update()
139
-
140
-
141
- class CommonSymbolsActorVariableSize(CommonSymbolsActor):
142
- def __init__(self, renderer: vtkRenderer):
143
- super().__init__()
144
- self.renderer = renderer
145
-
146
- def build(self):
147
- self.common_build()
148
-
149
- distance_to_camera = vtkDistanceToCamera()
150
- distance_to_camera.SetInputData(self.data)
151
- distance_to_camera.SetScreenSize(40)
152
- distance_to_camera.SetRenderer(self.renderer)
153
-
154
- self.mapper.SetInputConnection(distance_to_camera.GetOutputPort())
155
- self.mapper.SetSourceIndexArray("sources")
156
- self.mapper.SetOrientationArray("rotations")
157
- self.mapper.SetScaleArray("DistanceToCamera")
158
- self.mapper.SourceIndexingOn()
159
- self.mapper.ScalarVisibilityOn()
160
- self.mapper.SetScaleModeToScaleByMagnitude()
161
- self.mapper.SetScalarModeToUsePointData()
162
- self.mapper.SetOrientationModeToDirection()
163
-
164
- self.mapper.Update()
1
+ from dataclasses import dataclass
2
+
3
+ from molde import Color
4
+ from molde.utils import transform_polydata
5
+ from vtkmodules.vtkCommonCore import (
6
+ vtkDoubleArray,
7
+ vtkIntArray,
8
+ vtkPoints,
9
+ vtkUnsignedCharArray,
10
+ )
11
+ from vtkmodules.vtkCommonDataModel import vtkPolyData
12
+ from vtkmodules.vtkRenderingCore import vtkActor, vtkDistanceToCamera, vtkGlyph3DMapper, vtkRenderer
13
+
14
+ Triple = tuple[float, float, float]
15
+
16
+
17
+ @dataclass
18
+ class Symbol:
19
+ shape_name: str
20
+ position: Triple
21
+ orientation: Triple
22
+ color: Color
23
+ scale: float
24
+
25
+
26
+ class CommonSymbolsActor(vtkActor):
27
+ def __init__(self, *args, **kwargs):
28
+ self._shapes: dict[str, vtkPolyData] = dict()
29
+ self._symbols: list[Symbol] = list()
30
+
31
+ def register_shape(
32
+ self,
33
+ name: str,
34
+ shape: vtkPolyData,
35
+ position: Triple = (0, 0, 0),
36
+ rotation: Triple = (0, 0, 0),
37
+ scale: Triple = (1, 1, 1),
38
+ ):
39
+ self._shapes[name] = transform_polydata(
40
+ shape,
41
+ position,
42
+ rotation,
43
+ scale,
44
+ )
45
+
46
+ def add_symbol(
47
+ self,
48
+ shape_name: str,
49
+ position: Triple,
50
+ orientation: Triple,
51
+ color: Triple,
52
+ scale: float = 1,
53
+ ):
54
+ symbol = Symbol(
55
+ shape_name,
56
+ position,
57
+ orientation,
58
+ color,
59
+ scale,
60
+ )
61
+ self._symbols.append(symbol)
62
+
63
+ def clear_shapes(self):
64
+ self._shapes.clear()
65
+
66
+ def clear_symbols(self):
67
+ self._symbols.clear()
68
+
69
+ def clear_all(self):
70
+ self.clear_shapes()
71
+ self.clear_symbols()
72
+
73
+ def common_build(self):
74
+ self.data = vtkPolyData()
75
+ points = vtkPoints()
76
+
77
+ self.mapper: vtkGlyph3DMapper = vtkGlyph3DMapper()
78
+ self.SetMapper(self.mapper)
79
+
80
+ sources = vtkIntArray()
81
+ sources.SetName("sources")
82
+
83
+ rotations = vtkDoubleArray()
84
+ rotations.SetNumberOfComponents(3)
85
+ rotations.SetName("rotations")
86
+
87
+ scales = vtkDoubleArray()
88
+ scales.SetName("scales")
89
+
90
+ colors = vtkUnsignedCharArray()
91
+ colors.SetNumberOfComponents(3)
92
+ colors.SetName("colors")
93
+
94
+ shape_name_to_index = dict()
95
+ for index, (name, shape) in enumerate(self._shapes.items()):
96
+ shape_name_to_index[name] = index
97
+ self.mapper.SetSourceData(index, shape)
98
+
99
+ for symbol in self._symbols:
100
+ points.InsertNextPoint(symbol.position)
101
+ rotations.InsertNextTuple(symbol.orientation)
102
+ colors.InsertNextTuple(symbol.color.to_rgb())
103
+ scales.InsertNextValue(symbol.scale)
104
+ sources.InsertNextValue(shape_name_to_index[symbol.shape_name])
105
+
106
+ self.data.SetPoints(points)
107
+ self.data.GetPointData().AddArray(sources)
108
+ self.data.GetPointData().AddArray(rotations)
109
+ self.data.GetPointData().AddArray(scales)
110
+ self.data.GetPointData().SetScalars(colors)
111
+
112
+ def set_zbuffer_offsets(self, factor: float, units: float):
113
+ """
114
+ This functions is usefull to make a object appear in front of the others.
115
+ If the object should never be hidden, the parameters should be set to
116
+ factor = 1 and offset = -66000.
117
+ """
118
+ self.mapper.SetResolveCoincidentTopologyToPolygonOffset()
119
+ self.mapper.SetRelativeCoincidentTopologyLineOffsetParameters(factor, units)
120
+ self.mapper.SetRelativeCoincidentTopologyPolygonOffsetParameters(factor, units)
121
+ self.mapper.SetRelativeCoincidentTopologyPointOffsetParameter(units)
122
+ self.mapper.Update()
123
+
124
+
125
+ class CommonSymbolsActorFixedSize(CommonSymbolsActor):
126
+ def build(self):
127
+ self.common_build()
128
+
129
+ self.mapper.SetInputData(self.data)
130
+ self.mapper.SetSourceIndexArray("sources")
131
+ self.mapper.SetOrientationArray("rotations")
132
+ self.mapper.SetScaleArray("scales")
133
+ self.mapper.SourceIndexingOn()
134
+ self.mapper.ScalarVisibilityOn()
135
+ self.mapper.SetScaleModeToScaleByMagnitude()
136
+ self.mapper.SetScalarModeToUsePointData()
137
+ self.mapper.SetOrientationModeToDirection()
138
+ self.mapper.Update()
139
+
140
+
141
+ class CommonSymbolsActorVariableSize(CommonSymbolsActor):
142
+ def __init__(self, renderer: vtkRenderer):
143
+ super().__init__()
144
+ self.renderer = renderer
145
+
146
+ def build(self):
147
+ self.common_build()
148
+
149
+ distance_to_camera = vtkDistanceToCamera()
150
+ distance_to_camera.SetInputData(self.data)
151
+ distance_to_camera.SetScreenSize(40)
152
+ distance_to_camera.SetRenderer(self.renderer)
153
+
154
+ self.mapper.SetInputConnection(distance_to_camera.GetOutputPort())
155
+ self.mapper.SetSourceIndexArray("sources")
156
+ self.mapper.SetOrientationArray("rotations")
157
+ self.mapper.SetScaleArray("DistanceToCamera")
158
+ self.mapper.SourceIndexingOn()
159
+ self.mapper.ScalarVisibilityOn()
160
+ self.mapper.SetScaleModeToScaleByMagnitude()
161
+ self.mapper.SetScalarModeToUsePointData()
162
+ self.mapper.SetOrientationModeToDirection()
163
+
164
+ self.mapper.Update()
@@ -1,12 +1,12 @@
1
- from vtkmodules.vtkRenderingCore import vtkActor
2
-
3
-
4
- class GhostActor(vtkActor):
5
- def make_ghost(self):
6
- self.GetProperty().LightingOff()
7
- offset = -66000
8
- mapper = self.GetMapper()
9
- mapper.SetResolveCoincidentTopologyToPolygonOffset()
10
- mapper.SetRelativeCoincidentTopologyLineOffsetParameters(0, offset)
11
- mapper.SetRelativeCoincidentTopologyPolygonOffsetParameters(0, offset)
12
- mapper.SetRelativeCoincidentTopologyPointOffsetParameter(offset)
1
+ from vtkmodules.vtkRenderingCore import vtkActor
2
+
3
+
4
+ class GhostActor(vtkActor):
5
+ def make_ghost(self):
6
+ self.GetProperty().LightingOff()
7
+ offset = -66000
8
+ mapper = self.GetMapper()
9
+ mapper.SetResolveCoincidentTopologyToPolygonOffset()
10
+ mapper.SetRelativeCoincidentTopologyLineOffsetParameters(0, offset)
11
+ mapper.SetRelativeCoincidentTopologyPolygonOffsetParameters(0, offset)
12
+ mapper.SetRelativeCoincidentTopologyPointOffsetParameter(offset)
@@ -1,31 +1,31 @@
1
- from vtkmodules.vtkRenderingCore import vtkActor, vtkPolyDataMapper
2
-
3
- from molde.poly_data import LinesData
4
-
5
-
6
- class LinesActor(vtkActor):
7
- def __init__(self, lines_list) -> None:
8
- super().__init__()
9
- self.lines_list = lines_list
10
-
11
- self.build()
12
-
13
- def build(self):
14
- data = LinesData(self.lines_list)
15
- mapper = vtkPolyDataMapper()
16
- mapper.SetInputData(data)
17
- self.SetMapper(mapper)
18
- self.GetProperty().SetLineWidth(3)
19
-
20
- def set_width(self, width):
21
- self.GetProperty().SetLineWidth(width)
22
-
23
- def appear_in_front(self, cond: bool):
24
- # this offset is the Z position of the camera buffer.
25
- # if it is -66000 the object stays in front of everything.
26
- offset = -66000 if cond else 0
27
- mapper = self.GetMapper()
28
- mapper.SetResolveCoincidentTopologyToPolygonOffset()
29
- mapper.SetRelativeCoincidentTopologyLineOffsetParameters(0, offset)
30
- mapper.SetRelativeCoincidentTopologyPolygonOffsetParameters(0, offset)
31
- mapper.SetRelativeCoincidentTopologyPointOffsetParameter(offset)
1
+ from vtkmodules.vtkRenderingCore import vtkActor, vtkPolyDataMapper
2
+
3
+ from molde.poly_data import LinesData
4
+
5
+
6
+ class LinesActor(vtkActor):
7
+ def __init__(self, lines_list) -> None:
8
+ super().__init__()
9
+ self.lines_list = lines_list
10
+
11
+ self.build()
12
+
13
+ def build(self):
14
+ data = LinesData(self.lines_list)
15
+ mapper = vtkPolyDataMapper()
16
+ mapper.SetInputData(data)
17
+ self.SetMapper(mapper)
18
+ self.GetProperty().SetLineWidth(3)
19
+
20
+ def set_width(self, width):
21
+ self.GetProperty().SetLineWidth(width)
22
+
23
+ def appear_in_front(self, cond: bool):
24
+ # this offset is the Z position of the camera buffer.
25
+ # if it is -66000 the object stays in front of everything.
26
+ offset = -66000 if cond else 0
27
+ mapper = self.GetMapper()
28
+ mapper.SetResolveCoincidentTopologyToPolygonOffset()
29
+ mapper.SetRelativeCoincidentTopologyLineOffsetParameters(0, offset)
30
+ mapper.SetRelativeCoincidentTopologyPolygonOffsetParameters(0, offset)
31
+ mapper.SetRelativeCoincidentTopologyPointOffsetParameter(offset)
@@ -1,7 +1,7 @@
1
- from .square_points_actor import SquarePointsActor
2
-
3
-
4
- class RoundPointsActor(SquarePointsActor):
5
- def __init__(self, points) -> None:
6
- super().__init__(points)
7
- self.GetProperty().RenderPointsAsSpheresOn()
1
+ from .square_points_actor import SquarePointsActor
2
+
3
+
4
+ class RoundPointsActor(SquarePointsActor):
5
+ def __init__(self, points) -> None:
6
+ super().__init__(points)
7
+ self.GetProperty().RenderPointsAsSpheresOn()