- Added construction lines switching
- Moved callbacks into sketchwidget from main. - Changed reset on right click
This commit is contained in:
parent
878b6093b7
commit
2a7f718b3e
31
Gui.py
31
Gui.py
@ -419,6 +419,7 @@ class Ui_fluencyCAD(object):
|
||||
self.pb_con_perp = QPushButton(self.groupBox_3)
|
||||
self.pb_con_perp.setObjectName(u"pb_con_perp")
|
||||
self.pb_con_perp.setCheckable(True)
|
||||
self.pb_con_perp.setAutoExclusive(False)
|
||||
|
||||
self.gridLayout_4.addWidget(self.pb_con_perp, 1, 1, 1, 1)
|
||||
|
||||
@ -454,6 +455,7 @@ class Ui_fluencyCAD(object):
|
||||
self.pb_con_mid = QPushButton(self.groupBox_3)
|
||||
self.pb_con_mid.setObjectName(u"pb_con_mid")
|
||||
self.pb_con_mid.setCheckable(True)
|
||||
self.pb_con_mid.setAutoExclusive(False)
|
||||
|
||||
self.gridLayout_4.addWidget(self.pb_con_mid, 1, 0, 1, 1)
|
||||
|
||||
@ -469,11 +471,11 @@ class Ui_fluencyCAD(object):
|
||||
self.tabWidget.setSizePolicy(sizePolicy5)
|
||||
self.tabWidget.setMaximumSize(QSize(200, 16777215))
|
||||
self.tabWidget.setTabPosition(QTabWidget.South)
|
||||
self.widget = QWidget()
|
||||
self.widget.setObjectName(u"widget")
|
||||
self.verticalLayout_3 = QVBoxLayout(self.widget)
|
||||
self.snaps = QWidget()
|
||||
self.snaps.setObjectName(u"snaps")
|
||||
self.verticalLayout_3 = QVBoxLayout(self.snaps)
|
||||
self.verticalLayout_3.setObjectName(u"verticalLayout_3")
|
||||
self.groupBox_5 = QGroupBox(self.widget)
|
||||
self.groupBox_5 = QGroupBox(self.snaps)
|
||||
self.groupBox_5.setObjectName(u"groupBox_5")
|
||||
sizePolicy6 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred)
|
||||
sizePolicy6.setHorizontalStretch(0)
|
||||
@ -491,6 +493,7 @@ class Ui_fluencyCAD(object):
|
||||
self.pb_snap_vert = QPushButton(self.groupBox_5)
|
||||
self.pb_snap_vert.setObjectName(u"pb_snap_vert")
|
||||
self.pb_snap_vert.setCheckable(True)
|
||||
self.pb_snap_vert.setAutoExclusive(False)
|
||||
|
||||
self.gridLayout_11.addWidget(self.pb_snap_vert, 2, 1, 1, 1)
|
||||
|
||||
@ -516,12 +519,14 @@ class Ui_fluencyCAD(object):
|
||||
self.pushButton_7 = QPushButton(self.groupBox_5)
|
||||
self.pushButton_7.setObjectName(u"pushButton_7")
|
||||
self.pushButton_7.setCheckable(True)
|
||||
self.pushButton_7.setAutoExclusive(False)
|
||||
|
||||
self.gridLayout_11.addWidget(self.pushButton_7, 3, 0, 1, 1)
|
||||
|
||||
self.pb_snap_horiz = QPushButton(self.groupBox_5)
|
||||
self.pb_snap_horiz.setObjectName(u"pb_snap_horiz")
|
||||
self.pb_snap_horiz.setCheckable(True)
|
||||
self.pb_snap_horiz.setAutoExclusive(False)
|
||||
|
||||
self.gridLayout_11.addWidget(self.pb_snap_horiz, 2, 0, 1, 1)
|
||||
|
||||
@ -534,28 +539,32 @@ class Ui_fluencyCAD(object):
|
||||
|
||||
self.pushButton_8 = QPushButton(self.groupBox_5)
|
||||
self.pushButton_8.setObjectName(u"pushButton_8")
|
||||
self.pushButton_8.setCheckable(True)
|
||||
self.pushButton_8.setAutoExclusive(False)
|
||||
|
||||
self.gridLayout_11.addWidget(self.pushButton_8, 0, 0, 1, 1)
|
||||
|
||||
self.pb_snap_midp = QPushButton(self.groupBox_5)
|
||||
self.pb_snap_midp.setObjectName(u"pb_snap_midp")
|
||||
self.pb_snap_midp.setCheckable(True)
|
||||
self.pb_snap_midp.setAutoExclusive(False)
|
||||
|
||||
self.gridLayout_11.addWidget(self.pb_snap_midp, 0, 1, 1, 1)
|
||||
|
||||
self.pb_snap_angle = QPushButton(self.groupBox_5)
|
||||
self.pb_snap_angle.setObjectName(u"pb_snap_angle")
|
||||
self.pb_snap_angle.setCheckable(True)
|
||||
self.pb_snap_angle.setAutoExclusive(False)
|
||||
|
||||
self.gridLayout_11.addWidget(self.pb_snap_angle, 3, 1, 1, 1)
|
||||
|
||||
|
||||
self.verticalLayout_3.addWidget(self.groupBox_5)
|
||||
|
||||
self.tabWidget.addTab(self.widget, "")
|
||||
self.widget1 = QWidget()
|
||||
self.widget1.setObjectName(u"widget1")
|
||||
self.tabWidget.addTab(self.widget1, "")
|
||||
self.tabWidget.addTab(self.snaps, "")
|
||||
self.settings = QWidget()
|
||||
self.settings.setObjectName(u"settings")
|
||||
self.tabWidget.addTab(self.settings, "")
|
||||
|
||||
self.gridLayout.addWidget(self.tabWidget, 3, 0, 1, 1)
|
||||
|
||||
@ -582,7 +591,7 @@ class Ui_fluencyCAD(object):
|
||||
self.retranslateUi(fluencyCAD)
|
||||
|
||||
self.InputTab.setCurrentIndex(0)
|
||||
self.tabWidget.setCurrentIndex(1)
|
||||
self.tabWidget.setCurrentIndex(0)
|
||||
|
||||
|
||||
QMetaObject.connectSlotsByName(fluencyCAD)
|
||||
@ -710,8 +719,8 @@ class Ui_fluencyCAD(object):
|
||||
self.pushButton_8.setText(QCoreApplication.translate("fluencyCAD", u"Pnt", None))
|
||||
self.pb_snap_midp.setText(QCoreApplication.translate("fluencyCAD", u"MidP", None))
|
||||
self.pb_snap_angle.setText(QCoreApplication.translate("fluencyCAD", u"Angles", None))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.widget), QCoreApplication.translate("fluencyCAD", u"Setg 1", None))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.widget1), QCoreApplication.translate("fluencyCAD", u"Setg 2", None))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.snaps), QCoreApplication.translate("fluencyCAD", u"Setg 1", None))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.settings), QCoreApplication.translate("fluencyCAD", u"Setg 2", None))
|
||||
self.menuFile.setTitle(QCoreApplication.translate("fluencyCAD", u"File", None))
|
||||
self.menuSettings.setTitle(QCoreApplication.translate("fluencyCAD", u"Settings", None))
|
||||
# retranslateUi
|
||||
|
@ -24,15 +24,48 @@ class SketchWidget(QWidget):
|
||||
self.hovered_point = None
|
||||
self.selected_line = None
|
||||
|
||||
### Display Settings
|
||||
self.snapping_range = 20 # Range in pixels for snapping
|
||||
self.zoom = 1
|
||||
|
||||
# Mouse Input
|
||||
self.setMouseTracking(True)
|
||||
self.mouse_mode = False
|
||||
self.is_construct = False
|
||||
|
||||
# Solver
|
||||
self.solv = SolverSystem()
|
||||
|
||||
self.sketch = Sketch2d()
|
||||
|
||||
def act_line_mode(self, checked):
|
||||
if checked:
|
||||
self.mouse_mode = 'line'
|
||||
print(self.mouse_mode)
|
||||
else:
|
||||
self.mouse_mode = None
|
||||
|
||||
def act_constrain_pt_pt_mode(self):
|
||||
self.mouse_mode = 'pt_pt'
|
||||
|
||||
def act_constrain_pt_line_mode(self):
|
||||
self.mouse_mode = 'pt_line'
|
||||
|
||||
def act_constrain_horiz_line_mode(self):
|
||||
self.mouse_mode = 'horiz'
|
||||
|
||||
def act_constrain_vert_line_mode(self):
|
||||
self.mouse_mode = 'vert'
|
||||
|
||||
def act_constrain_distance_mode(self):
|
||||
self.mouse_mode = 'distance'
|
||||
|
||||
def act_constrain_mid_point_mode(self):
|
||||
self.sketchWidget.mouse_mode = 'pb_con_mid'
|
||||
|
||||
def on_construct_change(self, checked):
|
||||
self.is_construct = checked
|
||||
|
||||
def create_sketch(self, sketch_in ):
|
||||
self.sketch = Sketch2d()
|
||||
self.sketch.id = sketch_in.id
|
||||
@ -46,6 +79,7 @@ class SketchWidget(QWidget):
|
||||
return self.sketch
|
||||
|
||||
def reset_buffers(self):
|
||||
self.mouse_mode = None
|
||||
self.line_draw_buffer = [None, None]
|
||||
self.drag_buffer = [None, None]
|
||||
self.main_buffer = [None, None]
|
||||
@ -315,6 +349,7 @@ class SketchWidget(QWidget):
|
||||
self.drag_buffer[0] = self.get_handle_from_ui_point(self.hovered_point)
|
||||
|
||||
if event.button() == Qt.RightButton and self.mouse_mode:
|
||||
self.constrain_done.emit()
|
||||
self.reset_buffers()
|
||||
|
||||
if event.button() == Qt.LeftButton and self.mouse_mode == "line":
|
||||
@ -329,6 +364,10 @@ class SketchWidget(QWidget):
|
||||
v = clicked_pos.y()
|
||||
|
||||
point = Point2D(u,v)
|
||||
print("construct", self.is_construct )
|
||||
# Construction mode
|
||||
point.is_helper = self.is_construct
|
||||
|
||||
self.sketch.add_point(point)
|
||||
|
||||
self.line_draw_buffer[0] = point
|
||||
@ -337,8 +376,12 @@ class SketchWidget(QWidget):
|
||||
|
||||
u = clicked_pos.x()
|
||||
v = clicked_pos.y()
|
||||
|
||||
print("construct", self.is_construct)
|
||||
point = Point2D(u, v)
|
||||
|
||||
# Construction mode
|
||||
point.is_helper = self.is_construct
|
||||
|
||||
self.sketch.add_point(point)
|
||||
|
||||
self.line_draw_buffer[1] = point
|
||||
@ -348,6 +391,10 @@ class SketchWidget(QWidget):
|
||||
if self.line_draw_buffer[0] and self.line_draw_buffer[1]:
|
||||
|
||||
line = Line2D(self.line_draw_buffer[0], self.line_draw_buffer[1])
|
||||
|
||||
# Construction mode
|
||||
line.is_helper = self.is_construct
|
||||
|
||||
self.sketch.add_line(line)
|
||||
|
||||
# Reset the buffer for the next line segment
|
||||
|
31
gui.ui
31
gui.ui
@ -733,6 +733,9 @@
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoExclusive">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
@ -813,6 +816,9 @@
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoExclusive">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
@ -838,7 +844,7 @@
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="">
|
||||
<widget class="QWidget" name="snaps">
|
||||
<attribute name="title">
|
||||
<string>Setg 1</string>
|
||||
</attribute>
|
||||
@ -882,6 +888,9 @@
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoExclusive">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
@ -919,6 +928,9 @@
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoExclusive">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
@ -929,6 +941,9 @@
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoExclusive">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
@ -949,6 +964,12 @@
|
||||
<property name="text">
|
||||
<string>Pnt</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoExclusive">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
@ -959,6 +980,9 @@
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoExclusive">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
@ -969,6 +993,9 @@
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoExclusive">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
@ -976,7 +1003,7 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="">
|
||||
<widget class="QWidget" name="settings">
|
||||
<attribute name="title">
|
||||
<string>Setg 2</string>
|
||||
</attribute>
|
||||
|
63
main.py
63
main.py
@ -120,13 +120,13 @@ class MainWindow(QMainWindow):
|
||||
self.ui.pb_flip_face.pressed.connect(self.on_flip_face)
|
||||
|
||||
###Modes
|
||||
self.ui.pb_linetool.pressed.connect(self.act_line_mode)
|
||||
self.ui.pb_con_ptpt.pressed.connect(self.act_constrain_pt_pt_mode)
|
||||
self.ui.pb_con_line.pressed.connect(self.act_constrain_pt_line_mode)
|
||||
self.ui.pb_con_horiz.pressed.connect(self.act_constrain_horiz_line_mode)
|
||||
self.ui.pb_con_vert.pressed.connect(self.act_constrain_vert_line_mode)
|
||||
self.ui.pb_con_dist.pressed.connect(self.act_constrain_distance_mode)
|
||||
self.ui.pb_con_mid.pressed.connect(self.act_constrain_mid_point_mode)
|
||||
self.ui.pb_linetool.clicked.connect(self.sketchWidget.act_line_mode)
|
||||
self.ui.pb_con_ptpt.clicked.connect(self.sketchWidget.act_constrain_pt_pt_mode)
|
||||
self.ui.pb_con_line.clicked.connect(self.sketchWidget.act_constrain_pt_line_mode)
|
||||
self.ui.pb_con_horiz.clicked.connect(self.sketchWidget.act_constrain_horiz_line_mode)
|
||||
self.ui.pb_con_vert.clicked.connect(self.sketchWidget.act_constrain_vert_line_mode)
|
||||
self.ui.pb_con_dist.clicked.connect(self.sketchWidget.act_constrain_distance_mode)
|
||||
self.ui.pb_con_mid.clicked.connect(self.sketchWidget.act_constrain_mid_point_mode)
|
||||
|
||||
### Operations
|
||||
self.ui.pb_extrdop.pressed.connect(self.send_extrude)
|
||||
@ -137,9 +137,8 @@ class MainWindow(QMainWindow):
|
||||
self.setFocusPolicy(Qt.StrongFocus)
|
||||
|
||||
self.send_command.connect(self.custom_3D_Widget.on_receive_command)
|
||||
|
||||
self.ui.actionNew_Project.triggered.connect(self.new_project)
|
||||
|
||||
self.ui.pb_enable_construct.clicked.connect(self.sketchWidget.on_construct_change)
|
||||
self.project = Project()
|
||||
self.new_project()
|
||||
|
||||
@ -156,7 +155,6 @@ class MainWindow(QMainWindow):
|
||||
self.project.timeline = timeline
|
||||
self.new_component()
|
||||
|
||||
|
||||
def new_component(self):
|
||||
print("Creating a new component...")
|
||||
|
||||
@ -270,7 +268,7 @@ class MainWindow(QMainWindow):
|
||||
sketch.original_sketch = sketch_from_widget
|
||||
|
||||
#Get parameters
|
||||
points = sketch_from_widget.points
|
||||
points = [point for point in sketch_from_widget.points if hasattr(point, 'is_helper') and not point.is_helper]
|
||||
|
||||
sketch.convert_points_for_sdf(points)
|
||||
sketch.id = sketch_from_widget.id
|
||||
@ -353,49 +351,6 @@ class MainWindow(QMainWindow):
|
||||
def on_flip_face(self):
|
||||
self.send_command.emit("flip")
|
||||
|
||||
def act_line_mode(self):
|
||||
if not self.ui.pb_linetool.isChecked():
|
||||
self.sketchWidget.mouse_mode = 'line'
|
||||
else:
|
||||
self.sketchWidget.mouse_mode = None
|
||||
self.sketchWidget.line_draw_buffer = [None, None]
|
||||
|
||||
def act_constrain_pt_pt_mode(self):
|
||||
if not self.ui.pb_con_ptpt.isChecked():
|
||||
self.sketchWidget.mouse_mode = 'pt_pt'
|
||||
else:
|
||||
self.sketchWidget.mouse_mode = None
|
||||
|
||||
def act_constrain_pt_line_mode(self):
|
||||
if not self.ui.pb_con_line.isChecked():
|
||||
self.sketchWidget.mouse_mode = 'pt_line'
|
||||
else:
|
||||
self.sketchWidget.mouse_mode = None
|
||||
|
||||
def act_constrain_horiz_line_mode(self):
|
||||
if not self.ui.pb_con_horiz.isChecked():
|
||||
self.sketchWidget.mouse_mode = 'horiz'
|
||||
else:
|
||||
self.sketchWidget.mouse_mode = None
|
||||
|
||||
def act_constrain_vert_line_mode(self):
|
||||
if not self.ui.pb_con_vert.isChecked():
|
||||
self.sketchWidget.mouse_mode = 'vert'
|
||||
else:
|
||||
self.sketchWidget.mouse_mode = None
|
||||
|
||||
def act_constrain_distance_mode(self):
|
||||
if not self.ui.pb_con_dist.isChecked():
|
||||
self.sketchWidget.mouse_mode = 'distance'
|
||||
else:
|
||||
self.sketchWidget.mouse_mode = None
|
||||
|
||||
def act_constrain_mid_point_mode(self):
|
||||
if not self.ui.pb_con_mid.isChecked():
|
||||
self.sketchWidget.mouse_mode = 'pb_con_mid'
|
||||
else:
|
||||
self.sketchWidget.mouse_mode = None
|
||||
|
||||
def draw_op_complete(self):
|
||||
# safely disable the line modes
|
||||
self.ui.pb_linetool.setChecked(False)
|
||||
|
Loading…
x
Reference in New Issue
Block a user