molde 0.1.0__py3-none-any.whl → 0.1.2__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.
- molde/__init__.py +6 -5
- molde/__main__.py +74 -63
- molde/actors/__init__.py +5 -4
- molde/actors/common_symbols_actor.py +148 -0
- molde/actors/ghost_actor.py +12 -12
- molde/actors/lines_actor.py +31 -31
- molde/actors/round_points_actor.py +7 -7
- molde/actors/square_points_actor.py +32 -32
- molde/colors/__init__.py +1 -1
- molde/colors/color.py +120 -120
- molde/colors/color_names.py +124 -124
- molde/interactor_styles/__init__.py +2 -2
- molde/interactor_styles/arcball_camera_style.py +288 -272
- molde/interactor_styles/box_selection_style.py +70 -70
- molde/main_window.ui +864 -0
- molde/pickers/__init__.py +2 -2
- molde/pickers/cell_area_picker.py +61 -61
- molde/pickers/cell_property_area_picker.py +84 -84
- molde/poly_data/__init__.py +19 -2
- molde/poly_data/arrows.py +54 -0
- molde/poly_data/complex_shapes.py +26 -0
- molde/poly_data/lines_data.py +23 -23
- molde/poly_data/simple_shapes.py +22 -0
- molde/poly_data/vertices_data.py +24 -24
- molde/render_widgets/__init__.py +2 -2
- molde/render_widgets/animated_render_widget.py +164 -164
- molde/render_widgets/common_render_widget.py +433 -433
- molde/stylesheets/__init__.py +119 -119
- molde/stylesheets/common.qss +16 -16
- molde/stylesheets/create_color_page.py +61 -61
- molde/stylesheets/mainwindow.ui +611 -611
- molde/stylesheets/qcheckbox.qss +18 -18
- molde/stylesheets/qinputs.qss +78 -78
- molde/stylesheets/qlayouts.qss +22 -22
- molde/stylesheets/qmenubar.qss +12 -12
- molde/stylesheets/qprogressbar.qss +11 -11
- molde/stylesheets/qpushbutton.qss +90 -90
- molde/stylesheets/qradiobutton.qss +30 -30
- molde/stylesheets/qscrollbar.qss +29 -29
- molde/stylesheets/qslider.qss +61 -61
- molde/stylesheets/qtablewidget.qss +27 -27
- molde/stylesheets/qtabwidget.qss +29 -29
- molde/stylesheets/qtoolbar.qss +62 -62
- molde/stylesheets/qtoolbuttons.qss +14 -14
- molde/stylesheets/qtreewidget.qss +25 -25
- molde/ui_files/messages/new_loading_window.ui +73 -0
- molde/utils/__init__.py +8 -8
- molde/utils/format_sequences.py +44 -44
- molde/utils/poly_data_utils.py +24 -24
- molde/utils/tree_info.py +52 -52
- molde/windows/loading_window.py +189 -0
- {molde-0.1.0.dist-info → molde-0.1.2.dist-info}/METADATA +5 -3
- molde-0.1.2.dist-info/RECORD +69 -0
- {molde-0.1.0.dist-info → molde-0.1.2.dist-info}/WHEEL +1 -1
- molde-0.1.0.dist-info/RECORD +0 -62
molde/pickers/__init__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
from .cell_area_picker import CellAreaPicker
|
2
|
-
from .cell_property_area_picker import CellPropertyAreaPicker
|
1
|
+
from .cell_area_picker import CellAreaPicker
|
2
|
+
from .cell_property_area_picker import CellPropertyAreaPicker
|
@@ -1,61 +1,61 @@
|
|
1
|
-
from vtkmodules.vtkCommonDataModel import vtkPolyData
|
2
|
-
from vtkmodules.vtkFiltersGeneral import vtkExtractSelectedFrustum
|
3
|
-
from vtkmodules.vtkRenderingCore import (
|
4
|
-
vtkActor,
|
5
|
-
vtkAreaPicker,
|
6
|
-
vtkCellPicker,
|
7
|
-
vtkPropPicker,
|
8
|
-
vtkRenderer,
|
9
|
-
)
|
10
|
-
|
11
|
-
|
12
|
-
class CellAreaPicker(vtkPropPicker):
|
13
|
-
def __init__(self) -> None:
|
14
|
-
super().__init__()
|
15
|
-
self._picked_cells = []
|
16
|
-
self._picked_actors = []
|
17
|
-
self._picked = dict()
|
18
|
-
|
19
|
-
self._area_picker = vtkAreaPicker()
|
20
|
-
self._cell_picker = vtkCellPicker()
|
21
|
-
self._cell_picker.SetTolerance(0.01)
|
22
|
-
|
23
|
-
def pick(self, x: float, y: float, z: float, renderer: vtkRenderer):
|
24
|
-
self._picked.clear()
|
25
|
-
self._cell_picker.Pick(x, y, z, renderer)
|
26
|
-
self._picked[self._cell_picker.GetActor()] = [self._cell_picker.GetCellId()]
|
27
|
-
|
28
|
-
# # select a small area around the mouse click
|
29
|
-
# delta = 10
|
30
|
-
# self.area_pick(x-delta, y-delta, x+delta, y+delta, renderer)
|
31
|
-
|
32
|
-
# # keep at most a single cell selected for every picked actor
|
33
|
-
# for actor, selection in self._picked.items():
|
34
|
-
# self._picked[actor] = selection[:1]
|
35
|
-
|
36
|
-
def area_pick(
|
37
|
-
self, x0: float, y0: float, x1: float, y1: float, renderer: vtkRenderer
|
38
|
-
):
|
39
|
-
self._picked.clear()
|
40
|
-
self._area_picker.AreaPick(x0, y0, x1, y1, renderer)
|
41
|
-
extractor = vtkExtractSelectedFrustum()
|
42
|
-
extractor.SetFrustum(self._area_picker.GetFrustum())
|
43
|
-
|
44
|
-
for actor in self._area_picker.GetProp3Ds():
|
45
|
-
if not isinstance(actor, vtkActor):
|
46
|
-
continue
|
47
|
-
|
48
|
-
data: vtkPolyData = actor.GetMapper().GetInput()
|
49
|
-
if data is None:
|
50
|
-
continue
|
51
|
-
|
52
|
-
cells = []
|
53
|
-
for i in range(data.GetNumberOfCells()):
|
54
|
-
bounds = [0, 0, 0, 0, 0, 0]
|
55
|
-
data.GetCellBounds(i, bounds)
|
56
|
-
if extractor.OverallBoundsTest(bounds):
|
57
|
-
cells.append(i)
|
58
|
-
self._picked[actor] = cells
|
59
|
-
|
60
|
-
def get_picked(self):
|
61
|
-
return dict(self._picked)
|
1
|
+
from vtkmodules.vtkCommonDataModel import vtkPolyData
|
2
|
+
from vtkmodules.vtkFiltersGeneral import vtkExtractSelectedFrustum
|
3
|
+
from vtkmodules.vtkRenderingCore import (
|
4
|
+
vtkActor,
|
5
|
+
vtkAreaPicker,
|
6
|
+
vtkCellPicker,
|
7
|
+
vtkPropPicker,
|
8
|
+
vtkRenderer,
|
9
|
+
)
|
10
|
+
|
11
|
+
|
12
|
+
class CellAreaPicker(vtkPropPicker):
|
13
|
+
def __init__(self) -> None:
|
14
|
+
super().__init__()
|
15
|
+
self._picked_cells = []
|
16
|
+
self._picked_actors = []
|
17
|
+
self._picked = dict()
|
18
|
+
|
19
|
+
self._area_picker = vtkAreaPicker()
|
20
|
+
self._cell_picker = vtkCellPicker()
|
21
|
+
self._cell_picker.SetTolerance(0.01)
|
22
|
+
|
23
|
+
def pick(self, x: float, y: float, z: float, renderer: vtkRenderer):
|
24
|
+
self._picked.clear()
|
25
|
+
self._cell_picker.Pick(x, y, z, renderer)
|
26
|
+
self._picked[self._cell_picker.GetActor()] = [self._cell_picker.GetCellId()]
|
27
|
+
|
28
|
+
# # select a small area around the mouse click
|
29
|
+
# delta = 10
|
30
|
+
# self.area_pick(x-delta, y-delta, x+delta, y+delta, renderer)
|
31
|
+
|
32
|
+
# # keep at most a single cell selected for every picked actor
|
33
|
+
# for actor, selection in self._picked.items():
|
34
|
+
# self._picked[actor] = selection[:1]
|
35
|
+
|
36
|
+
def area_pick(
|
37
|
+
self, x0: float, y0: float, x1: float, y1: float, renderer: vtkRenderer
|
38
|
+
):
|
39
|
+
self._picked.clear()
|
40
|
+
self._area_picker.AreaPick(x0, y0, x1, y1, renderer)
|
41
|
+
extractor = vtkExtractSelectedFrustum()
|
42
|
+
extractor.SetFrustum(self._area_picker.GetFrustum())
|
43
|
+
|
44
|
+
for actor in self._area_picker.GetProp3Ds():
|
45
|
+
if not isinstance(actor, vtkActor):
|
46
|
+
continue
|
47
|
+
|
48
|
+
data: vtkPolyData = actor.GetMapper().GetInput()
|
49
|
+
if data is None:
|
50
|
+
continue
|
51
|
+
|
52
|
+
cells = []
|
53
|
+
for i in range(data.GetNumberOfCells()):
|
54
|
+
bounds = [0, 0, 0, 0, 0, 0]
|
55
|
+
data.GetCellBounds(i, bounds)
|
56
|
+
if extractor.OverallBoundsTest(bounds):
|
57
|
+
cells.append(i)
|
58
|
+
self._picked[actor] = cells
|
59
|
+
|
60
|
+
def get_picked(self):
|
61
|
+
return dict(self._picked)
|
@@ -1,84 +1,84 @@
|
|
1
|
-
from vtkmodules.vtkCommonDataModel import vtkPolyData
|
2
|
-
from vtkmodules.vtkFiltersGeneral import vtkExtractSelectedFrustum
|
3
|
-
from vtkmodules.vtkRenderingCore import (
|
4
|
-
vtkActor,
|
5
|
-
vtkAreaPicker,
|
6
|
-
vtkCellPicker,
|
7
|
-
vtkPropPicker,
|
8
|
-
vtkRenderer,
|
9
|
-
)
|
10
|
-
|
11
|
-
|
12
|
-
class CellPropertyAreaPicker(vtkPropPicker):
|
13
|
-
def __init__(self, property_name: str, desired_actor: vtkActor) -> None:
|
14
|
-
super().__init__()
|
15
|
-
|
16
|
-
self.property_name = property_name
|
17
|
-
self.desired_actor = desired_actor
|
18
|
-
self._picked = set()
|
19
|
-
|
20
|
-
self._cell_picker = vtkCellPicker()
|
21
|
-
self._area_picker = vtkAreaPicker()
|
22
|
-
self._cell_picker.SetTolerance(0.005)
|
23
|
-
|
24
|
-
def pick(self, x: float, y: float, z: float, renderer: vtkRenderer):
|
25
|
-
# maybe a behaviour like the one implemented in CellAreaPicker
|
26
|
-
# would fit nicely here
|
27
|
-
self._picked.clear()
|
28
|
-
self._cell_picker.Pick(x, y, z, renderer)
|
29
|
-
|
30
|
-
if self.desired_actor != self._cell_picker.GetActor():
|
31
|
-
return self.get_picked()
|
32
|
-
|
33
|
-
data: vtkPolyData = self.desired_actor.GetMapper().GetInput()
|
34
|
-
if data is None:
|
35
|
-
return self.get_picked()
|
36
|
-
|
37
|
-
property_array = data.GetCellData().GetArray(self.property_name)
|
38
|
-
if property_array is None:
|
39
|
-
return self.get_picked()
|
40
|
-
|
41
|
-
cell = self._cell_picker.GetCellId()
|
42
|
-
property_val = property_array.GetValue(cell)
|
43
|
-
self._picked.add(property_val)
|
44
|
-
return self.get_picked()
|
45
|
-
|
46
|
-
def area_pick(
|
47
|
-
self, x0: float, y0: float, x1: float, y1: float, renderer: vtkRenderer
|
48
|
-
):
|
49
|
-
self._picked.clear()
|
50
|
-
self._area_picker.AreaPick(x0, y0, x1, y1, renderer)
|
51
|
-
extractor = vtkExtractSelectedFrustum()
|
52
|
-
extractor.SetFrustum(self._area_picker.GetFrustum())
|
53
|
-
|
54
|
-
if self.desired_actor not in self._area_picker.GetProp3Ds():
|
55
|
-
return self.get_picked()
|
56
|
-
|
57
|
-
data: vtkPolyData = self.desired_actor.GetMapper().GetInput()
|
58
|
-
if data is None:
|
59
|
-
return self.get_picked()
|
60
|
-
|
61
|
-
property_array = data.GetCellData().GetArray(self.property_name)
|
62
|
-
if property_array is None:
|
63
|
-
return self.get_picked()
|
64
|
-
|
65
|
-
if property_array.GetNumberOfValues() < data.GetNumberOfCells():
|
66
|
-
return self.get_picked()
|
67
|
-
|
68
|
-
for cell in range(data.GetNumberOfCells()):
|
69
|
-
property_val = property_array.GetValue(cell)
|
70
|
-
|
71
|
-
# if the property was already picked
|
72
|
-
# we don't even need to check if the cell
|
73
|
-
# is inside the selection box
|
74
|
-
if property_val in self._picked:
|
75
|
-
continue
|
76
|
-
|
77
|
-
bounds = [0, 0, 0, 0, 0, 0]
|
78
|
-
data.GetCellBounds(cell, bounds)
|
79
|
-
if extractor.OverallBoundsTest(bounds):
|
80
|
-
self._picked.add(property_val)
|
81
|
-
return self.get_picked()
|
82
|
-
|
83
|
-
def get_picked(self):
|
84
|
-
return set(self._picked)
|
1
|
+
from vtkmodules.vtkCommonDataModel import vtkPolyData
|
2
|
+
from vtkmodules.vtkFiltersGeneral import vtkExtractSelectedFrustum
|
3
|
+
from vtkmodules.vtkRenderingCore import (
|
4
|
+
vtkActor,
|
5
|
+
vtkAreaPicker,
|
6
|
+
vtkCellPicker,
|
7
|
+
vtkPropPicker,
|
8
|
+
vtkRenderer,
|
9
|
+
)
|
10
|
+
|
11
|
+
|
12
|
+
class CellPropertyAreaPicker(vtkPropPicker):
|
13
|
+
def __init__(self, property_name: str, desired_actor: vtkActor) -> None:
|
14
|
+
super().__init__()
|
15
|
+
|
16
|
+
self.property_name = property_name
|
17
|
+
self.desired_actor = desired_actor
|
18
|
+
self._picked = set()
|
19
|
+
|
20
|
+
self._cell_picker = vtkCellPicker()
|
21
|
+
self._area_picker = vtkAreaPicker()
|
22
|
+
self._cell_picker.SetTolerance(0.005)
|
23
|
+
|
24
|
+
def pick(self, x: float, y: float, z: float, renderer: vtkRenderer):
|
25
|
+
# maybe a behaviour like the one implemented in CellAreaPicker
|
26
|
+
# would fit nicely here
|
27
|
+
self._picked.clear()
|
28
|
+
self._cell_picker.Pick(x, y, z, renderer)
|
29
|
+
|
30
|
+
if self.desired_actor != self._cell_picker.GetActor():
|
31
|
+
return self.get_picked()
|
32
|
+
|
33
|
+
data: vtkPolyData = self.desired_actor.GetMapper().GetInput()
|
34
|
+
if data is None:
|
35
|
+
return self.get_picked()
|
36
|
+
|
37
|
+
property_array = data.GetCellData().GetArray(self.property_name)
|
38
|
+
if property_array is None:
|
39
|
+
return self.get_picked()
|
40
|
+
|
41
|
+
cell = self._cell_picker.GetCellId()
|
42
|
+
property_val = property_array.GetValue(cell)
|
43
|
+
self._picked.add(property_val)
|
44
|
+
return self.get_picked()
|
45
|
+
|
46
|
+
def area_pick(
|
47
|
+
self, x0: float, y0: float, x1: float, y1: float, renderer: vtkRenderer
|
48
|
+
):
|
49
|
+
self._picked.clear()
|
50
|
+
self._area_picker.AreaPick(x0, y0, x1, y1, renderer)
|
51
|
+
extractor = vtkExtractSelectedFrustum()
|
52
|
+
extractor.SetFrustum(self._area_picker.GetFrustum())
|
53
|
+
|
54
|
+
if self.desired_actor not in self._area_picker.GetProp3Ds():
|
55
|
+
return self.get_picked()
|
56
|
+
|
57
|
+
data: vtkPolyData = self.desired_actor.GetMapper().GetInput()
|
58
|
+
if data is None:
|
59
|
+
return self.get_picked()
|
60
|
+
|
61
|
+
property_array = data.GetCellData().GetArray(self.property_name)
|
62
|
+
if property_array is None:
|
63
|
+
return self.get_picked()
|
64
|
+
|
65
|
+
if property_array.GetNumberOfValues() < data.GetNumberOfCells():
|
66
|
+
return self.get_picked()
|
67
|
+
|
68
|
+
for cell in range(data.GetNumberOfCells()):
|
69
|
+
property_val = property_array.GetValue(cell)
|
70
|
+
|
71
|
+
# if the property was already picked
|
72
|
+
# we don't even need to check if the cell
|
73
|
+
# is inside the selection box
|
74
|
+
if property_val in self._picked:
|
75
|
+
continue
|
76
|
+
|
77
|
+
bounds = [0, 0, 0, 0, 0, 0]
|
78
|
+
data.GetCellBounds(cell, bounds)
|
79
|
+
if extractor.OverallBoundsTest(bounds):
|
80
|
+
self._picked.add(property_val)
|
81
|
+
return self.get_picked()
|
82
|
+
|
83
|
+
def get_picked(self):
|
84
|
+
return set(self._picked)
|
molde/poly_data/__init__.py
CHANGED
@@ -1,2 +1,19 @@
|
|
1
|
-
from .lines_data import LinesData
|
2
|
-
from .vertices_data import VerticesData
|
1
|
+
from .lines_data import LinesData
|
2
|
+
from .vertices_data import VerticesData
|
3
|
+
from .arrows import (
|
4
|
+
create_arrow_source,
|
5
|
+
create_long_arrow_source,
|
6
|
+
create_double_arrow_source,
|
7
|
+
create_outwards_arrow_source,
|
8
|
+
)
|
9
|
+
|
10
|
+
from .simple_shapes import (
|
11
|
+
create_cone_source,
|
12
|
+
create_cube_source,
|
13
|
+
)
|
14
|
+
|
15
|
+
from .complex_shapes import (
|
16
|
+
create_spring_source,
|
17
|
+
create_damper_source,
|
18
|
+
create_mass_source,
|
19
|
+
)
|
@@ -0,0 +1,54 @@
|
|
1
|
+
from vtkmodules.vtkFiltersSources import vtkArrowSource
|
2
|
+
from vtkmodules.vtkFiltersCore import vtkAppendPolyData
|
3
|
+
from vibra.utils.polydata_utils import transform_polydata
|
4
|
+
|
5
|
+
|
6
|
+
def create_arrow_source():
|
7
|
+
source = vtkArrowSource()
|
8
|
+
source.SetTipLength(0.25)
|
9
|
+
source.Update()
|
10
|
+
|
11
|
+
return transform_polydata(
|
12
|
+
source.GetOutput(),
|
13
|
+
position=(-1, 0, 0),
|
14
|
+
)
|
15
|
+
|
16
|
+
|
17
|
+
def create_long_arrow_source():
|
18
|
+
source = vtkArrowSource()
|
19
|
+
source.SetTipResolution(4)
|
20
|
+
source.SetShaftResolution(4)
|
21
|
+
source.SetTipLength(0.85)
|
22
|
+
source.Update()
|
23
|
+
|
24
|
+
return transform_polydata(
|
25
|
+
source.GetOutput(),
|
26
|
+
position=(-1, 0, 0),
|
27
|
+
)
|
28
|
+
|
29
|
+
|
30
|
+
def create_double_arrow_source():
|
31
|
+
arrow1 = vtkArrowSource()
|
32
|
+
arrow1.SetTipLength(0.45)
|
33
|
+
arrow1.Update()
|
34
|
+
|
35
|
+
arrow2 = vtkArrowSource()
|
36
|
+
arrow2.SetTipLength(0.3)
|
37
|
+
arrow2.Update()
|
38
|
+
|
39
|
+
source = vtkAppendPolyData()
|
40
|
+
source.AddInputData(arrow1.GetOutput())
|
41
|
+
source.AddInputData(arrow2.GetOutput())
|
42
|
+
source.Update()
|
43
|
+
|
44
|
+
return transform_polydata(
|
45
|
+
source.GetOutput(),
|
46
|
+
position=(-1, 0, 0),
|
47
|
+
)
|
48
|
+
|
49
|
+
|
50
|
+
def create_outwards_arrow_source():
|
51
|
+
source = vtkArrowSource()
|
52
|
+
source.SetTipLength(0.25)
|
53
|
+
source.Update()
|
54
|
+
return source.GetOutput()
|
@@ -0,0 +1,26 @@
|
|
1
|
+
from vibra import SYMBOLS_DIR
|
2
|
+
from vibra.utils.polydata_utils import read_obj_file, read_stl_file, transform_polydata
|
3
|
+
|
4
|
+
|
5
|
+
def create_spring_source():
|
6
|
+
polydata = read_stl_file(SYMBOLS_DIR / "stl_files/spring_symbol.STL")
|
7
|
+
return transform_polydata(
|
8
|
+
polydata,
|
9
|
+
position=(-1.25, -0.18, 0.18),
|
10
|
+
rotation=(0, 90, 0),
|
11
|
+
)
|
12
|
+
|
13
|
+
|
14
|
+
def create_damper_source():
|
15
|
+
polydata = read_obj_file(SYMBOLS_DIR / "structural/lumped_damper.obj")
|
16
|
+
return transform_polydata(
|
17
|
+
polydata,
|
18
|
+
position=(-0.145, 0, 0),
|
19
|
+
)
|
20
|
+
|
21
|
+
|
22
|
+
def create_mass_source():
|
23
|
+
return transform_polydata(
|
24
|
+
read_obj_file(SYMBOLS_DIR / "structural/new_lumped_mass.obj"),
|
25
|
+
rotation=(0, -90, 0),
|
26
|
+
)
|
molde/poly_data/lines_data.py
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
from vtkmodules.vtkCommonCore import vtkPoints
|
2
|
-
from vtkmodules.vtkCommonDataModel import VTK_LINE, vtkPolyData
|
3
|
-
|
4
|
-
|
5
|
-
class LinesData(vtkPolyData):
|
6
|
-
def __init__(self, lines_list) -> None:
|
7
|
-
super().__init__()
|
8
|
-
|
9
|
-
self.lines_list = lines_list
|
10
|
-
self.build()
|
11
|
-
|
12
|
-
def build(self):
|
13
|
-
points = vtkPoints()
|
14
|
-
self.Allocate(len(self.lines_list))
|
15
|
-
|
16
|
-
current_point = 0
|
17
|
-
for x0, y0, z0, x1, y1, z1 in self.lines_list:
|
18
|
-
points.InsertPoint(current_point, x0, y0, z0)
|
19
|
-
points.InsertPoint(current_point + 1, x1, y1, z1)
|
20
|
-
self.InsertNextCell(VTK_LINE, 2, [current_point, current_point + 1])
|
21
|
-
current_point += 2
|
22
|
-
|
23
|
-
self.SetPoints(points)
|
1
|
+
from vtkmodules.vtkCommonCore import vtkPoints
|
2
|
+
from vtkmodules.vtkCommonDataModel import VTK_LINE, vtkPolyData
|
3
|
+
|
4
|
+
|
5
|
+
class LinesData(vtkPolyData):
|
6
|
+
def __init__(self, lines_list) -> None:
|
7
|
+
super().__init__()
|
8
|
+
|
9
|
+
self.lines_list = lines_list
|
10
|
+
self.build()
|
11
|
+
|
12
|
+
def build(self):
|
13
|
+
points = vtkPoints()
|
14
|
+
self.Allocate(len(self.lines_list))
|
15
|
+
|
16
|
+
current_point = 0
|
17
|
+
for x0, y0, z0, x1, y1, z1 in self.lines_list:
|
18
|
+
points.InsertPoint(current_point, x0, y0, z0)
|
19
|
+
points.InsertPoint(current_point + 1, x1, y1, z1)
|
20
|
+
self.InsertNextCell(VTK_LINE, 2, [current_point, current_point + 1])
|
21
|
+
current_point += 2
|
22
|
+
|
23
|
+
self.SetPoints(points)
|
@@ -0,0 +1,22 @@
|
|
1
|
+
from vibra.utils.polydata_utils import transform_polydata
|
2
|
+
from vtkmodules.vtkFiltersSources import (
|
3
|
+
vtkConeSource,
|
4
|
+
vtkCubeSource,
|
5
|
+
)
|
6
|
+
|
7
|
+
def create_cone_source():
|
8
|
+
source = vtkConeSource()
|
9
|
+
source.SetHeight(1)
|
10
|
+
source.SetRadius(0.5)
|
11
|
+
source.SetResolution(12)
|
12
|
+
source.Update()
|
13
|
+
return transform_polydata(
|
14
|
+
source.GetOutput(),
|
15
|
+
position=(-0.5, 0, 0),
|
16
|
+
)
|
17
|
+
|
18
|
+
def create_cube_source():
|
19
|
+
source = vtkCubeSource()
|
20
|
+
source.SetBounds(0, 1, 0, 1, 0, 1)
|
21
|
+
source.Update()
|
22
|
+
return source.GetOutput()
|
molde/poly_data/vertices_data.py
CHANGED
@@ -1,24 +1,24 @@
|
|
1
|
-
from vtkmodules.vtkCommonCore import vtkPoints
|
2
|
-
from vtkmodules.vtkCommonDataModel import VTK_VERTEX, vtkPolyData
|
3
|
-
|
4
|
-
|
5
|
-
class VerticesData(vtkPolyData):
|
6
|
-
"""
|
7
|
-
This class describes a polydata composed by a set of points.
|
8
|
-
"""
|
9
|
-
|
10
|
-
def __init__(self, points_list: list[tuple[int, int, int]]) -> None:
|
11
|
-
super().__init__()
|
12
|
-
|
13
|
-
self.points_list = points_list
|
14
|
-
self.build()
|
15
|
-
|
16
|
-
def build(self):
|
17
|
-
points = vtkPoints()
|
18
|
-
self.Allocate(len(self.points_list))
|
19
|
-
|
20
|
-
for i, (x, y, z) in enumerate(self.points_list):
|
21
|
-
points.InsertNextPoint(x, y, z)
|
22
|
-
self.InsertNextCell(VTK_VERTEX, 1, [i])
|
23
|
-
|
24
|
-
self.SetPoints(points)
|
1
|
+
from vtkmodules.vtkCommonCore import vtkPoints
|
2
|
+
from vtkmodules.vtkCommonDataModel import VTK_VERTEX, vtkPolyData
|
3
|
+
|
4
|
+
|
5
|
+
class VerticesData(vtkPolyData):
|
6
|
+
"""
|
7
|
+
This class describes a polydata composed by a set of points.
|
8
|
+
"""
|
9
|
+
|
10
|
+
def __init__(self, points_list: list[tuple[int, int, int]]) -> None:
|
11
|
+
super().__init__()
|
12
|
+
|
13
|
+
self.points_list = points_list
|
14
|
+
self.build()
|
15
|
+
|
16
|
+
def build(self):
|
17
|
+
points = vtkPoints()
|
18
|
+
self.Allocate(len(self.points_list))
|
19
|
+
|
20
|
+
for i, (x, y, z) in enumerate(self.points_list):
|
21
|
+
points.InsertNextPoint(x, y, z)
|
22
|
+
self.InsertNextCell(VTK_VERTEX, 1, [i])
|
23
|
+
|
24
|
+
self.SetPoints(points)
|
molde/render_widgets/__init__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
from .animated_render_widget import AnimatedRenderWidget
|
2
|
-
from .common_render_widget import CommonRenderWidget
|
1
|
+
from .animated_render_widget import AnimatedRenderWidget
|
2
|
+
from .common_render_widget import CommonRenderWidget
|