8000 Add toggle for orthogonal/perspective modes (#321) · ag-python-qt/CQ-editor-pyqt@0d091ba · GitHub
[go: up one dir, main page]

Skip to content

Commit 0d091ba

Browse files
Add toggle for orthogonal/perspective modes (CadQuery#321)
* Add ProjectionType and StereoMode to 3D Viewer preferences * Add comment Co-authored-by: AU <adam-urbanczyk@users.noreply.github.com>
1 parent 858a7b9 commit 0d091ba

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

cq_editor/widgets/viewer.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# -*- coding: utf-8 -*-
22

3+
from OCP.Graphic3d import Graphic3d_Camera, Graphic3d_StereoMode
34
from PyQt5.QtWidgets import (QWidget, QPushButton, QDialog, QTreeWidget,
45
QTreeWidgetItem, QVBoxLayout, QFileDialog,
56
QHBoxLayout, QFrame, QLabel, QApplication,
@@ -39,9 +40,12 @@ class OCCViewer(QWidget,ComponentMixin):
3940
{'name': 'Background color (aux)', 'type': 'color', 'value': (30,30,30)},
4041
{'name': 'Default object color', 'type': 'color', 'value': "FF0"},
4142
{'name': 'Deviation', 'type': 'float', 'value': 1e-5, 'dec': True, 'step': 1},
42-
{'name': 'Angular deviation', 'type': 'float', 'value': 0.1, 'dec': True, 'step': 1}])
43-
44-
43+
{'name': 'Angular deviation', 'type': 'float', 'value': 0.1, 'dec': True, 'step': 1},
44+
{'name': 'Projection Type', 'type': 'list', 'value': 'Orthographic',
45+
'values': ['Orthographic', 'Perspective', 'Stereo', 'MonoLeftEye', 'MonoRightEye']},
46+
{'name': 'Stereo Mode', 'type': 'list', 'value': 'QuadBuffer',
47+
'values': ['QuadBuffer', 'Anaglyph', 'RowInterlaced', 'ColumnInterlaced',
48+
'ChessBoard', 'SideBySide', 'OverUnder']}])
4549
IMAGE_EXTENSIONS = 'png'
4650

4751
sigObjectSelected = pyqtSignal(list)
@@ -78,6 +82,18 @@ def updatePreferences(self,*args):
7882
ctx.SetDeviationCoefficient(self.preferences['Deviation'])
7983
ctx.SetDeviationAngle(self.preferences['Angular deviation'])
8084

85+
v = self._get_view()
86+
camera = v.Camera()
87+
projection_type = self.preferences['Projection Type']
88+
camera.SetProjectionType(getattr(Graphic3d_Camera, f'Projection_{projection_type}',
89+
Graphic3d_Camera.Projection_Orthographic))
90+
91+
# onle relevant for stereo projection
92+
stereo_mode = self.preferences['Stereo Mode']
93+
params = v.ChangeRenderingParams()
94+
params.StereoMode = getattr(Graphic3d_StereoMode, f'Graphic3d_StereoMode_{stereo_mode}',
95+
Graphic3d_StereoMode.Graphic3d_StereoMode_QuadBuffer)
96+
8197
def create_actions(self,parent):
8298

8399
self._actions = \

0 commit comments

Comments
 (0)
0