diff --git a/WorkFeature/Doc/WF_documentation b/WorkFeature/Doc/WF_documentation
deleted file mode 100644
index e9fa5dd..0000000
Binary files a/WorkFeature/Doc/WF_documentation and /dev/null differ
diff --git a/WorkFeature/Doc/WF_releasesDocumentation.pdf b/WorkFeature/Doc/WF_releasesDocumentation.pdf
new file mode 100644
index 0000000..a093d3c
Binary files /dev/null and b/WorkFeature/Doc/WF_releasesDocumentation.pdf differ
diff --git a/WorkFeature/Icons/WF_FCCamera_02.svg b/WorkFeature/Icons/WF_FCCamera_02.svg
new file mode 100644
index 0000000..b03199b
--- /dev/null
+++ b/WorkFeature/Icons/WF_FCCamera_02.svg
@@ -0,0 +1,186 @@
+
+
+
+
diff --git a/WorkFeature/Icons/WF_FCCamera_06.svg b/WorkFeature/Icons/WF_FCCamera_06.svg
new file mode 100644
index 0000000..9a634b1
--- /dev/null
+++ b/WorkFeature/Icons/WF_FCCamera_06.svg
@@ -0,0 +1,115 @@
+
+
+
+
diff --git a/WorkFeature/Icons/WF_angleAxisAxis.svg b/WorkFeature/Icons/WF_angleAxisAxis.svg
new file mode 100644
index 0000000..ebb5eda
--- /dev/null
+++ b/WorkFeature/Icons/WF_angleAxisAxis.svg
@@ -0,0 +1,1205 @@
+
+
+
+
diff --git a/WorkFeature/Icons/WF_angleBetween.svg b/WorkFeature/Icons/WF_angleBetween.svg
new file mode 100644
index 0000000..89e8ab2
--- /dev/null
+++ b/WorkFeature/Icons/WF_angleBetween.svg
@@ -0,0 +1,489 @@
+
+
+
+
diff --git a/WorkFeature/Icons/WF_distanceBetween.svg b/WorkFeature/Icons/WF_distanceBetween.svg
new file mode 100644
index 0000000..d49d130
--- /dev/null
+++ b/WorkFeature/Icons/WF_distanceBetween.svg
@@ -0,0 +1,642 @@
+
+
+
+
diff --git a/WorkFeature/Icons/WF_dome.svg b/WorkFeature/Icons/WF_dome.svg
new file mode 100644
index 0000000..64b930c
--- /dev/null
+++ b/WorkFeature/Icons/WF_dome.svg
@@ -0,0 +1,1529 @@
+
+
+
+
diff --git a/WorkFeature/Icons/WF_pointText.svg b/WorkFeature/Icons/WF_pointText.svg
new file mode 100644
index 0000000..c39254b
--- /dev/null
+++ b/WorkFeature/Icons/WF_pointText.svg
@@ -0,0 +1,165 @@
+
+
+
+
diff --git a/WorkFeature/Icons/WF_sphere.svg b/WorkFeature/Icons/WF_sphere.svg
new file mode 100644
index 0000000..9068807
--- /dev/null
+++ b/WorkFeature/Icons/WF_sphere.svg
@@ -0,0 +1,274 @@
+
+
+
+
diff --git a/WorkFeature/WFGui_2015.py b/WorkFeature/WFGui_2015.py
index 49ed544..860287a 100644
--- a/WorkFeature/WFGui_2015.py
+++ b/WorkFeature/WFGui_2015.py
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
-# Form implementation generated from reading ui file 'WFGui_2015_03_31.ui'
+# Form implementation generated from reading ui file 'WFGui_2015_05_31.ui'
#
-# Created: Tue Mar 31 16:41:08 2015
+# Created: Sun May 31 14:43:07 2015
# by: PySide UI code generator 4.9.1
#
# WARNING! All changes made in this file will be lost!
@@ -17,7 +17,7 @@ except AttributeError:
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
- Form.resize(349, 693)
+ Form.resize(364, 693)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Axes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
Form.setWindowIcon(icon)
@@ -27,7 +27,7 @@ class Ui_Form(object):
self.scrollArea.setWidgetResizable(True)
self.scrollArea.setObjectName(_fromUtf8("scrollArea"))
self.scrollAreaWidgetContents_2 = QtGui.QWidget()
- self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 340, 622))
+ self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 344, 638))
self.scrollAreaWidgetContents_2.setObjectName(_fromUtf8("scrollAreaWidgetContents_2"))
self.gridLayout_9 = QtGui.QGridLayout(self.scrollAreaWidgetContents_2)
self.gridLayout_9.setObjectName(_fromUtf8("gridLayout_9"))
@@ -63,7 +63,7 @@ class Ui_Form(object):
self.gridLayout_3 = QtGui.QGridLayout(self.groupBox_5)
self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3"))
self.radioButton_verbose = QtGui.QRadioButton(self.groupBox_5)
- self.radioButton_verbose.setChecked(True)
+ self.radioButton_verbose.setChecked(False)
self.radioButton_verbose.setAutoExclusive(False)
self.radioButton_verbose.setObjectName(_fromUtf8("radioButton_verbose"))
self.gridLayout_3.addWidget(self.radioButton_verbose, 0, 0, 1, 1)
@@ -93,55 +93,41 @@ class Ui_Form(object):
self.Point_Tab1.setObjectName(_fromUtf8("Point_Tab1"))
self.gridLayout_7 = QtGui.QGridLayout(self.Point_Tab1)
self.gridLayout_7.setObjectName(_fromUtf8("gridLayout_7"))
- spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_7.addItem(spacerItem1, 9, 0, 1, 1)
- self.horizontalLayout = QtGui.QHBoxLayout()
- self.horizontalLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize)
- self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
- self.button_point_on_line = QtGui.QPushButton(self.Point_Tab1)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.button_point_on_line.sizePolicy().hasHeightForWidth())
- self.button_point_on_line.setSizePolicy(sizePolicy)
- self.button_point_on_line.setMaximumSize(QtCore.QSize(16777215, 16777215))
+ self.button_point_line_point = QtGui.QPushButton(self.Point_Tab1)
icon1 = QtGui.QIcon()
- icon1.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_alongLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_point_on_line.setIcon(icon1)
- self.button_point_on_line.setIconSize(QtCore.QSize(32, 32))
- self.button_point_on_line.setObjectName(_fromUtf8("button_point_on_line"))
- self.horizontalLayout.addWidget(self.button_point_on_line)
- self.distance_point_on_line = QtGui.QLineEdit(self.Point_Tab1)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.distance_point_on_line.sizePolicy().hasHeightForWidth())
- self.distance_point_on_line.setSizePolicy(sizePolicy)
- self.distance_point_on_line.setMinimumSize(QtCore.QSize(50, 0))
- self.distance_point_on_line.setMaximumSize(QtCore.QSize(60, 16777215))
- self.distance_point_on_line.setObjectName(_fromUtf8("distance_point_on_line"))
- self.horizontalLayout.addWidget(self.distance_point_on_line)
- self.gridLayout_7.addLayout(self.horizontalLayout, 5, 0, 1, 1)
- self.horizontalLayout_10 = QtGui.QHBoxLayout()
- self.horizontalLayout_10.setObjectName(_fromUtf8("horizontalLayout_10"))
- self.button_object_center = QtGui.QPushButton(self.Point_Tab1)
+ icon1.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_point_line_point.setIcon(icon1)
+ self.button_point_line_point.setIconSize(QtCore.QSize(32, 32))
+ self.button_point_line_point.setObjectName(_fromUtf8("button_point_line_point"))
+ self.gridLayout_7.addWidget(self.button_point_line_point, 8, 0, 1, 1)
+ self.button_face_center = QtGui.QPushButton(self.Point_Tab1)
icon2 = QtGui.QIcon()
- icon2.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_object_center.setIcon(icon2)
- self.button_object_center.setIconSize(QtCore.QSize(32, 32))
- self.button_object_center.setObjectName(_fromUtf8("button_object_center"))
- self.horizontalLayout_10.addWidget(self.button_object_center)
- self.checkBox_object_center = QtGui.QCheckBox(self.Point_Tab1)
- self.checkBox_object_center.setObjectName(_fromUtf8("checkBox_object_center"))
- self.horizontalLayout_10.addWidget(self.checkBox_object_center)
- self.gridLayout_7.addLayout(self.horizontalLayout_10, 0, 0, 1, 1)
+ icon2.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_face_center.setIcon(icon2)
+ self.button_face_center.setIconSize(QtCore.QSize(32, 32))
+ self.button_face_center.setObjectName(_fromUtf8("button_face_center"))
+ self.gridLayout_7.addWidget(self.button_face_center, 5, 0, 1, 1)
+ self.button_circle_center = QtGui.QPushButton(self.Point_Tab1)
+ icon3 = QtGui.QIcon()
+ icon3.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerCirclePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_circle_center.setIcon(icon3)
+ self.button_circle_center.setIconSize(QtCore.QSize(32, 32))
+ self.button_circle_center.setObjectName(_fromUtf8("button_circle_center"))
+ self.gridLayout_7.addWidget(self.button_circle_center, 4, 0, 1, 1)
+ self.button_Npoints_center = QtGui.QPushButton(self.Point_Tab1)
+ icon4 = QtGui.QIcon()
+ icon4.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_Npoints_center.setIcon(icon4)
+ self.button_Npoints_center.setIconSize(QtCore.QSize(32, 32))
+ self.button_Npoints_center.setObjectName(_fromUtf8("button_Npoints_center"))
+ self.gridLayout_7.addWidget(self.button_Npoints_center, 1, 0, 1, 1)
self.horizontalLayout_6 = QtGui.QHBoxLayout()
self.horizontalLayout_6.setObjectName(_fromUtf8("horizontalLayout_6"))
self.button_line_center = QtGui.QPushButton(self.Point_Tab1)
self.button_line_center.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_line_center.setIcon(icon3)
+ icon5 = QtGui.QIcon()
+ icon5.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_line_center.setIcon(icon5)
self.button_line_center.setIconSize(QtCore.QSize(32, 32))
self.button_line_center.setObjectName(_fromUtf8("button_line_center"))
self.horizontalLayout_6.addWidget(self.button_line_center)
@@ -154,48 +140,42 @@ class Ui_Form(object):
self.spin_line_center.setObjectName(_fromUtf8("spin_line_center"))
self.horizontalLayout_6.addWidget(self.spin_line_center)
self.gridLayout_7.addLayout(self.horizontalLayout_6, 2, 0, 1, 1)
- self.button_circle_center = QtGui.QPushButton(self.Point_Tab1)
- icon4 = QtGui.QIcon()
- icon4.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerCirclePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_circle_center.setIcon(icon4)
- self.button_circle_center.setIconSize(QtCore.QSize(32, 32))
- self.button_circle_center.setObjectName(_fromUtf8("button_circle_center"))
- self.gridLayout_7.addWidget(self.button_circle_center, 4, 0, 1, 1)
- self.button_Npoints_center = QtGui.QPushButton(self.Point_Tab1)
- icon5 = QtGui.QIcon()
- icon5.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_Npoints_center.setIcon(icon5)
- self.button_Npoints_center.setIconSize(QtCore.QSize(32, 32))
- self.button_Npoints_center.setObjectName(_fromUtf8("button_Npoints_center"))
- self.gridLayout_7.addWidget(self.button_Npoints_center, 1, 0, 1, 1)
- self.button_line_extrema = QtGui.QPushButton(self.Point_Tab1)
+ self.button_line_face_point = QtGui.QPushButton(self.Point_Tab1)
icon6 = QtGui.QIcon()
- icon6.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_extremaLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_line_extrema.setIcon(icon6)
+ icon6.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_line_face_point.setIcon(icon6)
+ self.button_line_face_point.setIconSize(QtCore.QSize(32, 32))
+ self.button_line_face_point.setObjectName(_fromUtf8("button_line_face_point"))
+ self.gridLayout_7.addWidget(self.button_line_face_point, 6, 0, 1, 1)
+ self.button_line_extrema = QtGui.QPushButton(self.Point_Tab1)
+ icon7 = QtGui.QIcon()
+ icon7.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_extremaLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_line_extrema.setIcon(icon7)
self.button_line_extrema.setIconSize(QtCore.QSize(32, 32))
self.button_line_extrema.setObjectName(_fromUtf8("button_line_extrema"))
self.gridLayout_7.addWidget(self.button_line_extrema, 3, 0, 1, 1)
+ spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_7.addItem(spacerItem1, 9, 0, 1, 1)
self.button_point_face_point = QtGui.QPushButton(self.Point_Tab1)
- icon7 = QtGui.QIcon()
- icon7.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_point_face_point.setIcon(icon7)
+ icon8 = QtGui.QIcon()
+ icon8.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_point_face_point.setIcon(icon8)
self.button_point_face_point.setIconSize(QtCore.QSize(32, 32))
self.button_point_face_point.setObjectName(_fromUtf8("button_point_face_point"))
- self.gridLayout_7.addWidget(self.button_point_face_point, 8, 0, 1, 1)
- self.button_face_center = QtGui.QPushButton(self.Point_Tab1)
- icon8 = QtGui.QIcon()
- icon8.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_face_center.setIcon(icon8)
- self.button_face_center.setIconSize(QtCore.QSize(32, 32))
- self.button_face_center.setObjectName(_fromUtf8("button_face_center"))
- self.gridLayout_7.addWidget(self.button_face_center, 6, 0, 1, 1)
- self.button_line_face_point = QtGui.QPushButton(self.Point_Tab1)
+ self.gridLayout_7.addWidget(self.button_point_face_point, 7, 0, 1, 1)
+ self.horizontalLayout_10 = QtGui.QHBoxLayout()
+ self.horizontalLayout_10.setObjectName(_fromUtf8("horizontalLayout_10"))
+ self.button_object_center = QtGui.QPushButton(self.Point_Tab1)
icon9 = QtGui.QIcon()
- icon9.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_line_face_point.setIcon(icon9)
- self.button_line_face_point.setIconSize(QtCore.QSize(32, 32))
- self.button_line_face_point.setObjectName(_fromUtf8("button_line_face_point"))
- self.gridLayout_7.addWidget(self.button_line_face_point, 7, 0, 1, 1)
+ icon9.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_object_center.setIcon(icon9)
+ self.button_object_center.setIconSize(QtCore.QSize(32, 32))
+ self.button_object_center.setObjectName(_fromUtf8("button_object_center"))
+ self.horizontalLayout_10.addWidget(self.button_object_center)
+ self.checkBox_object_center = QtGui.QCheckBox(self.Point_Tab1)
+ self.checkBox_object_center.setObjectName(_fromUtf8("checkBox_object_center"))
+ self.horizontalLayout_10.addWidget(self.checkBox_object_center)
+ self.gridLayout_7.addLayout(self.horizontalLayout_10, 0, 0, 1, 1)
icon10 = QtGui.QIcon()
icon10.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_point.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.tabWidget.addTab(self.Point_Tab1, icon10, _fromUtf8(""))
@@ -203,69 +183,46 @@ class Ui_Form(object):
self.Point_Tab2.setObjectName(_fromUtf8("Point_Tab2"))
self.gridLayout_31 = QtGui.QGridLayout(self.Point_Tab2)
self.gridLayout_31.setObjectName(_fromUtf8("gridLayout_31"))
- self.button_point_to_sketch = QtGui.QPushButton(self.Point_Tab2)
- icon11 = QtGui.QIcon()
- icon11.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2Sketch.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_point_to_sketch.setIcon(icon11)
- self.button_point_to_sketch.setIconSize(QtCore.QSize(32, 32))
- self.button_point_to_sketch.setObjectName(_fromUtf8("button_point_to_sketch"))
- self.gridLayout_31.addWidget(self.button_point_to_sketch, 6, 0, 1, 2)
- self.button_click_for_point = QtGui.QRadioButton(self.Point_Tab2)
- icon12 = QtGui.QIcon()
- icon12.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_click_for_point.setIcon(icon12)
- self.button_click_for_point.setIconSize(QtCore.QSize(32, 32))
- self.button_click_for_point.setCheckable(True)
- self.button_click_for_point.setObjectName(_fromUtf8("button_click_for_point"))
- self.gridLayout_31.addWidget(self.button_click_for_point, 4, 0, 1, 2)
- spacerItem2 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_31.addItem(spacerItem2, 7, 0, 1, 1)
self.button_twolines_point = QtGui.QPushButton(self.Point_Tab2)
- icon13 = QtGui.QIcon()
- icon13.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_twolines_point.setIcon(icon13)
+ icon11 = QtGui.QIcon()
+ icon11.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_twolines_point.setIcon(icon11)
self.button_twolines_point.setIconSize(QtCore.QSize(32, 32))
self.button_twolines_point.setObjectName(_fromUtf8("button_twolines_point"))
- self.gridLayout_31.addWidget(self.button_twolines_point, 0, 0, 1, 2)
- self.horizontalLayout_27 = QtGui.QHBoxLayout()
- self.horizontalLayout_27.setObjectName(_fromUtf8("horizontalLayout_27"))
- self.button_cut_wire_point = QtGui.QPushButton(self.Point_Tab2)
- self.button_cut_wire_point.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon14 = QtGui.QIcon()
- icon14.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWirePoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_cut_wire_point.setIcon(icon14)
- self.button_cut_wire_point.setIconSize(QtCore.QSize(32, 32))
- self.button_cut_wire_point.setObjectName(_fromUtf8("button_cut_wire_point"))
- self.horizontalLayout_27.addWidget(self.button_cut_wire_point)
- self.spin_wire_cut_point = QtGui.QSpinBox(self.Point_Tab2)
- self.spin_wire_cut_point.setMinimumSize(QtCore.QSize(40, 0))
- self.spin_wire_cut_point.setMaximumSize(QtCore.QSize(50, 16777215))
- self.spin_wire_cut_point.setMinimum(2)
- self.spin_wire_cut_point.setMaximum(100)
- self.spin_wire_cut_point.setSingleStep(1)
- self.spin_wire_cut_point.setObjectName(_fromUtf8("spin_wire_cut_point"))
- self.horizontalLayout_27.addWidget(self.spin_wire_cut_point)
- self.gridLayout_31.addLayout(self.horizontalLayout_27, 3, 0, 1, 2)
- self.button_object_base_point = QtGui.QPushButton(self.Point_Tab2)
- icon15 = QtGui.QIcon()
- icon15.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectBasePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_object_base_point.setIcon(icon15)
- self.button_object_base_point.setIconSize(QtCore.QSize(32, 32))
- self.button_object_base_point.setObjectName(_fromUtf8("button_object_base_point"))
- self.gridLayout_31.addWidget(self.button_object_base_point, 5, 0, 1, 2)
- self.button_point_line_point = QtGui.QPushButton(self.Point_Tab2)
- icon16 = QtGui.QIcon()
- icon16.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_point_line_point.setIcon(icon16)
- self.button_point_line_point.setIconSize(QtCore.QSize(32, 32))
- self.button_point_line_point.setObjectName(_fromUtf8("button_point_line_point"))
- self.gridLayout_31.addWidget(self.button_point_line_point, 1, 0, 1, 2)
+ self.gridLayout_31.addWidget(self.button_twolines_point, 0, 0, 1, 1)
+ self.horizontalLayout = QtGui.QHBoxLayout()
+ self.horizontalLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize)
+ self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
+ self.button_point_on_line = QtGui.QPushButton(self.Point_Tab2)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.button_point_on_line.sizePolicy().hasHeightForWidth())
+ self.button_point_on_line.setSizePolicy(sizePolicy)
+ self.button_point_on_line.setMaximumSize(QtCore.QSize(16777215, 16777215))
+ icon12 = QtGui.QIcon()
+ icon12.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_alongLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_point_on_line.setIcon(icon12)
+ self.button_point_on_line.setIconSize(QtCore.QSize(32, 32))
+ self.button_point_on_line.setObjectName(_fromUtf8("button_point_on_line"))
+ self.horizontalLayout.addWidget(self.button_point_on_line)
+ self.distance_point_on_line = QtGui.QLineEdit(self.Point_Tab2)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.distance_point_on_line.sizePolicy().hasHeightForWidth())
+ self.distance_point_on_line.setSizePolicy(sizePolicy)
+ self.distance_point_on_line.setMinimumSize(QtCore.QSize(50, 0))
+ self.distance_point_on_line.setMaximumSize(QtCore.QSize(60, 16777215))
+ self.distance_point_on_line.setObjectName(_fromUtf8("distance_point_on_line"))
+ self.horizontalLayout.addWidget(self.distance_point_on_line)
+ self.gridLayout_31.addLayout(self.horizontalLayout, 1, 0, 1, 1)
self.horizontalLayout_30 = QtGui.QHBoxLayout()
self.horizontalLayout_30.setObjectName(_fromUtf8("horizontalLayout_30"))
self.button_distPoint = QtGui.QPushButton(self.Point_Tab2)
- icon17 = QtGui.QIcon()
- icon17.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPointPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_distPoint.setIcon(icon17)
+ icon13 = QtGui.QIcon()
+ icon13.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPointPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_distPoint.setIcon(icon13)
self.button_distPoint.setIconSize(QtCore.QSize(32, 32))
self.button_distPoint.setObjectName(_fromUtf8("button_distPoint"))
self.horizontalLayout_30.addWidget(self.button_distPoint)
@@ -285,19 +242,67 @@ class Ui_Form(object):
self.spin_dist_point.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons)
self.spin_dist_point.setKeyboardTracking(False)
self.spin_dist_point.setMinimum(1)
- self.spin_dist_point.setMaximum(10)
+ self.spin_dist_point.setMaximum(100)
self.spin_dist_point.setSingleStep(1)
self.spin_dist_point.setProperty("value", 1)
self.spin_dist_point.setObjectName(_fromUtf8("spin_dist_point"))
self.horizontalLayout_30.addWidget(self.spin_dist_point)
self.gridLayout_31.addLayout(self.horizontalLayout_30, 2, 0, 1, 1)
- icon18 = QtGui.QIcon()
- icon18.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_point.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget.addTab(self.Point_Tab2, icon18, _fromUtf8(""))
+ self.horizontalLayout_27 = QtGui.QHBoxLayout()
+ self.horizontalLayout_27.setObjectName(_fromUtf8("horizontalLayout_27"))
+ self.button_cut_wire_point = QtGui.QPushButton(self.Point_Tab2)
+ self.button_cut_wire_point.setMaximumSize(QtCore.QSize(16777215, 16777215))
+ icon14 = QtGui.QIcon()
+ icon14.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWirePoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_cut_wire_point.setIcon(icon14)
+ self.button_cut_wire_point.setIconSize(QtCore.QSize(32, 32))
+ self.button_cut_wire_point.setObjectName(_fromUtf8("button_cut_wire_point"))
+ self.horizontalLayout_27.addWidget(self.button_cut_wire_point)
+ self.spin_wire_cut_point = QtGui.QSpinBox(self.Point_Tab2)
+ self.spin_wire_cut_point.setMinimumSize(QtCore.QSize(40, 0))
+ self.spin_wire_cut_point.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.spin_wire_cut_point.setMinimum(2)
+ self.spin_wire_cut_point.setMaximum(100)
+ self.spin_wire_cut_point.setSingleStep(1)
+ self.spin_wire_cut_point.setObjectName(_fromUtf8("spin_wire_cut_point"))
+ self.horizontalLayout_27.addWidget(self.spin_wire_cut_point)
+ self.gridLayout_31.addLayout(self.horizontalLayout_27, 3, 0, 1, 1)
+ self.button_click_for_point = QtGui.QRadioButton(self.Point_Tab2)
+ icon15 = QtGui.QIcon()
+ icon15.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_click_for_point.setIcon(icon15)
+ self.button_click_for_point.setIconSize(QtCore.QSize(32, 32))
+ self.button_click_for_point.setCheckable(True)
+ self.button_click_for_point.setObjectName(_fromUtf8("button_click_for_point"))
+ self.gridLayout_31.addWidget(self.button_click_for_point, 4, 0, 1, 1)
+ self.button_object_base_point = QtGui.QPushButton(self.Point_Tab2)
+ icon16 = QtGui.QIcon()
+ icon16.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectBasePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_object_base_point.setIcon(icon16)
+ self.button_object_base_point.setIconSize(QtCore.QSize(32, 32))
+ self.button_object_base_point.setObjectName(_fromUtf8("button_object_base_point"))
+ self.gridLayout_31.addWidget(self.button_object_base_point, 5, 0, 1, 1)
+ self.button_point_to_sketch = QtGui.QPushButton(self.Point_Tab2)
+ icon17 = QtGui.QIcon()
+ icon17.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2Sketch.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_point_to_sketch.setIcon(icon17)
+ self.button_point_to_sketch.setIconSize(QtCore.QSize(32, 32))
+ self.button_point_to_sketch.setObjectName(_fromUtf8("button_point_to_sketch"))
+ self.gridLayout_31.addWidget(self.button_point_to_sketch, 6, 0, 1, 1)
+ spacerItem2 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_31.addItem(spacerItem2, 7, 0, 1, 1)
+ self.tabWidget.addTab(self.Point_Tab2, icon10, _fromUtf8(""))
self.Axis_Tab1 = QtGui.QWidget()
self.Axis_Tab1.setObjectName(_fromUtf8("Axis_Tab1"))
self.gridLayout_32 = QtGui.QGridLayout(self.Axis_Tab1)
self.gridLayout_32.setObjectName(_fromUtf8("gridLayout_32"))
+ self.button_object_axis = QtGui.QPushButton(self.Axis_Tab1)
+ icon18 = QtGui.QIcon()
+ icon18.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_object_axis.setIcon(icon18)
+ self.button_object_axis.setIconSize(QtCore.QSize(32, 32))
+ self.button_object_axis.setObjectName(_fromUtf8("button_object_axis"))
+ self.gridLayout_32.addWidget(self.button_object_axis, 0, 0, 1, 1)
self.horizontalLayout_2 = QtGui.QHBoxLayout()
self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
self.button_twopoints_axis = QtGui.QPushButton(self.Axis_Tab1)
@@ -318,30 +323,23 @@ class Ui_Form(object):
self.extension_twopoints_axis.setObjectName(_fromUtf8("extension_twopoints_axis"))
self.horizontalLayout_2.addWidget(self.extension_twopoints_axis)
self.gridLayout_32.addLayout(self.horizontalLayout_2, 1, 0, 1, 1)
- self.button_object_axis = QtGui.QPushButton(self.Axis_Tab1)
- icon20 = QtGui.QIcon()
- icon20.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_object_axis.setIcon(icon20)
- self.button_object_axis.setIconSize(QtCore.QSize(32, 32))
- self.button_object_axis.setObjectName(_fromUtf8("button_object_axis"))
- self.gridLayout_32.addWidget(self.button_object_axis, 0, 0, 1, 1)
self.horizontalLayout_5 = QtGui.QHBoxLayout()
self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5"))
self.verticalLayout = QtGui.QVBoxLayout()
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
self.button_cylinder_axis = QtGui.QPushButton(self.Axis_Tab1)
self.button_cylinder_axis.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon21 = QtGui.QIcon()
- icon21.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinderAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_cylinder_axis.setIcon(icon21)
+ icon20 = QtGui.QIcon()
+ icon20.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinderAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_cylinder_axis.setIcon(icon20)
self.button_cylinder_axis.setIconSize(QtCore.QSize(32, 32))
self.button_cylinder_axis.setObjectName(_fromUtf8("button_cylinder_axis"))
self.verticalLayout.addWidget(self.button_cylinder_axis)
self.button_plane_axis = QtGui.QPushButton(self.Axis_Tab1)
self.button_plane_axis.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon22 = QtGui.QIcon()
- icon22.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_plane_axis.setIcon(icon22)
+ icon21 = QtGui.QIcon()
+ icon21.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_plane_axis.setIcon(icon21)
self.button_plane_axis.setIconSize(QtCore.QSize(32, 32))
self.button_plane_axis.setObjectName(_fromUtf8("button_plane_axis"))
self.verticalLayout.addWidget(self.button_plane_axis)
@@ -352,9 +350,9 @@ class Ui_Form(object):
sizePolicy.setHeightForWidth(self.button_face_normal.sizePolicy().hasHeightForWidth())
self.button_face_normal.setSizePolicy(sizePolicy)
self.button_face_normal.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon23 = QtGui.QIcon()
- icon23.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceNormal.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_face_normal.setIcon(icon23)
+ icon22 = QtGui.QIcon()
+ icon22.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceNormal.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_face_normal.setIcon(icon22)
self.button_face_normal.setIconSize(QtCore.QSize(32, 32))
self.button_face_normal.setObjectName(_fromUtf8("button_face_normal"))
self.verticalLayout.addWidget(self.button_face_normal)
@@ -374,24 +372,28 @@ class Ui_Form(object):
self.gridLayout.addWidget(self.extension_face_normal, 0, 0, 1, 1)
self.horizontalLayout_5.addWidget(self.frame_4)
self.gridLayout_32.addLayout(self.horizontalLayout_5, 2, 0, 1, 1)
- self.horizontalLayout_20 = QtGui.QHBoxLayout()
- self.horizontalLayout_20.setObjectName(_fromUtf8("horizontalLayout_20"))
+ self.horizontalLayout_18 = QtGui.QHBoxLayout()
+ self.horizontalLayout_18.setObjectName(_fromUtf8("horizontalLayout_18"))
self.button_point_line_axis = QtGui.QPushButton(self.Axis_Tab1)
self.button_point_line_axis.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon24 = QtGui.QIcon()
- icon24.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLineAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_point_line_axis.setIcon(icon24)
+ icon23 = QtGui.QIcon()
+ icon23.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLineAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_point_line_axis.setIcon(icon23)
self.button_point_line_axis.setIconSize(QtCore.QSize(32, 32))
self.button_point_line_axis.setObjectName(_fromUtf8("button_point_line_axis"))
- self.horizontalLayout_20.addWidget(self.button_point_line_axis)
+ self.horizontalLayout_18.addWidget(self.button_point_line_axis)
+ self.extension_line = QtGui.QLineEdit(self.Axis_Tab1)
+ self.extension_line.setMaximumSize(QtCore.QSize(40, 16777215))
+ self.extension_line.setObjectName(_fromUtf8("extension_line"))
+ self.horizontalLayout_18.addWidget(self.extension_line)
self.point_loc_comboBox = QtGui.QComboBox(self.Axis_Tab1)
self.point_loc_comboBox.setMaximumSize(QtCore.QSize(60, 16777215))
self.point_loc_comboBox.setObjectName(_fromUtf8("point_loc_comboBox"))
self.point_loc_comboBox.addItem(_fromUtf8(""))
self.point_loc_comboBox.addItem(_fromUtf8(""))
self.point_loc_comboBox.addItem(_fromUtf8(""))
- self.horizontalLayout_20.addWidget(self.point_loc_comboBox)
- self.gridLayout_32.addLayout(self.horizontalLayout_20, 3, 0, 1, 1)
+ self.horizontalLayout_18.addWidget(self.point_loc_comboBox)
+ self.gridLayout_32.addLayout(self.horizontalLayout_18, 3, 0, 1, 1)
self.horizontalLayout_7 = QtGui.QHBoxLayout()
self.horizontalLayout_7.setObjectName(_fromUtf8("horizontalLayout_7"))
self.button_line_point_axis = QtGui.QPushButton(self.Axis_Tab1)
@@ -402,9 +404,9 @@ class Ui_Form(object):
self.button_line_point_axis.setSizePolicy(sizePolicy)
self.button_line_point_axis.setMinimumSize(QtCore.QSize(0, 0))
self.button_line_point_axis.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon25 = QtGui.QIcon()
- icon25.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_line_point_axis.setIcon(icon25)
+ icon24 = QtGui.QIcon()
+ icon24.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_line_point_axis.setIcon(icon24)
self.button_line_point_axis.setIconSize(QtCore.QSize(32, 32))
self.button_line_point_axis.setObjectName(_fromUtf8("button_line_point_axis"))
self.horizontalLayout_7.addWidget(self.button_line_point_axis)
@@ -413,6 +415,13 @@ class Ui_Form(object):
self.extension_line_point_axis.setObjectName(_fromUtf8("extension_line_point_axis"))
self.horizontalLayout_7.addWidget(self.extension_line_point_axis)
self.gridLayout_32.addLayout(self.horizontalLayout_7, 4, 0, 1, 1)
+ self.button_twolines_axis = QtGui.QPushButton(self.Axis_Tab1)
+ icon25 = QtGui.QIcon()
+ icon25.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoLinesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_twolines_axis.setIcon(icon25)
+ self.button_twolines_axis.setIconSize(QtCore.QSize(32, 32))
+ self.button_twolines_axis.setObjectName(_fromUtf8("button_twolines_axis"))
+ self.gridLayout_32.addWidget(self.button_twolines_axis, 5, 0, 1, 1)
self.button_plane_point_line_axis = QtGui.QPushButton(self.Axis_Tab1)
icon26 = QtGui.QIcon()
icon26.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
@@ -420,78 +429,35 @@ class Ui_Form(object):
self.button_plane_point_line_axis.setIconSize(QtCore.QSize(32, 32))
self.button_plane_point_line_axis.setObjectName(_fromUtf8("button_plane_point_line_axis"))
self.gridLayout_32.addWidget(self.button_plane_point_line_axis, 6, 0, 1, 1)
- self.button_twolines_axis = QtGui.QPushButton(self.Axis_Tab1)
- icon27 = QtGui.QIcon()
- icon27.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoLinesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_twolines_axis.setIcon(icon27)
- self.button_twolines_axis.setIconSize(QtCore.QSize(32, 32))
- self.button_twolines_axis.setObjectName(_fromUtf8("button_twolines_axis"))
- self.gridLayout_32.addWidget(self.button_twolines_axis, 5, 0, 1, 1)
spacerItem3 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_32.addItem(spacerItem3, 8, 0, 1, 1)
- icon28 = QtGui.QIcon()
- icon28.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_axis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget.addTab(self.Axis_Tab1, icon28, _fromUtf8(""))
+ self.gridLayout_32.addItem(spacerItem3, 7, 0, 1, 1)
+ icon27 = QtGui.QIcon()
+ icon27.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_axis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget.addTab(self.Axis_Tab1, icon27, _fromUtf8(""))
self.Axis_Tab2 = QtGui.QWidget()
self.Axis_Tab2.setObjectName(_fromUtf8("Axis_Tab2"))
self.gridLayout_33 = QtGui.QGridLayout(self.Axis_Tab2)
self.gridLayout_33.setObjectName(_fromUtf8("gridLayout_33"))
- self.horizontalLayout_21 = QtGui.QHBoxLayout()
- self.horizontalLayout_21.setObjectName(_fromUtf8("horizontalLayout_21"))
- self.button_cut_axis = QtGui.QPushButton(self.Axis_Tab2)
- self.button_cut_axis.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon29 = QtGui.QIcon()
- icon29.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_cut_axis.setIcon(icon29)
- self.button_cut_axis.setIconSize(QtCore.QSize(32, 32))
- self.button_cut_axis.setObjectName(_fromUtf8("button_cut_axis"))
- self.horizontalLayout_21.addWidget(self.button_cut_axis)
- self.spin_axis_cut = QtGui.QSpinBox(self.Axis_Tab2)
- self.spin_axis_cut.setMinimumSize(QtCore.QSize(40, 0))
- self.spin_axis_cut.setMaximumSize(QtCore.QSize(50, 16777215))
- self.spin_axis_cut.setMinimum(2)
- self.spin_axis_cut.setMaximum(100)
- self.spin_axis_cut.setSingleStep(1)
- self.spin_axis_cut.setObjectName(_fromUtf8("spin_axis_cut"))
- self.horizontalLayout_21.addWidget(self.spin_axis_cut)
- self.gridLayout_33.addLayout(self.horizontalLayout_21, 4, 0, 1, 1)
- self.button_line_to_sketch = QtGui.QPushButton(self.Axis_Tab2)
- self.button_line_to_sketch.setIcon(icon11)
- self.button_line_to_sketch.setIconSize(QtCore.QSize(32, 32))
- self.button_line_to_sketch.setObjectName(_fromUtf8("button_line_to_sketch"))
- self.gridLayout_33.addWidget(self.button_line_to_sketch, 8, 0, 1, 1)
self.button_line_plane_axis = QtGui.QPushButton(self.Axis_Tab2)
- icon30 = QtGui.QIcon()
- icon30.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePlaneAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_line_plane_axis.setIcon(icon30)
+ icon28 = QtGui.QIcon()
+ icon28.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePlaneAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_line_plane_axis.setIcon(icon28)
self.button_line_plane_axis.setIconSize(QtCore.QSize(32, 32))
self.button_line_plane_axis.setObjectName(_fromUtf8("button_line_plane_axis"))
self.gridLayout_33.addWidget(self.button_line_plane_axis, 0, 0, 1, 1)
- self.horizontalLayout_26 = QtGui.QHBoxLayout()
- self.horizontalLayout_26.setObjectName(_fromUtf8("horizontalLayout_26"))
- self.button_cut_wire_axis = QtGui.QPushButton(self.Axis_Tab2)
- self.button_cut_wire_axis.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon31 = QtGui.QIcon()
- icon31.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWireAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_cut_wire_axis.setIcon(icon31)
- self.button_cut_wire_axis.setIconSize(QtCore.QSize(32, 32))
- self.button_cut_wire_axis.setObjectName(_fromUtf8("button_cut_wire_axis"))
- self.horizontalLayout_26.addWidget(self.button_cut_wire_axis)
- self.spin_wire_cut_axis = QtGui.QSpinBox(self.Axis_Tab2)
- self.spin_wire_cut_axis.setMinimumSize(QtCore.QSize(40, 0))
- self.spin_wire_cut_axis.setMaximumSize(QtCore.QSize(50, 16777215))
- self.spin_wire_cut_axis.setMinimum(2)
- self.spin_wire_cut_axis.setMaximum(100)
- self.spin_wire_cut_axis.setSingleStep(1)
- self.spin_wire_cut_axis.setObjectName(_fromUtf8("spin_wire_cut_axis"))
- self.horizontalLayout_26.addWidget(self.spin_wire_cut_axis)
- self.gridLayout_33.addLayout(self.horizontalLayout_26, 3, 0, 1, 1)
+ self.button_twoplanes_axis = QtGui.QPushButton(self.Axis_Tab2)
+ icon29 = QtGui.QIcon()
+ icon29.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2PlanesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_twoplanes_axis.setIcon(icon29)
+ self.button_twoplanes_axis.setIconSize(QtCore.QSize(32, 32))
+ self.button_twoplanes_axis.setObjectName(_fromUtf8("button_twoplanes_axis"))
+ self.gridLayout_33.addWidget(self.button_twoplanes_axis, 1, 0, 1, 1)
self.horizontalLayout_29 = QtGui.QHBoxLayout()
self.horizontalLayout_29.setObjectName(_fromUtf8("horizontalLayout_29"))
self.button_distLine = QtGui.QPushButton(self.Axis_Tab2)
- icon32 = QtGui.QIcon()
- icon32.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_distLine.setIcon(icon32)
+ icon30 = QtGui.QIcon()
+ icon30.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_distLine.setIcon(icon30)
self.button_distLine.setIconSize(QtCore.QSize(32, 32))
self.button_distLine.setObjectName(_fromUtf8("button_distLine"))
self.horizontalLayout_29.addWidget(self.button_distLine)
@@ -511,35 +477,81 @@ class Ui_Form(object):
self.spin_dist_line.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons)
self.spin_dist_line.setKeyboardTracking(False)
self.spin_dist_line.setMinimum(1)
- self.spin_dist_line.setMaximum(10)
+ self.spin_dist_line.setMaximum(100)
self.spin_dist_line.setSingleStep(1)
self.spin_dist_line.setProperty("value", 1)
self.spin_dist_line.setObjectName(_fromUtf8("spin_dist_line"))
self.horizontalLayout_29.addWidget(self.spin_dist_line)
self.gridLayout_33.addLayout(self.horizontalLayout_29, 2, 0, 1, 1)
- self.button_object_base_axes = QtGui.QPushButton(self.Axis_Tab2)
+ self.horizontalLayout_31 = QtGui.QHBoxLayout()
+ self.horizontalLayout_31.setObjectName(_fromUtf8("horizontalLayout_31"))
+ self.button_angleLine = QtGui.QPushButton(self.Axis_Tab2)
+ icon31 = QtGui.QIcon()
+ icon31.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_angleLine.setIcon(icon31)
+ self.button_angleLine.setIconSize(QtCore.QSize(32, 32))
+ self.button_angleLine.setObjectName(_fromUtf8("button_angleLine"))
+ self.horizontalLayout_31.addWidget(self.button_angleLine)
+ self.angle_line = QtGui.QLineEdit(self.Axis_Tab2)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.angle_line.sizePolicy().hasHeightForWidth())
+ self.angle_line.setSizePolicy(sizePolicy)
+ self.angle_line.setMinimumSize(QtCore.QSize(40, 0))
+ self.angle_line.setMaximumSize(QtCore.QSize(40, 16777215))
+ self.angle_line.setObjectName(_fromUtf8("angle_line"))
+ self.horizontalLayout_31.addWidget(self.angle_line)
+ self.spin_angle_line = QtGui.QSpinBox(self.Axis_Tab2)
+ self.spin_angle_line.setMinimumSize(QtCore.QSize(30, 0))
+ self.spin_angle_line.setMaximumSize(QtCore.QSize(30, 16777215))
+ self.spin_angle_line.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons)
+ self.spin_angle_line.setKeyboardTracking(False)
+ self.spin_angle_line.setMinimum(1)
+ self.spin_angle_line.setMaximum(100)
+ self.spin_angle_line.setSingleStep(1)
+ self.spin_angle_line.setProperty("value", 1)
+ self.spin_angle_line.setObjectName(_fromUtf8("spin_angle_line"))
+ self.horizontalLayout_31.addWidget(self.spin_angle_line)
+ self.gridLayout_33.addLayout(self.horizontalLayout_31, 3, 0, 1, 1)
+ self.horizontalLayout_26 = QtGui.QHBoxLayout()
+ self.horizontalLayout_26.setObjectName(_fromUtf8("horizontalLayout_26"))
+ self.button_cut_wire_axis = QtGui.QPushButton(self.Axis_Tab2)
+ self.button_cut_wire_axis.setMaximumSize(QtCore.QSize(16777215, 16777215))
+ icon32 = QtGui.QIcon()
+ icon32.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWireAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_cut_wire_axis.setIcon(icon32)
+ self.button_cut_wire_axis.setIconSize(QtCore.QSize(32, 32))
+ self.button_cut_wire_axis.setObjectName(_fromUtf8("button_cut_wire_axis"))
+ self.horizontalLayout_26.addWidget(self.button_cut_wire_axis)
+ self.spin_wire_cut_axis = QtGui.QSpinBox(self.Axis_Tab2)
+ self.spin_wire_cut_axis.setMinimumSize(QtCore.QSize(40, 0))
+ self.spin_wire_cut_axis.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.spin_wire_cut_axis.setMinimum(2)
+ self.spin_wire_cut_axis.setMaximum(100)
+ self.spin_wire_cut_axis.setSingleStep(1)
+ self.spin_wire_cut_axis.setObjectName(_fromUtf8("spin_wire_cut_axis"))
+ self.horizontalLayout_26.addWidget(self.spin_wire_cut_axis)
+ self.gridLayout_33.addLayout(self.horizontalLayout_26, 4, 0, 1, 1)
+ self.horizontalLayout_21 = QtGui.QHBoxLayout()
+ self.horizontalLayout_21.setObjectName(_fromUtf8("horizontalLayout_21"))
+ self.button_cut_axis = QtGui.QPushButton(self.Axis_Tab2)
+ self.button_cut_axis.setMaximumSize(QtCore.QSize(16777215, 16777215))
icon33 = QtGui.QIcon()
- icon33.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_baseObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_object_base_axes.setIcon(icon33)
- self.button_object_base_axes.setIconSize(QtCore.QSize(32, 32))
- self.button_object_base_axes.setObjectName(_fromUtf8("button_object_base_axes"))
- self.gridLayout_33.addWidget(self.button_object_base_axes, 7, 0, 1, 1)
- spacerItem4 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_33.addItem(spacerItem4, 9, 0, 1, 1)
- self.button_click_for_axis = QtGui.QRadioButton(self.Axis_Tab2)
- icon34 = QtGui.QIcon()
- icon34.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_click_for_axis.setIcon(icon34)
- self.button_click_for_axis.setIconSize(QtCore.QSize(32, 32))
- self.button_click_for_axis.setObjectName(_fromUtf8("button_click_for_axis"))
- self.gridLayout_33.addWidget(self.button_click_for_axis, 6, 0, 1, 1)
- self.button_twoplanes_axis = QtGui.QPushButton(self.Axis_Tab2)
- icon35 = QtGui.QIcon()
- icon35.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2PlanesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_twoplanes_axis.setIcon(icon35)
- self.button_twoplanes_axis.setIconSize(QtCore.QSize(32, 32))
- self.button_twoplanes_axis.setObjectName(_fromUtf8("button_twoplanes_axis"))
- self.gridLayout_33.addWidget(self.button_twoplanes_axis, 1, 0, 1, 1)
+ icon33.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_cut_axis.setIcon(icon33)
+ self.button_cut_axis.setIconSize(QtCore.QSize(32, 32))
+ self.button_cut_axis.setObjectName(_fromUtf8("button_cut_axis"))
+ self.horizontalLayout_21.addWidget(self.button_cut_axis)
+ self.spin_axis_cut = QtGui.QSpinBox(self.Axis_Tab2)
+ self.spin_axis_cut.setMinimumSize(QtCore.QSize(40, 0))
+ self.spin_axis_cut.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.spin_axis_cut.setMinimum(2)
+ self.spin_axis_cut.setMaximum(100)
+ self.spin_axis_cut.setSingleStep(1)
+ self.spin_axis_cut.setObjectName(_fromUtf8("spin_axis_cut"))
+ self.horizontalLayout_21.addWidget(self.spin_axis_cut)
+ self.gridLayout_33.addLayout(self.horizontalLayout_21, 5, 0, 1, 1)
self.horizontalLayout_22 = QtGui.QHBoxLayout()
self.horizontalLayout_22.setObjectName(_fromUtf8("horizontalLayout_22"))
self.button_extension_axis = QtGui.QPushButton(self.Axis_Tab2)
@@ -548,9 +560,9 @@ class Ui_Form(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.button_extension_axis.sizePolicy().hasHeightForWidth())
self.button_extension_axis.setSizePolicy(sizePolicy)
- icon36 = QtGui.QIcon()
- icon36.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargeLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_extension_axis.setIcon(icon36)
+ icon34 = QtGui.QIcon()
+ icon34.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargeLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_extension_axis.setIcon(icon34)
self.button_extension_axis.setIconSize(QtCore.QSize(32, 32))
self.button_extension_axis.setObjectName(_fromUtf8("button_extension_axis"))
self.horizontalLayout_22.addWidget(self.button_extension_axis)
@@ -564,10 +576,29 @@ class Ui_Form(object):
self.extension_axis.setMaximumSize(QtCore.QSize(50, 16777215))
self.extension_axis.setObjectName(_fromUtf8("extension_axis"))
self.horizontalLayout_22.addWidget(self.extension_axis)
- self.gridLayout_33.addLayout(self.horizontalLayout_22, 5, 0, 1, 1)
- icon37 = QtGui.QIcon()
- icon37.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_axis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget.addTab(self.Axis_Tab2, icon37, _fromUtf8(""))
+ self.gridLayout_33.addLayout(self.horizontalLayout_22, 6, 0, 1, 1)
+ self.button_click_for_axis = QtGui.QRadioButton(self.Axis_Tab2)
+ icon35 = QtGui.QIcon()
+ icon35.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_click_for_axis.setIcon(icon35)
+ self.button_click_for_axis.setIconSize(QtCore.QSize(32, 32))
+ self.button_click_for_axis.setObjectName(_fromUtf8("button_click_for_axis"))
+ self.gridLayout_33.addWidget(self.button_click_for_axis, 7, 0, 1, 1)
+ self.button_object_base_axes = QtGui.QPushButton(self.Axis_Tab2)
+ icon36 = QtGui.QIcon()
+ icon36.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_baseObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_object_base_axes.setIcon(icon36)
+ self.button_object_base_axes.setIconSize(QtCore.QSize(32, 32))
+ self.button_object_base_axes.setObjectName(_fromUtf8("button_object_base_axes"))
+ self.gridLayout_33.addWidget(self.button_object_base_axes, 8, 0, 1, 1)
+ self.button_line_to_sketch = QtGui.QPushButton(self.Axis_Tab2)
+ self.button_line_to_sketch.setIcon(icon17)
+ self.button_line_to_sketch.setIconSize(QtCore.QSize(32, 32))
+ self.button_line_to_sketch.setObjectName(_fromUtf8("button_line_to_sketch"))
+ self.gridLayout_33.addWidget(self.button_line_to_sketch, 9, 0, 1, 1)
+ spacerItem4 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_33.addItem(spacerItem4, 10, 0, 1, 1)
+ self.tabWidget.addTab(self.Axis_Tab2, icon27, _fromUtf8(""))
self.tab_4 = QtGui.QWidget()
self.tab_4.setObjectName(_fromUtf8("tab_4"))
self.gridLayout_22 = QtGui.QGridLayout(self.tab_4)
@@ -575,9 +606,9 @@ class Ui_Form(object):
self.horizontalLayout_24 = QtGui.QHBoxLayout()
self.horizontalLayout_24.setObjectName(_fromUtf8("horizontalLayout_24"))
self.button_cut_circle = QtGui.QPushButton(self.tab_4)
- icon38 = QtGui.QIcon()
- icon38.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_cut_circle.setIcon(icon38)
+ icon37 = QtGui.QIcon()
+ icon37.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_cut_circle.setIcon(icon37)
self.button_cut_circle.setIconSize(QtCore.QSize(32, 32))
self.button_cut_circle.setObjectName(_fromUtf8("button_cut_circle"))
self.horizontalLayout_24.addWidget(self.button_cut_circle)
@@ -593,9 +624,9 @@ class Ui_Form(object):
self.horizontalLayout_11 = QtGui.QHBoxLayout()
self.horizontalLayout_11.setObjectName(_fromUtf8("horizontalLayout_11"))
self.button_linecenter_circle = QtGui.QPushButton(self.tab_4)
- icon39 = QtGui.QIcon()
- icon39.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineCenterCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_linecenter_circle.setIcon(icon39)
+ icon38 = QtGui.QIcon()
+ icon38.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineCenterCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_linecenter_circle.setIcon(icon38)
self.button_linecenter_circle.setIconSize(QtCore.QSize(32, 32))
self.button_linecenter_circle.setObjectName(_fromUtf8("button_linecenter_circle"))
self.horizontalLayout_11.addWidget(self.button_linecenter_circle)
@@ -606,31 +637,31 @@ class Ui_Form(object):
self.horizontalLayout_11.addWidget(self.radius_circle)
self.gridLayout_22.addLayout(self.horizontalLayout_11, 0, 0, 1, 1)
self.button_linepoint_circle = QtGui.QPushButton(self.tab_4)
- icon40 = QtGui.QIcon()
- icon40.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_linepoint_circle.setIcon(icon40)
+ icon39 = QtGui.QIcon()
+ icon39.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_linepoint_circle.setIcon(icon39)
self.button_linepoint_circle.setIconSize(QtCore.QSize(32, 32))
self.button_linepoint_circle.setObjectName(_fromUtf8("button_linepoint_circle"))
self.gridLayout_22.addWidget(self.button_linepoint_circle, 1, 0, 1, 1)
spacerItem5 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.gridLayout_22.addItem(spacerItem5, 5, 0, 1, 1)
self.button_3points_ellipse = QtGui.QPushButton(self.tab_4)
- icon41 = QtGui.QIcon()
- icon41.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsEllipse.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_3points_ellipse.setIcon(icon41)
+ icon40 = QtGui.QIcon()
+ icon40.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsEllipse.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_3points_ellipse.setIcon(icon40)
self.button_3points_ellipse.setIconSize(QtCore.QSize(32, 32))
self.button_3points_ellipse.setObjectName(_fromUtf8("button_3points_ellipse"))
self.gridLayout_22.addWidget(self.button_3points_ellipse, 4, 0, 1, 1)
self.button_3points_circle = QtGui.QPushButton(self.tab_4)
- icon42 = QtGui.QIcon()
- icon42.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_3points_circle.setIcon(icon42)
+ icon41 = QtGui.QIcon()
+ icon41.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_3points_circle.setIcon(icon41)
self.button_3points_circle.setIconSize(QtCore.QSize(32, 32))
self.button_3points_circle.setObjectName(_fromUtf8("button_3points_circle"))
self.gridLayout_22.addWidget(self.button_3points_circle, 2, 0, 1, 1)
- icon43 = QtGui.QIcon()
- icon43.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_circle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget.addTab(self.tab_4, icon43, _fromUtf8(""))
+ icon42 = QtGui.QIcon()
+ icon42.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_circle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget.addTab(self.tab_4, icon42, _fromUtf8(""))
self.Plane_Tab1 = QtGui.QWidget()
self.Plane_Tab1.setObjectName(_fromUtf8("Plane_Tab1"))
self.gridLayout_4 = QtGui.QGridLayout(self.Plane_Tab1)
@@ -645,9 +676,9 @@ class Ui_Form(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.button_click_for_plane.sizePolicy().hasHeightForWidth())
self.button_click_for_plane.setSizePolicy(sizePolicy)
- icon44 = QtGui.QIcon()
- icon44.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_click_for_plane.setIcon(icon44)
+ icon43 = QtGui.QIcon()
+ icon43.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_click_for_plane.setIcon(icon43)
self.button_click_for_plane.setIconSize(QtCore.QSize(32, 32))
self.button_click_for_plane.setObjectName(_fromUtf8("button_click_for_plane"))
self.horizontalLayout_3.addWidget(self.button_click_for_plane)
@@ -680,9 +711,9 @@ class Ui_Form(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.button_planeandaxis_plane.sizePolicy().hasHeightForWidth())
self.button_planeandaxis_plane.setSizePolicy(sizePolicy)
- icon45 = QtGui.QIcon()
- icon45.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_planeandaxis_plane.setIcon(icon45)
+ icon44 = QtGui.QIcon()
+ icon44.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_planeandaxis_plane.setIcon(icon44)
self.button_planeandaxis_plane.setIconSize(QtCore.QSize(32, 32))
self.button_planeandaxis_plane.setObjectName(_fromUtf8("button_planeandaxis_plane"))
self.gridLayout_8.addWidget(self.button_planeandaxis_plane, 0, 0, 1, 1)
@@ -698,16 +729,16 @@ class Ui_Form(object):
self.gridLayout_8.addWidget(self.angle_planeandaxis_plane, 0, 1, 1, 1)
self.gridLayout_4.addLayout(self.gridLayout_8, 4, 0, 1, 1)
self.button_axisandpoint_plane = QtGui.QPushButton(self.Plane_Tab1)
- icon46 = QtGui.QIcon()
- icon46.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_axisandpoint_plane.setIcon(icon46)
+ icon45 = QtGui.QIcon()
+ icon45.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_axisandpoint_plane.setIcon(icon45)
self.button_axisandpoint_plane.setIconSize(QtCore.QSize(32, 32))
self.button_axisandpoint_plane.setObjectName(_fromUtf8("button_axisandpoint_plane"))
self.gridLayout_4.addWidget(self.button_axisandpoint_plane, 1, 0, 1, 1)
self.button_axis_point_plane = QtGui.QPushButton(self.Plane_Tab1)
- icon47 = QtGui.QIcon()
- icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane2.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_axis_point_plane.setIcon(icon47)
+ icon46 = QtGui.QIcon()
+ icon46.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane2.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_axis_point_plane.setIcon(icon46)
self.button_axis_point_plane.setIconSize(QtCore.QSize(32, 32))
self.button_axis_point_plane.setObjectName(_fromUtf8("button_axis_point_plane"))
self.gridLayout_4.addWidget(self.button_axis_point_plane, 2, 0, 1, 1)
@@ -719,9 +750,9 @@ class Ui_Form(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.button_face_tangent.sizePolicy().hasHeightForWidth())
self.button_face_tangent.setSizePolicy(sizePolicy)
- icon48 = QtGui.QIcon()
- icon48.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_face_tangent.setIcon(icon48)
+ icon47 = QtGui.QIcon()
+ icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_face_tangent.setIcon(icon47)
self.button_face_tangent.setIconSize(QtCore.QSize(32, 32))
self.button_face_tangent.setObjectName(_fromUtf8("button_face_tangent"))
self.horizontalLayout_12.addWidget(self.button_face_tangent)
@@ -747,18 +778,18 @@ class Ui_Form(object):
self.horizontalLayout_12.addWidget(self.width_plane_2)
self.gridLayout_4.addLayout(self.horizontalLayout_12, 6, 0, 1, 1)
self.button_threepoints_plane = QtGui.QPushButton(self.Plane_Tab1)
- icon49 = QtGui.QIcon()
- icon49.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_threepoints_plane.setIcon(icon49)
+ icon48 = QtGui.QIcon()
+ icon48.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_threepoints_plane.setIcon(icon48)
self.button_threepoints_plane.setIconSize(QtCore.QSize(32, 32))
self.button_threepoints_plane.setObjectName(_fromUtf8("button_threepoints_plane"))
self.gridLayout_4.addWidget(self.button_threepoints_plane, 0, 0, 1, 1)
self.horizontalLayout_28 = QtGui.QHBoxLayout()
self.horizontalLayout_28.setObjectName(_fromUtf8("horizontalLayout_28"))
self.button_distPlane = QtGui.QPushButton(self.Plane_Tab1)
- icon50 = QtGui.QIcon()
- icon50.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_distPlane.setIcon(icon50)
+ icon49 = QtGui.QIcon()
+ icon49.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_distPlane.setIcon(icon49)
self.button_distPlane.setIconSize(QtCore.QSize(32, 32))
self.button_distPlane.setObjectName(_fromUtf8("button_distPlane"))
self.horizontalLayout_28.addWidget(self.button_distPlane)
@@ -778,7 +809,7 @@ class Ui_Form(object):
self.spin_dist_plane.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons)
self.spin_dist_plane.setKeyboardTracking(False)
self.spin_dist_plane.setMinimum(1)
- self.spin_dist_plane.setMaximum(10)
+ self.spin_dist_plane.setMaximum(100)
self.spin_dist_plane.setSingleStep(1)
self.spin_dist_plane.setProperty("value", 1)
self.spin_dist_plane.setObjectName(_fromUtf8("spin_dist_plane"))
@@ -787,9 +818,9 @@ class Ui_Form(object):
self.gridLayout_16 = QtGui.QGridLayout()
self.gridLayout_16.setObjectName(_fromUtf8("gridLayout_16"))
self.button_planeandpoint_plane = QtGui.QPushButton(self.Plane_Tab1)
- icon51 = QtGui.QIcon()
- icon51.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_planeandpoint_plane.setIcon(icon51)
+ icon50 = QtGui.QIcon()
+ icon50.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_planeandpoint_plane.setIcon(icon50)
self.button_planeandpoint_plane.setIconSize(QtCore.QSize(32, 32))
self.button_planeandpoint_plane.setObjectName(_fromUtf8("button_planeandpoint_plane"))
self.gridLayout_16.addWidget(self.button_planeandpoint_plane, 0, 0, 1, 1)
@@ -799,9 +830,9 @@ class Ui_Form(object):
self.extension_planePointPlane.setObjectName(_fromUtf8("extension_planePointPlane"))
self.gridLayout_16.addWidget(self.extension_planePointPlane, 0, 1, 1, 1)
self.gridLayout_4.addLayout(self.gridLayout_16, 3, 0, 1, 1)
- icon52 = QtGui.QIcon()
- icon52.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_plane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget.addTab(self.Plane_Tab1, icon52, _fromUtf8(""))
+ icon51 = QtGui.QIcon()
+ icon51.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_plane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget.addTab(self.Plane_Tab1, icon51, _fromUtf8(""))
self.Plane_Tab11 = QtGui.QWidget()
self.Plane_Tab11.setObjectName(_fromUtf8("Plane_Tab11"))
self.gridLayout_37 = QtGui.QGridLayout(self.Plane_Tab11)
@@ -809,9 +840,9 @@ class Ui_Form(object):
spacerItem7 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.gridLayout_37.addItem(spacerItem7, 2, 0, 1, 1)
self.button_object_center_planes = QtGui.QPushButton(self.Plane_Tab11)
- icon53 = QtGui.QIcon()
- icon53.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPlanes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_object_center_planes.setIcon(icon53)
+ icon52 = QtGui.QIcon()
+ icon52.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPlanes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_object_center_planes.setIcon(icon52)
self.button_object_center_planes.setIconSize(QtCore.QSize(32, 32))
self.button_object_center_planes.setObjectName(_fromUtf8("button_object_center_planes"))
self.gridLayout_37.addWidget(self.button_object_center_planes, 1, 0, 1, 1)
@@ -823,9 +854,9 @@ class Ui_Form(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.button_extension_plane.sizePolicy().hasHeightForWidth())
self.button_extension_plane.setSizePolicy(sizePolicy)
- icon54 = QtGui.QIcon()
- icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_extension_plane.setIcon(icon54)
+ icon53 = QtGui.QIcon()
+ icon53.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_extension_plane.setIcon(icon53)
self.button_extension_plane.setIconSize(QtCore.QSize(32, 32))
self.button_extension_plane.setObjectName(_fromUtf8("button_extension_plane"))
self.horizontalLayout_17.addWidget(self.button_extension_plane)
@@ -840,15 +871,29 @@ class Ui_Form(object):
self.extension_plane.setObjectName(_fromUtf8("extension_plane"))
self.horizontalLayout_17.addWidget(self.extension_plane)
self.gridLayout_37.addLayout(self.horizontalLayout_17, 0, 0, 1, 1)
- icon55 = QtGui.QIcon()
- icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_plane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget.addTab(self.Plane_Tab11, icon55, _fromUtf8(""))
+ self.tabWidget.addTab(self.Plane_Tab11, icon51, _fromUtf8(""))
self.Objects_Tab2 = QtGui.QWidget()
self.Objects_Tab2.setEnabled(True)
self.Objects_Tab2.setMinimumSize(QtCore.QSize(0, 0))
self.Objects_Tab2.setObjectName(_fromUtf8("Objects_Tab2"))
self.gridLayout_12 = QtGui.QGridLayout(self.Objects_Tab2)
self.gridLayout_12.setObjectName(_fromUtf8("gridLayout_12"))
+ self.button_boundingboxes = QtGui.QPushButton(self.Objects_Tab2)
+ self.button_boundingboxes.setMaximumSize(QtCore.QSize(16777215, 16777215))
+ icon54 = QtGui.QIcon()
+ icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_boundingboxes.setIcon(icon54)
+ self.button_boundingboxes.setIconSize(QtCore.QSize(32, 32))
+ self.button_boundingboxes.setObjectName(_fromUtf8("button_boundingboxes"))
+ self.gridLayout_12.addWidget(self.button_boundingboxes, 0, 0, 1, 1)
+ self.button_boundingbox = QtGui.QPushButton(self.Objects_Tab2)
+ self.button_boundingbox.setMaximumSize(QtCore.QSize(16777215, 16777215))
+ icon55 = QtGui.QIcon()
+ icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_boundingbox.setIcon(icon55)
+ self.button_boundingbox.setIconSize(QtCore.QSize(32, 32))
+ self.button_boundingbox.setObjectName(_fromUtf8("button_boundingbox"))
+ self.gridLayout_12.addWidget(self.button_boundingbox, 1, 0, 1, 1)
self.line = QtGui.QFrame(self.Objects_Tab2)
self.line.setFrameShadow(QtGui.QFrame.Plain)
self.line.setLineWidth(4)
@@ -917,60 +962,140 @@ class Ui_Form(object):
self.height_cube.setObjectName(_fromUtf8("height_cube"))
self.horizontalLayout_4.addWidget(self.height_cube)
self.gridLayout_12.addLayout(self.horizontalLayout_4, 4, 0, 1, 1)
- self.button_boundingboxes = QtGui.QPushButton(self.Objects_Tab2)
- self.button_boundingboxes.setMaximumSize(QtCore.QSize(16777215, 16777215))
+ self.horizontalLayout_19 = QtGui.QHBoxLayout()
+ self.horizontalLayout_19.setObjectName(_fromUtf8("horizontalLayout_19"))
+ self.button_sphere_create = QtGui.QPushButton(self.Objects_Tab2)
icon58 = QtGui.QIcon()
- icon58.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_boundingboxes.setIcon(icon58)
- self.button_boundingboxes.setIconSize(QtCore.QSize(32, 32))
- self.button_boundingboxes.setObjectName(_fromUtf8("button_boundingboxes"))
- self.gridLayout_12.addWidget(self.button_boundingboxes, 0, 0, 1, 1)
- spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_12.addItem(spacerItem8, 5, 0, 1, 1)
- self.button_boundingbox = QtGui.QPushButton(self.Objects_Tab2)
- self.button_boundingbox.setMaximumSize(QtCore.QSize(16777215, 16777215))
+ icon58.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_sphere.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_sphere_create.setIcon(icon58)
+ self.button_sphere_create.setIconSize(QtCore.QSize(32, 32))
+ self.button_sphere_create.setObjectName(_fromUtf8("button_sphere_create"))
+ self.horizontalLayout_19.addWidget(self.button_sphere_create)
+ self.diameter_sphere = QtGui.QLineEdit(self.Objects_Tab2)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.diameter_sphere.sizePolicy().hasHeightForWidth())
+ self.diameter_sphere.setSizePolicy(sizePolicy)
+ self.diameter_sphere.setMinimumSize(QtCore.QSize(50, 0))
+ self.diameter_sphere.setMaximumSize(QtCore.QSize(60, 16777215))
+ self.diameter_sphere.setObjectName(_fromUtf8("diameter_sphere"))
+ self.horizontalLayout_19.addWidget(self.diameter_sphere)
+ self.gridLayout_12.addLayout(self.horizontalLayout_19, 5, 0, 1, 1)
+ self.horizontalLayout_20 = QtGui.QHBoxLayout()
+ self.horizontalLayout_20.setObjectName(_fromUtf8("horizontalLayout_20"))
+ self.button_dome_create = QtGui.QPushButton(self.Objects_Tab2)
icon59 = QtGui.QIcon()
- icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_boundingbox.setIcon(icon59)
- self.button_boundingbox.setIconSize(QtCore.QSize(32, 32))
- self.button_boundingbox.setObjectName(_fromUtf8("button_boundingbox"))
- self.gridLayout_12.addWidget(self.button_boundingbox, 1, 0, 1, 1)
+ icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_dome.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_dome_create.setIcon(icon59)
+ self.button_dome_create.setIconSize(QtCore.QSize(32, 32))
+ self.button_dome_create.setObjectName(_fromUtf8("button_dome_create"))
+ self.horizontalLayout_20.addWidget(self.button_dome_create)
+ self.spin_frequency_dome = QtGui.QSpinBox(self.Objects_Tab2)
+ self.spin_frequency_dome.setMinimumSize(QtCore.QSize(40, 0))
+ self.spin_frequency_dome.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.spin_frequency_dome.setMinimum(1)
+ self.spin_frequency_dome.setMaximum(20)
+ self.spin_frequency_dome.setSingleStep(1)
+ self.spin_frequency_dome.setProperty("value", 2)
+ self.spin_frequency_dome.setObjectName(_fromUtf8("spin_frequency_dome"))
+ self.horizontalLayout_20.addWidget(self.spin_frequency_dome)
+ self.diameter_dome = QtGui.QLineEdit(self.Objects_Tab2)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.diameter_dome.sizePolicy().hasHeightForWidth())
+ self.diameter_dome.setSizePolicy(sizePolicy)
+ self.diameter_dome.setMinimumSize(QtCore.QSize(50, 0))
+ self.diameter_dome.setMaximumSize(QtCore.QSize(60, 16777215))
+ self.diameter_dome.setObjectName(_fromUtf8("diameter_dome"))
+ self.horizontalLayout_20.addWidget(self.diameter_dome)
+ self.gridLayout_12.addLayout(self.horizontalLayout_20, 6, 0, 1, 1)
+ spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_12.addItem(spacerItem8, 7, 0, 1, 1)
icon60 = QtGui.QIcon()
icon60.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.tabWidget.addTab(self.Objects_Tab2, icon60, _fromUtf8(""))
- self.View_Tab = QtGui.QWidget()
- self.View_Tab.setObjectName(_fromUtf8("View_Tab"))
- self.gridLayout_13 = QtGui.QGridLayout(self.View_Tab)
- self.gridLayout_13.setObjectName(_fromUtf8("gridLayout_13"))
- self.button_alignview = QtGui.QPushButton(self.View_Tab)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.button_alignview.sizePolicy().hasHeightForWidth())
- self.button_alignview.setSizePolicy(sizePolicy)
- self.button_alignview.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon61 = QtGui.QIcon()
- icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_alignview.setIcon(icon61)
- self.button_alignview.setIconSize(QtCore.QSize(32, 32))
- self.button_alignview.setObjectName(_fromUtf8("button_alignview"))
- self.gridLayout_13.addWidget(self.button_alignview, 0, 0, 1, 1)
- spacerItem9 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_13.addItem(spacerItem9, 1, 0, 1, 1)
- icon62 = QtGui.QIcon()
- icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget.addTab(self.View_Tab, icon62, _fromUtf8(""))
self.Modif_Tab = QtGui.QWidget()
self.Modif_Tab.setObjectName(_fromUtf8("Modif_Tab"))
self.gridLayout_11 = QtGui.QGridLayout(self.Modif_Tab)
self.gridLayout_11.setObjectName(_fromUtf8("gridLayout_11"))
self.tabWidget_2 = QtGui.QTabWidget(self.Modif_Tab)
self.tabWidget_2.setObjectName(_fromUtf8("tabWidget_2"))
- self.cutting_tab = QtGui.QWidget()
- self.cutting_tab.setObjectName(_fromUtf8("cutting_tab"))
- self.gridLayout_38 = QtGui.QGridLayout(self.cutting_tab)
+ self.align_tab = QtGui.QWidget()
+ self.align_tab.setObjectName(_fromUtf8("align_tab"))
+ self.gridLayout_51 = QtGui.QGridLayout(self.align_tab)
+ self.gridLayout_51.setObjectName(_fromUtf8("gridLayout_51"))
+ self.button_alignface2view = QtGui.QPushButton(self.align_tab)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.button_alignface2view.sizePolicy().hasHeightForWidth())
+ self.button_alignface2view.setSizePolicy(sizePolicy)
+ self.button_alignface2view.setMaximumSize(QtCore.QSize(220, 16777215))
+ icon61 = QtGui.QIcon()
+ icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_alignface2view.setIcon(icon61)
+ self.button_alignface2view.setIconSize(QtCore.QSize(32, 32))
+ self.button_alignface2view.setObjectName(_fromUtf8("button_alignface2view"))
+ self.gridLayout_51.addWidget(self.button_alignface2view, 0, 0, 1, 1)
+ self.horizontalLayout_32 = QtGui.QHBoxLayout()
+ self.horizontalLayout_32.setObjectName(_fromUtf8("horizontalLayout_32"))
+ self.button_align_faces = QtGui.QPushButton(self.align_tab)
+ self.button_align_faces.setMaximumSize(QtCore.QSize(220, 16777215))
+ icon62 = QtGui.QIcon()
+ icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_align_faces.setIcon(icon62)
+ self.button_align_faces.setIconSize(QtCore.QSize(32, 32))
+ self.button_align_faces.setObjectName(_fromUtf8("button_align_faces"))
+ self.horizontalLayout_32.addWidget(self.button_align_faces)
+ self.angle_align_faces = QtGui.QLineEdit(self.align_tab)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.angle_align_faces.sizePolicy().hasHeightForWidth())
+ self.angle_align_faces.setSizePolicy(sizePolicy)
+ self.angle_align_faces.setMinimumSize(QtCore.QSize(40, 0))
+ self.angle_align_faces.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.angle_align_faces.setObjectName(_fromUtf8("angle_align_faces"))
+ self.horizontalLayout_32.addWidget(self.angle_align_faces)
+ self.gridLayout_51.addLayout(self.horizontalLayout_32, 1, 0, 1, 1)
+ self.horizontalLayout_33 = QtGui.QHBoxLayout()
+ self.horizontalLayout_33.setObjectName(_fromUtf8("horizontalLayout_33"))
+ self.button_align_edges = QtGui.QPushButton(self.align_tab)
+ self.button_align_edges.setMaximumSize(QtCore.QSize(220, 16777215))
+ icon63 = QtGui.QIcon()
+ icon63.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_align_edges.setIcon(icon63)
+ self.button_align_edges.setIconSize(QtCore.QSize(32, 32))
+ self.button_align_edges.setObjectName(_fromUtf8("button_align_edges"))
+ self.horizontalLayout_33.addWidget(self.button_align_edges)
+ self.angle_align_edges = QtGui.QLineEdit(self.align_tab)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.angle_align_edges.sizePolicy().hasHeightForWidth())
+ self.angle_align_edges.setSizePolicy(sizePolicy)
+ self.angle_align_edges.setMinimumSize(QtCore.QSize(40, 0))
+ self.angle_align_edges.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.angle_align_edges.setObjectName(_fromUtf8("angle_align_edges"))
+ self.horizontalLayout_33.addWidget(self.angle_align_edges)
+ self.gridLayout_51.addLayout(self.horizontalLayout_33, 2, 0, 1, 1)
+ self.button_joint_points = QtGui.QPushButton(self.align_tab)
+ icon64 = QtGui.QIcon()
+ icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_joint_points.setIcon(icon64)
+ self.button_joint_points.setIconSize(QtCore.QSize(32, 32))
+ self.button_joint_points.setObjectName(_fromUtf8("button_joint_points"))
+ self.gridLayout_51.addWidget(self.button_joint_points, 3, 0, 1, 1)
+ spacerItem9 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_51.addItem(spacerItem9, 4, 0, 1, 1)
+ self.tabWidget_2.addTab(self.align_tab, _fromUtf8(""))
+ self.cut_tab = QtGui.QWidget()
+ self.cut_tab.setObjectName(_fromUtf8("cut_tab"))
+ self.gridLayout_38 = QtGui.QGridLayout(self.cut_tab)
self.gridLayout_38.setObjectName(_fromUtf8("gridLayout_38"))
- self.frame_7 = QtGui.QFrame(self.cutting_tab)
+ self.frame_7 = QtGui.QFrame(self.cut_tab)
self.frame_7.setMinimumSize(QtCore.QSize(0, 0))
self.frame_7.setMaximumSize(QtCore.QSize(220, 16777215))
self.frame_7.setFrameShape(QtGui.QFrame.StyledPanel)
@@ -1084,76 +1209,25 @@ class Ui_Form(object):
self.horizontalLayout_8.addWidget(self.button_cut_apply)
self.gridLayout_17.addLayout(self.horizontalLayout_8, 2, 0, 1, 1)
self.gridLayout_2.addLayout(self.gridLayout_17, 1, 0, 1, 1)
- spacerItem11 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_2.addItem(spacerItem11, 2, 0, 1, 1)
self.gridLayout_36.addWidget(self.groupBox_6, 0, 0, 1, 1)
self.gridLayout_38.addWidget(self.frame_7, 0, 0, 1, 1)
- self.tabWidget_2.addTab(self.cutting_tab, _fromUtf8(""))
- self.rotation_tab = QtGui.QWidget()
- self.rotation_tab.setObjectName(_fromUtf8("rotation_tab"))
- self.gridLayout_29 = QtGui.QGridLayout(self.rotation_tab)
- self.gridLayout_29.setObjectName(_fromUtf8("gridLayout_29"))
- self.frame = QtGui.QFrame(self.rotation_tab)
+ spacerItem11 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_38.addItem(spacerItem11, 1, 0, 1, 1)
+ self.tabWidget_2.addTab(self.cut_tab, _fromUtf8(""))
+ self.rotate_tab = QtGui.QWidget()
+ self.rotate_tab.setObjectName(_fromUtf8("rotate_tab"))
+ self.gridLayout_52 = QtGui.QGridLayout(self.rotate_tab)
+ self.gridLayout_52.setObjectName(_fromUtf8("gridLayout_52"))
+ self.frame = QtGui.QFrame(self.rotate_tab)
self.frame.setMaximumSize(QtCore.QSize(220, 16777215))
self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
self.frame.setFrameShadow(QtGui.QFrame.Raised)
self.frame.setObjectName(_fromUtf8("frame"))
- self.gridLayout_25 = QtGui.QGridLayout(self.frame)
- self.gridLayout_25.setObjectName(_fromUtf8("gridLayout_25"))
+ self.gridLayout_50 = QtGui.QGridLayout(self.frame)
+ self.gridLayout_50.setObjectName(_fromUtf8("gridLayout_50"))
self.ObjRot_button_select = QtGui.QPushButton(self.frame)
self.ObjRot_button_select.setObjectName(_fromUtf8("ObjRot_button_select"))
- self.gridLayout_25.addWidget(self.ObjRot_button_select, 0, 0, 1, 1)
- self.groupBox_2 = QtGui.QGroupBox(self.frame)
- self.groupBox_2.setMinimumSize(QtCore.QSize(150, 67))
- self.groupBox_2.setMaximumSize(QtCore.QSize(16777215, 16777215))
- self.groupBox_2.setFlat(False)
- self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))
- self.gridLayout_24 = QtGui.QGridLayout(self.groupBox_2)
- self.gridLayout_24.setObjectName(_fromUtf8("gridLayout_24"))
- self.ObjRot_horizontalSlider = QtGui.QSlider(self.groupBox_2)
- self.ObjRot_horizontalSlider.setMinimumSize(QtCore.QSize(0, 39))
- self.ObjRot_horizontalSlider.setMaximumSize(QtCore.QSize(120, 16777215))
- self.ObjRot_horizontalSlider.setMinimum(-180)
- self.ObjRot_horizontalSlider.setMaximum(180)
- self.ObjRot_horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
- self.ObjRot_horizontalSlider.setTickPosition(QtGui.QSlider.TicksBothSides)
- self.ObjRot_horizontalSlider.setTickInterval(20)
- self.ObjRot_horizontalSlider.setObjectName(_fromUtf8("ObjRot_horizontalSlider"))
- self.gridLayout_24.addWidget(self.ObjRot_horizontalSlider, 0, 0, 1, 1)
- self.horizontalLayout_13 = QtGui.QHBoxLayout()
- self.horizontalLayout_13.setObjectName(_fromUtf8("horizontalLayout_13"))
- self.ObjRot_lineEdit_angle = QtGui.QLineEdit(self.groupBox_2)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.ObjRot_lineEdit_angle.sizePolicy().hasHeightForWidth())
- self.ObjRot_lineEdit_angle.setSizePolicy(sizePolicy)
- self.ObjRot_lineEdit_angle.setMinimumSize(QtCore.QSize(40, 0))
- self.ObjRot_lineEdit_angle.setMaximumSize(QtCore.QSize(60, 16777215))
- self.ObjRot_lineEdit_angle.setMaxLength(32769)
- self.ObjRot_lineEdit_angle.setObjectName(_fromUtf8("ObjRot_lineEdit_angle"))
- self.horizontalLayout_13.addWidget(self.ObjRot_lineEdit_angle)
- self.label_angle_2 = QtGui.QLabel(self.groupBox_2)
- self.label_angle_2.setMaximumSize(QtCore.QSize(60, 16777215))
- self.label_angle_2.setObjectName(_fromUtf8("label_angle_2"))
- self.horizontalLayout_13.addWidget(self.label_angle_2)
- self.gridLayout_24.addLayout(self.horizontalLayout_13, 1, 0, 1, 1)
- self.gridLayout_25.addWidget(self.groupBox_2, 2, 0, 1, 1)
- self.horizontalLayout_14 = QtGui.QHBoxLayout()
- self.horizontalLayout_14.setObjectName(_fromUtf8("horizontalLayout_14"))
- self.ObjRot_button_reset = QtGui.QPushButton(self.frame)
- self.ObjRot_button_reset.setMinimumSize(QtCore.QSize(40, 0))
- self.ObjRot_button_reset.setMaximumSize(QtCore.QSize(60, 16777215))
- self.ObjRot_button_reset.setObjectName(_fromUtf8("ObjRot_button_reset"))
- self.horizontalLayout_14.addWidget(self.ObjRot_button_reset)
- spacerItem12 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout_14.addItem(spacerItem12)
- self.ObjRot_button_apply = QtGui.QPushButton(self.frame)
- self.ObjRot_button_apply.setMinimumSize(QtCore.QSize(40, 0))
- self.ObjRot_button_apply.setMaximumSize(QtCore.QSize(60, 16777215))
- self.ObjRot_button_apply.setObjectName(_fromUtf8("ObjRot_button_apply"))
- self.horizontalLayout_14.addWidget(self.ObjRot_button_apply)
- self.gridLayout_25.addLayout(self.horizontalLayout_14, 3, 0, 1, 1)
+ self.gridLayout_50.addWidget(self.ObjRot_button_select, 0, 0, 1, 1)
self.tabWidget_3 = QtGui.QTabWidget(self.frame)
self.tabWidget_3.setTabPosition(QtGui.QTabWidget.North)
self.tabWidget_3.setObjectName(_fromUtf8("tabWidget_3"))
@@ -1182,9 +1256,9 @@ class Ui_Form(object):
self.ObjRot_button_select_axis.setMaximumSize(QtCore.QSize(80, 16777215))
self.ObjRot_button_select_axis.setObjectName(_fromUtf8("ObjRot_button_select_axis"))
self.gridLayout_21.addWidget(self.ObjRot_button_select_axis, 1, 0, 1, 1)
- icon63 = QtGui.QIcon()
- icon63.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_3.addTab(self.tab_8, icon63, _fromUtf8(""))
+ icon65 = QtGui.QIcon()
+ icon65.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_3.addTab(self.tab_8, icon65, _fromUtf8(""))
self.tab_9 = QtGui.QWidget()
self.tab_9.setObjectName(_fromUtf8("tab_9"))
self.gridLayout_23 = QtGui.QGridLayout(self.tab_9)
@@ -1211,92 +1285,100 @@ class Ui_Form(object):
self.ObjRot_button_select_center.setMaximumSize(QtCore.QSize(80, 16777215))
self.ObjRot_button_select_center.setObjectName(_fromUtf8("ObjRot_button_select_center"))
self.gridLayout_23.addWidget(self.ObjRot_button_select_center, 1, 0, 1, 1)
- icon64 = QtGui.QIcon()
- icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_3.addTab(self.tab_9, icon64, _fromUtf8(""))
- self.gridLayout_25.addWidget(self.tabWidget_3, 1, 0, 1, 1)
- self.gridLayout_29.addWidget(self.frame, 0, 0, 1, 1)
+ icon66 = QtGui.QIcon()
+ icon66.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_3.addTab(self.tab_9, icon66, _fromUtf8(""))
+ self.gridLayout_50.addWidget(self.tabWidget_3, 1, 0, 1, 1)
+ self.groupBox_2 = QtGui.QGroupBox(self.frame)
+ self.groupBox_2.setMinimumSize(QtCore.QSize(150, 67))
+ self.groupBox_2.setMaximumSize(QtCore.QSize(16777215, 16777215))
+ self.groupBox_2.setFlat(False)
+ self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))
+ self.gridLayout_29 = QtGui.QGridLayout(self.groupBox_2)
+ self.gridLayout_29.setObjectName(_fromUtf8("gridLayout_29"))
+ self.tabWidget_5 = QtGui.QTabWidget(self.groupBox_2)
+ self.tabWidget_5.setObjectName(_fromUtf8("tabWidget_5"))
+ self.tab_7 = QtGui.QWidget()
+ self.tab_7.setObjectName(_fromUtf8("tab_7"))
+ self.gridLayout_25 = QtGui.QGridLayout(self.tab_7)
+ self.gridLayout_25.setObjectName(_fromUtf8("gridLayout_25"))
+ self.ObjRot_horizontalSlider = QtGui.QSlider(self.tab_7)
+ self.ObjRot_horizontalSlider.setMinimumSize(QtCore.QSize(0, 39))
+ self.ObjRot_horizontalSlider.setMaximumSize(QtCore.QSize(120, 16777215))
+ self.ObjRot_horizontalSlider.setMinimum(-180)
+ self.ObjRot_horizontalSlider.setMaximum(180)
+ self.ObjRot_horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
+ self.ObjRot_horizontalSlider.setTickPosition(QtGui.QSlider.TicksBothSides)
+ self.ObjRot_horizontalSlider.setTickInterval(20)
+ self.ObjRot_horizontalSlider.setObjectName(_fromUtf8("ObjRot_horizontalSlider"))
+ self.gridLayout_25.addWidget(self.ObjRot_horizontalSlider, 0, 0, 1, 1)
+ self.tabWidget_5.addTab(self.tab_7, _fromUtf8(""))
+ self.tab_10 = QtGui.QWidget()
+ self.tab_10.setObjectName(_fromUtf8("tab_10"))
+ self.gridLayout_24 = QtGui.QGridLayout(self.tab_10)
+ self.gridLayout_24.setObjectName(_fromUtf8("gridLayout_24"))
+ self.ObjRot_button_select_angle = QtGui.QPushButton(self.tab_10)
+ self.ObjRot_button_select_angle.setEnabled(True)
+ self.ObjRot_button_select_angle.setMinimumSize(QtCore.QSize(40, 0))
+ self.ObjRot_button_select_angle.setMaximumSize(QtCore.QSize(80, 16777215))
+ self.ObjRot_button_select_angle.setObjectName(_fromUtf8("ObjRot_button_select_angle"))
+ self.gridLayout_24.addWidget(self.ObjRot_button_select_angle, 0, 0, 1, 1)
+ icon67 = QtGui.QIcon()
+ icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_5.addTab(self.tab_10, icon67, _fromUtf8(""))
+ self.gridLayout_29.addWidget(self.tabWidget_5, 0, 0, 1, 1)
+ self.horizontalLayout_13 = QtGui.QHBoxLayout()
+ self.horizontalLayout_13.setObjectName(_fromUtf8("horizontalLayout_13"))
+ self.ObjRot_lineEdit_angle = QtGui.QLineEdit(self.groupBox_2)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.ObjRot_lineEdit_angle.sizePolicy().hasHeightForWidth())
+ self.ObjRot_lineEdit_angle.setSizePolicy(sizePolicy)
+ self.ObjRot_lineEdit_angle.setMinimumSize(QtCore.QSize(40, 0))
+ self.ObjRot_lineEdit_angle.setMaximumSize(QtCore.QSize(60, 16777215))
+ self.ObjRot_lineEdit_angle.setMaxLength(32769)
+ self.ObjRot_lineEdit_angle.setObjectName(_fromUtf8("ObjRot_lineEdit_angle"))
+ self.horizontalLayout_13.addWidget(self.ObjRot_lineEdit_angle)
+ self.label_angle_2 = QtGui.QLabel(self.groupBox_2)
+ self.label_angle_2.setMaximumSize(QtCore.QSize(60, 16777215))
+ self.label_angle_2.setObjectName(_fromUtf8("label_angle_2"))
+ self.horizontalLayout_13.addWidget(self.label_angle_2)
+ self.gridLayout_29.addLayout(self.horizontalLayout_13, 1, 0, 1, 1)
+ self.gridLayout_50.addWidget(self.groupBox_2, 2, 0, 1, 1)
+ self.horizontalLayout_14 = QtGui.QHBoxLayout()
+ self.horizontalLayout_14.setObjectName(_fromUtf8("horizontalLayout_14"))
+ self.ObjRot_button_reset = QtGui.QPushButton(self.frame)
+ self.ObjRot_button_reset.setMinimumSize(QtCore.QSize(40, 0))
+ self.ObjRot_button_reset.setMaximumSize(QtCore.QSize(60, 16777215))
+ self.ObjRot_button_reset.setObjectName(_fromUtf8("ObjRot_button_reset"))
+ self.horizontalLayout_14.addWidget(self.ObjRot_button_reset)
+ spacerItem12 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.horizontalLayout_14.addItem(spacerItem12)
+ self.ObjRot_button_apply = QtGui.QPushButton(self.frame)
+ self.ObjRot_button_apply.setMinimumSize(QtCore.QSize(40, 0))
+ self.ObjRot_button_apply.setMaximumSize(QtCore.QSize(60, 16777215))
+ self.ObjRot_button_apply.setObjectName(_fromUtf8("ObjRot_button_apply"))
+ self.horizontalLayout_14.addWidget(self.ObjRot_button_apply)
+ self.gridLayout_50.addLayout(self.horizontalLayout_14, 3, 0, 1, 1)
+ self.gridLayout_52.addWidget(self.frame, 0, 0, 1, 1)
spacerItem13 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_29.addItem(spacerItem13, 1, 0, 1, 1)
- self.tabWidget_2.addTab(self.rotation_tab, _fromUtf8(""))
- self.translation_tab = QtGui.QWidget()
- self.translation_tab.setObjectName(_fromUtf8("translation_tab"))
- self.gridLayout_28 = QtGui.QGridLayout(self.translation_tab)
- self.gridLayout_28.setObjectName(_fromUtf8("gridLayout_28"))
- self.frame_2 = QtGui.QFrame(self.translation_tab)
+ self.gridLayout_52.addItem(spacerItem13, 1, 0, 1, 1)
+ self.tabWidget_2.addTab(self.rotate_tab, _fromUtf8(""))
+ self.translate_tab = QtGui.QWidget()
+ self.translate_tab.setObjectName(_fromUtf8("translate_tab"))
+ self.gridLayout_49 = QtGui.QGridLayout(self.translate_tab)
+ self.gridLayout_49.setObjectName(_fromUtf8("gridLayout_49"))
+ self.frame_2 = QtGui.QFrame(self.translate_tab)
self.frame_2.setMaximumSize(QtCore.QSize(220, 16777215))
self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
self.frame_2.setObjectName(_fromUtf8("frame_2"))
- self.gridLayout_27 = QtGui.QGridLayout(self.frame_2)
- self.gridLayout_27.setObjectName(_fromUtf8("gridLayout_27"))
+ self.gridLayout_48 = QtGui.QGridLayout(self.frame_2)
+ self.gridLayout_48.setObjectName(_fromUtf8("gridLayout_48"))
self.ObjTrans_button_select = QtGui.QPushButton(self.frame_2)
self.ObjTrans_button_select.setObjectName(_fromUtf8("ObjTrans_button_select"))
- self.gridLayout_27.addWidget(self.ObjTrans_button_select, 0, 0, 1, 1)
- self.frame_5 = QtGui.QFrame(self.frame_2)
- self.frame_5.setFrameShape(QtGui.QFrame.StyledPanel)
- self.frame_5.setFrameShadow(QtGui.QFrame.Raised)
- self.frame_5.setObjectName(_fromUtf8("frame_5"))
- self.gridLayout_15 = QtGui.QGridLayout(self.frame_5)
- self.gridLayout_15.setObjectName(_fromUtf8("gridLayout_15"))
- self.groupBox_3 = QtGui.QGroupBox(self.frame_5)
- self.groupBox_3.setFlat(False)
- self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
- self.formLayout = QtGui.QFormLayout(self.groupBox_3)
- self.formLayout.setObjectName(_fromUtf8("formLayout"))
- self.ObjTrans_comboBox_start = QtGui.QComboBox(self.groupBox_3)
- self.ObjTrans_comboBox_start.setEnabled(True)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.ObjTrans_comboBox_start.sizePolicy().hasHeightForWidth())
- self.ObjTrans_comboBox_start.setSizePolicy(sizePolicy)
- self.ObjTrans_comboBox_start.setMinimumSize(QtCore.QSize(91, 0))
- self.ObjTrans_comboBox_start.setMaximumSize(QtCore.QSize(150, 16777215))
- self.ObjTrans_comboBox_start.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContentsOnFirstShow)
- self.ObjTrans_comboBox_start.setObjectName(_fromUtf8("ObjTrans_comboBox_start"))
- self.ObjTrans_comboBox_start.addItem(_fromUtf8(""))
- self.ObjTrans_comboBox_start.addItem(_fromUtf8(""))
- self.ObjTrans_comboBox_start.addItem(_fromUtf8(""))
- self.ObjTrans_comboBox_start.addItem(_fromUtf8(""))
- self.ObjTrans_comboBox_start.addItem(_fromUtf8(""))
- self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.ObjTrans_comboBox_start)
- self.ObjTrans_button_select_start = QtGui.QPushButton(self.groupBox_3)
- self.ObjTrans_button_select_start.setEnabled(True)
- self.ObjTrans_button_select_start.setMinimumSize(QtCore.QSize(50, 0))
- self.ObjTrans_button_select_start.setMaximumSize(QtCore.QSize(150, 16777215))
- self.ObjTrans_button_select_start.setObjectName(_fromUtf8("ObjTrans_button_select_start"))
- self.formLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.ObjTrans_button_select_start)
- self.horizontalLayout_19 = QtGui.QHBoxLayout()
- self.horizontalLayout_19.setObjectName(_fromUtf8("horizontalLayout_19"))
- self.pushButton = QtGui.QPushButton(self.groupBox_3)
- self.pushButton.setText(_fromUtf8(""))
- icon65 = QtGui.QIcon()
- icon65.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.pushButton.setIcon(icon65)
- self.pushButton.setIconSize(QtCore.QSize(20, 20))
- self.pushButton.setCheckable(False)
- self.pushButton.setFlat(True)
- self.pushButton.setObjectName(_fromUtf8("pushButton"))
- self.horizontalLayout_19.addWidget(self.pushButton)
- self.ObjTrans_start_x = QtGui.QLineEdit(self.groupBox_3)
- self.ObjTrans_start_x.setEnabled(False)
- self.ObjTrans_start_x.setMaximumSize(QtCore.QSize(50, 16777215))
- self.ObjTrans_start_x.setObjectName(_fromUtf8("ObjTrans_start_x"))
- self.horizontalLayout_19.addWidget(self.ObjTrans_start_x)
- self.ObjTrans_start_y = QtGui.QLineEdit(self.groupBox_3)
- self.ObjTrans_start_y.setEnabled(False)
- self.ObjTrans_start_y.setMaximumSize(QtCore.QSize(50, 16777215))
- self.ObjTrans_start_y.setObjectName(_fromUtf8("ObjTrans_start_y"))
- self.horizontalLayout_19.addWidget(self.ObjTrans_start_y)
- self.ObjTrans_start_z = QtGui.QLineEdit(self.groupBox_3)
- self.ObjTrans_start_z.setEnabled(False)
- self.ObjTrans_start_z.setMaximumSize(QtCore.QSize(50, 16777215))
- self.ObjTrans_start_z.setObjectName(_fromUtf8("ObjTrans_start_z"))
- self.horizontalLayout_19.addWidget(self.ObjTrans_start_z)
- self.formLayout.setLayout(2, QtGui.QFormLayout.SpanningRole, self.horizontalLayout_19)
- self.gridLayout_15.addWidget(self.groupBox_3, 0, 0, 1, 1)
- self.gridLayout_27.addWidget(self.frame_5, 1, 0, 1, 1)
+ self.gridLayout_48.addWidget(self.ObjTrans_button_select, 0, 0, 1, 1)
self.horizontalLayout_15 = QtGui.QHBoxLayout()
self.horizontalLayout_15.setObjectName(_fromUtf8("horizontalLayout_15"))
self.ObjTrans_duplicate = QtGui.QCheckBox(self.frame_2)
@@ -1313,18 +1395,98 @@ class Ui_Form(object):
self.ObjTrans_spin.setProperty("value", 1)
self.ObjTrans_spin.setObjectName(_fromUtf8("ObjTrans_spin"))
self.horizontalLayout_15.addWidget(self.ObjTrans_spin)
- self.gridLayout_27.addLayout(self.horizontalLayout_15, 2, 0, 1, 1)
- self.frame_6 = QtGui.QFrame(self.frame_2)
- self.frame_6.setFrameShape(QtGui.QFrame.StyledPanel)
- self.frame_6.setFrameShadow(QtGui.QFrame.Raised)
- self.frame_6.setObjectName(_fromUtf8("frame_6"))
- self.gridLayout_26 = QtGui.QGridLayout(self.frame_6)
+ self.ObjTrans_deepCopy = QtGui.QCheckBox(self.frame_2)
+ self.ObjTrans_deepCopy.setObjectName(_fromUtf8("ObjTrans_deepCopy"))
+ self.horizontalLayout_15.addWidget(self.ObjTrans_deepCopy)
+ self.gridLayout_48.addLayout(self.horizontalLayout_15, 1, 0, 1, 1)
+ self.tabWidget_4 = QtGui.QTabWidget(self.frame_2)
+ self.tabWidget_4.setObjectName(_fromUtf8("tabWidget_4"))
+ self.tab_5 = QtGui.QWidget()
+ self.tab_5.setObjectName(_fromUtf8("tab_5"))
+ self.gridLayout_15 = QtGui.QGridLayout(self.tab_5)
+ self.gridLayout_15.setObjectName(_fromUtf8("gridLayout_15"))
+ self.groupBox_3 = QtGui.QGroupBox(self.tab_5)
+ self.groupBox_3.setMinimumSize(QtCore.QSize(150, 0))
+ self.groupBox_3.setFlat(False)
+ self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
+ self.gridLayout_26 = QtGui.QGridLayout(self.groupBox_3)
self.gridLayout_26.setObjectName(_fromUtf8("gridLayout_26"))
- self.groupBox_4 = QtGui.QGroupBox(self.frame_6)
+ self.ObjTrans_comboBox_start = QtGui.QComboBox(self.groupBox_3)
+ self.ObjTrans_comboBox_start.setEnabled(True)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.ObjTrans_comboBox_start.sizePolicy().hasHeightForWidth())
+ self.ObjTrans_comboBox_start.setSizePolicy(sizePolicy)
+ self.ObjTrans_comboBox_start.setMinimumSize(QtCore.QSize(100, 0))
+ self.ObjTrans_comboBox_start.setMaximumSize(QtCore.QSize(120, 16777215))
+ self.ObjTrans_comboBox_start.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContentsOnFirstShow)
+ self.ObjTrans_comboBox_start.setObjectName(_fromUtf8("ObjTrans_comboBox_start"))
+ self.ObjTrans_comboBox_start.addItem(_fromUtf8(""))
+ self.ObjTrans_comboBox_start.addItem(_fromUtf8(""))
+ self.ObjTrans_comboBox_start.addItem(_fromUtf8(""))
+ self.ObjTrans_comboBox_start.addItem(_fromUtf8(""))
+ self.ObjTrans_comboBox_start.addItem(_fromUtf8(""))
+ self.gridLayout_26.addWidget(self.ObjTrans_comboBox_start, 0, 0, 1, 1)
+ self.ObjTrans_button_select_start = QtGui.QPushButton(self.groupBox_3)
+ self.ObjTrans_button_select_start.setEnabled(True)
+ self.ObjTrans_button_select_start.setMinimumSize(QtCore.QSize(50, 0))
+ self.ObjTrans_button_select_start.setMaximumSize(QtCore.QSize(120, 16777215))
+ self.ObjTrans_button_select_start.setObjectName(_fromUtf8("ObjTrans_button_select_start"))
+ self.gridLayout_26.addWidget(self.ObjTrans_button_select_start, 1, 0, 1, 1)
+ self.gridLayout_27 = QtGui.QGridLayout()
+ self.gridLayout_27.setObjectName(_fromUtf8("gridLayout_27"))
+ self.gridLayout_28 = QtGui.QGridLayout()
+ self.gridLayout_28.setObjectName(_fromUtf8("gridLayout_28"))
+ self.label_3 = QtGui.QLabel(self.groupBox_3)
+ self.label_3.setObjectName(_fromUtf8("label_3"))
+ self.gridLayout_28.addWidget(self.label_3, 0, 0, 1, 1)
+ self.ObjTrans_start_x = QtGui.QLineEdit(self.groupBox_3)
+ self.ObjTrans_start_x.setEnabled(False)
+ self.ObjTrans_start_x.setMinimumSize(QtCore.QSize(90, 0))
+ self.ObjTrans_start_x.setMaximumSize(QtCore.QSize(200, 16777215))
+ self.ObjTrans_start_x.setObjectName(_fromUtf8("ObjTrans_start_x"))
+ self.gridLayout_28.addWidget(self.ObjTrans_start_x, 0, 1, 1, 1)
+ self.gridLayout_27.addLayout(self.gridLayout_28, 0, 0, 1, 1)
+ self.gridLayout_40 = QtGui.QGridLayout()
+ self.gridLayout_40.setObjectName(_fromUtf8("gridLayout_40"))
+ self.label_4 = QtGui.QLabel(self.groupBox_3)
+ self.label_4.setObjectName(_fromUtf8("label_4"))
+ self.gridLayout_40.addWidget(self.label_4, 0, 0, 1, 1)
+ self.ObjTrans_start_y = QtGui.QLineEdit(self.groupBox_3)
+ self.ObjTrans_start_y.setEnabled(False)
+ self.ObjTrans_start_y.setMinimumSize(QtCore.QSize(90, 0))
+ self.ObjTrans_start_y.setMaximumSize(QtCore.QSize(200, 16777215))
+ self.ObjTrans_start_y.setObjectName(_fromUtf8("ObjTrans_start_y"))
+ self.gridLayout_40.addWidget(self.ObjTrans_start_y, 0, 1, 1, 1)
+ self.gridLayout_27.addLayout(self.gridLayout_40, 1, 0, 1, 1)
+ self.gridLayout_41 = QtGui.QGridLayout()
+ self.gridLayout_41.setObjectName(_fromUtf8("gridLayout_41"))
+ self.label_6 = QtGui.QLabel(self.groupBox_3)
+ self.label_6.setObjectName(_fromUtf8("label_6"))
+ self.gridLayout_41.addWidget(self.label_6, 0, 0, 1, 1)
+ self.ObjTrans_start_z = QtGui.QLineEdit(self.groupBox_3)
+ self.ObjTrans_start_z.setEnabled(False)
+ self.ObjTrans_start_z.setMinimumSize(QtCore.QSize(90, 0))
+ self.ObjTrans_start_z.setMaximumSize(QtCore.QSize(200, 16777215))
+ self.ObjTrans_start_z.setObjectName(_fromUtf8("ObjTrans_start_z"))
+ self.gridLayout_41.addWidget(self.ObjTrans_start_z, 0, 1, 1, 1)
+ self.gridLayout_27.addLayout(self.gridLayout_41, 2, 0, 1, 1)
+ self.gridLayout_26.addLayout(self.gridLayout_27, 2, 0, 1, 1)
+ self.gridLayout_15.addWidget(self.groupBox_3, 0, 0, 1, 1)
+ icon68 = QtGui.QIcon()
+ icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_4.addTab(self.tab_5, icon68, _fromUtf8(""))
+ self.tab_6 = QtGui.QWidget()
+ self.tab_6.setObjectName(_fromUtf8("tab_6"))
+ self.gridLayout_42 = QtGui.QGridLayout(self.tab_6)
+ self.gridLayout_42.setObjectName(_fromUtf8("gridLayout_42"))
+ self.groupBox_4 = QtGui.QGroupBox(self.tab_6)
+ self.groupBox_4.setMinimumSize(QtCore.QSize(150, 0))
self.groupBox_4.setFlat(False)
self.groupBox_4.setObjectName(_fromUtf8("groupBox_4"))
- self.formLayout_2 = QtGui.QFormLayout(self.groupBox_4)
- self.formLayout_2.setObjectName(_fromUtf8("formLayout_2"))
+ self.gridLayout_43 = QtGui.QGridLayout(self.groupBox_4)
+ self.gridLayout_43.setObjectName(_fromUtf8("gridLayout_43"))
self.ObjTrans_comboBox_end = QtGui.QComboBox(self.groupBox_4)
self.ObjTrans_comboBox_end.setEnabled(True)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
@@ -1332,8 +1494,8 @@ class Ui_Form(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.ObjTrans_comboBox_end.sizePolicy().hasHeightForWidth())
self.ObjTrans_comboBox_end.setSizePolicy(sizePolicy)
- self.ObjTrans_comboBox_end.setMinimumSize(QtCore.QSize(91, 0))
- self.ObjTrans_comboBox_end.setMaximumSize(QtCore.QSize(150, 16777215))
+ self.ObjTrans_comboBox_end.setMinimumSize(QtCore.QSize(100, 0))
+ self.ObjTrans_comboBox_end.setMaximumSize(QtCore.QSize(120, 16777215))
self.ObjTrans_comboBox_end.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContentsOnFirstShow)
self.ObjTrans_comboBox_end.setObjectName(_fromUtf8("ObjTrans_comboBox_end"))
self.ObjTrans_comboBox_end.addItem(_fromUtf8(""))
@@ -1341,43 +1503,58 @@ class Ui_Form(object):
self.ObjTrans_comboBox_end.addItem(_fromUtf8(""))
self.ObjTrans_comboBox_end.addItem(_fromUtf8(""))
self.ObjTrans_comboBox_end.addItem(_fromUtf8(""))
- self.formLayout_2.setWidget(0, QtGui.QFormLayout.LabelRole, self.ObjTrans_comboBox_end)
+ self.ObjTrans_comboBox_end.addItem(_fromUtf8(""))
+ self.gridLayout_43.addWidget(self.ObjTrans_comboBox_end, 0, 0, 1, 1)
self.ObjTrans_button_select_end = QtGui.QPushButton(self.groupBox_4)
self.ObjTrans_button_select_end.setEnabled(True)
- self.ObjTrans_button_select_end.setMinimumSize(QtCore.QSize(50, 0))
- self.ObjTrans_button_select_end.setMaximumSize(QtCore.QSize(150, 16777215))
+ self.ObjTrans_button_select_end.setMinimumSize(QtCore.QSize(100, 0))
+ self.ObjTrans_button_select_end.setMaximumSize(QtCore.QSize(120, 16777215))
self.ObjTrans_button_select_end.setObjectName(_fromUtf8("ObjTrans_button_select_end"))
- self.formLayout_2.setWidget(1, QtGui.QFormLayout.LabelRole, self.ObjTrans_button_select_end)
- self.horizontalLayout_18 = QtGui.QHBoxLayout()
- self.horizontalLayout_18.setObjectName(_fromUtf8("horizontalLayout_18"))
- self.pushButton_2 = QtGui.QPushButton(self.groupBox_4)
- self.pushButton_2.setText(_fromUtf8(""))
- icon66 = QtGui.QIcon()
- icon66.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.pushButton_2.setIcon(icon66)
- self.pushButton_2.setIconSize(QtCore.QSize(20, 20))
- self.pushButton_2.setCheckable(False)
- self.pushButton_2.setFlat(True)
- self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
- self.horizontalLayout_18.addWidget(self.pushButton_2)
- self.ObjTrans_end_x = QtGui.QLineEdit(self.groupBox_4)
- self.ObjTrans_end_x.setEnabled(False)
- self.ObjTrans_end_x.setMaximumSize(QtCore.QSize(50, 16777215))
- self.ObjTrans_end_x.setObjectName(_fromUtf8("ObjTrans_end_x"))
- self.horizontalLayout_18.addWidget(self.ObjTrans_end_x)
- self.ObjTrans_end_y = QtGui.QLineEdit(self.groupBox_4)
- self.ObjTrans_end_y.setEnabled(False)
- self.ObjTrans_end_y.setMaximumSize(QtCore.QSize(50, 16777215))
- self.ObjTrans_end_y.setObjectName(_fromUtf8("ObjTrans_end_y"))
- self.horizontalLayout_18.addWidget(self.ObjTrans_end_y)
+ self.gridLayout_43.addWidget(self.ObjTrans_button_select_end, 1, 0, 1, 1)
+ self.gridLayout_44 = QtGui.QGridLayout()
+ self.gridLayout_44.setObjectName(_fromUtf8("gridLayout_44"))
+ self.gridLayout_45 = QtGui.QGridLayout()
+ self.gridLayout_45.setObjectName(_fromUtf8("gridLayout_45"))
+ self.label_7 = QtGui.QLabel(self.groupBox_4)
+ self.label_7.setObjectName(_fromUtf8("label_7"))
+ self.gridLayout_45.addWidget(self.label_7, 0, 0, 1, 1)
self.ObjTrans_end_z = QtGui.QLineEdit(self.groupBox_4)
self.ObjTrans_end_z.setEnabled(False)
- self.ObjTrans_end_z.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.ObjTrans_end_z.setMinimumSize(QtCore.QSize(90, 0))
+ self.ObjTrans_end_z.setMaximumSize(QtCore.QSize(200, 16777215))
self.ObjTrans_end_z.setObjectName(_fromUtf8("ObjTrans_end_z"))
- self.horizontalLayout_18.addWidget(self.ObjTrans_end_z)
- self.formLayout_2.setLayout(2, QtGui.QFormLayout.SpanningRole, self.horizontalLayout_18)
- self.gridLayout_26.addWidget(self.groupBox_4, 0, 0, 1, 1)
- self.gridLayout_27.addWidget(self.frame_6, 3, 0, 1, 1)
+ self.gridLayout_45.addWidget(self.ObjTrans_end_z, 0, 1, 1, 1)
+ self.gridLayout_44.addLayout(self.gridLayout_45, 2, 0, 1, 1)
+ self.gridLayout_46 = QtGui.QGridLayout()
+ self.gridLayout_46.setObjectName(_fromUtf8("gridLayout_46"))
+ self.label_8 = QtGui.QLabel(self.groupBox_4)
+ self.label_8.setObjectName(_fromUtf8("label_8"))
+ self.gridLayout_46.addWidget(self.label_8, 0, 0, 1, 1)
+ self.ObjTrans_end_y = QtGui.QLineEdit(self.groupBox_4)
+ self.ObjTrans_end_y.setEnabled(False)
+ self.ObjTrans_end_y.setMinimumSize(QtCore.QSize(90, 0))
+ self.ObjTrans_end_y.setMaximumSize(QtCore.QSize(200, 16777215))
+ self.ObjTrans_end_y.setObjectName(_fromUtf8("ObjTrans_end_y"))
+ self.gridLayout_46.addWidget(self.ObjTrans_end_y, 0, 1, 1, 1)
+ self.gridLayout_44.addLayout(self.gridLayout_46, 1, 0, 1, 1)
+ self.gridLayout_47 = QtGui.QGridLayout()
+ self.gridLayout_47.setObjectName(_fromUtf8("gridLayout_47"))
+ self.label_9 = QtGui.QLabel(self.groupBox_4)
+ self.label_9.setObjectName(_fromUtf8("label_9"))
+ self.gridLayout_47.addWidget(self.label_9, 0, 0, 1, 1)
+ self.ObjTrans_end_x = QtGui.QLineEdit(self.groupBox_4)
+ self.ObjTrans_end_x.setEnabled(False)
+ self.ObjTrans_end_x.setMinimumSize(QtCore.QSize(90, 0))
+ self.ObjTrans_end_x.setMaximumSize(QtCore.QSize(200, 16777215))
+ self.ObjTrans_end_x.setObjectName(_fromUtf8("ObjTrans_end_x"))
+ self.gridLayout_47.addWidget(self.ObjTrans_end_x, 0, 1, 1, 1)
+ self.gridLayout_44.addLayout(self.gridLayout_47, 0, 0, 1, 1)
+ self.gridLayout_43.addLayout(self.gridLayout_44, 2, 0, 1, 1)
+ self.gridLayout_42.addWidget(self.groupBox_4, 0, 0, 1, 1)
+ icon69 = QtGui.QIcon()
+ icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_4.addTab(self.tab_6, icon69, _fromUtf8(""))
+ self.gridLayout_48.addWidget(self.tabWidget_4, 2, 0, 1, 1)
self.horizontalLayout_16 = QtGui.QHBoxLayout()
self.horizontalLayout_16.setObjectName(_fromUtf8("horizontalLayout_16"))
self.ObjTrans_button_reset = QtGui.QPushButton(self.frame_2)
@@ -1392,50 +1569,93 @@ class Ui_Form(object):
self.ObjTrans_button_apply.setMaximumSize(QtCore.QSize(60, 16777215))
self.ObjTrans_button_apply.setObjectName(_fromUtf8("ObjTrans_button_apply"))
self.horizontalLayout_16.addWidget(self.ObjTrans_button_apply)
- self.gridLayout_27.addLayout(self.horizontalLayout_16, 4, 0, 1, 1)
- self.gridLayout_28.addWidget(self.frame_2, 0, 0, 1, 1)
+ self.gridLayout_48.addLayout(self.horizontalLayout_16, 3, 0, 1, 1)
+ self.gridLayout_49.addWidget(self.frame_2, 0, 0, 1, 1)
spacerItem15 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_28.addItem(spacerItem15, 1, 0, 1, 1)
- self.tabWidget_2.addTab(self.translation_tab, _fromUtf8(""))
+ self.gridLayout_49.addItem(spacerItem15, 1, 0, 1, 1)
+ self.tabWidget_2.addTab(self.translate_tab, _fromUtf8(""))
self.gridLayout_11.addWidget(self.tabWidget_2, 0, 0, 1, 1)
self.tabWidget.addTab(self.Modif_Tab, _fromUtf8(""))
+ self.View_Tab = QtGui.QWidget()
+ self.View_Tab.setObjectName(_fromUtf8("View_Tab"))
+ self.gridLayout_13 = QtGui.QGridLayout(self.View_Tab)
+ self.gridLayout_13.setObjectName(_fromUtf8("gridLayout_13"))
+ self.button_alignview = QtGui.QPushButton(self.View_Tab)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.button_alignview.sizePolicy().hasHeightForWidth())
+ self.button_alignview.setSizePolicy(sizePolicy)
+ self.button_alignview.setMaximumSize(QtCore.QSize(16777215, 16777215))
+ icon70 = QtGui.QIcon()
+ icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_alignview.setIcon(icon70)
+ self.button_alignview.setIconSize(QtCore.QSize(32, 32))
+ self.button_alignview.setObjectName(_fromUtf8("button_alignview"))
+ self.gridLayout_13.addWidget(self.button_alignview, 0, 0, 1, 1)
+ spacerItem16 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_13.addItem(spacerItem16, 1, 0, 1, 1)
+ icon71 = QtGui.QIcon()
+ icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget.addTab(self.View_Tab, icon71, _fromUtf8(""))
self.tab_3 = QtGui.QWidget()
self.tab_3.setObjectName(_fromUtf8("tab_3"))
self.gridLayout_35 = QtGui.QGridLayout(self.tab_3)
self.gridLayout_35.setObjectName(_fromUtf8("gridLayout_35"))
+ self.button_isDistance = QtGui.QPushButton(self.tab_3)
+ icon72 = QtGui.QIcon()
+ icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isDistance.setIcon(icon72)
+ self.button_isDistance.setIconSize(QtCore.QSize(32, 32))
+ self.button_isDistance.setObjectName(_fromUtf8("button_isDistance"))
+ self.gridLayout_35.addWidget(self.button_isDistance, 5, 0, 1, 1)
self.button_isParallel = QtGui.QPushButton(self.tab_3)
- icon67 = QtGui.QIcon()
- icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isParallel.setIcon(icon67)
+ icon73 = QtGui.QIcon()
+ icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isParallel.setIcon(icon73)
self.button_isParallel.setIconSize(QtCore.QSize(32, 32))
self.button_isParallel.setObjectName(_fromUtf8("button_isParallel"))
self.gridLayout_35.addWidget(self.button_isParallel, 0, 0, 1, 1)
- self.button_isPerpendicular = QtGui.QPushButton(self.tab_3)
- icon68 = QtGui.QIcon()
- icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isPerpendicular.setIcon(icon68)
- self.button_isPerpendicular.setIconSize(QtCore.QSize(32, 32))
- self.button_isPerpendicular.setObjectName(_fromUtf8("button_isPerpendicular"))
- self.gridLayout_35.addWidget(self.button_isPerpendicular, 1, 0, 1, 1)
self.button_isCoplanar = QtGui.QPushButton(self.tab_3)
- icon69 = QtGui.QIcon()
- icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isCoplanar.setIcon(icon69)
+ icon74 = QtGui.QIcon()
+ icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isCoplanar.setIcon(icon74)
self.button_isCoplanar.setIconSize(QtCore.QSize(32, 32))
self.button_isCoplanar.setObjectName(_fromUtf8("button_isCoplanar"))
self.gridLayout_35.addWidget(self.button_isCoplanar, 2, 0, 1, 1)
+ spacerItem17 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_35.addItem(spacerItem17, 7, 0, 1, 1)
+ self.button_isPerpendicular = QtGui.QPushButton(self.tab_3)
+ icon75 = QtGui.QIcon()
+ icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isPerpendicular.setIcon(icon75)
+ self.button_isPerpendicular.setIconSize(QtCore.QSize(32, 32))
+ self.button_isPerpendicular.setObjectName(_fromUtf8("button_isPerpendicular"))
+ self.gridLayout_35.addWidget(self.button_isPerpendicular, 1, 0, 1, 1)
self.button_isClearance = QtGui.QPushButton(self.tab_3)
- icon70 = QtGui.QIcon()
- icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isClearance.setIcon(icon70)
+ icon76 = QtGui.QIcon()
+ icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isClearance.setIcon(icon76)
self.button_isClearance.setIconSize(QtCore.QSize(32, 32))
self.button_isClearance.setObjectName(_fromUtf8("button_isClearance"))
self.gridLayout_35.addWidget(self.button_isClearance, 3, 0, 1, 1)
- spacerItem16 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_35.addItem(spacerItem16, 4, 0, 1, 1)
- icon71 = QtGui.QIcon()
- icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget.addTab(self.tab_3, icon71, _fromUtf8(""))
+ self.button_isAngle = QtGui.QPushButton(self.tab_3)
+ icon77 = QtGui.QIcon()
+ icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isAngle.setIcon(icon77)
+ self.button_isAngle.setIconSize(QtCore.QSize(32, 32))
+ self.button_isAngle.setObjectName(_fromUtf8("button_isAngle"))
+ self.gridLayout_35.addWidget(self.button_isAngle, 4, 0, 1, 1)
+ self.button_isView = QtGui.QPushButton(self.tab_3)
+ icon78 = QtGui.QIcon()
+ icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isView.setIcon(icon78)
+ self.button_isView.setIconSize(QtCore.QSize(32, 32))
+ self.button_isView.setObjectName(_fromUtf8("button_isView"))
+ self.gridLayout_35.addWidget(self.button_isView, 6, 0, 1, 1)
+ icon79 = QtGui.QIcon()
+ icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget.addTab(self.tab_3, icon79, _fromUtf8(""))
self.gridLayout_30.addWidget(self.tabWidget, 0, 0, 1, 1)
self.tabWidget_0.addTab(self.tab_2, _fromUtf8(""))
self.gridLayout_9.addWidget(self.tabWidget_0, 0, 0, 1, 1)
@@ -1446,8 +1666,8 @@ class Ui_Form(object):
self.button_WF_quit = QtGui.QPushButton(Form)
self.button_WF_quit.setObjectName(_fromUtf8("button_WF_quit"))
self.horizontalLayout_9.addWidget(self.button_WF_quit)
- spacerItem17 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout_9.addItem(spacerItem17)
+ spacerItem18 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.horizontalLayout_9.addItem(spacerItem18)
self.label_release = QtGui.QLabel(Form)
self.label_release.setObjectName(_fromUtf8("label_release"))
self.horizontalLayout_9.addWidget(self.label_release)
@@ -1455,14 +1675,16 @@ class Ui_Form(object):
self.retranslateUi(Form)
self.tabWidget_0.setCurrentIndex(0)
- self.tabWidget.setCurrentIndex(1)
+ self.tabWidget.setCurrentIndex(0)
self.point_loc_comboBox.setCurrentIndex(1)
- self.tabWidget_2.setCurrentIndex(1)
+ self.tabWidget_2.setCurrentIndex(3)
self.tabWidget_3.setCurrentIndex(0)
self.ObjRot_comboBox_axis.setCurrentIndex(0)
self.ObjRot_comboBox_center.setCurrentIndex(2)
+ self.tabWidget_5.setCurrentIndex(1)
+ self.tabWidget_4.setCurrentIndex(1)
self.ObjTrans_comboBox_start.setCurrentIndex(3)
- self.ObjTrans_comboBox_end.setCurrentIndex(3)
+ self.ObjTrans_comboBox_end.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
@@ -1501,11 +1723,40 @@ class Ui_Form(object):
" Plane=(Plane,dist) ", None, QtGui.QApplication.UnicodeUTF8))
self.radioButton_copy.setText(QtGui.QApplication.translate("Form", "Object copy", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Origin_Tab), QtGui.QApplication.translate("Form", "Ori. Pref.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_point_on_line.setToolTip(QtGui.QApplication.translate("Form", "Create a Point at a certain distance along the line \n"
-"respecting to the choosen reference starting point.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_point_on_line.setText(QtGui.QApplication.translate("Form", "Point along Line", None, QtGui.QApplication.UnicodeUTF8))
- self.distance_point_on_line.setToolTip(QtGui.QApplication.translate("Form", "Distance from the extremity", None, QtGui.QApplication.UnicodeUTF8))
- self.distance_point_on_line.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_point_line_point.setToolTip(QtGui.QApplication.translate("Form", "Point(s)=(Point(s),Line(s)):\n"
+"Create projection(s) of Point(s) onto Line(s).\n"
+"- First select one (or several) Point(s)\n"
+"- Second select one or several) Line(s)\n"
+"- Then push this button\n"
+"\n"
+"Plot the intersection point T on a Line given one Line and One Point C.\n"
+"The Vector TC is perpendicular to the Line.\n"
+"The symetric point Cprime is also created as TC=TCprime.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_point_line_point.setText(QtGui.QApplication.translate("Form", "Point(s)=(Pt(s),Line(s)) ", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_face_center.setToolTip(QtGui.QApplication.translate("Form", "Create a Point at center location of each selected Face(s).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_face_center.setText(QtGui.QApplication.translate("Form", "Face(s) Center", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_circle_center.setToolTip(QtGui.QApplication.translate("Form", "Create a Point at center location of each selected Circle(s) or Arc(s).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_circle_center.setText(QtGui.QApplication.translate("Form", "Circle(s) Center", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_Npoints_center.setToolTip(QtGui.QApplication.translate("Form", "Create a Point at mean location of all selected points.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_Npoints_center.setText(QtGui.QApplication.translate("Form", "Points Center", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_line_center.setToolTip(QtGui.QApplication.translate("Form", "Create Point(s):\n"
+"Cut each selected Line(s) in 2 (n) parts and create a (n-1) Point(s) at ends of edge(s).\n"
+"The number indicates how many parts to consider.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_line_center.setText(QtGui.QApplication.translate("Form", "Line(s) Center", None, QtGui.QApplication.UnicodeUTF8))
+ self.spin_line_center.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts each selected Lines(s) will be cut (Max 100).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_line_face_point.setToolTip(QtGui.QApplication.translate("Form", "Create a point at the intersection of the Line and Plane selected.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_line_face_point.setText(QtGui.QApplication.translate("Form", "Point=(Line,Face) ", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_line_extrema.setToolTip(QtGui.QApplication.translate("Form", "Create Points at start and end location of each selected Line(s).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_line_extrema.setText(QtGui.QApplication.translate("Form", "Line(s) Extrema", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_point_face_point.setToolTip(QtGui.QApplication.translate("Form", "Point(s)=(Point(s),Face(s)):\n"
+"Create projection(s) of Point(s) onto Face(s).\n"
+"- First select one (or several) Point(s)\n"
+"- Second select one or several) Plane(s)\n"
+"- Then push this button\n"
+"\n"
+"Plot the intersection point T on a Plane given one Plane and One Point C.\n"
+"The Vector TC is perpendicular to the plane.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_point_face_point.setText(QtGui.QApplication.translate("Form", "Point(s)=(Pt(s),Face(s))", None, QtGui.QApplication.UnicodeUTF8))
self.button_object_center.setToolTip(QtGui.QApplication.translate("Form", "Create a Point at center location of all selected Object(s).\n"
" if BBox is not toggled\n"
" This point is the MEAN location of all center of Mass (if exist) of all objects.\n"
@@ -1516,55 +1767,18 @@ class Ui_Form(object):
" Be aware this point is not necessary the center of Mass of all Objects!", None, QtGui.QApplication.UnicodeUTF8))
self.button_object_center.setText(QtGui.QApplication.translate("Form", "Object(s) Center", None, QtGui.QApplication.UnicodeUTF8))
self.checkBox_object_center.setText(QtGui.QApplication.translate("Form", "BBox", None, QtGui.QApplication.UnicodeUTF8))
- self.button_line_center.setToolTip(QtGui.QApplication.translate("Form", "Create Point(s):\n"
-"Cut each selected Line(s) in 2 (n) parts and create a (n-1) Point(s) at ends of edge(s).\n"
-"The number indicates how many parts to consider.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_line_center.setText(QtGui.QApplication.translate("Form", "Line(s) Center", None, QtGui.QApplication.UnicodeUTF8))
- self.spin_line_center.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts each selected Lines(s) will be cut.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_circle_center.setToolTip(QtGui.QApplication.translate("Form", "Create a Point at center location of each selected Circle(s) or Arc(s).", None, QtGui.QApplication.UnicodeUTF8))
- self.button_circle_center.setText(QtGui.QApplication.translate("Form", "Circle(s) Center", None, QtGui.QApplication.UnicodeUTF8))
- self.button_Npoints_center.setToolTip(QtGui.QApplication.translate("Form", "Create a Point at mean location of all selected points.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_Npoints_center.setText(QtGui.QApplication.translate("Form", "Points Center", None, QtGui.QApplication.UnicodeUTF8))
- self.button_line_extrema.setToolTip(QtGui.QApplication.translate("Form", "Create Points at start and end location of each selected Line(s).", None, QtGui.QApplication.UnicodeUTF8))
- self.button_line_extrema.setText(QtGui.QApplication.translate("Form", "Line(s) Extrema", None, QtGui.QApplication.UnicodeUTF8))
- self.button_point_face_point.setToolTip(QtGui.QApplication.translate("Form", "Create a projection Point of a Point onto a Face.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_point_face_point.setText(QtGui.QApplication.translate("Form", "Point=(Point,Face)", None, QtGui.QApplication.UnicodeUTF8))
- self.button_face_center.setToolTip(QtGui.QApplication.translate("Form", "Create a Point at center location of each selected Face(s).", None, QtGui.QApplication.UnicodeUTF8))
- self.button_face_center.setText(QtGui.QApplication.translate("Form", "Face(s) Center", None, QtGui.QApplication.UnicodeUTF8))
- self.button_line_face_point.setToolTip(QtGui.QApplication.translate("Form", "Create a point at the intersection of the Line and Plane selected.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_line_face_point.setText(QtGui.QApplication.translate("Form", "Point=(Line,Face) ", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Point_Tab1), QtGui.QApplication.translate("Form", "Point 1/2", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget.setTabToolTip(self.tabWidget.indexOf(self.Point_Tab1), QtGui.QApplication.translate("Form", "Point", None, QtGui.QApplication.UnicodeUTF8))
- self.button_point_to_sketch.setToolTip(QtGui.QApplication.translate("Form", "Transform Point(s) in Sketch\'s Point(s) by projection onto the Sketch\'s Plane:\n"
-"- First select an existing Skecth;\n"
-"- Select as much as Points needed;\n"
-"Then click on this button.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_point_to_sketch.setText(QtGui.QApplication.translate("Form", "Point(s) to Sketch", None, QtGui.QApplication.UnicodeUTF8))
- self.button_click_for_point.setToolTip(QtGui.QApplication.translate("Form", "Create a set of Points on a Plane perpendicular to the view at location of mouse clicks.\n"
-"- Click first on the Button then click on the View (with no object in background).\n"
-"- Click first on the Button then click on the View (with an object in background), it will attach the points to the surface of the object.\n"
-"", None, QtGui.QApplication.UnicodeUTF8))
- self.button_click_for_point.setText(QtGui.QApplication.translate("Form", "Click", None, QtGui.QApplication.UnicodeUTF8))
self.button_twolines_point.setToolTip(QtGui.QApplication.translate("Form", "Plot one or two Point(s) at minimum distance of two Lines\n"
"Create a Point at intersection of 2 crossing Lines.", None, QtGui.QApplication.UnicodeUTF8))
self.button_twolines_point.setText(QtGui.QApplication.translate("Form", "Point=(Line,Line) ", None, QtGui.QApplication.UnicodeUTF8))
- self.button_cut_wire_point.setToolTip(QtGui.QApplication.translate("Form", "Create Points by Partition:\n"
-"Cut the selected wire(s) in 2(n) parts and create 2(n) Points with function discretize.\n"
-"The number indicates in how many parts to cut.\n"
-"Wires can be:\n"
-" Line\n"
-" Circle\n"
-" Arc\n"
-" Ellipse\n"
-"An object must also be seleted but before any Wire to cut all his edges! ", None, QtGui.QApplication.UnicodeUTF8))
- self.button_cut_wire_point.setText(QtGui.QApplication.translate("Form", "Points=Cut(Wire)", None, QtGui.QApplication.UnicodeUTF8))
- self.spin_wire_cut_point.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts the selected Line will be cut.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_object_base_point.setToolTip(QtGui.QApplication.translate("Form", "Create Base Point of all selected Object(s).", None, QtGui.QApplication.UnicodeUTF8))
- self.button_object_base_point.setText(QtGui.QApplication.translate("Form", "Object(s) Base Point", None, QtGui.QApplication.UnicodeUTF8))
- self.button_point_line_point.setToolTip(QtGui.QApplication.translate("Form", "Create a projection Point of a Point onto a Line and symetric point.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_point_line_point.setText(QtGui.QApplication.translate("Form", "Point=(Line,Point) ", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_point_on_line.setToolTip(QtGui.QApplication.translate("Form", "Create a Point at a certain distance along the line \n"
+"respecting to the choosen reference starting point.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_point_on_line.setText(QtGui.QApplication.translate("Form", "Point along Line", None, QtGui.QApplication.UnicodeUTF8))
+ self.distance_point_on_line.setToolTip(QtGui.QApplication.translate("Form", "Distance from the extremity", None, QtGui.QApplication.UnicodeUTF8))
+ self.distance_point_on_line.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
self.button_distPoint.setToolTip(QtGui.QApplication.translate("Form", "Point=(Point,Ax,dist):\n"
-"Create a Point along the given Axis, at a given distance of the slected Point.\n"
+"Create a Point along the given Axis, at a given distance of the selected Point.\n"
"The Axis indicate the direction along where the Point is duplicate.\n"
"(you can also select several axes to define different directions)\n"
"- First select a Point (you can select several points) and one or several Axis \n"
@@ -1579,17 +1793,52 @@ class Ui_Form(object):
self.dist_point.setToolTip(QtGui.QApplication.translate("Form", "Distance to the new Axis.\n"
"Can be negative for the reverse direction!", None, QtGui.QApplication.UnicodeUTF8))
self.dist_point.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8))
- self.spin_dist_point.setToolTip(QtGui.QApplication.translate("Form", "The number of copies.", None, QtGui.QApplication.UnicodeUTF8))
+ self.spin_dist_point.setToolTip(QtGui.QApplication.translate("Form", "The number of copies (Max 100).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_cut_wire_point.setToolTip(QtGui.QApplication.translate("Form", "Create Points by Partition:\n"
+"Cut the selected wire(s) in 2(n) parts and create 2(n) Points with function discretize.\n"
+"The number indicates in how many parts to cut.\n"
+"Wires can be:\n"
+" Line\n"
+" Circle\n"
+" Arc\n"
+" Ellipse\n"
+"An object must also be seleted but before any Wire to cut all his edges! ", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_cut_wire_point.setText(QtGui.QApplication.translate("Form", "Points=Cut(Wire)", None, QtGui.QApplication.UnicodeUTF8))
+ self.spin_wire_cut_point.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts the selected Line will be cut (Max 100).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_click_for_point.setToolTip(QtGui.QApplication.translate("Form", "Create a set of Points on a Plane perpendicular to the view at location of mouse clicks.\n"
+"- Click first on the Button then click on the View (with no object in background).\n"
+"- Click first on the Button then click on the View (with an object in background), it will attach the points to the surface of the object.\n"
+"", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_click_for_point.setText(QtGui.QApplication.translate("Form", "Click", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_object_base_point.setToolTip(QtGui.QApplication.translate("Form", "Create Base Point of all selected Object(s).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_object_base_point.setText(QtGui.QApplication.translate("Form", "Object(s) Base Point", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_point_to_sketch.setToolTip(QtGui.QApplication.translate("Form", "Transform Point(s) in Sketch\'s Point(s) by projection onto the Sketch\'s Plane:\n"
+"- First select an existing Skecth;\n"
+"- Select as much as Points needed;\n"
+"Then click on this button.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_point_to_sketch.setText(QtGui.QApplication.translate("Form", "Point(s) to Sketch", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Point_Tab2), QtGui.QApplication.translate("Form", "Point 2/2", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_object_axis.setToolTip(QtGui.QApplication.translate("Form", "Create 3 Axes at center location of all selected Object(s).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_object_axis.setText(QtGui.QApplication.translate("Form", "Object(s) X, Y, Z Axes", None, QtGui.QApplication.UnicodeUTF8))
self.button_twopoints_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis crossing 2 Points.", None, QtGui.QApplication.UnicodeUTF8))
self.button_twopoints_axis.setText(QtGui.QApplication.translate("Form", "Two Points Axis", None, QtGui.QApplication.UnicodeUTF8))
self.extension_twopoints_axis.setToolTip(QtGui.QApplication.translate("Form", "Distance for the extensions on extrema", None, QtGui.QApplication.UnicodeUTF8))
self.extension_twopoints_axis.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
- self.button_object_axis.setToolTip(QtGui.QApplication.translate("Form", "Create 3 Axes at center location of all selected Object(s).", None, QtGui.QApplication.UnicodeUTF8))
- self.button_object_axis.setText(QtGui.QApplication.translate("Form", "Object(s) X, Y, Z Axes", None, QtGui.QApplication.UnicodeUTF8))
self.button_cylinder_axis.setToolTip(QtGui.QApplication.translate("Form", "Create the Axis of a Cylinder.", None, QtGui.QApplication.UnicodeUTF8))
self.button_cylinder_axis.setText(QtGui.QApplication.translate("Form", "Cylinder(s) Axis", None, QtGui.QApplication.UnicodeUTF8))
- self.button_plane_axis.setToolTip(QtGui.QApplication.translate("Form", "Create 2 Perpendicular Axes at center location of a Plane.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_plane_axis.setToolTip(QtGui.QApplication.translate("Form", "Plane(s) Axes:\n"
+"Create Perpendicular Axes at the center location of a Plane.\n"
+" - First select one (or several) Plane(s);\n"
+" - Then press the button\n"
+"\n"
+"or \n"
+"Create Perpendicular Axes of a Plane at selected locations.\n"
+" - First select one Plane;\n"
+" - Second select Point(s) for locations\n"
+" - Press the button\n"
+"\n"
+"NB: Axes are created on both sides of the Plane\n"
+"The extension is 10 units by defaut but must be changed if needed.", None, QtGui.QApplication.UnicodeUTF8))
self.button_plane_axis.setText(QtGui.QApplication.translate("Form", "Plane(s) Axes", None, QtGui.QApplication.UnicodeUTF8))
self.button_face_normal.setToolTip(QtGui.QApplication.translate("Form", "Create a normal Axis at click location of a Face.\n"
"Click first in the view to select and object,\n"
@@ -1600,57 +1849,41 @@ class Ui_Form(object):
" If zero In case of cylinder axis the extension will be a percentage of the object length.\n"
" If zero and plane of face Normal, the extension will be 10 units.", None, QtGui.QApplication.UnicodeUTF8))
self.extension_face_normal.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
- self.button_point_line_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis Parallel to an Axis and crossing a Point.\n"
-"-Select one Axis and one Point NOT on the previous Axis.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_point_line_axis.setText(QtGui.QApplication.translate("Form", "Axis=(Point,Axis)", None, QtGui.QApplication.UnicodeUTF8))
- self.point_loc_comboBox.setToolTip(QtGui.QApplication.translate("Form", "The Point will be at :\n"
-"Start of the line;\n"
-"Mid of the line;\n"
-"End of the line.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_point_line_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis Parallel to an Axis (as Direction) and crossing a Point.\n"
+"- Select one Axis and one (or several) Point(s) NOT on the previous Axis.\n"
+"Define the length and the attach point if needed.\n"
+"A Length of Zero means the length of already selected Axis will be used.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_point_line_axis.setText(QtGui.QApplication.translate("Form", "Axis=(Pt,Dir)", None, QtGui.QApplication.UnicodeUTF8))
+ self.extension_line.setToolTip(QtGui.QApplication.translate("Form", "Define the length of the Axis to create.\n"
+"A Length of Zero means the length of already selected Axis will be used.", None, QtGui.QApplication.UnicodeUTF8))
+ self.extension_line.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
+ self.point_loc_comboBox.setToolTip(QtGui.QApplication.translate("Form", "The Attach Point will be at :\n"
+"Start of the Axis;\n"
+"Mid of the Axis;\n"
+"End of the Axis.", None, QtGui.QApplication.UnicodeUTF8))
self.point_loc_comboBox.setItemText(0, QtGui.QApplication.translate("Form", "Start", None, QtGui.QApplication.UnicodeUTF8))
self.point_loc_comboBox.setItemText(1, QtGui.QApplication.translate("Form", "Mid", None, QtGui.QApplication.UnicodeUTF8))
self.point_loc_comboBox.setItemText(2, QtGui.QApplication.translate("Form", "End", None, QtGui.QApplication.UnicodeUTF8))
self.button_line_point_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis Perpendicular to an Axis and crossing a Point\n"
-"-Select one Axis and one Point NOT on the previous Axis.", None, QtGui.QApplication.UnicodeUTF8))
+"-Select one Axis and one (or several) Point(s) NOT on the previous Axis.", None, QtGui.QApplication.UnicodeUTF8))
self.button_line_point_axis.setText(QtGui.QApplication.translate("Form", "Axis=(Axis,Point)", None, QtGui.QApplication.UnicodeUTF8))
self.extension_line_point_axis.setToolTip(QtGui.QApplication.translate("Form", "Distance for the extensions on extrema.", None, QtGui.QApplication.UnicodeUTF8))
self.extension_line_point_axis.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
- self.button_plane_point_line_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis Perpendicular to an Axis, crossing a Point and Parallel to a Plane.\n"
-"-Select one Plane, one Axis and one Point ON the previous Axis.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_plane_point_line_axis.setText(QtGui.QApplication.translate("Form", "Axis=(Plane,Point,Axis)", None, QtGui.QApplication.UnicodeUTF8))
self.button_twolines_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis between two Axes.\n"
"-Select two Axes.", None, QtGui.QApplication.UnicodeUTF8))
self.button_twolines_axis.setText(QtGui.QApplication.translate("Form", "Axis=(Line,Line)", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_plane_point_line_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis Perpendicular to an Axis, crossing a Point and Parallel to a Plane.\n"
+"-Select one Plane, one Axis and one Point ON the previous Axis.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_plane_point_line_axis.setText(QtGui.QApplication.translate("Form", "Axis=(Plane,Point,Axis)", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Axis_Tab1), QtGui.QApplication.translate("Form", "Axis 1/2", None, QtGui.QApplication.UnicodeUTF8))
- self.button_cut_axis.setToolTip(QtGui.QApplication.translate("Form", "Create Axes:\n"
-"Cut the selected Line in 2(n) parts and create 2(n) Axes.\n"
-"The number indicates in how many parts to cut.\n"
-"\n"
-"NB: You can change the successive lines to be bicolor (red and white) \n"
-"in \"Ori. Pref.\" TAB", None, QtGui.QApplication.UnicodeUTF8))
- self.button_cut_axis.setText(QtGui.QApplication.translate("Form", "Axes=Cut(Axis)", None, QtGui.QApplication.UnicodeUTF8))
- self.spin_axis_cut.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts the selected Line will be cut.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_line_to_sketch.setToolTip(QtGui.QApplication.translate("Form", "Transform Line(s) in Sketch\'s Line(s) by projection onto the Sketch\'s Plane:\n"
-"- First select an existing Skecth;\n"
-"- Select as much as Lines needed;\n"
-"Then click on this button.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_line_to_sketch.setText(QtGui.QApplication.translate("Form", "Axis(es) to Sketch", None, QtGui.QApplication.UnicodeUTF8))
- self.button_line_plane_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis on a Plane by projection from anoher Axis.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_line_plane_axis.setText(QtGui.QApplication.translate("Form", "Axis=(Plane,Axis)", None, QtGui.QApplication.UnicodeUTF8))
- self.button_cut_wire_axis.setToolTip(QtGui.QApplication.translate("Form", "Create Axes by Partition:\n"
-"Cut the selected wire(s) in 2(n) parts and create 2(n) Axes with function discretize.\n"
-"The number indicates in how many parts to cut.\n"
-"Wires can be:\n"
-" Line\n"
-" Circle\n"
-" Arc\n"
-" Ellipse\n"
-"An object must also be seleted but before any Wire to cut all his Edges!\n"
-"NB: You can change the successive lines to be bicolor (red and white) \n"
-"in \"Ori. Pref.\" TAB \n"
-"", None, QtGui.QApplication.UnicodeUTF8))
- self.button_cut_wire_axis.setText(QtGui.QApplication.translate("Form", "Axes=Cut(Wire)", None, QtGui.QApplication.UnicodeUTF8))
- self.spin_wire_cut_axis.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts the selected Line will be cut.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_line_plane_axis.setToolTip(QtGui.QApplication.translate("Form", "Axes=(Pl(s),Axes):\n"
+"Create projection(s) of Axes onto Plane(s).\n"
+"- First select one (or several) Line(s)\n"
+"- Second select one or several) Plane(s)\n"
+"- Then push this button", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_line_plane_axis.setText(QtGui.QApplication.translate("Form", "Axes=(Pl(s),Axes)", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_twoplanes_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis by intersect of 2 Planes.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_twoplanes_axis.setText(QtGui.QApplication.translate("Form", "Axis=(Plane,Plane)", None, QtGui.QApplication.UnicodeUTF8))
self.button_distLine.setToolTip(QtGui.QApplication.translate("Form", "Axes=(Axis,Pt,dist):\n"
"Create an Axis parallel to a given Axis, Point at a given distance.\n"
"The Axis is created along the Plane defined by the given Axis and Point.\n"
@@ -1671,15 +1904,56 @@ class Ui_Form(object):
self.dist_line.setToolTip(QtGui.QApplication.translate("Form", "Distance to the new Axis.\n"
"Can be negative for the reverse direction!", None, QtGui.QApplication.UnicodeUTF8))
self.dist_line.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8))
- self.spin_dist_line.setToolTip(QtGui.QApplication.translate("Form", "The number of copies.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_object_base_axes.setToolTip(QtGui.QApplication.translate("Form", "Create 3 Axes at Base location of all selected Object(s).", None, QtGui.QApplication.UnicodeUTF8))
- self.button_object_base_axes.setText(QtGui.QApplication.translate("Form", "Object(s) Base Axes", None, QtGui.QApplication.UnicodeUTF8))
- self.button_click_for_axis.setToolTip(QtGui.QApplication.translate("Form", "Create a set of Lines on a Plane perpendicular to the view at location of 2 mouse clicks.\n"
-"- Click first on the Button then at least twice click on the View (with no object in background).\n"
-"- Click first on the Button then at least twice click on the View (with an object in background), it will attach the lines to the surface of the object.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_click_for_axis.setText(QtGui.QApplication.translate("Form", "Click", None, QtGui.QApplication.UnicodeUTF8))
- self.button_twoplanes_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis by intersect of 2 Planes.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_twoplanes_axis.setText(QtGui.QApplication.translate("Form", "Axis=(Plane,Plane)", None, QtGui.QApplication.UnicodeUTF8))
+ self.spin_dist_line.setToolTip(QtGui.QApplication.translate("Form", "The number of copies (Max 100).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_angleLine.setToolTip(QtGui.QApplication.translate("Form", "Axes=(Axis,Pt,Pl,a):\n"
+"Create an Axis with an Angle to a origin Axis.\n"
+"- First select an Axis to rotate, then a Plane and a rotation Point\n"
+"- Second push this button\n"
+"or\n"
+"- First select an Axis to rotate, then a rotation Axis and a rotation Point\n"
+"- Second push this button\n"
+"\n"
+"NB:\n"
+"The Axis is created by rotation using :\n"
+" The Normal of the selected Plane as rotation Axis \n"
+"and selected Point as rotation Point. \n"
+"or\n"
+" The second selected Axis as rotation Axis \n"
+"and selected Point as rotation Point. \n"
+"\n"
+" - The angle (in degrees) of rotation can be defined first.\n"
+"Positive number in one direction and negative in the other one.\n"
+" - The second number indicates the number of Axes to create.\n"
+"\n"
+"", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_angleLine.setText(QtGui.QApplication.translate("Form", "Axes=(Axis,Pt,Pl,a)", None, QtGui.QApplication.UnicodeUTF8))
+ self.angle_line.setToolTip(QtGui.QApplication.translate("Form", "Angle to the new Axis.\n"
+"Can be negative for the reverse direction!\n"
+"(in degrees)", None, QtGui.QApplication.UnicodeUTF8))
+ self.angle_line.setText(QtGui.QApplication.translate("Form", "45.0", None, QtGui.QApplication.UnicodeUTF8))
+ self.spin_angle_line.setToolTip(QtGui.QApplication.translate("Form", "The number of copies (Max 100).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_cut_wire_axis.setToolTip(QtGui.QApplication.translate("Form", "Create Axes by Partition:\n"
+"Cut the selected wire(s) in 2(n) parts and create 2(n) Axes with function discretize.\n"
+"The number indicates in how many parts to cut.\n"
+"Wires can be:\n"
+" Line\n"
+" Circle\n"
+" Arc\n"
+" Ellipse\n"
+"An object must also be seleted but before any Wire to cut all his Edges!\n"
+"NB: You can change the successive lines to be bicolor (red and white) \n"
+"in \"Ori. Pref.\" TAB \n"
+"", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_cut_wire_axis.setText(QtGui.QApplication.translate("Form", "Axes=Cut(Wire)", None, QtGui.QApplication.UnicodeUTF8))
+ self.spin_wire_cut_axis.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts the selected Line will be cut (Max 100).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_cut_axis.setToolTip(QtGui.QApplication.translate("Form", "Create Axes:\n"
+"Cut the selected Line in 2(n) parts and create 2(n) Axes.\n"
+"The number indicates in how many parts to cut.\n"
+"\n"
+"NB: You can change the successive lines to be bicolor (red and white) \n"
+"in \"Ori. Pref.\" TAB", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_cut_axis.setText(QtGui.QApplication.translate("Form", "Axes=Cut(Axis)", None, QtGui.QApplication.UnicodeUTF8))
+ self.spin_axis_cut.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts the selected Line will be cut (Max 100).", None, QtGui.QApplication.UnicodeUTF8))
self.button_extension_axis.setToolTip(QtGui.QApplication.translate("Form", "Enlarge(Axis):\n"
"Extend an Axis at two extrema.\n"
"- First select an Axis (or several Axes) \n"
@@ -1690,6 +1964,17 @@ class Ui_Form(object):
self.button_extension_axis.setText(QtGui.QApplication.translate("Form", "Enlarge(Axis)", None, QtGui.QApplication.UnicodeUTF8))
self.extension_axis.setToolTip(QtGui.QApplication.translate("Form", "Extension of the Line in percentage.", None, QtGui.QApplication.UnicodeUTF8))
self.extension_axis.setText(QtGui.QApplication.translate("Form", "50.0", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_click_for_axis.setToolTip(QtGui.QApplication.translate("Form", "Create a set of Lines on a Plane perpendicular to the view at location of 2 mouse clicks.\n"
+"- Click first on the Button then at least twice click on the View (with no object in background).\n"
+"- Click first on the Button then at least twice click on the View (with an object in background), it will attach the lines to the surface of the object.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_click_for_axis.setText(QtGui.QApplication.translate("Form", "Click", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_object_base_axes.setToolTip(QtGui.QApplication.translate("Form", "Create 3 Axes at Base location of all selected Object(s).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_object_base_axes.setText(QtGui.QApplication.translate("Form", "Object(s) Base Axes", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_line_to_sketch.setToolTip(QtGui.QApplication.translate("Form", "Transform Line(s) in Sketch\'s Line(s) by projection onto the Sketch\'s Plane:\n"
+"- First select an existing Skecth;\n"
+"- Select as much as Lines needed;\n"
+"Then click on this button.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_line_to_sketch.setText(QtGui.QApplication.translate("Form", "Axis(es) to Sketch", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Axis_Tab2), QtGui.QApplication.translate("Form", "Axis 2/2", None, QtGui.QApplication.UnicodeUTF8))
self.button_cut_circle.setToolTip(QtGui.QApplication.translate("Form", "Create Arcs:\n"
"Cut the selected Circle(s) or Arc(s) in 2(n) parts and create 2(n) Arcs.\n"
@@ -1701,7 +1986,7 @@ class Ui_Form(object):
"NB: You can change the successive lines to be bicolor (red and white) \n"
"in \"Ori. Pref.\" TAB", None, QtGui.QApplication.UnicodeUTF8))
self.button_cut_circle.setText(QtGui.QApplication.translate("Form", "Arcs=Cut(Circle)", None, QtGui.QApplication.UnicodeUTF8))
- self.spin_circle_cut.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts the selected Circle will be cut.", None, QtGui.QApplication.UnicodeUTF8))
+ self.spin_circle_cut.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts the selected Circle will be cut (Max 100).", None, QtGui.QApplication.UnicodeUTF8))
self.button_linecenter_circle.setToolTip(QtGui.QApplication.translate("Form", "Select an Axis and a Point to create a Circle\n"
"centered on the Point, perpendicular to the Axis \n"
"with the given radius.", None, QtGui.QApplication.UnicodeUTF8))
@@ -1784,7 +2069,7 @@ class Ui_Form(object):
self.dist_plane.setToolTip(QtGui.QApplication.translate("Form", "Distance to the new plane.\n"
"Can be negative for the reverse direction!", None, QtGui.QApplication.UnicodeUTF8))
self.dist_plane.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8))
- self.spin_dist_plane.setToolTip(QtGui.QApplication.translate("Form", "The number of copies.", None, QtGui.QApplication.UnicodeUTF8))
+ self.spin_dist_plane.setToolTip(QtGui.QApplication.translate("Form", "The number of copies (Max 100).", None, QtGui.QApplication.UnicodeUTF8))
self.button_planeandpoint_plane.setToolTip(QtGui.QApplication.translate("Form", "Plane=(Point, Plane):\n"
"Create a plane crossing a Point and parallel to a Plane.\n"
"- First select a plane and a point NOT on the previous plane\n"
@@ -1811,6 +2096,10 @@ class Ui_Form(object):
self.extension_plane.setToolTip(QtGui.QApplication.translate("Form", "Extension of the Plane in each dimension in percentage.", None, QtGui.QApplication.UnicodeUTF8))
self.extension_plane.setText(QtGui.QApplication.translate("Form", "50.0", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Plane_Tab11), QtGui.QApplication.translate("Form", "Plane 2/2", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_boundingboxes.setToolTip(QtGui.QApplication.translate("Form", "Create bounding boxes around each of selected object(s).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_boundingboxes.setText(QtGui.QApplication.translate("Form", "Bounding Box(es)", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_boundingbox.setToolTip(QtGui.QApplication.translate("Form", "Create one bounding box around all of selected object(s).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_boundingbox.setText(QtGui.QApplication.translate("Form", "Bounding Box", None, QtGui.QApplication.UnicodeUTF8))
self.button_cylinder_create.setToolTip(QtGui.QApplication.translate("Form", "Create a Cylinder:\n"
"- First select an Axis and a Ref. Point. \n"
"- Define Diameter and Length if needed.\n"
@@ -1835,17 +2124,82 @@ class Ui_Form(object):
self.height_cube.setToolTip(QtGui.QApplication.translate("Form", "Heigth of the Cube.\n"
"Negative value will reverse the direction from Ref. Point", None, QtGui.QApplication.UnicodeUTF8))
self.height_cube.setText(QtGui.QApplication.translate("Form", "20.0", None, QtGui.QApplication.UnicodeUTF8))
- self.button_boundingboxes.setToolTip(QtGui.QApplication.translate("Form", "Create bounding boxes around each of selected object(s).", None, QtGui.QApplication.UnicodeUTF8))
- self.button_boundingboxes.setText(QtGui.QApplication.translate("Form", "Bounding Box(es)", None, QtGui.QApplication.UnicodeUTF8))
- self.button_boundingbox.setToolTip(QtGui.QApplication.translate("Form", "Create one bounding box around all of selected object(s).", None, QtGui.QApplication.UnicodeUTF8))
- self.button_boundingbox.setText(QtGui.QApplication.translate("Form", "Bounding Box", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_sphere_create.setToolTip(QtGui.QApplication.translate("Form", "Create a Sphere shell:\n"
+"- First select one or several Center Point(s). \n"
+"- Define Diameter if needed.\n"
+"Then Click the button...\n"
+"It will create Sphere shell(s) centered\n"
+"at the selected point(s).", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_sphere_create.setText(QtGui.QApplication.translate("Form", "Sphere", None, QtGui.QApplication.UnicodeUTF8))
+ self.diameter_sphere.setToolTip(QtGui.QApplication.translate("Form", "Diameter of the Sphere.", None, QtGui.QApplication.UnicodeUTF8))
+ self.diameter_sphere.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_dome_create.setToolTip(QtGui.QApplication.translate("Form", "Create a full geodesic dome shell:\n"
+"- First select one or several Center Point(s). \n"
+"- Define Diameter and Frequency Parameter (Integer between 1 to 10) if needed.\n"
+"Then Click the button...\n"
+"It will create full geodesic dome shell(s) with a X-Y-symmetry plane \n"
+"for even frequencies and centered\n"
+"at the selected point(s).\n"
+"\n"
+"If Frequency Parameter = 1, the code create an icosahedron. \n"
+"An icosahedron is a polyhedron with 20 faces.\n"
+"\n"
+"Original code from : Ulrich Brammer", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_dome_create.setText(QtGui.QApplication.translate("Form", "Dome", None, QtGui.QApplication.UnicodeUTF8))
+ self.spin_frequency_dome.setToolTip(QtGui.QApplication.translate("Form", "Frequency Parameter (Integer between 1 to 20).", None, QtGui.QApplication.UnicodeUTF8))
+ self.diameter_dome.setToolTip(QtGui.QApplication.translate("Form", "Diameter of the Dome.", None, QtGui.QApplication.UnicodeUTF8))
+ self.diameter_dome.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Objects_Tab2), QtGui.QApplication.translate("Form", "Object", None, QtGui.QApplication.UnicodeUTF8))
- self.button_alignview.setToolTip(QtGui.QApplication.translate("Form", "Set the current view perpendicular to the selected Face, \n"
-"or aligned to the selected Axis, \n"
-"or aligned on 2 Points.\n"
-"ReClick with same selection, will reverse the direction.", None, QtGui.QApplication.UnicodeUTF8))
- self.button_alignview.setText(QtGui.QApplication.translate("Form", "Align View to ...", None, QtGui.QApplication.UnicodeUTF8))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.View_Tab), QtGui.QApplication.translate("Form", "View", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_alignface2view.setToolTip(QtGui.QApplication.translate("Form", "Align the face of selected object(s) to the actual view Plane.\n"
+" - Click first to select a Face of one or several objects.\n"
+"Then Click the button.\n"
+"\n"
+"NB:\n"
+" The center of rotation is the center of the bounbing box if possible or \n"
+" the center of the Face.\n"
+" \n"
+" if the Face of the object selected is already aligned to the view Plane,\n"
+" a rotation of 180 deg is applied to the object.\n"
+" In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1)\n"
+"", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_alignface2view.setText(QtGui.QApplication.translate("Form", "Align Face to View", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_align_faces.setToolTip(QtGui.QApplication.translate("Form", "Align the Face(s) from selected object(s) to the last Face selected.\n"
+" - Click first to select a Face of an object or several Faces from several objects. \n"
+" - Click second to select a Face to align to.\n"
+"Then Click the button.\n"
+"\n"
+"NB:\n"
+" The center of rotation is the center of the bounbing box if possible or \n"
+" the center of the Face.\n"
+" \n"
+" if the Face of the object selected is already aligned to the last one,\n"
+" a rotation of 180 deg is applied to the object.\n"
+" In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1)", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_align_faces.setText(QtGui.QApplication.translate("Form", "Align Faces", None, QtGui.QApplication.UnicodeUTF8))
+ self.angle_align_faces.setToolTip(QtGui.QApplication.translate("Form", "This Angle (in degrees) will be added to the angle needed to align Faces.", None, QtGui.QApplication.UnicodeUTF8))
+ self.angle_align_faces.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_align_edges.setToolTip(QtGui.QApplication.translate("Form", "Align the Edge(s) from selected object(s) to the last Edge selected.\n"
+" - Click first to select an Edge of an object or several Edges from several objects. \n"
+" - Click second to select an Edge to align to.\n"
+"Then Click the button.\n"
+"\n"
+"NB:\n"
+" The center of rotation is the center of the bounbing box if possible or \n"
+" the center of the Edge.\n"
+" \n"
+" if the Edge of the object selected is already aligned to the last one,\n"
+" a rotation of 180 deg is applied to the object.\n"
+" In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1)", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_align_edges.setText(QtGui.QApplication.translate("Form", "Align Edges", None, QtGui.QApplication.UnicodeUTF8))
+ self.angle_align_edges.setToolTip(QtGui.QApplication.translate("Form", "This Angle (in degrees) will be added to the angle needed to align Edges.", None, QtGui.QApplication.UnicodeUTF8))
+ self.angle_align_edges.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_joint_points.setToolTip(QtGui.QApplication.translate("Form", "Joint Point(s) from selected object(s) to the last Point selected.\n"
+" - Click first to select a Point of an object or several Points from several objects. \n"
+" - Click second to select an Point to joint to.\n"
+"Then Click the button.\n"
+"", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_joint_points.setText(QtGui.QApplication.translate("Form", "Joint Points", None, QtGui.QApplication.UnicodeUTF8))
+ self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.align_tab), QtGui.QApplication.translate("Form", "Align", None, QtGui.QApplication.UnicodeUTF8))
self.groupBox_6.setTitle(QtGui.QApplication.translate("Form", "Object", None, QtGui.QApplication.UnicodeUTF8))
self.button_cut_select_object.setToolTip(QtGui.QApplication.translate("Form", "Select the Object to cut:\n"
"First Click on the object in the view \n"
@@ -1869,13 +2223,14 @@ class Ui_Form(object):
self.button_cut_reset.setText(QtGui.QApplication.translate("Form", "Reset", None, QtGui.QApplication.UnicodeUTF8))
self.button_cut_apply.setToolTip(QtGui.QApplication.translate("Form", "Cut an object by selecting a Line cut, a Plane and an Angle regarding the Plane.", None, QtGui.QApplication.UnicodeUTF8))
self.button_cut_apply.setText(QtGui.QApplication.translate("Form", "Apply", None, QtGui.QApplication.UnicodeUTF8))
- self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.cutting_tab), QtGui.QApplication.translate("Form", "Cutting", None, QtGui.QApplication.UnicodeUTF8))
+ self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.cut_tab), QtGui.QApplication.translate("Form", "Cut", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjRot_button_select.setToolTip(QtGui.QApplication.translate("Form", "- Select one or several object(s) in the view and \n"
+"- Click on this button.\n"
+"\n"
+"NB\n"
+"Once object(s) are selected an other Click will unselect them !\n"
+"Selected Object(s) will be displayed with 75% of transparency.", None, QtGui.QApplication.UnicodeUTF8))
self.ObjRot_button_select.setText(QtGui.QApplication.translate("Form", "Select Object(s)", None, QtGui.QApplication.UnicodeUTF8))
- self.groupBox_2.setTitle(QtGui.QApplication.translate("Form", "Angle of rotation :", None, QtGui.QApplication.UnicodeUTF8))
- self.ObjRot_lineEdit_angle.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
- self.label_angle_2.setText(QtGui.QApplication.translate("Form", " (deg)", None, QtGui.QApplication.UnicodeUTF8))
- self.ObjRot_button_reset.setText(QtGui.QApplication.translate("Form", "Reset", None, QtGui.QApplication.UnicodeUTF8))
- self.ObjRot_button_apply.setText(QtGui.QApplication.translate("Form", "Apply", None, QtGui.QApplication.UnicodeUTF8))
self.ObjRot_comboBox_axis.setItemText(0, QtGui.QApplication.translate("Form", "X", None, QtGui.QApplication.UnicodeUTF8))
self.ObjRot_comboBox_axis.setItemText(1, QtGui.QApplication.translate("Form", "Y", None, QtGui.QApplication.UnicodeUTF8))
self.ObjRot_comboBox_axis.setItemText(2, QtGui.QApplication.translate("Form", "Z", None, QtGui.QApplication.UnicodeUTF8))
@@ -1888,58 +2243,167 @@ class Ui_Form(object):
self.ObjRot_comboBox_center.setItemText(3, QtGui.QApplication.translate("Form", "To select", None, QtGui.QApplication.UnicodeUTF8))
self.ObjRot_button_select_center.setText(QtGui.QApplication.translate("Form", "Select", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget_3.setTabText(self.tabWidget_3.indexOf(self.tab_9), QtGui.QApplication.translate("Form", "Center", None, QtGui.QApplication.UnicodeUTF8))
- self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.rotation_tab), QtGui.QApplication.translate("Form", "Rotation", None, QtGui.QApplication.UnicodeUTF8))
+ self.groupBox_2.setTitle(QtGui.QApplication.translate("Form", "Angle of rotation :", None, QtGui.QApplication.UnicodeUTF8))
+ self.tabWidget_5.setTabText(self.tabWidget_5.indexOf(self.tab_7), QtGui.QApplication.translate("Form", "Define", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjRot_button_select_angle.setToolTip(QtGui.QApplication.translate("Form", "Calculate angle from 2 objects.\n"
+"Angle measurement between two Edges or two Planes\n"
+"- Select the 2 Edges and\n"
+"- Click this button\n"
+"or\n"
+"- Select the 2 Planes and\n"
+"- Click this button\n"
+"or\n"
+"- Select one Edge and one Plane and\n"
+"- Click this button\n"
+"\n"
+"NB:\n"
+" Normals of Planes will be used. ", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjRot_button_select_angle.setText(QtGui.QApplication.translate("Form", "Select", None, QtGui.QApplication.UnicodeUTF8))
+ self.tabWidget_5.setTabText(self.tabWidget_5.indexOf(self.tab_10), QtGui.QApplication.translate("Form", "Select", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjRot_lineEdit_angle.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_angle_2.setText(QtGui.QApplication.translate("Form", " (deg)", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjRot_button_reset.setText(QtGui.QApplication.translate("Form", "Reset", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjRot_button_apply.setText(QtGui.QApplication.translate("Form", "Apply", None, QtGui.QApplication.UnicodeUTF8))
+ self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.rotate_tab), QtGui.QApplication.translate("Form", "Rotate", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjTrans_button_select.setToolTip(QtGui.QApplication.translate("Form", "- Select one or several object(s) in the view and \n"
+"- Click on this button.\n"
+"\n"
+"NB\n"
+"Once object(s) are selected an other Click will unselect them !\n"
+"Selected Object(s) will be displayed with 75% of transparency.", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_button_select.setText(QtGui.QApplication.translate("Form", "Select Object(s)", None, QtGui.QApplication.UnicodeUTF8))
- self.groupBox_3.setTitle(QtGui.QApplication.translate("Form", "Starting Point (Blue) :", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjTrans_duplicate.setToolTip(QtGui.QApplication.translate("Form", "Toggle this check box to generate copies the object during the Translation.\n"
+"Copy means that the original Object will be left in his original location.\n"
+"NB:\n"
+"\n"
+"1 copy requested : \n"
+" - If one starting point and one ending point are selected.\n"
+" Only one copy is done!\n"
+"\n"
+" - If one starting point and several ending points are selected.\n"
+" One copy is done at each ending points selected!\n"
+"\n"
+"N copies requested :\n"
+" - If one starting point and one ending point are selected.\n"
+" Only one copy is done at the ending point then at double distance\n"
+" of the ending point along the line defined by starting and ending point,\n"
+" and so on!\n"
+" - If one starting point and several ending points are selected.\n"
+" One copy is done at each ending points selected, then at double distance\n"
+" of each ending points along the line defined by starting and the current \n"
+" ending point, and so on!", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjTrans_duplicate.setText(QtGui.QApplication.translate("Form", "Copy", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjTrans_spin.setToolTip(QtGui.QApplication.translate("Form", "The number of copies.", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjTrans_deepCopy.setToolTip(QtGui.QApplication.translate("Form", "Toggle this check box to realize \"deep\" copies. \n"
+"Means that all children and parents of selected Object(s) will be copied too! \n"
+"\n"
+"If the object selected is Pad and his link is on Sketch, and Skecth parent is Box\n"
+"Box \n"
+"Pad \n"
+" |_Sketch\n"
+"\n"
+"if the current check box is toggle the result will be : \n"
+"Box \n"
+"Pad\n"
+" |_Sketch \n"
+"Box001 \n"
+"Pad001 \n"
+" |_Sketch001 \n"
+"\n"
+"if not the result will be : \n"
+"Box \n"
+"Pad \n"
+"Pad001 \n"
+" |_Sketch \n"
+"\n"
+"On the last result the same Sketch is both link to Pad001 but also still to Pad.", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjTrans_deepCopy.setText(QtGui.QApplication.translate("Form", "Deep", None, QtGui.QApplication.UnicodeUTF8))
+ self.groupBox_3.setTitle(QtGui.QApplication.translate("Form", "Starting Point :", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_comboBox_start.setItemText(0, QtGui.QApplication.translate("Form", "Origin", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_comboBox_start.setItemText(1, QtGui.QApplication.translate("Form", "Base Obj.", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_comboBox_start.setItemText(2, QtGui.QApplication.translate("Form", "Center Obj.(s)", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_comboBox_start.setItemText(3, QtGui.QApplication.translate("Form", "To select", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_comboBox_start.setItemText(4, QtGui.QApplication.translate("Form", "To define", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_button_select_start.setText(QtGui.QApplication.translate("Form", "Select", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_3.setText(QtGui.QApplication.translate("Form", "X :", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_start_x.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_4.setText(QtGui.QApplication.translate("Form", "Y :", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_start_y.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_6.setText(QtGui.QApplication.translate("Form", "Z :", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_start_z.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
- self.ObjTrans_duplicate.setToolTip(QtGui.QApplication.translate("Form", "Toggle this to copy the object during the Translation.", None, QtGui.QApplication.UnicodeUTF8))
- self.ObjTrans_duplicate.setText(QtGui.QApplication.translate("Form", "Obj. Copy", None, QtGui.QApplication.UnicodeUTF8))
- self.ObjTrans_spin.setToolTip(QtGui.QApplication.translate("Form", "The number of copies.", None, QtGui.QApplication.UnicodeUTF8))
- self.groupBox_4.setTitle(QtGui.QApplication.translate("Form", "Ending Point(s) (White) :", None, QtGui.QApplication.UnicodeUTF8))
+ self.tabWidget_4.setTabText(self.tabWidget_4.indexOf(self.tab_5), QtGui.QApplication.translate("Form", "Start", None, QtGui.QApplication.UnicodeUTF8))
+ self.groupBox_4.setTitle(QtGui.QApplication.translate("Form", "Ending Point :", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_comboBox_end.setItemText(0, QtGui.QApplication.translate("Form", "Origin", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_comboBox_end.setItemText(1, QtGui.QApplication.translate("Form", "Base Obj.", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_comboBox_end.setItemText(2, QtGui.QApplication.translate("Form", "Center Obj.(s)", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_comboBox_end.setItemText(3, QtGui.QApplication.translate("Form", "To select", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_comboBox_end.setItemText(4, QtGui.QApplication.translate("Form", "To define", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjTrans_comboBox_end.setItemText(5, QtGui.QApplication.translate("Form", "Relative", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_button_select_end.setText(QtGui.QApplication.translate("Form", "Select", None, QtGui.QApplication.UnicodeUTF8))
- self.ObjTrans_end_x.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
- self.ObjTrans_end_y.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_7.setText(QtGui.QApplication.translate("Form", "Z :", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_end_z.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_8.setText(QtGui.QApplication.translate("Form", "Y :", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjTrans_end_y.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_9.setText(QtGui.QApplication.translate("Form", "X :", None, QtGui.QApplication.UnicodeUTF8))
+ self.ObjTrans_end_x.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8))
+ self.tabWidget_4.setTabText(self.tabWidget_4.indexOf(self.tab_6), QtGui.QApplication.translate("Form", "End", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_button_reset.setText(QtGui.QApplication.translate("Form", "Reset", None, QtGui.QApplication.UnicodeUTF8))
self.ObjTrans_button_apply.setText(QtGui.QApplication.translate("Form", "Apply", None, QtGui.QApplication.UnicodeUTF8))
- self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.translation_tab), QtGui.QApplication.translate("Form", "Translation", None, QtGui.QApplication.UnicodeUTF8))
+ self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.translate_tab), QtGui.QApplication.translate("Form", "Translate", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Modif_Tab), QtGui.QApplication.translate("Form", "Modif.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_alignview.setToolTip(QtGui.QApplication.translate("Form", "Set the current view perpendicular to the selected Face, \n"
+"or aligned to the selected Axis, \n"
+"or aligned on 2 Points.\n"
+"ReClick with same selection, will reverse the direction.", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_alignview.setText(QtGui.QApplication.translate("Form", "Align View to ...", None, QtGui.QApplication.UnicodeUTF8))
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.View_Tab), QtGui.QApplication.translate("Form", "View", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_isDistance.setToolTip(QtGui.QApplication.translate("Form", "Check for two Points distance:\n"
+"Distances measurement and Delta values (on main Axes) between two Points\n"
+"- Select the 2 Points and\n"
+"Click this button\n"
+" ", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_isDistance.setText(QtGui.QApplication.translate("Form", "Distance ?", None, QtGui.QApplication.UnicodeUTF8))
self.button_isParallel.setToolTip(QtGui.QApplication.translate("Form", "Check if two faces or two Edges are Parallel:\n"
"- Select the 2 faces/planes or 2 Edges/Lines and\n"
"Click this button\n"
"\n"
"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None, QtGui.QApplication.UnicodeUTF8))
self.button_isParallel.setText(QtGui.QApplication.translate("Form", "are Parallel ?", None, QtGui.QApplication.UnicodeUTF8))
- self.button_isPerpendicular.setToolTip(QtGui.QApplication.translate("Form", "Check if two faces or two Edges are Perpendicular:\n"
-"- Select the 2 faces/planes or 2 Edges/Lines and\n"
-"Click this button\n"
-"\n"
-"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None, QtGui.QApplication.UnicodeUTF8))
- self.button_isPerpendicular.setText(QtGui.QApplication.translate("Form", "are Perpendicular ?", None, QtGui.QApplication.UnicodeUTF8))
self.button_isCoplanar.setToolTip(QtGui.QApplication.translate("Form", "Check if two faces or two Edges are Coplanar:\n"
"- Select the 2 faces/planes or 2 Edges/Lines and\n"
"Click this button\n"
"\n"
"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None, QtGui.QApplication.UnicodeUTF8))
self.button_isCoplanar.setText(QtGui.QApplication.translate("Form", "are Coplanar ?", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_isPerpendicular.setToolTip(QtGui.QApplication.translate("Form", "Check if two faces or two Edges are Perpendicular:\n"
+"- Select the 2 faces/planes or 2 Edges/Lines and\n"
+"Click this button\n"
+"\n"
+"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_isPerpendicular.setText(QtGui.QApplication.translate("Form", "are Perpendicular ?", None, QtGui.QApplication.UnicodeUTF8))
self.button_isClearance.setToolTip(QtGui.QApplication.translate("Form", "Check for two Objects Clearance distance:\n"
"Quick measurements between parallel faces and similarly placed objects\n"
"- Select the 2 Objects and\n"
"Click this button", None, QtGui.QApplication.UnicodeUTF8))
- self.button_isClearance.setText(QtGui.QApplication.translate("Form", "Clearance ?", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_isClearance.setText(QtGui.QApplication.translate("Form", "Distance Clearance ?", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_isAngle.setToolTip(QtGui.QApplication.translate("Form", "Check for two Edges/Planes angle:\n"
+"Angle measurement between two Edges or two Planes\n"
+"- Select the 2 Edges and\n"
+"- Click this button\n"
+"or\n"
+"- Select the 2 Planes and\n"
+"- Click this button\n"
+"or\n"
+"- Select one Edge and one Plane and\n"
+"- Click this button\n"
+"\n"
+"NB:\n"
+" Normals of Planes will be used. ", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_isAngle.setText(QtGui.QApplication.translate("Form", "Angle ?", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_isView.setToolTip(QtGui.QApplication.translate("Form", "Detect the position of the camera.\n"
+"The returned value is the value provided \n"
+"by the function getCameraOrientation().", None, QtGui.QApplication.UnicodeUTF8))
+ self.button_isView.setText(QtGui.QApplication.translate("Form", "View ?", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), QtGui.QApplication.translate("Form", "Check", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget_0.setTabText(self.tabWidget_0.indexOf(self.tab_2), QtGui.QApplication.translate("Form", "W. F.", None, QtGui.QApplication.UnicodeUTF8))
self.button_WF_quit.setText(QtGui.QApplication.translate("Form", "Close", None, QtGui.QApplication.UnicodeUTF8))
diff --git a/WorkFeature/WFGui_2015.ui b/WorkFeature/WFGui_2015.ui
index 9ba5ad8..e5e1b3b 100644
--- a/WorkFeature/WFGui_2015.ui
+++ b/WorkFeature/WFGui_2015.ui
@@ -6,7 +6,7 @@
0
0
- 349
+ 364
693
@@ -15,7 +15,7 @@
- Icons/WF_Axes.svgIcons/WF_Axes.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_Axes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_Axes.svg
-
@@ -28,8 +28,8 @@
0
0
- 340
- 622
+ 344
+ 638
@@ -64,12 +64,12 @@
QTabWidget::West
- 1
+ 0
- Icons/WF_Axes.svgIcons/WF_Axes.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_Axes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_Axes.svg
Ori. Pref.
@@ -85,7 +85,7 @@
- Icons/WF_Axes.svgIcons/WF_Axes.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_Axes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_Axes.svg
@@ -119,7 +119,7 @@
Verbose
- true
+ false
false
@@ -223,7 +223,7 @@
- Icons/WF_point.svgIcons/WF_point.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_point.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_point.svg
Point 1/2
@@ -232,6 +232,194 @@
Point
+
-
+
+
+ Point(s)=(Point(s),Line(s)):
+Create projection(s) of Point(s) onto Line(s).
+- First select one (or several) Point(s)
+- Second select one or several) Line(s)
+- Then push this button
+
+Plot the intersection point T on a Line given one Line and One Point C.
+The Vector TC is perpendicular to the Line.
+The symetric point Cprime is also created as TC=TCprime.
+
+
+ Point(s)=(Pt(s),Line(s))
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_pointLinePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_pointLinePoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Create a Point at center location of each selected Face(s).
+
+
+ Face(s) Center
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerFacePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerFacePoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Create a Point at center location of each selected Circle(s) or Arc(s).
+
+
+ Circle(s) Center
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerCirclePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerCirclePoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Create a Point at mean location of all selected points.
+
+
+ Points Center
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_NpointsPoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_NpointsPoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
-
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Create Point(s):
+Cut each selected Line(s) in 2 (n) parts and create a (n-1) Point(s) at ends of edge(s).
+The number indicates how many parts to consider.
+
+
+ Line(s) Center
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerLinePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerLinePoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ The number indicates in how many parts each selected Lines(s) will be cut (Max 100).
+
+
+ 2
+
+
+ 100
+
+
+ 1
+
+
+
+
+
+ -
+
+
+ Create a point at the intersection of the Line and Plane selected.
+
+
+ Point=(Line,Face)
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_lineFacePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_lineFacePoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Create Points at start and end location of each selected Line(s).
+
+
+ Line(s) Extrema
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_extremaLinePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_extremaLinePoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
-
@@ -245,7 +433,112 @@
- -
+
-
+
+
+ Point(s)=(Point(s),Face(s)):
+Create projection(s) of Point(s) onto Face(s).
+- First select one (or several) Point(s)
+- Second select one or several) Plane(s)
+- Then push this button
+
+Plot the intersection point T on a Plane given one Plane and One Point C.
+The Vector TC is perpendicular to the plane.
+
+
+ Point(s)=(Pt(s),Face(s))
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_pointFacePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_pointFacePoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
-
+
+
+ Create a Point at center location of all selected Object(s).
+ if BBox is not toggled
+ This point is the MEAN location of all center of Mass (if exist) of all objects.
+ All center of Mass will be created too.
+ if BBox is toggled
+ This point is the center of the Global X,Y,Z bounding box of all objects.
+ This bounding box alway exists (especially for draft objects).
+ Be aware this point is not necessary the center of Mass of all Objects!
+
+
+ Object(s) Center
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerObjectsPoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerObjectsPoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ BBox
+
+
+
+
+
+
+ button_line_extrema
+ button_circle_center
+ button_face_center
+ button_line_face_point
+ button_point_face_point
+ button_Npoints_center
+ verticalSpacer_10
+ button_point_line_point
+
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_point.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_point.svg
+
+
+ Point 2/2
+
+
+ -
+
+
+ Plot one or two Point(s) at minimum distance of two Lines
+Create a Point at intersection of 2 crossing Lines.
+
+
+ Point=(Line,Line)
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_lineLinePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_lineLinePoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
QLayout::SetFixedSize
@@ -273,7 +566,7 @@ respecting to the choosen reference starting point.
- Icons/WF_alongLinePoint.svgIcons/WF_alongLinePoint.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_alongLinePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_alongLinePoint.svg
@@ -313,438 +606,13 @@ respecting to the choosen reference starting point.
- -
-
-
-
-
-
- Create a Point at center location of all selected Object(s).
- if BBox is not toggled
- This point is the MEAN location of all center of Mass (if exist) of all objects.
- All center of Mass will be created too.
- if BBox is toggled
- This point is the center of the Global X,Y,Z bounding box of all objects.
- This bounding box alway exists (especially for draft objects).
- Be aware this point is not necessary the center of Mass of all Objects!
-
-
- Object(s) Center
-
-
-
- Icons/WF_centerObjectsPoint.svgIcons/WF_centerObjectsPoint.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- BBox
-
-
-
-
-
- -
-
-
-
-
-
-
- 16777215
- 16777215
-
-
-
- Create Point(s):
-Cut each selected Line(s) in 2 (n) parts and create a (n-1) Point(s) at ends of edge(s).
-The number indicates how many parts to consider.
-
-
- Line(s) Center
-
-
-
- Icons/WF_centerLinePoint.svgIcons/WF_centerLinePoint.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 40
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- The number indicates in how many parts each selected Lines(s) will be cut.
-
-
- 2
-
-
- 100
-
-
- 1
-
-
-
-
-
- -
-
-
- Create a Point at center location of each selected Circle(s) or Arc(s).
-
-
- Circle(s) Center
-
-
-
- Icons/WF_centerCirclePoint.svgIcons/WF_centerCirclePoint.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Create a Point at mean location of all selected points.
-
-
- Points Center
-
-
-
- Icons/WF_NpointsPoint.svgIcons/WF_NpointsPoint.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Create Points at start and end location of each selected Line(s).
-
-
- Line(s) Extrema
-
-
-
- Icons/WF_extremaLinePoint.svgIcons/WF_extremaLinePoint.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Create a projection Point of a Point onto a Face.
-
-
- Point=(Point,Face)
-
-
-
- Icons/WF_pointFacePoint.svgIcons/WF_pointFacePoint.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Create a Point at center location of each selected Face(s).
-
-
- Face(s) Center
-
-
-
- Icons/WF_centerFacePoint.svgIcons/WF_centerFacePoint.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Create a point at the intersection of the Line and Plane selected.
-
-
- Point=(Line,Face)
-
-
-
- Icons/WF_lineFacePoint.svgIcons/WF_lineFacePoint.svg
-
-
-
- 32
- 32
-
-
-
-
-
- button_line_extrema
- button_circle_center
- button_face_center
- button_line_face_point
- button_point_face_point
- button_Npoints_center
- verticalSpacer_10
-
-
-
-
- ../Icons/WF_point.svg../Icons/WF_point.svg
-
-
- Point 2/2
-
-
- -
-
-
- Transform Point(s) in Sketch's Point(s) by projection onto the Sketch's Plane:
-- First select an existing Skecth;
-- Select as much as Points needed;
-Then click on this button.
-
-
- Point(s) to Sketch
-
-
-
- ../Icons/WF_2Sketch.svg../Icons/WF_2Sketch.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Create a set of Points on a Plane perpendicular to the view at location of mouse clicks.
-- Click first on the Button then click on the View (with no object in background).
-- Click first on the Button then click on the View (with an object in background), it will attach the points to the surface of the object.
-
-
-
- Click
-
-
-
- ../Icons/WF_clickPoint.svg../Icons/WF_clickPoint.svg
-
-
-
- 32
- 32
-
-
-
- true
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- Plot one or two Point(s) at minimum distance of two Lines
-Create a Point at intersection of 2 crossing Lines.
-
-
- Point=(Line,Line)
-
-
-
- Icons/WF_lineLinePoint.svgIcons/WF_lineLinePoint.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
-
-
-
- 16777215
- 16777215
-
-
-
- Create Points by Partition:
-Cut the selected wire(s) in 2(n) parts and create 2(n) Points with function discretize.
-The number indicates in how many parts to cut.
-Wires can be:
- Line
- Circle
- Arc
- Ellipse
-An object must also be seleted but before any Wire to cut all his edges!
-
-
- Points=Cut(Wire)
-
-
-
- ../Icons/WF_cutWirePoints.svg../Icons/WF_cutWirePoints.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 40
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- The number indicates in how many parts the selected Line will be cut.
-
-
- 2
-
-
- 100
-
-
- 1
-
-
-
-
-
- -
-
-
- Create Base Point of all selected Object(s).
-
-
- Object(s) Base Point
-
-
-
- Icons/WF_objectBasePoint.svgIcons/WF_objectBasePoint.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Create a projection Point of a Point onto a Line and symetric point.
-
-
- Point=(Line,Point)
-
-
-
- Icons/WF_pointLinePoint.svgIcons/WF_pointLinePoint.svg
-
-
-
- 32
- 32
-
-
-
-
-
-
Point=(Point,Ax,dist):
-Create a Point along the given Axis, at a given distance of the slected Point.
+Create a Point along the given Axis, at a given distance of the selected Point.
The Axis indicate the direction along where the Point is duplicate.
(you can also select several axes to define different directions)
- First select a Point (you can select several points) and one or several Axis
@@ -761,7 +629,7 @@ The second number indicates the number of Points to create.
- ../Icons/WF_distPointPoint.svg../Icons/WF_distPointPoint.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_distPointPoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_distPointPoint.svg
@@ -815,7 +683,7 @@ Can be negative for the reverse direction!
- The number of copies.
+ The number of copies (Max 100).
QAbstractSpinBox::NoButtons
@@ -827,7 +695,7 @@ Can be negative for the reverse direction!
1
- 10
+ 100
1
@@ -839,17 +707,185 @@ Can be negative for the reverse direction!
+ -
+
+
-
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Create Points by Partition:
+Cut the selected wire(s) in 2(n) parts and create 2(n) Points with function discretize.
+The number indicates in how many parts to cut.
+Wires can be:
+ Line
+ Circle
+ Arc
+ Ellipse
+An object must also be seleted but before any Wire to cut all his edges!
+
+
+ Points=Cut(Wire)
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutWirePoints.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutWirePoints.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ The number indicates in how many parts the selected Line will be cut (Max 100).
+
+
+ 2
+
+
+ 100
+
+
+ 1
+
+
+
+
+
+ -
+
+
+ Create a set of Points on a Plane perpendicular to the view at location of mouse clicks.
+- Click first on the Button then click on the View (with no object in background).
+- Click first on the Button then click on the View (with an object in background), it will attach the points to the surface of the object.
+
+
+
+ Click
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_clickPoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_clickPoint.svg
+
+
+
+ 32
+ 32
+
+
+
+ true
+
+
+
+ -
+
+
+ Create Base Point of all selected Object(s).
+
+
+ Object(s) Base Point
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_objectBasePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_objectBasePoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Transform Point(s) in Sketch's Point(s) by projection onto the Sketch's Plane:
+- First select an existing Skecth;
+- Select as much as Points needed;
+Then click on this button.
+
+
+ Point(s) to Sketch
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_2Sketch.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_2Sketch.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
- Icons/WF_axis.svgIcons/WF_axis.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_axis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_axis.svg
Axis 1/2
+ -
+
+
+ Create 3 Axes at center location of all selected Object(s).
+
+
+ Object(s) X, Y, Z Axes
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerObjectsAxes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerObjectsAxes.svg
+
+
+
+ 32
+ 32
+
+
+
+
-
-
@@ -874,7 +910,7 @@ Can be negative for the reverse direction!
- Icons/WF_2pointsLine.svgIcons/WF_2pointsLine.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_2pointsLine.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_2pointsLine.svg
@@ -902,26 +938,6 @@ Can be negative for the reverse direction!
- -
-
-
- Create 3 Axes at center location of all selected Object(s).
-
-
- Object(s) X, Y, Z Axes
-
-
-
- Icons/WF_centerObjectsAxes.svgIcons/WF_centerObjectsAxes.svg
-
-
-
- 32
- 32
-
-
-
-
-
-
@@ -942,7 +958,7 @@ Can be negative for the reverse direction!
- Icons/WF_cylinderAxis.svgIcons/WF_cylinderAxis.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cylinderAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cylinderAxis.svg
@@ -961,14 +977,26 @@ Can be negative for the reverse direction!
- Create 2 Perpendicular Axes at center location of a Plane.
+ Plane(s) Axes:
+Create Perpendicular Axes at the center location of a Plane.
+ - First select one (or several) Plane(s);
+ - Then press the button
+
+or
+Create Perpendicular Axes of a Plane at selected locations.
+ - First select one Plane;
+ - Second select Point(s) for locations
+ - Press the button
+
+NB: Axes are created on both sides of the Plane
+The extension is 10 units by defaut but must be changed if needed.
Plane(s) Axes
- Icons/WF_FaceAxis.svgIcons/WF_FaceAxis.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_FaceAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_FaceAxis.svg
@@ -1003,7 +1031,7 @@ then click on a location on the selected object.
- Icons/WF_FaceNormal.svgIcons/WF_FaceNormal.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_FaceNormal.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_FaceNormal.svg
@@ -1066,7 +1094,7 @@ then click on a location on the selected object.
-
-
+
-
@@ -1076,15 +1104,17 @@ then click on a location on the selected object.
- Create an Axis Parallel to an Axis and crossing a Point.
--Select one Axis and one Point NOT on the previous Axis.
+ Create an Axis Parallel to an Axis (as Direction) and crossing a Point.
+- Select one Axis and one (or several) Point(s) NOT on the previous Axis.
+Define the length and the attach point if needed.
+A Length of Zero means the length of already selected Axis will be used.
- Axis=(Point,Axis)
+ Axis=(Pt,Dir)
- Icons/WF_pointLineAxis.svgIcons/WF_pointLineAxis.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_pointLineAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_pointLineAxis.svg
@@ -1094,6 +1124,23 @@ then click on a location on the selected object.
+ -
+
+
+
+ 40
+ 16777215
+
+
+
+ Define the length of the Axis to create.
+A Length of Zero means the length of already selected Axis will be used.
+
+
+ 0.0
+
+
+
-
@@ -1103,10 +1150,10 @@ then click on a location on the selected object.
- The Point will be at :
-Start of the line;
-Mid of the line;
-End of the line.
+ The Attach Point will be at :
+Start of the Axis;
+Mid of the Axis;
+End of the Axis.
1
@@ -1154,14 +1201,14 @@ End of the line.
Create an Axis Perpendicular to an Axis and crossing a Point
--Select one Axis and one Point NOT on the previous Axis.
+-Select one Axis and one (or several) Point(s) NOT on the previous Axis.
Axis=(Axis,Point)
- Icons/WF_linePointAxis.svgIcons/WF_linePointAxis.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointAxis.svg
@@ -1189,27 +1236,6 @@ End of the line.
- -
-
-
- Create an Axis Perpendicular to an Axis, crossing a Point and Parallel to a Plane.
--Select one Plane, one Axis and one Point ON the previous Axis.
-
-
- Axis=(Plane,Point,Axis)
-
-
-
- ../Icons/WF_planeLinePointAxis.svg../Icons/WF_planeLinePointAxis.svg
-
-
-
- 32
- 32
-
-
-
-
-
@@ -1221,7 +1247,7 @@ End of the line.
- Icons/WF_twoLinesAxis.svgIcons/WF_twoLinesAxis.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_twoLinesAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_twoLinesAxis.svg
@@ -1231,7 +1257,28 @@ End of the line.
- -
+
-
+
+
+ Create an Axis Perpendicular to an Axis, crossing a Point and Parallel to a Plane.
+-Select one Plane, one Axis and one Point ON the previous Axis.
+
+
+ Axis=(Plane,Point,Axis)
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_planeLinePointAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_planeLinePointAxis.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
Qt::Vertical
@@ -1249,109 +1296,27 @@ End of the line.
- ../Icons/WF_axis.svg../Icons/WF_axis.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_axis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_axis.svg
Axis 2/2
-
-
-
-
-
-
-
-
- 16777215
- 16777215
-
-
-
- Create Axes:
-Cut the selected Line in 2(n) parts and create 2(n) Axes.
-The number indicates in how many parts to cut.
-
-NB: You can change the successive lines to be bicolor (red and white)
-in "Ori. Pref." TAB
-
-
- Axes=Cut(Axis)
-
-
-
- ../Icons/WF_cutAxis.svg../Icons/WF_cutAxis.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 40
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- The number indicates in how many parts the selected Line will be cut.
-
-
- 2
-
-
- 100
-
-
- 1
-
-
-
-
-
- -
-
-
- Transform Line(s) in Sketch's Line(s) by projection onto the Sketch's Plane:
-- First select an existing Skecth;
-- Select as much as Lines needed;
-Then click on this button.
-
-
- Axis(es) to Sketch
-
-
-
- ../Icons/WF_2Sketch.svg../Icons/WF_2Sketch.svg
-
-
-
- 32
- 32
-
-
-
-
-
- Create an Axis on a Plane by projection from anoher Axis.
+ Axes=(Pl(s),Axes):
+Create projection(s) of Axes onto Plane(s).
+- First select one (or several) Line(s)
+- Second select one or several) Plane(s)
+- Then push this button
- Axis=(Plane,Axis)
+ Axes=(Pl(s),Axes)
- Icons/WF_linePlaneAxis.svgIcons/WF_linePlaneAxis.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePlaneAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePlaneAxis.svg
@@ -1361,74 +1326,25 @@ Then click on this button.
- -
-
-
-
-
-
-
- 16777215
- 16777215
-
-
-
- Create Axes by Partition:
-Cut the selected wire(s) in 2(n) parts and create 2(n) Axes with function discretize.
-The number indicates in how many parts to cut.
-Wires can be:
- Line
- Circle
- Arc
- Ellipse
-An object must also be seleted but before any Wire to cut all his Edges!
-NB: You can change the successive lines to be bicolor (red and white)
-in "Ori. Pref." TAB
-
-
-
- Axes=Cut(Wire)
-
-
-
- ../Icons/WF_cutWireAxes.svg../Icons/WF_cutWireAxes.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 40
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- The number indicates in how many parts the selected Line will be cut.
-
-
- 2
-
-
- 100
-
-
- 1
-
-
-
-
+ -
+
+
+ Create an Axis by intersect of 2 Planes.
+
+
+ Axis=(Plane,Plane)
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_2PlanesAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_2PlanesAxis.svg
+
+
+
+ 32
+ 32
+
+
+
-
@@ -1457,7 +1373,7 @@ Several Edges of the cube can be selected.
- ../Icons/WF_distAxisAxis.svg../Icons/WF_distAxisAxis.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_distAxisAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_distAxisAxis.svg
@@ -1511,7 +1427,7 @@ Can be negative for the reverse direction!
- The number of copies.
+ The number of copies (Max 100).
QAbstractSpinBox::NoButtons
@@ -1523,7 +1439,7 @@ Can be negative for the reverse direction!
1
- 10
+ 100
1
@@ -1535,82 +1451,250 @@ Can be negative for the reverse direction!
- -
-
-
- Create 3 Axes at Base location of all selected Object(s).
-
-
- Object(s) Base Axes
-
-
-
- Icons/WF_baseObjectsAxes.svgIcons/WF_baseObjectsAxes.svg
-
-
-
- 32
- 32
-
-
-
+
-
+
+
-
+
+
+ Axes=(Axis,Pt,Pl,a):
+Create an Axis with an Angle to a origin Axis.
+- First select an Axis to rotate, then a Plane and a rotation Point
+- Second push this button
+or
+- First select an Axis to rotate, then a rotation Axis and a rotation Point
+- Second push this button
+
+NB:
+The Axis is created by rotation using :
+ The Normal of the selected Plane as rotation Axis
+and selected Point as rotation Point.
+or
+ The second selected Axis as rotation Axis
+and selected Point as rotation Point.
+
+ - The angle (in degrees) of rotation can be defined first.
+Positive number in one direction and negative in the other one.
+ - The second number indicates the number of Axes to create.
+
+
+
+
+ Axes=(Axis,Pt,Pl,a)
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_angleAxisAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_angleAxisAxis.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 40
+ 16777215
+
+
+
+ Angle to the new Axis.
+Can be negative for the reverse direction!
+(in degrees)
+
+
+ 45.0
+
+
+
+ -
+
+
+
+ 30
+ 0
+
+
+
+
+ 30
+ 16777215
+
+
+
+ The number of copies (Max 100).
+
+
+ QAbstractSpinBox::NoButtons
+
+
+ false
+
+
+ 1
+
+
+ 100
+
+
+ 1
+
+
+ 1
+
+
+
+
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- Create a set of Lines on a Plane perpendicular to the view at location of 2 mouse clicks.
-- Click first on the Button then at least twice click on the View (with no object in background).
-- Click first on the Button then at least twice click on the View (with an object in background), it will attach the lines to the surface of the object.
-
-
- Click
-
-
-
- ../Icons/WF_clickLine.svg../Icons/WF_clickLine.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Create an Axis by intersect of 2 Planes.
-
-
- Axis=(Plane,Plane)
-
-
-
- Icons/WF_2PlanesAxis.svgIcons/WF_2PlanesAxis.svg
-
-
-
- 32
- 32
-
-
-
+
-
+
+
-
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Create Axes by Partition:
+Cut the selected wire(s) in 2(n) parts and create 2(n) Axes with function discretize.
+The number indicates in how many parts to cut.
+Wires can be:
+ Line
+ Circle
+ Arc
+ Ellipse
+An object must also be seleted but before any Wire to cut all his Edges!
+NB: You can change the successive lines to be bicolor (red and white)
+in "Ori. Pref." TAB
+
+
+
+ Axes=Cut(Wire)
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutWireAxes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutWireAxes.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ The number indicates in how many parts the selected Line will be cut (Max 100).
+
+
+ 2
+
+
+ 100
+
+
+ 1
+
+
+
+
-
+
+
-
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Create Axes:
+Cut the selected Line in 2(n) parts and create 2(n) Axes.
+The number indicates in how many parts to cut.
+
+NB: You can change the successive lines to be bicolor (red and white)
+in "Ori. Pref." TAB
+
+
+ Axes=Cut(Axis)
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutAxis.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ The number indicates in how many parts the selected Line will be cut (Max 100).
+
+
+ 2
+
+
+ 100
+
+
+ 1
+
+
+
+
+
+ -
-
@@ -1634,7 +1718,7 @@ NB:
- ../Icons/WF_enlargeLine.svg../Icons/WF_enlargeLine.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_enlargeLine.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_enlargeLine.svg
@@ -1674,12 +1758,90 @@ NB:
+ -
+
+
+ Create a set of Lines on a Plane perpendicular to the view at location of 2 mouse clicks.
+- Click first on the Button then at least twice click on the View (with no object in background).
+- Click first on the Button then at least twice click on the View (with an object in background), it will attach the lines to the surface of the object.
+
+
+ Click
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_clickLine.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_clickLine.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Create 3 Axes at Base location of all selected Object(s).
+
+
+ Object(s) Base Axes
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_baseObjectsAxes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_baseObjectsAxes.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Transform Line(s) in Sketch's Line(s) by projection onto the Sketch's Plane:
+- First select an existing Skecth;
+- Select as much as Lines needed;
+Then click on this button.
+
+
+ Axis(es) to Sketch
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_2Sketch.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_2Sketch.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
- ../Icons/WF_circle.svg../Icons/WF_circle.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_circle.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_circle.svg
Circle
@@ -1705,7 +1867,7 @@ in "Ori. Pref." TAB
- ../Icons/WF_cutCircle.svg../Icons/WF_cutCircle.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutCircle.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutCircle.svg
@@ -1730,7 +1892,7 @@ in "Ori. Pref." TAB
- The number indicates in how many parts the selected Circle will be cut.
+ The number indicates in how many parts the selected Circle will be cut (Max 100).
2
@@ -1759,7 +1921,7 @@ with the given radius.
- ../Icons/WF_lineCenterCircle.svg../Icons/WF_lineCenterCircle.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_lineCenterCircle.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_lineCenterCircle.svg
@@ -1804,7 +1966,7 @@ centered on the Axis and tangenting the Point.
- ../Icons/WF_linePointCircle.svg../Icons/WF_linePointCircle.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointCircle.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointCircle.svg
@@ -1837,7 +1999,7 @@ centered on the Axis and tangenting the Point.
- ../Icons/WF_3pointsEllipse.svg../Icons/WF_3pointsEllipse.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_3pointsEllipse.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_3pointsEllipse.svg
@@ -1857,7 +2019,7 @@ centered on the Axis and tangenting the Point.
- ../Icons/WF_3pointsCircle.svg../Icons/WF_3pointsCircle.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_3pointsCircle.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_3pointsCircle.svg
@@ -1872,7 +2034,7 @@ centered on the Axis and tangenting the Point.
- Icons/WF_plane.svgIcons/WF_plane.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_plane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_plane.svg
Plane 1/2
@@ -1918,7 +2080,7 @@ NB: The plane width and length can be defined first.
- ../Icons/WF_clickPlane.svg../Icons/WF_clickPlane.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_clickPlane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_clickPlane.svg
@@ -2009,7 +2171,7 @@ NB: The plane created can be rotated if a none null angle is defined first.
- Icons/WF_planeLinePlane.svgIcons/WF_planeLinePlane.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_planeLinePlane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_planeLinePlane.svg
@@ -2062,7 +2224,7 @@ Create a plane crossing a Line and a Point.
- Icons/WF_linePointPlane.svgIcons/WF_linePointPlane.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointPlane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointPlane.svg
@@ -2085,7 +2247,7 @@ Create a plane perpendicular to a Line and crossing a Point.
- Icons/WF_linePointPlane2.svgIcons/WF_linePointPlane2.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointPlane2.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointPlane2.svg
@@ -2119,7 +2281,7 @@ NB: The plane width and length can be defined first.
- ../Icons/WF_FaceTangent.svg../Icons/WF_FaceTangent.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_FaceTangent.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_FaceTangent.svg
@@ -2200,7 +2362,7 @@ Create a Plane crossing 3 Points.
- Icons/WF_threePointsPlane.svgIcons/WF_threePointsPlane.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_threePointsPlane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_threePointsPlane.svg
@@ -2234,7 +2396,7 @@ Several Faces of the cube can be selected.
- ../Icons/WF_distPlanePlane.svg../Icons/WF_distPlanePlane.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_distPlanePlane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_distPlanePlane.svg
@@ -2288,7 +2450,7 @@ Can be negative for the reverse direction!
- The number of copies.
+ The number of copies (Max 100).
QAbstractSpinBox::NoButtons
@@ -2300,7 +2462,7 @@ Can be negative for the reverse direction!
1
- 10
+ 100
1
@@ -2329,7 +2491,7 @@ NB: you can enlarge the created new plane by setting first an extension length.<
- ../Icons/WF_pointPlanePlane.svg../Icons/WF_pointPlanePlane.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_pointPlanePlane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_pointPlanePlane.svg
@@ -2368,7 +2530,7 @@ NB: you can enlarge the created new plane by setting first an extension length.<
- ../Icons/WF_plane.svg../Icons/WF_plane.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_plane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_plane.svg
Plane 2/2
@@ -2400,7 +2562,7 @@ Create 3 Planes (XY, XZ and YZ) at center location of all selected Object(s).
- Icons/WF_centerObjectsPlanes.svgIcons/WF_centerObjectsPlanes.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerObjectsPlanes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerObjectsPlanes.svg
@@ -2434,7 +2596,7 @@ NB:
- ../Icons/WF_enlargePlane.svg../Icons/WF_enlargePlane.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_enlargePlane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_enlargePlane.svg
@@ -2488,12 +2650,64 @@ NB:
- Icons/WF_box.svgIcons/WF_box.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_box.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_box.svg
Object
+ -
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Create bounding boxes around each of selected object(s).
+
+
+ Bounding Box(es)
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_boundingBoxes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_boundingBoxes.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Create one bounding box around all of selected object(s).
+
+
+ Bounding Box
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_boundingBox.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_boundingBox.svg
+
+
+
+ 32
+ 32
+
+
+
+
-
@@ -2527,7 +2741,7 @@ with one of the extremities at the Ref. point.
- ../Icons/WF_cylinder.svg../Icons/WF_cylinder.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cylinder.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cylinder.svg
@@ -2613,7 +2827,7 @@ with one of the extremities at Ref. point.
- ../Icons/WF_cube.svg../Icons/WF_cube.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cube.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cube.svg
@@ -2682,33 +2896,158 @@ Negative value will reverse the direction from Ref. Point
- -
-
-
-
- 16777215
- 16777215
-
-
-
- Create bounding boxes around each of selected object(s).
-
-
- Bounding Box(es)
-
-
-
- Icons/WF_boundingBoxes.svgIcons/WF_boundingBoxes.svg
-
-
-
- 32
- 32
-
-
-
-
-
+
+
-
+
+
+ Create a Sphere shell:
+- First select one or several Center Point(s).
+- Define Diameter if needed.
+Then Click the button...
+It will create Sphere shell(s) centered
+at the selected point(s).
+
+
+ Sphere
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_sphere.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_sphere.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Diameter of the Sphere.
+
+
+ 10.0
+
+
+
+
+
+ -
+
+
-
+
+
+ Create a full geodesic dome shell:
+- First select one or several Center Point(s).
+- Define Diameter and Frequency Parameter (Integer between 1 to 10) if needed.
+Then Click the button...
+It will create full geodesic dome shell(s) with a X-Y-symmetry plane
+for even frequencies and centered
+at the selected point(s).
+
+If Frequency Parameter = 1, the code create an icosahedron.
+An icosahedron is a polyhedron with 20 faces.
+
+Original code from : Ulrich Brammer
+
+
+ Dome
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_dome.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_dome.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ Frequency Parameter (Integer between 1 to 20).
+
+
+ 1
+
+
+ 20
+
+
+ 1
+
+
+ 2
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Diameter of the Dome.
+
+
+ 10.0
+
+
+
+
+
+ -
Qt::Vertical
@@ -2721,91 +3060,6 @@ Negative value will reverse the direction from Ref. Point
- -
-
-
-
- 16777215
- 16777215
-
-
-
- Create one bounding box around all of selected object(s).
-
-
- Bounding Box
-
-
-
- Icons/WF_boundingBox.svgIcons/WF_boundingBox.svg
-
-
-
- 32
- 32
-
-
-
-
-
-
-
-
-
- Icons/WF_view.svgIcons/WF_view.svg
-
-
- View
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
- Set the current view perpendicular to the selected Face,
-or aligned to the selected Axis,
-or aligned on 2 Points.
-ReClick with same selection, will reverse the direction.
-
-
- Align View to ...
-
-
-
- Icons/WF_viewAlign.svgIcons/WF_viewAlign.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
@@ -2816,11 +3070,236 @@ ReClick with same selection, will reverse the direction.
-
- 1
+ 3
-
+
- Cutting
+ Align
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 220
+ 16777215
+
+
+
+ Align the face of selected object(s) to the actual view Plane.
+ - Click first to select a Face of one or several objects.
+Then Click the button.
+
+NB:
+ The center of rotation is the center of the bounbing box if possible or
+ the center of the Face.
+
+ if the Face of the object selected is already aligned to the view Plane,
+ a rotation of 180 deg is applied to the object.
+ In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1)
+
+
+
+ Align Face to View
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_viewAlignFace.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_viewAlignFace.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
-
+
+
+
+ 220
+ 16777215
+
+
+
+ Align the Face(s) from selected object(s) to the last Face selected.
+ - Click first to select a Face of an object or several Faces from several objects.
+ - Click second to select a Face to align to.
+Then Click the button.
+
+NB:
+ The center of rotation is the center of the bounbing box if possible or
+ the center of the Face.
+
+ if the Face of the object selected is already aligned to the last one,
+ a rotation of 180 deg is applied to the object.
+ In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1)
+
+
+ Align Faces
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_objectAlignFaces.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_objectAlignFaces.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ This Angle (in degrees) will be added to the angle needed to align Faces.
+
+
+ 0.0
+
+
+
+
+
+ -
+
+
-
+
+
+
+ 220
+ 16777215
+
+
+
+ Align the Edge(s) from selected object(s) to the last Edge selected.
+ - Click first to select an Edge of an object or several Edges from several objects.
+ - Click second to select an Edge to align to.
+Then Click the button.
+
+NB:
+ The center of rotation is the center of the bounbing box if possible or
+ the center of the Edge.
+
+ if the Edge of the object selected is already aligned to the last one,
+ a rotation of 180 deg is applied to the object.
+ In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1)
+
+
+ Align Edges
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_objectAlignAxes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_objectAlignAxes.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ This Angle (in degrees) will be added to the angle needed to align Edges.
+
+
+ 0.0
+
+
+
+
+
+ -
+
+
+ Joint Point(s) from selected object(s) to the last Point selected.
+ - Click first to select a Point of an object or several Points from several objects.
+ - Click second to select an Point to joint to.
+Then Click the button.
+
+
+
+ Joint Points
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_objectJointPoints.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_objectJointPoints.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+ Cut
-
@@ -3130,32 +3609,32 @@ and push this button to accept...
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
-
+
- Rotation
+ Rotate
-
+
-
@@ -3170,14 +3649,197 @@ and push this button to accept...
QFrame::Raised
-
+
-
+
+ - Select one or several object(s) in the view and
+- Click on this button.
+
+NB
+Once object(s) are selected an other Click will unselect them !
+Selected Object(s) will be displayed with 75% of transparency.
+
Select Object(s)
+ -
+
+
+ QTabWidget::North
+
+
+ 0
+
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_rotationAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_rotationAxis.svg
+
+
+ Axis
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 80
+ 0
+
+
+
+
+ 130
+ 16777215
+
+
+
+ Qt::LeftToRight
+
+
+ 0
+
+
-
+
+ X
+
+
+ -
+
+ Y
+
+
+ -
+
+ Z
+
+
+ -
+
+ To select
+
+
+
+
+ -
+
+
+ false
+
+
+
+ 40
+ 0
+
+
+
+
+ 80
+ 16777215
+
+
+
+ Select
+
+
+
+
+
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_rotationPoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_rotationPoint.svg
+
+
+ Center
+
+
+ -
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+
+ 120
+ 0
+
+
+
+
+ 130
+ 16777215
+
+
+
+ 2
+
+
+ QComboBox::AdjustToContentsOnFirstShow
+
+
-
+
+ Origin
+
+
+ -
+
+ Base Obj.
+
+
+ -
+
+ Center Obj.(s)
+
+
+ -
+
+ To select
+
+
+
+
+ -
+
+
+ false
+
+
+
+ 40
+ 0
+
+
+
+
+ 80
+ 16777215
+
+
+
+ Select
+
+
+
+
+
+
+
-
@@ -3198,36 +3860,98 @@ and push this button to accept...
false
-
+
-
-
-
-
- 0
- 39
-
-
-
-
- 120
- 16777215
-
-
-
- -180
-
-
- 180
-
-
- Qt::Horizontal
-
-
- QSlider::TicksBothSides
-
-
- 20
+
+
+ 1
+
+
+ Define
+
+
+
-
+
+
+
+ 0
+ 39
+
+
+
+
+ 120
+ 16777215
+
+
+
+ -180
+
+
+ 180
+
+
+ Qt::Horizontal
+
+
+ QSlider::TicksBothSides
+
+
+ 20
+
+
+
+
+
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_click.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_click.svg
+
+
+ Select
+
+
+ -
+
+
+ true
+
+
+
+ 40
+ 0
+
+
+
+
+ 80
+ 16777215
+
+
+
+ Calculate angle from 2 objects.
+Angle measurement between two Edges or two Planes
+- Select the 2 Edges and
+- Click this button
+or
+- Select the 2 Planes and
+- Click this button
+or
+- Select one Edge and one Plane and
+- Click this button
+
+NB:
+ Normals of Planes will be used.
+
+
+ Select
+
+
+
+
+
-
@@ -3333,181 +4057,6 @@ and push this button to accept...
- -
-
-
- QTabWidget::North
-
-
- 0
-
-
-
-
- ../Icons/WF_rotationAxis.svg../Icons/WF_rotationAxis.svg
-
-
- Axis
-
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 80
- 0
-
-
-
-
- 130
- 16777215
-
-
-
- Qt::LeftToRight
-
-
- 0
-
-
-
-
- X
-
-
- -
-
- Y
-
-
- -
-
- Z
-
-
- -
-
- To select
-
-
-
-
- -
-
-
- false
-
-
-
- 40
- 0
-
-
-
-
- 80
- 16777215
-
-
-
- Select
-
-
-
-
-
-
-
-
- ../Icons/WF_rotationPoint.svg../Icons/WF_rotationPoint.svg
-
-
- Center
-
-
- -
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 120
- 0
-
-
-
-
- 130
- 16777215
-
-
-
- 2
-
-
- QComboBox::AdjustToContentsOnFirstShow
-
-
-
-
- Origin
-
-
- -
-
- Base Obj.
-
-
- -
-
- Center Obj.(s)
-
-
- -
-
- To select
-
-
-
-
- -
-
-
- false
-
-
-
- 40
- 0
-
-
-
-
- 80
- 16777215
-
-
-
- Select
-
-
-
-
-
-
-
@@ -3526,11 +4075,11 @@ and push this button to accept...
-
+
- Translation
+ Translate
-
+
-
@@ -3545,200 +4094,50 @@ and push this button to accept...
QFrame::Raised
-
+
-
+
+ - Select one or several object(s) in the view and
+- Click on this button.
+
+NB
+Once object(s) are selected an other Click will unselect them !
+Selected Object(s) will be displayed with 75% of transparency.
+
Select Object(s)
-
-
-
- QFrame::StyledPanel
-
-
- QFrame::Raised
-
-
-
-
-
-
- Starting Point (Blue) :
-
-
- false
-
-
-
-
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 91
- 0
-
-
-
-
- 150
- 16777215
-
-
-
- 3
-
-
- QComboBox::AdjustToContentsOnFirstShow
-
-
-
-
- Origin
-
-
- -
-
- Base Obj.
-
-
- -
-
- Center Obj.(s)
-
-
- -
-
- To select
-
-
- -
-
- To define
-
-
-
-
- -
-
-
- true
-
-
-
- 50
- 0
-
-
-
-
- 150
- 16777215
-
-
-
- Select
-
-
-
- -
-
-
-
-
-
-
-
-
-
- ../Icons/WF_startPoint.svg../Icons/WF_startPoint.svg
-
-
-
- 20
- 20
-
-
-
- false
-
-
- true
-
-
-
- -
-
-
- false
-
-
-
- 50
- 16777215
-
-
-
- 0.0
-
-
-
- -
-
-
- false
-
-
-
- 50
- 16777215
-
-
-
- 0.0
-
-
-
- -
-
-
- false
-
-
-
- 50
- 16777215
-
-
-
- 0.0
-
-
-
-
-
-
-
-
-
-
-
- -
-
- Toggle this to copy the object during the Translation.
+ Toggle this check box to generate copies the object during the Translation.
+Copy means that the original Object will be left in his original location.
+NB:
+
+1 copy requested :
+ - If one starting point and one ending point are selected.
+ Only one copy is done!
+
+ - If one starting point and several ending points are selected.
+ One copy is done at each ending points selected!
+
+N copies requested :
+ - If one starting point and one ending point are selected.
+ Only one copy is done at the ending point then at double distance
+ of the ending point along the line defined by starting and ending point,
+ and so on!
+ - If one starting point and several ending points are selected.
+ One copy is done at each ending points selected, then at double distance
+ of each ending points along the line defined by starting and the current
+ ending point, and so on!
- Obj. Copy
+ Copy
@@ -3779,186 +4178,473 @@ and push this button to accept...
+ -
+
+
+ Toggle this check box to realize "deep" copies.
+Means that all children and parents of selected Object(s) will be copied too!
+
+If the object selected is Pad and his link is on Sketch, and Skecth parent is Box
+Box
+Pad
+ |_Sketch
+
+if the current check box is toggle the result will be :
+Box
+Pad
+ |_Sketch
+Box001
+Pad001
+ |_Sketch001
+
+if not the result will be :
+Box
+Pad
+Pad001
+ |_Sketch
+
+On the last result the same Sketch is both link to Pad001 but also still to Pad.
+
+
+ Deep
+
+
+
- -
-
-
- QFrame::StyledPanel
+
-
+
+
+ 1
-
- QFrame::Raised
-
-
-
-
-
-
- Ending Point(s) (White) :
-
-
- false
-
-
-
-
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 91
- 0
-
-
-
-
- 150
- 16777215
-
-
-
- 3
-
-
- QComboBox::AdjustToContentsOnFirstShow
-
-
-
-
- Origin
+
+
+
+ ../../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_startPoint.svg../../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_startPoint.svg
+
+
+ Start
+
+
+
-
+
+
+
+ 150
+ 0
+
+
+
+ Starting Point :
+
+
+ false
+
+
+
-
+
+
+ true
-
- -
-
- Base Obj.
+
+
+ 0
+ 0
+
-
- -
-
- Center Obj.(s)
+
+
+ 100
+ 0
+
-
- -
-
- To select
+
+
+ 120
+ 16777215
+
-
- -
-
- To define
+
+ 3
-
-
-
- -
-
-
- true
-
-
-
- 50
- 0
-
-
-
-
- 150
- 16777215
-
-
-
- Select
-
-
-
- -
-
-
-
-
+
+ QComboBox::AdjustToContentsOnFirstShow
+
+
-
-
-
-
-
- ../Icons/WF_endPoint.svg../Icons/WF_endPoint.svg
-
-
-
- 20
- 20
-
-
-
- false
-
-
- true
-
-
-
- -
-
-
- false
-
-
-
- 50
- 16777215
-
+ Origin
+
+ -
- 0.0
-
-
-
- -
-
-
- false
-
-
-
- 50
- 16777215
-
+ Base Obj.
+
+ -
- 0.0
-
-
-
- -
-
-
- false
-
-
-
- 50
- 16777215
-
+ Center Obj.(s)
+
+ -
- 0.0
+ To select
-
-
-
-
-
-
-
-
+
+ -
+
+ To define
+
+
+
+
+ -
+
+
+ true
+
+
+
+ 50
+ 0
+
+
+
+
+ 120
+ 16777215
+
+
+
+ Select
+
+
+
+ -
+
+
-
+
+
-
+
+
+ X :
+
+
+
+ -
+
+
+ false
+
+
+
+ 90
+ 0
+
+
+
+
+ 200
+ 16777215
+
+
+
+ 0.0
+
+
+
+
+
+ -
+
+
-
+
+
+ Y :
+
+
+
+ -
+
+
+ false
+
+
+
+ 90
+ 0
+
+
+
+
+ 200
+ 16777215
+
+
+
+ 0.0
+
+
+
+
+
+ -
+
+
-
+
+
+ Z :
+
+
+
+ -
+
+
+ false
+
+
+
+ 90
+ 0
+
+
+
+
+ 200
+ 16777215
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ../../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_endPoint.svg../../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_endPoint.svg
+
+
+ End
+
+
+ -
+
+
+
+ 150
+ 0
+
+
+
+ Ending Point :
+
+
+ false
+
+
+
-
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+
+ 100
+ 0
+
+
+
+
+ 120
+ 16777215
+
+
+
+ 0
+
+
+ QComboBox::AdjustToContentsOnFirstShow
+
+
-
+
+ Origin
+
+
+ -
+
+ Base Obj.
+
+
+ -
+
+ Center Obj.(s)
+
+
+ -
+
+ To select
+
+
+ -
+
+ To define
+
+
+ -
+
+ Relative
+
+
+
+
+ -
+
+
+ true
+
+
+
+ 100
+ 0
+
+
+
+
+ 120
+ 16777215
+
+
+
+ Select
+
+
+
+ -
+
+
-
+
+
-
+
+
+ Z :
+
+
+
+ -
+
+
+ false
+
+
+
+ 90
+ 0
+
+
+
+
+ 200
+ 16777215
+
+
+
+ 0.0
+
+
+
+
+
+ -
+
+
-
+
+
+ Y :
+
+
+
+ -
+
+
+ false
+
+
+
+ 90
+ 0
+
+
+
+
+ 200
+ 16777215
+
+
+
+ 0.0
+
+
+
+
+
+ -
+
+
-
+
+
+ X :
+
+
+
+ -
+
+
+ false
+
+
+
+ 90
+ 0
+
+
+
+
+ 200
+ 16777215
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
- -
+
-
-
@@ -3980,7 +4666,7 @@ and push this button to accept...
-
-
+
Qt::Horizontal
@@ -4035,15 +4721,98 @@ and push this button to accept...
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_view.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_view.svg
+
+
+ View
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Set the current view perpendicular to the selected Face,
+or aligned to the selected Axis,
+or aligned on 2 Points.
+ReClick with same selection, will reverse the direction.
+
+
+ Align View to ...
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_viewAlign.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_viewAlign.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
- ../Icons/WF_check.svg../Icons/WF_check.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_check.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_check.svg
Check
+ -
+
+
+ Check for two Points distance:
+Distances measurement and Delta values (on main Axes) between two Points
+- Select the 2 Points and
+Click this button
+
+
+
+ Distance ?
+
+
+
+ ../../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_distanceBetween.svg../../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_distanceBetween.svg
+
+
+
+ 32
+ 32
+
+
+
+
-
@@ -4058,31 +4827,7 @@ NB: You can change the tolerance in "Ori. Pref." TAB
- ../Icons/WF_isParallel.svg../Icons/WF_isParallel.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Check if two faces or two Edges are Perpendicular:
-- Select the 2 faces/planes or 2 Edges/Lines and
-Click this button
-
-NB: You can change the tolerance in "Ori. Pref." TAB
-
-
- are Perpendicular ?
-
-
-
- ../Icons/WF_isPerpendicular.svg../Icons/WF_isPerpendicular.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isParallel.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isParallel.svg
@@ -4106,7 +4851,44 @@ NB: You can change the tolerance in "Ori. Pref." TAB
- ../Icons/WF_isCoplanar.svg../Icons/WF_isCoplanar.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isCoplanar.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isCoplanar.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Check if two faces or two Edges are Perpendicular:
+- Select the 2 faces/planes or 2 Edges/Lines and
+Click this button
+
+NB: You can change the tolerance in "Ori. Pref." TAB
+
+
+ are Perpendicular ?
+
+
+
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isPerpendicular.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isPerpendicular.svg
@@ -4125,11 +4907,11 @@ Quick measurements between parallel faces and similarly placed objects
Click this button
- Clearance ?
+ Distance Clearance ?
- ../Icons/WF_isClearance.svg../Icons/WF_isClearance.svg
+ ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isClearance.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isClearance.svg
@@ -4140,17 +4922,58 @@ Click this button
-
-
-
- Qt::Vertical
+
+
+ Check for two Edges/Planes angle:
+Angle measurement between two Edges or two Planes
+- Select the 2 Edges and
+- Click this button
+or
+- Select the 2 Planes and
+- Click this button
+or
+- Select one Edge and one Plane and
+- Click this button
+
+NB:
+ Normals of Planes will be used.
-
+
+ Angle ?
+
+
+
+ ../../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_angleBetween.svg../../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_angleBetween.svg
+
+
- 20
- 40
+ 32
+ 32
-
+
+
+ -
+
+
+ Detect the position of the camera.
+The returned value is the value provided
+by the function getCameraOrientation().
+
+
+ View ?
+
+
+
+ ../../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_FCCamera_02.svg../../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_FCCamera_02.svg
+
+
+
+ 32
+ 32
+
+
+
diff --git a/WorkFeature/WF_ObjRot_2015.py b/WorkFeature/WF_ObjRot_2015.py
index f7bc2fb..81fc509 100644
--- a/WorkFeature/WF_ObjRot_2015.py
+++ b/WorkFeature/WF_ObjRot_2015.py
@@ -49,7 +49,7 @@ def print_methods(obj, doc=False):
print names
-def plot_point(Vector_point, part= "Part::Feature", name= "CenterObjects", grp="Rot_Trans"):
+def plot_point(Vector_point, part="Part::Feature", name="CenterObjects", grp="Rot_Trans"):
if not(App.ActiveDocument.getObject( grp )):
App.ActiveDocument.addObject("App::DocumentObjectGroup", grp)
point = App.ActiveDocument.addObject( part, name )
@@ -216,6 +216,8 @@ class Translation():
self.gui = gui
self.start = self.origin
self.end = []
+ self.end_relative = False
+ self.relative = App.Vector(0,0,0)
self.m_num_end = 0
self.end.append(self.origin)
self.but_select = self.gui.ObjTrans_button_select
@@ -235,6 +237,7 @@ class Translation():
self.end_z = self.gui.ObjTrans_end_z
self.dupli = self.gui.ObjTrans_duplicate
self.dup_num = self.gui.ObjTrans_spin
+ self.dup_deep = self.gui.ObjTrans_deepCopy
self.valid_start = { "Origin" : "origin",
@@ -242,18 +245,23 @@ class Translation():
"Center Obj.(s)" : "center",
"To select" : "select",
"To define" : "define",
+ "Relative" : "relative",
}
self.visuObjects = []
self.duplicate = False
+ self.deep = False
self.m_num_cpy = 1
- self.dup_num.setValue(self.m_num_cpy)
- self.dup_num.setEnabled(self.duplicate)
- self.dupli.setCheckState(QtCore.Qt.Unchecked)
+ self.dup_num.setValue(1)
+ self.dup_num.setEnabled(False)
+ #self.dupli.setCheckState(QtCore.Qt.Unchecked)
+ self.dupli.setChecked(False)
+ self.dup_deep.setEnabled(False)
+ self.dup_deep.setChecked(False)
self.enable(False)
-
+
def enable(self, flag=True):
""" Enable or not most of the buttons.
@@ -300,7 +308,14 @@ class Translation():
if self.m_num_obj >= 1 and self.m_num_cpy >= 1:
self.reset()
self.preview()
-
+
+ def deepCopyFlag(self, flag):
+ """ Respond to the change of deep copy flag.
+ """
+ if self.msg != 0:
+ func.print_msg("deepCopyFlag !")
+ self.deep = flag
+
def copyFlag(self, flag):
""" Respond to the change of duplicate flag.
@@ -310,8 +325,11 @@ class Translation():
if flag == False:
self.m_num_cpy = 1
self.dup_num.setValue(self.m_num_cpy)
+ self.dup_deep.setChecked(False)
self.duplicate = flag
self.dup_num.setEnabled(self.duplicate)
+ self.dup_deep.setEnabled(self.duplicate)
+
if self.m_num_obj >= 1 and self.m_num_cpy >= 1:
self.reset()
@@ -331,7 +349,7 @@ class Translation():
""" Clean the list of Duplicated objects.
"""
if self.msg != 0:
- func.print_msg("cleanDuplication !")
+ func.print_msg("cleanDuplication :")
for m_objdup in self.m_objs_dup:
if self.msg != 0:
@@ -345,30 +363,38 @@ class Translation():
""" Reset the list of Duplicated objects.
"""
if self.msg != 0:
- func.print_msg("resetDuplication !")
+ func.print_msg("resetDuplication :")
self.cleanDuplication()
self.duplicate = False
+ self.deep = False
self.m_num_cpy = 1
- self.dup_num.setValue(self.m_num_cpy)
- self.dup_num.setEnabled(self.duplicate)
- self.dupli.setCheckState(QtCore.Qt.Unchecked)
+ self.dup_num.setValue(1)
+ self.dup_num.setEnabled(False)
+ self.dupli.setChecked(False)
+ self.dup_deep.setEnabled(False)
+ self.dup_deep.setChecked(False)
def initialize(self):
- """ Store a copy of original placements for all selected objects
+ """ Activated by a click on ObjTrans_button_select
+ Store a copy of original placements for all selected objects
into internal placement lists.
"""
if self.msg != 0:
func.print_msg("initialize !")
- if not(App.ActiveDocument.getObject("Rot_Trans")):
- try:
- App.ActiveDocument.addObject("App::DocumentObjectGroup","Rot_Trans")
- except:
- printError_msg("Could not Create 'Rot_Trans' Objects Group!")
-
+ func.createFolders("Rot_Trans")
+
+#==============================================================================
+# if not(App.ActiveDocument.getObject("Rot_Trans")):
+# try:
+# App.ActiveDocument.addObject("App::DocumentObjectGroup","Rot_Trans")
+# except:
+# printError_msg("Could not Create 'Rot_Trans' Objects Group!")
+#==============================================================================
+
# Mimic behavior of toggle button
# Here we have at least an existing object selected and we clean and unselect
if self.m_num_obj >= 1:
@@ -380,11 +406,13 @@ class Translation():
self.but_select.setText(QtGui.QApplication.translate("Form", button_text, None, QtGui.QApplication.UnicodeUTF8))
self.enable(False)
self.resetDuplication()
+ self.reset_start_value()
+ self.reset_end_value()
for m_i in range(len(self.names)):
Gui.ActiveDocument.getObject( self.names[m_i]).Transparency = self.transparency[m_i]
self.removeVisu()
del self.names[:]
- del self.end[:]
+ del self.end[:]
return
# Here is the normal entrance after objects selection
@@ -421,7 +449,7 @@ class Translation():
self.enable(True)
self.but_select.setText(QtGui.QApplication.translate("Form", button_text, None, QtGui.QApplication.UnicodeUTF8))
- # get placement and transparency for all objects
+ # Get placement and transparency for all objects
# Placement [Pos=(0,0,0), Yaw-Pitch-Roll=(0,0,0)]
for m_i in range(self.m_num_obj):
self.placement0.append(App.Placement(self.m_objs[m_i].Placement))
@@ -459,10 +487,10 @@ class Translation():
def removeVisu(self):
- """ Remove the visualization object.
+ """ Remove all the visualization objects.
"""
if self.msg != 0:
- func.print_msg("removeVisu !")
+ func.print_msg("removeVisu :")
for i in range(len(self.visuObjects)):
App.getDocument(str(App.activeDocument().Name)).removeObject(self.visuObjects[i])
@@ -473,7 +501,7 @@ class Translation():
""" Set the visualization objects.
"""
if self.msg != 0:
- func.print_msg("Visu !")
+ func.print_msg("visu :")
m_start = self.start
m_base = self.base
@@ -481,23 +509,23 @@ class Translation():
self.removeVisu()
if m_start != None:
- point_User_Name, point = plot_point(m_start, name= "Start", grp="Rot_Trans")
+ point_User_Name, point = plot_point(m_start, name="Trans_Start", grp="Rot_Trans")
Gui.ActiveDocument.getObject( point_User_Name ).PointColor = (0.0,0.0,1.0)
Gui.ActiveDocument.getObject( point_User_Name ).PointSize = 10.00
self.visuObjects.append(point_User_Name)
if m_base != None:
- point_User_Name, point = plot_point(m_base, name= "Base", grp="Rot_Trans")
+ point_User_Name, point = plot_point(m_base, name="Trans_Base", grp="Rot_Trans")
Gui.ActiveDocument.getObject( point_User_Name ).PointColor = (1.0,0.0,0.0)
Gui.ActiveDocument.getObject( point_User_Name ).PointSize = 3.00
self.visuObjects.append(point_User_Name)
if m_center != None:
- point_User_Name, point = plot_point(m_center, name= "Base", grp="Rot_Trans")
+ point_User_Name, point = plot_point(m_center, name="Trans_Center", grp="Rot_Trans")
Gui.ActiveDocument.getObject( point_User_Name ).PointColor = (0.0,1.0,0.0)
Gui.ActiveDocument.getObject( point_User_Name ).PointSize = 3.00
self.visuObjects.append(point_User_Name)
if self.m_num_end != 0:
for m_i_end in range(self.m_num_end):
- point_User_Name, point = plot_point(self.end[m_i_end], name= "End", grp="Rot_Trans")
+ point_User_Name, point = plot_point(self.end[m_i_end], name="Trans_End", grp="Rot_Trans")
Gui.ActiveDocument.getObject( point_User_Name ).PointColor = (1.0,1.0,1.0)
Gui.ActiveDocument.getObject( point_User_Name ).PointSize = 10.00
self.visuObjects.append(point_User_Name)
@@ -510,12 +538,66 @@ class Translation():
func.print_msg("translation start = " + str(self.start))
func.print_msg("translation end = " + str(self.end))
+
+ def start_x_entered(self):
+ if self.msg != 0:
+ func.print_msg("start_x_entered :")
+ try:
+ # First we check if a valid number have been entered
+ self.start.x = float(self.start_x.text())
+
+ # Update the view
+ self.print_start(self.start)
+ self.visu()
+ self.preview()
+ except ValueError:
+ func.printError_msg("X must be valid number !")
+
+
+ def start_y_entered(self):
+ if self.msg != 0:
+ func.print_msg("start_y_entered :")
+ try:
+ # First we check if a valid number have been entered
+ self.start.y = float(self.start_y.text())
+
+ # Update the view
+ self.print_start(self.start)
+ self.visu()
+ self.preview()
+ except ValueError:
+ func.printError_msg("Y must be valid number !")
+
+
+ def start_z_entered(self):
+ if self.msg != 0:
+ func.print_msg("start_z_entered :")
+ try:
+ # First we check if a valid number have been entered
+ self.start.z = float(self.start_z.text())
+
+ # Update the view
+ self.print_start(self.start)
+ self.visu()
+ self.preview()
+ except ValueError:
+ func.printError_msg("Z must be valid number !")
+
+
+ def print_start(self, point):
+ if self.msg != 0:
+ func.print_msg("print_start :")
+
+ self.start_x.setText(str(point.x))
+ self.start_y.setText(str(point.y))
+ self.start_z.setText(str(point.z))
+
def select_start(self):
""" Selection of Start point of translation by button.
"""
if self.msg != 0:
- func.print_msg("Selection of Start point of translation by button !")
+ func.print_msg("select_start : Selection of Start point of translation by button !")
error_msg = "Select one point !"
@@ -533,21 +615,33 @@ class Translation():
self.start = Point_List[0].Point
button_text = "Selected !"
self.but_start.setText(QtGui.QApplication.translate("Form", button_text, None, QtGui.QApplication.UnicodeUTF8))
+ self.print_start(self.start)
self.visu()
+ self.preview()
-
- def start_value(self, *argc):
+
+ def reset_start_value(self):
+ """ Reset the combo box for start button.
+ """
+ if self.msg != 0:
+ func.print_msg("reset_start_value :")
+ # DeActivate select button
+ self.but_start.setEnabled(False)
+ button_text = "Select"
+ self.but_start.setText(QtGui.QApplication.translate("Form", button_text, None, QtGui.QApplication.UnicodeUTF8))
+ # DeActivate Start Input
+ self.setEnabledStartInput(False)
+ self.print_start(self.origin)
+
+
+ def select_start_type(self, *argc):
""" Start point of translation by combo box.
"""
if self.msg != 0:
- func.print_msg("Start point of translation by combo box !")
+ func.print_msg("select_start_type : Start point of translation by combo box !")
- # DeActivate select button
- self.but_start.setEnabled(False)
- button_text = "Select"
- self.but_start.setText(QtGui.QApplication.translate("Form", button_text, None, QtGui.QApplication.UnicodeUTF8))
-
- self.setEnabledStartInput(False)
+ self.reset_start_value()
+
if str(*argc) == "To select":
# Activate select button and wait for selection
self.but_start.setEnabled(True)
@@ -555,49 +649,97 @@ class Translation():
elif str(*argc) == "To define":
# Activate define input boxes and wait for entering values
self.setEnabledStartInput(True)
- self.start = None
+ self.start = App.Vector(0,0,0)
else:
button_text = "Select"
self.but_start.setText(QtGui.QApplication.translate("Form", button_text, None, QtGui.QApplication.UnicodeUTF8))
self.but_start.setEnabled(False)
self.start = getattr(self, str(self.valid_start[str(*argc)]))
+ self.print_start(self.start)
self.visu()
-
- def end_value(self, *argc):
- """ End point of translation by combo box.
- """
+
+
+ def end_x_entered(self):
if self.msg != 0:
- func.print_msg("End point of translation by combo box !")
+ func.print_msg("end_x_entered :")
+ try:
+ # First we check if a valid number have been entered
+ self.relative.x = float(self.end_x.text())
+ if self.end_relative and self.start != None:
+ self.end[0].x = self.start.x + self.relative.x
+ self.end[0].y = self.start.y + self.relative.y
+ self.end[0].z = self.start.z + self.relative.z
+ else:
+ self.end[0].x = self.relative.x
+ self.m_num_end = 1
+ # Update the view
+ self.print_end(self.relative)
+ self.visu()
+ self.preview()
+ except ValueError:
+ self.m_num_end = 0
+ func.printError_msg("X must be valid number !")
+
+
+ def end_y_entered(self):
+ if self.msg != 0:
+ func.print_msg("end_y_entered :")
+ try:
+ # First we check if a valid number have been entered
+ self.relative.y = float(self.end_y.text())
+ if self.end_relative and self.start != None:
+ self.end[0].x = self.start.x + self.relative.x
+ self.end[0].y = self.start.y + self.relative.y
+ self.end[0].z = self.start.z + self.relative.z
+ else:
+ self.end[0].y = self.relative.y
+ self.m_num_end = 1
+ # Update the view
+ self.print_end(self.relative)
+ self.visu()
+ self.preview()
+ except ValueError:
+ self.m_num_end = 0
+ func.printError_msg("Y must be valid number !")
- # DeActivate select button
- self.but_end.setEnabled(False)
- button_text = "Select"
- self.but_end.setText(QtGui.QApplication.translate("Form", button_text, None, QtGui.QApplication.UnicodeUTF8))
-
- self.setEnabledEndInput(False)
- del self.end[:]
- self.m_num_end = 0
- if str(*argc) == "To select":
- # Activate select button and wait for selection
- self.but_end.setEnabled(True)
- elif str(*argc) == "To define":
- # Activate define input boxes and wait for entering values
- self.setEnabledEndInput(True)
- else:
- button_text = "Select"
- self.but_end.setText(QtGui.QApplication.translate("Form", button_text, None, QtGui.QApplication.UnicodeUTF8))
- self.but_end.setEnabled(False)
- self.end.append(getattr(self, str(self.valid_start[str(*argc)])))
- self.m_num_end = 1
+
+ def end_z_entered(self):
+ if self.msg != 0:
+ func.print_msg("end_z_entered :")
+ try:
+ # First we check if a valid number have been entered
+ self.relative.z = float(self.end_z.text())
+ if self.end_relative and self.start != None:
+ self.end[0].x = self.start.x + self.relative.x
+ self.end[0].y = self.start.y + self.relative.y
+ self.end[0].z = self.start.z + self.relative.z
+ else:
+ self.end[0].z = self.relative.z
+ self.m_num_end = 1
+ # Update the view
+ self.print_end(self.relative)
+ self.visu()
+ self.preview()
+ except ValueError:
+ self.m_num_end = 0
+ func.printError_msg("Z must be valid number !")
+
+
+ def print_end(self, point):
+ if self.msg != 0:
+ func.print_msg("print_end :")
- self.visu()
-
+ self.end_x.setText(str(point.x))
+ self.end_y.setText(str(point.y))
+ self.end_z.setText(str(point.z))
+
+
def select_end(self):
""" Selection of End point(s) of translation by button.
"""
if self.msg != 0:
- func.print_msg("Selection of End point(s) of translation by button !")
+ func.print_msg("select_end : Selection of End point(s) of translation by button !")
error_msg = "Select at least one point !"
@@ -620,11 +762,62 @@ class Translation():
button_text = "Selected !"
else:
button_text = "Multi Sel !"
- self.but_end.setText(QtGui.QApplication.translate("Form", button_text, None, QtGui.QApplication.UnicodeUTF8))
+ self.but_end.setText(QtGui.QApplication.translate("Form", button_text, None, QtGui.QApplication.UnicodeUTF8))
+ self.print_end(self.end[0])
self.visu()
- self.preview()
+ self.preview()
-
+
+ def reset_end_value(self):
+ """ Reset the combo box for end button.
+ """
+ if self.msg != 0:
+ func.print_msg("reset_end_value :")
+
+ # DeActivate select button
+ self.but_end.setEnabled(False)
+ button_text = "Select"
+ self.but_end.setText(QtGui.QApplication.translate("Form", button_text, None, QtGui.QApplication.UnicodeUTF8))
+ # DeActivate End Input
+ self.setEnabledEndInput(False)
+ self.print_end(self.origin)
+
+
+ def select_end_type(self, *argc):
+ """ End point of translation by combo box.
+ """
+ if self.msg != 0:
+ func.print_msg("select_end_type : End point of translation by combo box !")
+
+ self.reset_end_value()
+
+ del self.end[:]
+ self.m_num_end = 0
+ if str(*argc) == "To select":
+ # Activate select button and wait for selection
+ self.but_end.setEnabled(True)
+ elif str(*argc) == "To define":
+ # Activate define input boxes and wait for entering values
+ self.setEnabledEndInput(True)
+ self.end_relative = False
+ self.end.append(App.Vector(0,0,0))
+ elif str(*argc) == "Relative":
+ # Activate define input boxes and wait for entering values
+ self.setEnabledEndInput(True)
+ self.end_relative = True
+ self.end.append(App.Vector(0,0,0))
+ else:
+ button_text = "Select"
+ self.but_end.setText(QtGui.QApplication.translate("Form", button_text, None, QtGui.QApplication.UnicodeUTF8))
+ self.but_end.setEnabled(False)
+ self.end.append(getattr(self, str(self.valid_start[str(*argc)])))
+ self.print_end(self.end[0])
+ self.m_num_end = 1
+ self.preview()
+
+ self.visu()
+
+
def preview(self):
""" Preview the placement.
"""
@@ -641,9 +834,7 @@ class Translation():
if self.msg != 0:
func.print_msg("Preview the placement of " + str(self.m_num_obj) + " objects !")
# loop on the selected objects
- for m_i_obj in range(self.m_num_obj):
-
-
+ for m_i_obj in range(self.m_num_obj):
base1 = self.placement1[m_i_obj].Base
rot1 = self.placement1[m_i_obj].Rotation
# For all the end points
@@ -656,10 +847,11 @@ class Translation():
if self.duplicate:
for m_copy in range(self.m_num_cpy):
# Let's duplicate the Object
- m_obj2 = App.activeDocument().copyObject(self.m_objs[m_i_obj])
+ m_obj2 = App.activeDocument().copyObject(self.m_objs[m_i_obj],self.deep)
self.m_objs_dup.append(m_obj2)
- self.m_transp_dup.append(self.transparency[m_i_obj])
+ self.m_transp_dup.append(self.transparency[m_i_obj])
App.ActiveDocument.getObject("Rot_Trans").addObject(m_obj2)
+
newplace1 = App.Placement(base1.add(m_move), rot1 )
m_obj2.Placement = newplace1
# Update the move
@@ -670,16 +862,20 @@ class Translation():
else:
# At least a second end point exists so duplication
- m_obj3 = App.activeDocument().copyObject(self.m_objs[m_i_obj])
+ m_obj3 = App.activeDocument().copyObject(self.m_objs[m_i_obj],self.deep)
self.m_objs_dup.append(m_obj3)
- self.m_transp_dup.append(self.transparency[m_i_obj])
+ self.m_transp_dup.append(self.transparency[m_i_obj])
+ App.ActiveDocument.getObject("Rot_Trans").addObject(m_obj3)
+
+
if self.duplicate:
for m_copy in range(self.m_num_cpy):
# Let's duplicate the Object
- m_obj4 = App.activeDocument().copyObject(m_obj3)
+ m_obj4 = App.activeDocument().copyObject(m_obj3,self.deep)
self.m_objs_dup.append(m_obj4)
- self.m_transp_dup.append(self.transparency[m_i_obj])
+ self.m_transp_dup.append(self.transparency[m_i_obj])
App.ActiveDocument.getObject("Rot_Trans").addObject(m_obj4)
+
newplace1 = App.Placement(base1.add(m_move), rot1 )
m_obj4.Placement = newplace1
# Update the move
@@ -724,7 +920,7 @@ class Translation():
""" Reset to original placement.
"""
if self.msg != 0:
- func.print_msg("Reset button pressed !")
+ func.print_msg("reset :")
if self.selection() == False:
if self.msg != 0:
@@ -738,15 +934,13 @@ class Translation():
self.m_objs[m_i_obj].Placement = self.placement0[m_i_obj]
self.cleanDuplication()
+ self.reset_start_value()
+ self.comb_end.setCurrentIndex(3)
+ self.but_start.setEnabled(True)
+ self.reset_end_value()
+ self.comb_start.setCurrentIndex(3)
+ self.but_end.setEnabled(True)
-#==============================================================================
-# self.duplicate = False
-# self.m_num_cpy = 1
-# self.dup_num.setValue(self.m_num_cpy)
-# self.dup_num.setEnabled(self.duplicate)
-# self.dupli.setCheckState(QtCore.Qt.Unchecked)
-# self.end_value("To select")
-#==============================================================================
class Rotation():
@@ -823,7 +1017,9 @@ class Rotation():
"""
if self.msg != 0:
func.print_msg("initialize !")
-
+
+ func.createFolders("Rot_Trans")
+
if not(App.ActiveDocument.getObject("Rot_Trans")):
try:
App.ActiveDocument.addObject("App::DocumentObjectGroup","Rot_Trans")
@@ -1001,6 +1197,68 @@ class Rotation():
if self.msg != 0:
self.info()
+
+ def select_angle(self):
+
+ error_msg =\
+ "INCORRECT Object(s) Selection :\n" +\
+ "You Must Select Two(2) Edges !\n"+\
+ "Or Two(2) Planes !\n"+\
+ "Or One Edge and One Plane !"
+
+ m_angle, m_angle_rad = 0.0, 0.0
+
+ Selection = func.get_SelectedObjects(info=self.msg, printError=False)
+
+ try:
+ SelectedObjects = Selection
+ Number_of_Edges = SelectedObjects[1]
+ Number_of_Planes = SelectedObjects[2]
+ if self.msg!=0:
+ func.print_msg("Number_of_Edges=" + str(Number_of_Edges))
+ func.print_msg("Number_of_Planes=" + str(Number_of_Planes))
+
+ if Number_of_Edges == 2:
+ Edge_List = SelectedObjects[4]
+ if self.msg != 0:
+ func.print_msg(" Edge_List=" + str(Edge_List))
+ m_angle, m_angle_rad = func.angleBetween(Edge_List[0],Edge_List[1])
+
+
+ elif Number_of_Planes == 2 :
+ Plane_List = SelectedObjects[5]
+ if self.msg != 0:
+ func.print_msg(" Plane_List=" + str(Plane_List))
+
+ Normal1 = Plane_List[0].normalAt(0,0)
+ Normal2 = Plane_List[1].normalAt(0,0)
+ if self.msg != 0:
+ print_point(Normal1, msg="Normal1 : ")
+ print_point(Normal2, msg="Normal2 : ")
+
+ m_angle, m_angle_rad = func.angleBetween(Normal1,Normal2)
+
+
+ elif Number_of_Planes == 1 and Number_of_Edges == 1:
+ Edge_List = SelectedObjects[4]
+ Plane_List = SelectedObjects[5]
+ if self.msg != 0:
+ func.print_msg(" Edge_List =" + str(Edge_List))
+ func.print_msg(" Plane_List=" + str(Plane_List))
+
+ Normal1 = Plane_List[0].normalAt(0,0)
+
+ m_angle, m_angle_rad = func.angleBetween(Edge_List[0],Normal1)
+
+ else:
+ func.printError_msg(error_msg)
+
+ self.angle_edit.setText(str(m_angle))
+ self.angle_value_entered()
+
+ except:
+ func.printError_msg(error_msg)
+
def set_zero(self):
""" Put zero into edit box and on slider.
@@ -1197,8 +1455,8 @@ class ObjectRotationTab():
}
self.connections_for_ObjTrans_combobox_changed = {
- "ObjTrans_comboBox_start" : "start_value",
- "ObjTrans_comboBox_end" : "end_value",
+ "ObjTrans_comboBox_start" : "select_start_type",
+ "ObjTrans_comboBox_end" : "select_end_type",
}
self.connections_for_ObjTrans_checkbox_toggled = {
@@ -1208,6 +1466,15 @@ class ObjectRotationTab():
self.connections_for_ObjTrans_spin_changed = {
"ObjTrans_spin" : "numberCopies",
}
+
+ self.connections_for_ObjTrans_return_pressed = {
+ "ObjTrans_start_x" : "start_x_entered",
+ "ObjTrans_start_y" : "start_y_entered",
+ "ObjTrans_start_z" : "start_z_entered",
+ "ObjTrans_end_x" : "end_x_entered",
+ "ObjTrans_end_y" : "end_y_entered",
+ "ObjTrans_end_z" : "end_z_entered",
+ }
self.connections_for_ObjRot_slider_changed = {
"ObjRot_horizontalSlider" : "angle_value_changed",
@@ -1267,22 +1534,26 @@ class ObjectRotationTab():
QtCore.SIGNAL("pressed()"),getattr(self.trans, str(m_val)))
for m_key, m_val in self.connections_for_ObjTrans_combobox_changed.items():
- print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )
+ func.print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")),getattr(self.trans, str(m_val)))
for m_key, m_val in self.connections_for_ObjTrans_checkbox_toggled.items():
#print_msg( "Connecting : " + str(m_key) + " and " + str(m_val) )
- print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )
+ func.print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL(_fromUtf8("toggled(bool)")),getattr(self.trans, str(m_val)))
for m_key, m_val in self.connections_for_ObjTrans_spin_changed.items():
- print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )
+ func.print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("valueChanged(int)"),getattr(self.trans, str(m_val)))
+ for m_key, m_val in self.connections_for_ObjTrans_return_pressed.items():
+ func.print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )
+ QtCore.QObject.connect(getattr(self.ui, str(m_key)),
+ QtCore.SIGNAL("returnPressed()"),getattr(self.trans, str(m_val)))
self.m_dialog.show()
m_text=str(myRelease)
diff --git a/WorkFeature/__init__.py b/WorkFeature/__init__.py
index af7ea5f..94461c9 100644
--- a/WorkFeature/__init__.py
+++ b/WorkFeature/__init__.py
@@ -2,17 +2,22 @@
"""
***************************************************************************
-* Thanks to original ideas and codes from : *
-* Javier Martinez Garcia 2014, 2015 for ideas and first WF codes *
+* Thanks to original ideas, codes, and support from : *
+* - Javier Martinez Garcia 2014, 2015 for ideas and first WF codes *
* for tje code on parallelism of two faces *
-* Gui ideas from by Jonathan Wiedemann 2014 *
-* Jonathan Wiedemann for view codes *
-* galou_breizh for macro which creates a circle from 3 selected points *
-* Eriossoltero for macro Ellipse-Center+2Points *
-* Many Thanks to wmayer for his active help on testing and debbuging *
-* Special thanks to Mario52 for FCCamera code, cutCircle, cutWire... *
-* for bounding box codes, advices, diverse pieces of codes *
-* and all discussions...merci Mario *
+* - Jonathan Wiedemann for Gui ideas and for view codes 2014 *
+* and support *
+* - NormandC for his support *
+* - Yorick for his support *
+* - galou_breizh for macro which creates a circle from 3 selected points*
+* - Eriossoltero for macro Ellipse-Center+2Points *
+* - Ulrich Brammer for Geodesic dome code *
+* - Wmayer Many Thanks for active help on testing and debbuging *
+* Special thanks to Mario52 for diverse MACRO codes as FCCamera, *
+* cutCircle, cutWire, Delta xyz, bounding box ... *
+* and other diverse pieces of codes *
+* and all discussions, support, advices, help...merci Mario *
+* Thanks also to those I forget. *
***************************************************************************
***************************************************************************
* FreeCAD Work Features / version 2015-02 *
@@ -22,6 +27,7 @@
* Copyright (c) 2013, 2014 Jonathan Wiedemann *
* Copyright (c) 2014, 2015 Mario52 *
* Copyright (c) 2013 galou_breizh *
+* Copyright (c) 2015 Ulrich Brammer *
* Copyright (c) Eriossoltero *
* *
* This file is a supplement to the FreeCAD CAx development system. *
@@ -52,7 +58,7 @@ if not sys.path.__contains__("/usr/lib/freecad/lib"):
import WFGui_2015 as WFGui
from WF_ObjRot_2015 import *
global myRelease
-myRelease = "2015_05_23"
+myRelease = "2015_05_31"
import os.path
import math
@@ -88,7 +94,7 @@ myObject = None
global centerOfMass
centerOfMass=True
global verbose
-verbose=1
+verbose=0
global tolerance
tolerance=1e-10
global biColor
@@ -103,10 +109,12 @@ m_numberAxisCutWire = 2
m_numberCircleCut = 2
m_numberPlane = 1
m_numberLine = 1
+m_numberLine2 = 1
m_numberPoint = 1
m_distanceLinePoint = 0.0
m_extensionTwoPointsAxis = 0.0
m_extensionLinePointAxis = 0.0
+m_extensionLine = 0.0
m_radiusCircle = 10.0
m_extensionFaceNormal = 0.0
m_extensionPlanePointPlane = 0.0
@@ -114,6 +122,9 @@ m_anglePlaneAxisPlane = 0.0
m_lengthPlane = 10.0
m_distPlane = 10.0
m_distLine = 10.0
+m_angleLine = 45.0
+m_angleAlignFaces = 0.0
+m_angleAlignEdges = 0.0
m_distPoint = 10.0
m_diameterCylinder = 2.0
m_lengthCylinder = 20.0
@@ -128,6 +139,9 @@ m_attach_point = "Mid"
m_cut_selectObjects = []
m_angleCutObject = 0.0
m_thicknessCutObject = 0.0
+m_diameterSphere = 10.0
+m_diameterDome = 10.0
+m_frequencyDome = 2
m_callback = None
m_clickForPoint = True
@@ -311,7 +325,7 @@ def createFolders(folder=None):
App.ActiveDocument.addObject("App::DocumentObjectGroup","WorkFeatures")
except:
printError_msg("Could not Create 'WorkFeatures' Objects Group!")
- m_list_dirs = ['Origin','WorkPoints','WorkAxis','WorkPlanes','WorkCircles','WorkBoxes','WorkObjects']
+ m_list_dirs = ['Origin','WorkPoints','WorkAxis','WorkPlanes','WorkCircles','WorkBoxes','WorkObjects','Rot_Trans']
for m_dir in m_list_dirs:
if folder == m_dir:
if not(App.ActiveDocument.getObject(str(m_dir))):
@@ -464,7 +478,7 @@ def get_SelectedObjects(info=0, printError=True):
Selection = (Number_of_Points, Number_of_Edges, Number_of_Planes,
Selected_Points, Selected_Edges, Selected_Planes)
"""
- m_actDoc=get_ActiveDocument(info=1)
+ m_actDoc=get_ActiveDocument(info=0)
if m_actDoc.Name:
# Return a list of SelectionObjects for a given document name.
@@ -502,6 +516,8 @@ def get_SelectedObjects(info=0, printError=True):
"Selected_Points, Selected_Edges, Selected_Planes = " + str(Selection))
return Selection
else:
+ if info != 0:
+ print_msg("No Object selected !")
if printError:
printError_msg("Select at least one object !")
return None
@@ -801,12 +817,70 @@ def centerCirclePoint(edge,info=0):
def distanceBetween(A, B):
- """ return the distance between 2 points
+ """ Return the distance between 2 points.
"""
+ # if isinstance(A,FreeCAD.Vector) and isinstance(B,FreeCAD.Vector):
line = Part.Line(A,B)
edge = line.toShape()
return edge.Length
+
+
+def angleBetween(e1, e2):
+ """ Return the angle (in degrees) between 2 edges.
+ """
+ if isinstance(e1,Part.Edge) and isinstance(e2,Part.Edge):
+ # Create the Vector for first edge
+ v1 = e1.Vertexes[-1].Point
+ v2 = e1.Vertexes[0].Point
+ ve1 = v1.sub(v2)
+ # Create the Vector for second edge
+ v3 = e2.Vertexes[-1].Point
+ v4 = e2.Vertexes[0].Point
+ ve2 = v3.sub(v4)
+ elif isinstance(e1,Base.Vector) and isinstance(e2,Base.Vector):
+ ve1 = e1
+ ve2 = e2
+ elif isinstance(e1,Part.Edge) and isinstance(e2,Base.Vector):
+ v1 = e1.Vertexes[-1].Point
+ v2 = e1.Vertexes[0].Point
+ ve1 = v1.sub(v2)
+ ve2 = e2
+ elif isinstance(e1,Base.Vector) and isinstance(e2,Part.Edge):
+ ve1 = e1
+ v3 = e2.Vertexes[-1].Point
+ v4 = e2.Vertexes[0].Point
+ ve2 = v3.sub(v4)
+ else:
+ return
+ angle = ve1.getAngle(ve2)
+ import math
+ return math.degrees(angle), angle
+
+
+def edgeToVector(edge):
+ """ Return a vector from an edge or a Part.line.
+ """
+ if isinstance(edge,Part.Shape):
+ return edge.Vertexes[-1].Point.sub(edge.Vertexes[0].Point)
+ elif isinstance(edge,Part.Line):
+ return edge.EndPoint.sub(edge.StartPoint)
+ else:
+ return None
+
+
+def colinearEdges(edge1, edge2, info=0, tolerance=1e-12):
+ """ Return true if 2 edges are colinear.
+ """
+ if not isinstance(edge1.Curve,Part.Line):
+ return False
+ if not isinstance(edge2.Curve,Part.Line):
+ return False
+ A = edgeToVector(edge1)
+ B = Base.Vector(0, 0, 0)
+ C = edgeToVector(edge2)
+ return colinearVectors(A, B, C, info=info, tolerance=tolerance)
+
def colinearVectors(A, B, C, info=0, tolerance=1e-12):
""" Return true if the 3 points are aligned.
@@ -1427,7 +1501,7 @@ def plot_axis(Vector_A, Vector_B, part, name, grp="WorkAxis"):
return axis_User_Name, axis
-def plot_circle(Radius, Position, Direction, part= "Part::Feature", name= "Circle", grp="WorkCircles"):
+def plot_circle(Radius, Position, Direction, part="Part::Feature", name="Circle", grp="WorkCircles"):
if not(App.ActiveDocument.getObject( grp )):
App.ActiveDocument.addObject("App::DocumentObjectGroup", grp)
circle = App.ActiveDocument.addObject(part, name)
@@ -1438,7 +1512,7 @@ def plot_circle(Radius, Position, Direction, part= "Part::Feature", name= "Circl
return circle_User_Name, circle
-def plot_arc(center, normal, radius, startangle, endangle, part= "Part::Feature", name= "Circle", grp="WorkCircles"):
+def plot_arc(center, normal, radius, startangle, endangle, part="Part::Feature", name="Circle", grp="WorkCircles"):
if not(App.ActiveDocument.getObject( grp )):
App.ActiveDocument.addObject("App::DocumentObjectGroup", grp)
arc = App.ActiveDocument.addObject(part, name)
@@ -1586,6 +1660,49 @@ def plot_cylinder(radius, height, point, axis, part, name, grp="WorkObjects"):
return cylinder_User_Name, cylinder
+def plot_sphere(Radius, Point, part="Part::Feature", name="Sphere", grp="WorkObjects"):
+ """
+ makeSphere(radius,[pnt, dir, angle1,angle2,angle3]) -- Make a sphere with a given radius
+ By default pnt=Vector(0,0,0), dir=Vector(0,0,1), angle1=0, angle2=90 and angle3=360
+ """
+ if not(App.ActiveDocument.getObject( grp )):
+ App.ActiveDocument.addObject("App::DocumentObjectGroup", grp)
+ sphere = App.ActiveDocument.addObject(part, name)
+ Sphere = Part.makeSphere(Radius, Point)
+ sphere.Shape = Sphere
+ App.ActiveDocument.getObject( grp ).addObject( sphere )
+ sphere_User_Name = sphere.Label
+ Gui.ActiveDocument.getObject( sphere_User_Name ).PointColor = (1.00,0.67,0.00)
+ Gui.ActiveDocument.getObject( sphere_User_Name ).LineColor = (1.00,0.67,0.00)
+ Gui.ActiveDocument.getObject( sphere_User_Name ).ShapeColor = (0.00,0.33,1.00)
+ Gui.ActiveDocument.getObject( sphere_User_Name ).Transparency = 75
+ return sphere_User_Name, sphere
+
+
+def plot_Dome(Point, Radius, Frequency, part="Part::Feature", name="Dome", grp="WorkObjects"):
+ print_msg("plot_Dome :")
+ if not(App.ActiveDocument.getObject( grp )):
+ App.ActiveDocument.addObject("App::DocumentObjectGroup", grp)
+ dome = App.ActiveDocument.addObject(part, name)
+ icosahedre = App.ActiveDocument.addObject(part, "Icosahedre")
+ Dome, Icosahedron = makeDome(Point, Radius, Frequency)
+
+ icosahedre.Shape = Icosahedron
+ App.ActiveDocument.getObject( grp ).addObject( icosahedre )
+ dome_User_Name = icosahedre.Label
+ if Dome != None:
+ dome.Shape = Dome
+ App.ActiveDocument.getObject( grp ).addObject( dome )
+ dome_User_Name = dome.Label
+ Gui.ActiveDocument.getObject(icosahedre.Label).Visibility=False
+
+ Gui.ActiveDocument.getObject( dome_User_Name ).PointColor = (1.00,0.67,0.00)
+ Gui.ActiveDocument.getObject( dome_User_Name ).LineColor = (1.00,0.67,0.00)
+ Gui.ActiveDocument.getObject( dome_User_Name ).ShapeColor = (0.00,0.33,1.00)
+ Gui.ActiveDocument.getObject( dome_User_Name ).Transparency = 75
+ return dome_User_Name, dome
+
+
def bounding_box(grp,ori_X,ori_Y,ori_Z,length_X,length_Y,length_Z,info=0):
""" Create a bounding box.
"""
@@ -1726,7 +1843,7 @@ def plot_originObject():
Axis_User_Name = Axis.Label
Gui.ActiveDocument.getObject(Axis_User_Name).LineColor = (1.00,0.00,0.00)
Gui.ActiveDocument.getObject(Axis_User_Name).PointColor = (1.00,0.00,0.00)
- Gui.ActiveDocument.getObject("Ori_X_Axis").Visibility=False
+ Gui.ActiveDocument.getObject("Ori_X_Axis").Visibility=True
#Work-AxisY
AY_Length = 300
@@ -1739,7 +1856,7 @@ def plot_originObject():
Axis_User_Name = Axis.Label
Gui.ActiveDocument.getObject(Axis_User_Name).LineColor = (0.00,0.67,0.00)
Gui.ActiveDocument.getObject(Axis_User_Name).PointColor = (0.00,0.67,0.00)
- Gui.ActiveDocument.getObject("Ori_Y_Axis").Visibility=False
+ Gui.ActiveDocument.getObject("Ori_Y_Axis").Visibility=True
#Work-AxisZ
AZ_Length = 300
@@ -1752,7 +1869,7 @@ def plot_originObject():
Axis_User_Name = Axis.Label
Gui.ActiveDocument.getObject(Axis_User_Name).LineColor = (0.33,0.00,1.00)
Gui.ActiveDocument.getObject(Axis_User_Name).PointColor = (0.33,0.00,1.00)
- Gui.ActiveDocument.getObject("Ori_Z_Axis").Visibility=False
+ Gui.ActiveDocument.getObject("Ori_Z_Axis").Visibility=True
# Work-PlaneXY
PXY_A_SIZE = 300
@@ -1911,7 +2028,6 @@ def plot_centerObjectPoint():
def plot_NpointsPoint():
"""Create a Point at mean location of all selected points.
"""
- global verbose
msg=verbose
m_actDoc = get_ActiveDocument(info=msg)
@@ -2106,10 +2222,13 @@ def plot_alongLinePoint():
""" Plot a point at a certain distance along the line respecting to the choosen
reference starting point.
"""
- msg=0
+ msg=verbose
createFolders('WorkPoints')
- error_msg = "Unable to create a point along a Line : \nSelect one Edge and one Point only!"
- result_msg = " : Point along a Line created !"
+ error_msg =\
+ "Unable to create a point along a Line : \n" +\
+ "Select one Edge and one Point on this Edge only !\n" +\
+ "or Select one Edge only and the first point of this Edge will be used as ref.!"
+ result_msg =" : Point along a Line created !"
name = "PointLine"
part = "Part::Feature"
Selection = get_SelectedObjects(info=msg, printError=False)
@@ -2118,8 +2237,8 @@ def plot_alongLinePoint():
Number_of_Points = SelectedObjects[0]
Number_of_Edges = SelectedObjects[1]
if msg != 0:
- print_msg("Number_of_Edges=" + str(Number_of_Edges) +
- " Number_of_Points=" + str(Number_of_Points))
+ print_msg("Number_of_Edges=" + str(Number_of_Edges))
+ print_msg("Number_of_Points=" + str(Number_of_Points))
if (Number_of_Edges == 1) and (Number_of_Points) == 1 :
Point_List = SelectedObjects[3]
Edge_List = SelectedObjects[4]
@@ -2127,23 +2246,47 @@ def plot_alongLinePoint():
print_msg(str(Point_List))
print_msg(str(Edge_List))
Vector_C = Point_List[0].Point
- Vector_A = Edge_List[0].valueAt( 0.0 )
- Vector_B = Edge_List[0].valueAt( Edge_List[0].Length )
+ Vector_A = Edge_List[0].Vertexes[0].Point
+ Vector_B = Edge_List[0].Vertexes[-1].Point
if msg != 0:
print_point(Vector_C, msg="Reference Point : ")
print_point(Vector_A, msg="Point A : ")
print_point(Vector_B, msg="Point B : ")
- if colinearVectors(Vector_A, Vector_B, Vector_C, info=1):
+ if colinearVectors(Vector_A, Vector_B, Vector_C, info=msg):
Vector_Translate = (Vector_B - Vector_A)
- #print_point(Vector_Translate, msg="Vector_Translate")
+ if msg != 0:
+ print_point(Vector_Translate, msg="Vector_Translate")
Vector_Translate = Vector_Translate.normalize() * m_distanceLinePoint
- #print_point(Vector_Translate, msg="Vector_Translate")
+ if msg != 0:
+ print_point(Vector_Translate, msg="Vector_Translate")
Vector_Line_Point = Vector_C + Vector_Translate
Center_User_Name = plot_point(Vector_Line_Point, part, name)
+
print_point(Vector_Line_Point,str(Center_User_Name) + result_msg + " at :")
else:
printError_msg("The Point and the line MUST be aligned !")
+ elif (Number_of_Edges == 1) and (Number_of_Points) == 0 :
+ Edge_List = SelectedObjects[4]
+ if msg != 0:
+ print_msg(str(Edge_List))
+ Vector_C = Edge_List[0].Vertexes[0].Point
+ Vector_A = Edge_List[0].Vertexes[0].Point
+ Vector_B = Edge_List[0].Vertexes[-1].Point
+ if msg != 0:
+ print_point(Vector_C, msg="Reference Point : ")
+ print_point(Vector_A, msg="Point A : ")
+ print_point(Vector_B, msg="Point B : ")
+ Vector_Translate = (Vector_B - Vector_A)
+ if msg != 0:
+ print_point(Vector_Translate, msg="Vector_Translate")
+ Vector_Translate = Vector_Translate.normalize() * m_distanceLinePoint
+ if msg != 0:
+ print_point(Vector_Translate, msg="Vector_Translate")
+ Vector_Line_Point = Vector_C + Vector_Translate
+
+ Center_User_Name = plot_point(Vector_Line_Point, part, name)
+ print_point(Vector_Line_Point,str(Center_User_Name) + result_msg + " at :")
else:
printError_msg(error_msg)
except:
@@ -2271,35 +2414,48 @@ def plot_lineFacePoint():
def plot_pointLinePoint():
- """ Plot the intersection point T on a Line given one Line and One Point C.
- The Vector TC is perpendicular to the line.
+ """ Point(s)=(Point(s),Line(s)):
+ Create projection(s) of Point(s) onto Line(s).
+ Plot the intersection point T on a Line given one Linee and One Point C.
+ The Vector TC is perpendicular to the Line.
+ The symetric point Cprime is also created as TC=TCprime.
+ - First select one (or several) Point(s)
+ - Second select one or several) Line(s)
"""
- msg=0
+ msg=verbose
createFolders('WorkPoints')
- error_msg = "Unable to create (Point,Line) Intersection : \nSelect one Line and one Point not on the Line !"
+ error_msg = "Unable to create (Point,Line) Intersection : \n"+\
+ "Select at least one Line and one Point not on the Line !"
result_msg = " : (Point,Line) Intersection and symetric are created !"
name = "PointLinePoint"
part = "Part::Feature"
- Selection = get_SelectedObjects(info=msg)
+ Selection = get_SelectedObjects(info=msg, printError=False)
try:
SelectedObjects = Selection
Number_of_Points = SelectedObjects[0]
Number_of_Edges = SelectedObjects[1]
- if (Number_of_Points == 1) and (Number_of_Edges == 1):
+ if msg != 0:
+ print_msg(" Number_of_Points=" + str(Number_of_Points))
+ print_msg(" Number_of_Edges=" + str(Number_of_Edges))
+ if (Number_of_Points >= 1) and (Number_of_Edges >= 1):
Point_List = SelectedObjects[3]
Edge_List = SelectedObjects[4]
- Vector_A = Edge_List[0].valueAt( 0.0 )
- Vector_B = Edge_List[0].valueAt( Edge_List[0].Length )
- Vector_C = Point_List[0].Point
+
+ for Selected_Edge in Edge_List:
+ for Selected_Point in Point_List:
+
+ Vector_A = Selected_Edge.valueAt( 0.0 )
+ Vector_B = Selected_Edge.valueAt( Edge_List[0].Length )
+ Vector_C = Selected_Point.Point
- Vector_T, Distance, Vector_Tprime = intersecPerpendicularLine(Vector_A, Vector_B, Vector_C, info=0)
+ Vector_T, Distance, Vector_Tprime = intersecPerpendicularLine(Vector_A, Vector_B, Vector_C, info=0)
- Center_User_Name = plot_point(Vector_T, part, name)
- print_point(Vector_T,str(Center_User_Name) + result_msg + " at :")
- Center_User_Name2 = plot_point(Vector_Tprime, part, name)
- print_point(Vector_Tprime,str(Center_User_Name2) + result_msg + " at :")
+ Center_User_Name = plot_point(Vector_T, part, name)
+ print_point(Vector_T,str(Center_User_Name) + result_msg + " at :")
+ Center_User_Name2 = plot_point(Vector_Tprime, part, name)
+ print_point(Vector_Tprime,str(Center_User_Name2) + result_msg + " at :")
- print_msg(str(Center_User_Name) + result_msg + " at a distance from the line of " + str(Distance))
+ print_msg(str(Center_User_Name) + result_msg + " at a distance from the line of " + str(Distance))
else:
printError_msg(error_msg)
except:
@@ -2307,39 +2463,45 @@ def plot_pointLinePoint():
def plot_pointFacePoint():
- """ Plot the intersection point T on a Plane given one Plane and One Point C.
- The Vector TC is perpendicular to the plane.
+ """ Point(s)=(Point(s),Face(s)):
+ Plot the intersection point T on a Plane given one Plane and One Point C.
+ The Vector TC is perpendicular to the plane.
+ Create projection(s) of Point(s) onto Face(s).
+ - First select one (or several) Point(s)
+ - Second select one or several) Plane(s)
"""
- msg=0
+ msg=verbose
createFolders('WorkPoints')
- error_msg = "Unable to create (Point,Face) Intersection : \nSelect one Face and one Point not on the Face !"
- result_msg = " : (Point,Face) Intersection and symetric are created !"
+ error_msg = "Unable to create (Point,Face) Intersection : \n"+\
+ "Select at least one Face and one Point not on the Face !"
+ result_msg = " : (Point,Face) Intersection created !"
name = "PointFacePoint"
part = "Part::Feature"
- Selection = get_SelectedObjects(info=msg)
+
+ Selection = get_SelectedObjects(info=msg, printError=False)
try:
SelectedObjects = Selection
Number_of_Points = SelectedObjects[0]
Number_of_Planes = SelectedObjects[2]
- #print_msg(" Number_of_Points=" + str(Number_of_Points))
- #print_msg(" Number_of_Planes=" + str(Number_of_Planes))
- if (Number_of_Points == 1) and (Number_of_Planes == 1):
+ if msg != 0:
+ print_msg(" Number_of_Points=" + str(Number_of_Points))
+ print_msg(" Number_of_Planes=" + str(Number_of_Planes))
+ if (Number_of_Points >= 1) and (Number_of_Planes >= 1):
Point_List = SelectedObjects[3]
Plane_List = SelectedObjects[5]
- Selected_Plane = Plane_List[0]
- Vector_C = Point_List[0].Point
+ for Selected_Plane in Plane_List:
+ for Selected_Point in Point_List:
+ Vector_C = Selected_Point.Point
+ Plane_Point = Selected_Plane.CenterOfMass
+ Plane_Normal = Selected_Plane.normalAt(0,0)
- Plane_Point = Selected_Plane.CenterOfMass
- Plane_Normal = Selected_Plane.normalAt(0,0)
+ Vector_B = Vector_C + Plane_Normal
- Vector_B = Vector_C + Plane_Normal
-
- Vector_T = intersecLinePlane(Vector_C, Vector_B, Plane_Normal, Plane_Point, info=0)
-
- Center_User_Name = plot_point(Vector_T, part, name)
- print_point(Vector_T,str(Center_User_Name) + result_msg + " at :")
+ Vector_T = intersecLinePlane(Vector_C, Vector_B, Plane_Normal, Plane_Point, info=0)
+ Center_User_Name = plot_point(Vector_T, part, name)
+ print_point(Vector_T,str(Center_User_Name) + result_msg + " at :")
else:
printError_msg(error_msg)
except:
@@ -2724,9 +2886,11 @@ def plot_baseObjectPoint():
printError_msg(error_msg)
+
+
def point_toSketch():
""" Transform Point(s) in Sketch's Point(s) by projection onto the Sketch's Plane:
- - First select an existing Skecth;
+ - First select an existing Sketch;
- Select as much as Points needed;
Then click on this button.
"""
@@ -3041,54 +3205,90 @@ def plot_cylinderAxis():
printError_msg(error_msg)
except:
printError_msg(error_msg)
-
-
-
-
+
def plot_planeAxis():
""" Plot 2 Axis perpendicular to a Plane and passing trougth center.
"""
- msg=0
+ msg=verbose
+ global m_extensionFaceNormal
+
+ def plot_normalAt(Selected_Plane, Point_A):
+ if m_extensionFaceNormal != 0.0:
+ Length = m_extensionFaceNormal
+ else:
+ Length = Selected_Plane.Length * 0.1
+ if msg != 0:
+ print_point(Point_A, msg="Point_A : ")
+ print_msg("Length = " + str(Length))
+ Normal = Selected_Plane.normalAt(0,0)
+ Normal = Normal.normalize().multiply(Length)
+ Point_B = App.Vector(Point_A) + Normal
+ Point_Bprime = App.Vector(Point_A) - Normal
+ if msg != 0:
+ print_point(Normal, msg="Normal : ")
+ print_point(Point_B, msg="Point_B : ")
+ print_point(Point_Bprime, msg="Point_Bprime : ")
+
+ Axis_User_Name, axis = plot_axis(Point_B, Point_A, part, name)
+ print_msg(str(Axis_User_Name) + result_msg )
+ Axis_User_Name, axis = plot_axis(Point_Bprime, Point_A, part, name)
+ print_msg(str(Axis_User_Name) + result_msg )
+
+
createFolders('WorkAxis')
error_msg = "Unable to create Plane Axis : \nSelect at least one plane face !"
result_msg = " : Plane Axis created !"
name = "Axis"
part = "Part::Feature"
- global m_extensionFaceNormal
+
Selection = get_SelectedObjects(info=msg, printError=False)
try:
SelectedObjects = Selection
Number_of_Planes = SelectedObjects[2]
- #print_msg(" Number_of_Planes=" + str(Number_of_Planes))
- if (Number_of_Planes) >= 1 :
- Plane_List = SelectedObjects[5]
- for i in range( Number_of_Planes ):
+ Number_of_Points = SelectedObjects[0]
+ if msg != 0:
+ print_msg(" Number_of_Planes=" + str(Number_of_Planes))
+ print_msg(" Number_of_Points=" + str(Number_of_Points))
+ Point_List = SelectedObjects[3]
+ Plane_List = SelectedObjects[5]
+ if msg != 0:
+ print_msg(" Point_List=" + str(Point_List))
+ print_msg(" Plane_List=" + str(Plane_List))
+
+ if (Number_of_Planes == 0 ):
+ printError_msg(error_msg)
+ return
+
+ if (Number_of_Points == 0 ):
+ for Selected_Plane in Plane_List:
try:
- Selected_Plane = Plane_List[i]
#print_msg(str(Selected_Plane))
Point_A = Selected_Plane.CenterOfMass
- if m_extensionFaceNormal != 0.0:
- Length = m_extensionFaceNormal
- else:
- Length = Selected_Plane.Length * 0.1
- #print_point(Point_A, msg="Point_A : ")
- #print_msg("Length = " + str(Length))
- Normal = Selected_Plane.normalAt(0,0)
- Normal = Normal.normalize().multiply(Length)
- #print_point(Normal, msg="Normal : ")
- Point_B = App.Vector(Point_A) + Normal
- Point_Bprime = App.Vector(Point_A) - Normal
- #Point_B = Point_B.normalize().multiply(Length)
-
- Axis_User_Name, axis = plot_axis(Point_B, Point_A, part, name)
- print_msg(str(Axis_User_Name) + result_msg )
- Axis_User_Name, axis = plot_axis(Point_Bprime, Point_A, part, name)
- print_msg(str(Axis_User_Name) + result_msg )
+ plot_normalAt(Selected_Plane, Point_A)
except:
printError_msg("Non Planar Surface !")
- else:
- printError_msg(error_msg)
+ else:
+ if Number_of_Points >= Number_of_Planes:
+
+ if Number_of_Points == Number_of_Planes:
+ if msg != 0:
+ print_msg(" Number_of_Points = Number_of_Planes")
+ for Selected_Plane, Selected_Point in zip(Plane_List, Point_List):
+ if msg != 0:
+ print_msg(" Selected_Plane=" + str(Selected_Plane))
+ print_msg(" Selected_Point=" + str(Selected_Point))
+ plot_normalAt(Selected_Plane, Selected_Point.Point)
+ else :
+ if msg != 0:
+ print_msg(" Number_of_Points > Number_of_Planes")
+ for Selected_Plane, Selected_Point in itertools.izip_longest(Plane_List, Point_List,fillvalue=Plane_List[-1]):
+ if msg != 0:
+ print_msg(" Selected_Plane=" + str(Selected_Plane))
+ print_msg(" Selected_Point=" + str(Selected_Point))
+ plot_normalAt(Selected_Plane, Selected_Point.Point)
+ else:
+ printError_msg(error_msg)
except:
printError_msg(error_msg)
@@ -3287,10 +3487,10 @@ def extensionLinePointAxis(value):
except ValueError:
printError_msg("Extension must be valid number !")
-
+
def plot_linePointAxis():
"""
- Plot an Axis Perpendicular to an Axis and crossing a Point
+ Plot an Axis Perpendicular to an Axis and crossing a Point
-Select one Axis and one Point NOT on the previous Axis.
"""
msg=0
@@ -3309,39 +3509,40 @@ def plot_linePointAxis():
if msg != 0:
print_msg("Number_of_Edges=" + str(Number_of_Edges) +
" Number_of_Points=" + str(Number_of_Points))
- if (Number_of_Edges == 1) and (Number_of_Points) == 1 :
+ if (Number_of_Edges == 1) and (Number_of_Points) >= 1 :
Point_List = SelectedObjects[3]
Edge_List = SelectedObjects[4]
if msg != 0:
print_msg(str(Point_List))
print_msg(str(Edge_List))
- Vector_C = Point_List[0].Point
- Vector_A = Edge_List[0].valueAt( 0.0 )
- Vector_B = Edge_List[0].valueAt( Edge_List[0].Length )
-
- Vector_T, Distance, Vector_Tprime = intersecPerpendicularLine(Vector_A, Vector_B, Vector_C, info=msg)
-
- print_msg("Distance from the Point to the Axis is : " + str(Distance) )
-
- Axis_dir = Vector_C - Vector_T
- Axis_E1 = Vector_C
- Axis_E2 = Vector_T
-
- if m_extensionLinePointAxis != 0.0:
- Axis_E1 = Vector_C + Axis_dir.normalize().multiply(m_extensionLinePointAxis)
- if m_extensionLinePointAxis >= 0.0:
- Axis_E2 = Vector_T - Axis_dir.normalize().multiply(m_extensionLinePointAxis)
- else:
- Axis_E2 = Vector_T + Axis_dir.normalize().multiply(m_extensionLinePointAxis)
-
- Axis_User_Name, axis = plot_axis(Axis_E1, Axis_E2, part, name)
-
- print_msg(str(Axis_User_Name) + result_msg )
+ for Selected_Point in Point_List:
+ Vector_C = Selected_Point.Point
+ Vector_A = Edge_List[0].valueAt( 0.0 )
+ Vector_B = Edge_List[0].valueAt( Edge_List[0].Length )
+
+ Vector_T, Distance, Vector_Tprime = intersecPerpendicularLine(Vector_A, Vector_B, Vector_C, info=msg)
+
+ print_msg("Distance from the Point to the Axis is : " + str(Distance) )
+
+ Axis_dir = Vector_C - Vector_T
+ Axis_E1 = Vector_C
+ Axis_E2 = Vector_T
+
+ if m_extensionLinePointAxis != 0.0:
+ Axis_E1 = Vector_C + Axis_dir.normalize().multiply(m_extensionLinePointAxis)
+ if m_extensionLinePointAxis >= 0.0:
+ Axis_E2 = Vector_T - Axis_dir.normalize().multiply(m_extensionLinePointAxis)
+ else:
+ Axis_E2 = Vector_T + Axis_dir.normalize().multiply(m_extensionLinePointAxis)
+
+ Axis_User_Name, axis = plot_axis(Axis_E1, Axis_E2, part, name)
+
+ print_msg(str(Axis_User_Name) + result_msg )
else:
printError_msg(error_msg)
except:
printError_msg(error_msg)
-
+
def plot_planeLinePointAxis():
"""
@@ -3499,12 +3700,28 @@ def plot_planeLinePointAxis():
printError_msg(error_msg)
except:
printError_msg(error_msg)
-
+
+
+def extensionLine(value):
+ """ Respond to the change in extension value from the text box.
+ """
+ try:
+ # First we check if a valid number have been entered
+ global m_extensionLine
+ if str(value) == '-':
+ return
+ m_extensionLine = float(value)
+ print_msg("New extension is :" + str(m_extensionLine))
+ except ValueError:
+ printError_msg("Extension must be valid number !")
+
def plot_pointLineAxis():
"""
- Plot an Axis Parallel to an Axis and crossing a Point.
- -Select one Axis and one Point NOT on the previous Axis.
+ Create an Axis Parallel to an Axis (as Direction) and crossing a Point.
+ - Select one Axis and one (or several) Point(s) NOT on the previous Axis.
+ Define the length and the attach point if needed.
+ A Length of Zero means the length of already selected Axis will be used.
"""
msg=0
createFolders('WorkAxis')
@@ -3520,34 +3737,44 @@ def plot_pointLineAxis():
Number_of_Edges = SelectedObjects[1]
if msg != 0:
print_msg("Number_of_Edges=" + str(Number_of_Edges) + " Number_of_Points=" + str(Number_of_Points))
- if (Number_of_Edges == 1) and (Number_of_Points) == 1 :
+ if (Number_of_Edges == 1) and (Number_of_Points) >= 1 :
Point_List = SelectedObjects[3]
Edge_List = SelectedObjects[4]
if msg != 0:
print_msg(str(Point_List))
- print_msg(str(Edge_List))
- Vector_Cprime = Point_List[0].Point
+ print_msg(str(Edge_List))
Vector_A = Edge_List[0].valueAt( 0.0 )
Vector_B = Edge_List[0].valueAt( Edge_List[0].Length )
Vector_C = centerLinePoint(Edge_List[0],info=1)
- Vector_Translate = (Vector_Cprime - Vector_C)
- Vector_Aprime = Vector_A + Vector_Translate
- Vector_Bprime = Vector_B + Vector_Translate
+
+ if m_extensionLine != 0.0:
+ AB_Vector = Vector_B.sub(Vector_A)
+ new_Vector = AB_Vector.normalize().multiply(m_extensionLine/2.)
+ Vector_A = Vector_C.sub(new_Vector)
+ Vector_B = Vector_C.add(new_Vector)
+
+ for Selected_Point in Point_List:
+ #Vector_Cprime = Point_List[0].Point
+ Vector_Cprime = Selected_Point.Point
+ Vector_Translate = (Vector_Cprime - Vector_C)
- if str(m_attach_point) == "Start":
- Vector_Translate2 = (Vector_A - Vector_B)
- Vector_Translate2 = Vector_Translate2.multiply(0.5)
- Vector_Aprime = Vector_Aprime + Vector_Translate2
- Vector_Bprime = Vector_Bprime + Vector_Translate2
- if str(m_attach_point) == "End":
- Vector_Translate2 = (Vector_B - Vector_A)
- Vector_Translate2 = Vector_Translate2.multiply(0.5)
- Vector_Aprime = Vector_Aprime + Vector_Translate2
- Vector_Bprime = Vector_Bprime + Vector_Translate2
-
- Axis_User_Name, axis = plot_axis(Vector_Aprime, Vector_Bprime, part, name)
-
- print_msg(str(Axis_User_Name) + result_msg )
+ Vector_Aprime = Vector_A + Vector_Translate
+ Vector_Bprime = Vector_B + Vector_Translate
+
+ if str(m_attach_point) == "Start":
+ Vector_Translate2 = (Vector_A - Vector_B)
+ Vector_Translate2 = Vector_Translate2.multiply(0.5)
+ Vector_Aprime = Vector_Aprime + Vector_Translate2
+ Vector_Bprime = Vector_Bprime + Vector_Translate2
+ if str(m_attach_point) == "End":
+ Vector_Translate2 = (Vector_B - Vector_A)
+ Vector_Translate2 = Vector_Translate2.multiply(0.5)
+ Vector_Aprime = Vector_Aprime + Vector_Translate2
+ Vector_Bprime = Vector_Bprime + Vector_Translate2
+
+ Axis_User_Name, axis = plot_axis(Vector_Aprime, Vector_Bprime, part, name)
+
+ print_msg(str(Axis_User_Name) + result_msg )
else:
printError_msg(error_msg)
except:
@@ -3555,42 +3782,58 @@ def plot_pointLineAxis():
def plot_linePlaneAxis():
- """ Plot an Axis on a Plane by projection from another Axis.
+ """ Axes=(Pl(s),Axes):
+ Create projection(s) of Axes onto Plane(s).
+ - First select one (or several) Line(s)
+ - Second select one or several) Plane(s)
"""
- msg=0
+ msg=verbose
createFolders('WorkAxis')
- error_msg = "Unable to create projection Axis onto a Plane : \nSelect one Plane and one Line !"
+ error_msg = "Unable to create projection Axis onto a Plane : \n"+\
+ "Select at least one Line and one Plane !"
result_msg = " : Projection Axis onto a Plane created !"
name = "Line"
- part = "Part::Feature"
+ part = "Part::Feature"
+
Selection = get_SelectedObjects(info=msg, printError=False)
try:
SelectedObjects = Selection
Number_of_Edges = SelectedObjects[1]
Number_of_Planes = SelectedObjects[2]
- #print_msg("Number_of_Edges=" + str(Number_of_Edges) + " Number_of_Planes=" + str(Number_of_Planes))
- if Number_of_Planes == 1 and Number_of_Edges == 1:
+ if msg != 0:
+ print_msg(" Number_of_Edges=" + str(Number_of_Edges))
+ print_msg(" Number_of_Planes=" + str(Number_of_Planes))
+ if Number_of_Edges >= 1 and Number_of_Planes >= 1:
Edge_List = SelectedObjects[4]
Plane_List = SelectedObjects[5]
- Point_A = Edge_List[0].valueAt(0.0)
- Point_B = Edge_List[0].valueAt(Edge_List[0].Length)
- #print_point(Point_A, msg="Point_A : ")
- #print_point(Point_B, msg="Point_B : ")
- Selected_Plane = Plane_List[0]
- Plane_Point = Selected_Plane.CenterOfMass
- Plane_Normal = Selected_Plane.normalAt(0,0)
- # Projection of A and B onto the Plane Aprime and Bprime
- Vector_A = Point_A + Plane_Normal
- Vector_B = Point_B + Plane_Normal
+
+ for Selected_Plane in Plane_List:
+ for Selected_Edge in Edge_List:
+ Point_A = Selected_Edge.Vertexes[0].Point
+ Point_B = Selected_Edge.Vertexes[1].Point
+ if msg != 0:
+ print_point(Point_A, msg="Point_A : ")
+ print_point(Point_B, msg="Point_B : ")
- Point_Aprime = intersecLinePlane(Point_A, Vector_A, Plane_Normal, Plane_Point, info=0)
- Point_Bprime = intersecLinePlane(Point_B, Vector_B, Plane_Normal, Plane_Point, info=0)
- # Plot them
- plot_point(Point_Aprime, part, "PointFacePoint")
- plot_point(Point_Bprime, part, "PointFacePoint")
- Axis_User_Name, axis = plot_axis(Point_Aprime, Point_Bprime, part, name)
+ #Plane_Point = Selected_Plane.CenterOfMass
+ Plane_Placement = Selected_Plane.Placement
+ Plane_Normal = Selected_Plane.normalAt(0,0)
+ # Projection of A and B onto the Plane Aprime and Bprime
+ #Vector_A = Point_A + Plane_Normal
+ #Vector_B = Point_B + Plane_Normal
- print_msg(str(Axis_User_Name) + result_msg )
+ #Point_Aprime = intersecLinePlane(Point_A, Vector_A, Plane_Normal, Plane_Point, info=0)
+ #Point_Bprime = intersecLinePlane(Point_B, Vector_B, Plane_Normal, Plane_Point, info=0)
+ Point_Aprime = Point_A.projectToPlane(Plane_Placement.Base, Plane_Normal)
+ Point_Bprime = Point_B.projectToPlane(Plane_Placement.Base, Plane_Normal)
+
+ if msg != 0:
+ # Plot them
+ plot_point(Point_Aprime, part, "PointFacePoint")
+ plot_point(Point_Bprime, part, "PointFacePoint")
+ Axis_User_Name, axis = plot_axis(Point_Aprime, Point_Bprime, part, name)
+
+ print_msg(str(Axis_User_Name) + result_msg )
else:
printError_msg(error_msg)
except:
@@ -3825,7 +4068,7 @@ def distLine(value):
if msg != 0:
print_msg("New Distance between lines is :" + str(m_distLine))
except ValueError:
- printError_msg("Distance between plane must be valid number !")
+ printError_msg("Distance between lines must be valid number !")
def plot_distLine():
@@ -3939,7 +4182,166 @@ def plot_distLine():
except:
printError_msg(error_msg)
+def numberLine2(value):
+ """ Respond to the change in number of line from the spin box.
+ """
+ global verbose
+ msg=verbose
+
+ try:
+ # First we check if a valid number have been entered
+ global m_numberLine2
+ if str(value) == '-':
+ return
+ m_numberLine2 = int(value)
+ if m_numberLine2 == 0:
+ m_numberLine2 = 1
+ if msg != 0:
+ print_msg("New number is :" + str(m_numberLine2))
+ except ValueError:
+ printError_msg("Number must be valid !")
+
+def angleLine(value):
+ """ Respond to the change in Angle between line value from the text box.
+ """
+ global verbose
+ msg=verbose
+ try:
+ # First we check if a valid number have been entered
+ global m_angleLine
+ m_angleLine = float(value)
+ if msg != 0:
+ print_msg("New Angle between lines is :" + str(m_angleLine))
+ except ValueError:
+ printError_msg("Angle between lines must be valid number in degrees !")
+
+
+def plot_angleLine():
+ """ Axes=(Axis,Pt,Pl,a):
+ Create an Axis with an Angle to a origin Axis.
+ - First select an Axis to rotate, then a Plane and a rotation Point
+ or
+ - First select an Axis to rotate, then a rotation Axis and a rotation Point
+
+ NB:
+ The Axis is created by rotation using :
+ The Normal of the selected Plane as rotation Axis
+ and selected Point as rotation Point.
+ or
+ The second selected Axis as rotation Axis
+ and selected Point as rotation Point.
+
+ - The angle (in degrees) of rotation can be defined first.
+ Positive number in one direction and negative in the other one.
+ - The second number indicates the number of Axes to create.
+ """
+ msg=verbose
+ createFolders('WorkAxis')
+ error_msg = "Unable to create Line(s) : \n "+\
+ "Select first one Line then one Point and one Plane! \n"+\
+ "or\n"+\
+ "Select first one Line then one Point and one second Axis!"
+ result_msg = " : Line(s) created !"
+ name = "Line_with_angle"
+ part = "Part::Feature"
+
+ Selection = get_SelectedObjects(info=msg, printError=False)
+ try:
+ SelectedObjects = Selection
+ Number_of_Points = SelectedObjects[0]
+ Number_of_Edges = SelectedObjects[1]
+ Number_of_Planes = SelectedObjects[2]
+ if msg != 0:
+ print_msg("Number_of_Points=" + str(Number_of_Points) + \
+ "\nNumber_of_Edges=" + str(Number_of_Edges) + \
+ "\nNumber_of_Planes=" + str(Number_of_Planes))
+
+ if (Number_of_Points == 1 ) and (Number_of_Edges == 1) and (Number_of_Planes) == 1 :
+ Point_List = SelectedObjects[3]
+ Edge_List = SelectedObjects[4]
+ Plane_List = SelectedObjects[5]
+ if msg !=0:
+ print_msg("Point List = " + str(Point_List))
+ print_msg("Edge List = " + str(Edge_List))
+ print_msg("Plane_List = " + str(Plane_List))
+ Vector_A = Edge_List[0].Vertexes[0].Point
+ Vector_B = Edge_List[0].Vertexes[-1].Point
+ m_Edge = Edge_List[0]
+ Vector_C = Point_List[0].Point
+ Plane_D = Plane_List[0]
+ if msg != 0:
+ print_point(Vector_A, msg="Vector_A : ")
+ print_point(Vector_B, msg="Vector_B : ")
+ print_point(Vector_C, msg="Vector_C : ")
+
+ rot_center = Vector_C
+ rot_axis = Plane_D.normalAt(0,0)
+ rot_angle = m_angleLine
+ rot_copy = m_numberLine2
+ if msg != 0:
+ print_msg("rot_center = " + str(rot_center))
+ print_msg("rot_axis = " + str(rot_axis))
+ print_msg("rot_angle = " + str(rot_angle))
+ print_msg("rot_copy = " + str(rot_copy))
+ for i in range(rot_copy):
+ m_Edge2 = m_Edge.copy()
+ # Apply the rotation (degree) to the current location of this shape
+ # Shp.rotate(Vector(0,0,0),Vector(0,0,1),180)
+ # rotate the shape around the Z Axis 180 degrees.
+ m_Edge2.rotate(rot_center,rot_axis,rot_angle)
+ Axis_E1 = m_Edge2.Vertexes[0].Point
+ Axis_E2 = m_Edge2.Vertexes[1].Point
+
+ Axis_User_Name, axis = plot_axis(Axis_E1, Axis_E2, part, name)
+ print_msg(str(Axis_User_Name) + result_msg )
+ rot_angle = rot_angle + m_angleLine
+
+ elif (Number_of_Points == 1 ) and (Number_of_Edges == 2) :
+ Point_List = SelectedObjects[3]
+ Edge_List = SelectedObjects[4]
+ if msg !=0:
+ print_msg("Point List = " + str(Point_List))
+ print_msg("Edge List = " + str(Edge_List))
+ Vector_A = Edge_List[0].Vertexes[0].Point
+ Vector_B = Edge_List[0].Vertexes[-1].Point
+ m_Edge = Edge_List[0]
+ Vector_C = Point_List[0].Point
+
+ if msg != 0:
+ print_point(Vector_A, msg="Vector_A : ")
+ print_point(Vector_B, msg="Vector_B : ")
+ print_point(Vector_C, msg="Vector_C : ")
+
+ rot_center = Vector_C
+ Point_A = Edge_List[1].Vertexes[0].Point
+ Point_B = Edge_List[1].Vertexes[-1].Point
+ rot_axis = Point_B.sub(Point_A)
+ rot_angle = m_angleLine
+ rot_copy = m_numberLine2
+ if msg != 0:
+ print_msg("rot_center = " + str(rot_center))
+ print_msg("rot_axis = " + str(rot_axis))
+ print_msg("rot_angle = " + str(rot_angle))
+ print_msg("rot_copy = " + str(rot_copy))
+ for i in range(rot_copy):
+ m_Edge2 = m_Edge.copy()
+ # Apply the rotation (degree) to the current location of this shape
+ # Shp.rotate(Vector(0,0,0),Vector(0,0,1),180)
+ # rotate the shape around the Z Axis 180 degrees.
+ m_Edge2.rotate(rot_center,rot_axis,rot_angle)
+ Axis_E1 = m_Edge2.Vertexes[0].Point
+ Axis_E2 = m_Edge2.Vertexes[1].Point
+
+ Axis_User_Name, axis = plot_axis(Axis_E1, Axis_E2, part, name)
+ print_msg(str(Axis_User_Name) + result_msg )
+ rot_angle = rot_angle + m_angleLine
+
+ else:
+ printError_msg(error_msg)
+ except:
+ printError_msg(error_msg)
+
def plot_baseObjectAxes():
msg=0
@@ -4459,8 +4861,8 @@ def plot_3pointsEllipse():
printError_msg(error_msg)
except:
printError_msg(error_msg)
+
-
def plot_3PointsPlane():
""" Create a Plane from 3 Points.
"""
@@ -4649,6 +5051,7 @@ def plot_planePointPlane():
SelectedObjects = Selection
Number_of_Points = SelectedObjects[0]
Number_of_Planes = SelectedObjects[2]
+
#print_msg("Number_of_Points=" + str(Number_of_Points) + " Number_of_Planes=" + str(Number_of_Planes))
if Number_of_Points == 1 and Number_of_Planes == 1:
Points_List = SelectedObjects[3]
@@ -5019,35 +5422,37 @@ def plot_clickForPlane2():
If no object is selected, the plane is created to 0, 0, 0 coordinates with
a radius of 20 mm
"""
- global verbose
msg=verbose
+ createFolders('WorkPlanes')
m_actDoc = get_ActiveDocument(info=msg)
if m_actDoc == None:
return None
- createFolders('WorkPlanes')
-
- printError_msg(error_msg)
- return
m_radius = 20
m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
m_objs = [selobj.Object for selobj in m_selEx]
- if len(objs) >= 1:
- s = m_objs[0].Shape
- boundBox_ = s.BoundBox
- boundBoxLX = boundBox_.XLength
- boundBoxLY = boundBox_.YLength
- boundBoxLZ = boundBox_.ZLength
-
- m_radius = boundBoxLX
- if m_radius < boundBoxLY:
- m_radius = boundBoxLY
- elif m_radius < boundBoxLZ:
- m_radius = boundBoxLZ
-
- m_radiusP = m_radius
+
+ for m_obj in m_objs:
+ if hasattr(m_obj, 'Shape'):
+ s = m_obj.Shape
+ m_bbox = s.BoundBox
+ m_radius = m_bbox.XLength
+ if m_radius < m_bbox.YLength:
+ m_radius = m_bbox.YLength
+ elif m_radius < m_bbox.ZLength:
+ m_radius = m_bbox.ZLength
+
if msg !=0:
- print_msg("Create plane ("+str(m_radiusP)+" mm)")
+ print_msg("Create plane ("+str(m_radius)+" mm)")
+
+ pl = FreeCAD.Placement()
+ pl.Rotation = Gui.ActiveDocument.ActiveView.getCameraOrientation()
+
+
+ printError_msg(error_msg)
+ return
+
+
# TODO to complete
FcPlane = doc.addObject("App::DocumentObjectGroup","FcPlane")
@@ -5529,7 +5934,468 @@ def plot_axisPointCube():
else:
printError_msg(error_msg)
except:
- printError_msg(error_msg)
+ printError_msg(error_msg)
+
+
+def diameterSphere(value):
+ """ Respond to the change in diameter value from the text box.
+ """
+ try:
+ # First we check if a valid number have been entered
+ global m_diameterSphere
+ if str(value) == '-':
+ return
+ m_diameterSphere = float(value)
+ print_msg("New diameter is :" + str(m_diameterSphere))
+ except ValueError:
+ printError_msg("Diameter must be valid number !")
+
+
+def plot_centerSphere():
+ """ Plot a a Sphere shell:
+ - First select one or several Center Point(s).
+ - Define Diameter if needed.
+ It will create Sphere shell(s) centered
+ at the selected point(s).
+ """
+ msg=verbose
+ createFolders('WorkObjects')
+
+ error_msg =\
+ "Unable to create a Sphere : \n" +\
+ "Select one (or several) point(s) first for the center location !\n"+\
+ "No selection means the center will be at (0,0,0) !"
+ result_msg = " : Sphere created !"
+ name = "Sphere"
+ part = "Part::Feature"
+
+ m_actDoc = get_ActiveDocument(info=msg)
+ if m_actDoc.Name == None:
+ return None
+
+ try:
+ Point_List = []
+
+ Selection = get_SelectedObjects(info=msg, printError=False)
+ if Selection == None:
+ if msg != 0:
+ print_msg("Append Origin as Center !")
+ #Origin = Base.Vector(0, 0, 0)
+ #Point_List.append(Part.Vertex(Origin).Point)
+ Point_List.append(Base.Vector(0, 0, 0))
+ Number_of_Points = 1
+ else:
+ SelectedObjects = Selection
+ Number_of_Points = SelectedObjects[0]
+ if (SelectedObjects[0] >= 1) :
+ for m_point in SelectedObjects[3]:
+ Point_List.append(m_point.Point)
+ if msg != 0:
+ print_msg("Number_of_Points=" + str(Number_of_Points))
+ print_msg("Point_List=" + str(Point_List))
+
+ radius = m_diameterSphere/2.
+ if msg != 0:
+ print_msg("Radius is : " + str(radius))
+ for center in Point_List:
+ if msg != 0:
+ print_point(center, msg="Center : ")
+ sphere_User_Name, sphere = plot_sphere(radius, center, part, name, grp="WorkObjects")
+ print_point(center,str(sphere_User_Name) + result_msg + " at :")
+ m_actDoc.recompute()
+ except:
+ printError_msg(error_msg)
+
+
+def diameterDome(value):
+ """ Respond to the change in diameter value from the text box.
+ """
+ try:
+ # First we check if a valid number have been entered
+ global m_diameterDome
+ if str(value) == '-':
+ return
+ m_diameterDome = float(value)
+ print_msg("New diameter is :" + str(m_diameterDome))
+ except ValueError:
+ printError_msg("Diameter must be valid number !")
+
+
+def frequencyDome(value):
+ """ Respond to the change in frequency value from the text box.
+ """
+ try:
+ # First we check if a valid number have been entered
+ global m_frequencyDome
+ if str(value) == '-':
+ return
+ m_frequencyDome = int(value)
+ if m_frequencyDome in range(10):
+ print_msg("New frequency is :" + str(m_frequencyDome))
+ else:
+ return
+ except ValueError:
+ printError_msg("Frequency must be valid number !")
+
+
+def makeDome(point, radius, frequency):
+ """
+ """
+ msg=verbose
+
+ m_center = point
+ m_radius = radius
+ m_frequency = frequency
+
+ if msg != 0:
+ print_msg("makeDome(point=" + str(m_center) +\
+ ", radius="+ str(m_radius) +\
+ ", frequency="+ str(m_frequency) +")")
+
+ def makeFreqFaces(radius, center, f_Pt, s_Pt, th_Pt, freq):
+ """Makes the geodesic dome faces out of the points of an
+ icosahedron triangle
+ """
+ msg=verbose
+
+ m_radius = radius
+ m_center = center
+ m_freq = freq
+ m_domeFaces = []
+ firstEdge = None
+ secEdge = None
+ thirdEdge = None
+
+ if msg != 0:
+ print_msg("m_radius =" + str(m_radius))
+ print_msg("m_center =" + str(m_center))
+ print_msg("m_freq =" + str(m_freq))
+
+ # Definition of direction vectors
+ growVec = s_Pt.sub(f_Pt)
+ growVec.multiply(1.0/m_freq)
+
+ crossVec = th_Pt.sub(s_Pt)
+ crossVec.multiply(1.0/m_freq)
+
+ if msg == 2:
+ print_point(f_Pt, msg="f_Pt ")
+ plot_point(f_Pt, "Part::Feature", "f_Pt", grp="WorkPoints")
+ print_point(s_Pt, msg="s_Pt ")
+ plot_point(s_Pt, "Part::Feature", "s_Pt", grp="WorkPoints")
+ print_point(th_Pt, msg="th_Pt ")
+ plot_point(th_Pt, "Part::Feature", "th_Pt", grp="WorkPoints")
+ if msg == 3:
+ print_point(growVec, msg="growVec ")
+ plot_point(growVec, "Part::Feature", "growVec", grp="WorkPoints")
+ print_point(crossVec, msg="crossVec ")
+ plot_point(crossVec, "Part::Feature", "crossVec", grp="WorkPoints")
+
+ for k in range(m_freq):
+ print_msg("k = " + str(k))
+ kThirdPt = f_Pt + growVec * (k+0.0)
+ dThirdPt = kThirdPt.sub(m_center)
+ dThirdPt = dThirdPt.normalize().multiply(m_radius).add(m_center)
+ kSecPt = f_Pt + growVec * (k+1.0)
+ dSecPt = kSecPt.sub(m_center)
+ dSecPt = dSecPt.normalize().multiply(m_radius).add(m_center)
+ if msg == 2:
+ print_point(kThirdPt, msg="kThirdPt ")
+ plot_point(kThirdPt, "Part::Feature", "kThirdPt", grp="WorkPoints")
+ print_point(dThirdPt, msg="dThirdPt ")
+ plot_point(dThirdPt, "Part::Feature", "dThirdPt", grp="WorkPoints")
+ print_point(kSecPt, msg="kSecPt ")
+ plot_point(kSecPt, "Part::Feature", "kSecPt", grp="WorkPoints")
+ print_point(dSecPt, msg="dSecPt ")
+ plot_point(dSecPt, "Part::Feature", "dSecPt", grp="WorkPoints")
+
+ for l in range(k+1):
+ print_msg("l = " + str(l))
+
+ firstPt = kSecPt + crossVec *(l + 1.0)
+ dFirstPt = firstPt.sub(m_center)
+ dFirstPt = dFirstPt.normalize().multiply(m_radius).add(m_center)
+
+ secPt = kSecPt + crossVec *(l + 0.0)
+ dSecPt = secPt.sub(m_center)
+ dSecPt = dSecPt.normalize().multiply(m_radius).add(m_center)
+
+ thirdPt = kThirdPt + crossVec *(l + 0.0)
+ dThirdPt = thirdPt.sub(m_center)
+ dThirdPt = dThirdPt.normalize().multiply(m_radius).add(m_center)
+ if msg == 2:
+ print_point(dFirstPt, msg="dFirstPt ")
+ plot_point(dFirstPt, "Part::Feature", "dFirstPt", grp="WorkPoints")
+ print_point(dSecPt, msg="dSecPt ")
+ plot_point(dSecPt, "Part::Feature", "dSecPt", grp="WorkPoints")
+ print_point(dThirdPt, msg="dThirdPt ")
+ plot_point(dThirdPt, "Part::Feature", "dThirdPt", grp="WorkPoints")
+
+
+ thirdEdge = Part.makeLine(dSecPt, dThirdPt)
+ if msg != 0:
+ print_msg("thirdEdge =" + str(thirdEdge))
+
+ if l > 0:
+ secEdge = Part.makeLine(doThirdPt,dThirdPt)
+ if msg == 2:
+ print_msg("firstEdge =" + str(firstEdge))
+ Part.show(firstEdge)
+ print_msg("secEdge =" + str(secEdge))
+ Part.show(secEdge)
+ print_msg("thirdEdge =" + str(thirdEdge))
+ Part.show(thirdEdge)
+
+ triWire = Part.Wire([firstEdge, secEdge, thirdEdge])
+ triFace = Part.Face(triWire)
+ if msg == 2:
+ print_msg("triWire =" + str(triWire))
+ print_msg("triWire.isClosed() =" + str(triWire.isClosed()))
+ print_msg("triFace =" + str(triFace))
+ m_domeFaces.append(triFace)
+
+ othirdPt = kThirdPt + crossVec *(l + 0.0)
+ doThirdPt = othirdPt.sub(m_center)
+ doThirdPt = doThirdPt.normalize().multiply(m_radius).add(m_center)
+ if msg == 2:
+ print_point(doThirdPt, msg="doThirdPt ")
+ plot_point(doThirdPt, "Part::Feature", "doThirdPt", grp="WorkPoints")
+
+ firstEdge = Part.makeLine(dThirdPt,dFirstPt)
+ secEdge = Part.makeLine(dFirstPt,dSecPt)
+ thirdEdge = Part.makeLine(dSecPt, dThirdPt)
+ if msg == 2:
+ print_msg("firstEdge =" + str(firstEdge))
+ Part.show(firstEdge)
+ print_msg("secEdge =" + str(secEdge))
+ Part.show(secEdge)
+ print_msg("thirdEdge =" + str(thirdEdge))
+ Part.show(thirdEdge)
+
+ triWire = Part.Wire([firstEdge, secEdge, thirdEdge])
+ triFace = Part.Face(triWire)
+ if msg == 2:
+ print_msg("triWire =" + str(triWire))
+ print_msg("triWire.isClosed() =" + str(triWire.isClosed()))
+ print_msg("triFace =" + str(triFace))
+ m_domeFaces.append(triFace)
+
+ if msg == 3:
+ Part.show(firstEdge)
+ Part.show(secEdge)
+ Part.show(thirdEdge)
+ Part.show(triFace)
+
+ return m_domeFaces
+
+
+ # Strutlength of underlying icosahedron:
+ m_length = (4.0*m_radius)/math.sqrt(2.0*math.sqrt(5.0)+10.0)
+
+ # Angle of vertices of icosahedron points
+ # not a north or south pole
+ m_icoAngle = math.atan(0.5)
+
+ if msg != 0:
+ print_msg("m_length =" + str(m_length))
+ print_msg("m_icoAngle =" + str(m_icoAngle))
+
+ m_icoLat = m_radius * math.sin(m_icoAngle)
+ m_latRad = m_radius * math.cos(m_icoAngle)
+ m_ang36 = math.radians(36.0)
+ if msg != 0:
+ print_msg("m_icoLat =" + str(m_icoLat))
+ print_msg("m_latRad =" + str(m_latRad))
+ print_msg("m_ang36 =" + str(m_ang36))
+
+ # Calculation all points of the icosahedron
+ m_icoPts = []
+ m_new_icoPts = []
+ m_icoPts.append(Base.Vector(0.0, 0.0, m_radius))
+ for i in range(10):
+ m_icoCos = m_latRad * math.cos(i*m_ang36)
+ m_icoSin = m_latRad * math.sin(i*m_ang36)
+ if i%2 == 0:
+ m_icoPts.append(Base.Vector(m_icoSin, m_icoCos, m_icoLat))
+ else:
+ m_icoPts.append(Base.Vector(m_icoSin, m_icoCos, -1 * m_icoLat))
+
+ m_icoPts.append(Base.Vector(0.0, 0.0, -1 * m_radius))
+ if msg != 0:
+ print_msg("m_icoPts =" + str(m_icoPts))
+
+ for m_icoPt in m_icoPts:
+ #print_point(m_icoPt, msg="icoPt")
+ #plot_point(m_icoPt, "Part::Feature", "icoPt", grp="WorkPoints")
+ m_new_icoPt = m_icoPt.add(m_center)
+ #if msg != 0:
+ #plot_point(m_new_icoPt, "Part::Feature", "new_icoPt", grp="WorkPoints")
+ m_new_icoPts.append(m_new_icoPt)
+
+ m_icoPts = m_new_icoPts
+
+ # Making the faces of the icosahedron
+ # Collects faces of the underlying icosahedron
+ m_icoFaces = []
+ # Collects the faces of the geodesic dome
+ m_domeFaces = []
+
+ secPt = m_icoPts[0]
+ thirdPt = m_icoPts[9]
+ thirdEdge = Part.makeLine(secPt,thirdPt)
+ # Top Part
+ for i in range(5):
+ j = i*2+1
+ firstPt = m_icoPts[j]
+ firstEdge = Part.makeLine(thirdPt,firstPt)
+ secEdge = Part.makeLine(firstPt,secPt)
+ triWire = Part.Wire([firstEdge, secEdge, thirdEdge])
+ triFace = Part.Face(triWire)
+ m_icoFaces.append(triFace)
+ #if msg != 0:
+ # Part.show(triFace)
+ if m_frequency != 1:
+ m_faces = makeFreqFaces(m_radius, m_center, firstPt, secPt, thirdPt, m_frequency)
+ for m_face in m_faces:
+ m_domeFaces.append(m_face)
+
+ thirdPt = m_icoPts[j]
+ thirdEdge = Part.makeLine(secPt,thirdPt)
+
+ secPt = m_icoPts[10]
+ thirdPt = m_icoPts[9]
+ thirdEdge = Part.makeLine(secPt,thirdPt)
+ # Middle part
+ for i in range(10):
+ j = i+1
+ firstPt = m_icoPts[j]
+ firstEdge = Part.makeLine(thirdPt,firstPt)
+ secEdge = Part.makeLine(firstPt,secPt)
+ triWire = Part.Wire([firstEdge, secEdge, thirdEdge])
+ triFace = Part.Face(triWire)
+ m_icoFaces.append(triFace)
+ #if msg != 0:
+ # Part.show(triFace)
+ if m_frequency != 1:
+ m_faces = makeFreqFaces(m_radius, m_center, firstPt, secPt, thirdPt, m_frequency)
+ for m_face in m_faces:
+ m_domeFaces.append(m_face)
+
+ thirdPt = secPt
+ secPt = m_icoPts[j]
+ thirdEdge = Part.makeLine(secPt,thirdPt)
+
+ secPt = m_icoPts[11]
+ thirdPt = m_icoPts[10]
+ thirdEdge = Part.makeLine(secPt,thirdPt)
+ # Bottom part
+ for i in range(5):
+ j = i*2+2
+ firstPt = m_icoPts[j]
+ firstEdge = Part.makeLine(thirdPt,firstPt)
+ secEdge = Part.makeLine(firstPt,secPt)
+ triWire = Part.Wire([firstEdge, secEdge, thirdEdge])
+ triFace = Part.Face(triWire)
+ m_icoFaces.append(triFace)
+ #if msg != 0:
+ # Part.show(triFace)
+ if m_frequency != 1:
+ m_faces = makeFreqFaces(m_radius, m_center, firstPt, secPt, thirdPt, m_frequency)
+ for m_face in m_faces:
+ m_domeFaces.append(m_face)
+
+ thirdPt = m_icoPts[j]
+ thirdEdge = Part.makeLine(secPt,thirdPt)
+
+ # Shell of a corresponding icosahedron
+ m_icosahedron_Shell = Part.Shell(m_icoFaces)
+ # if msg != 0:
+ # Part.show(m_icosahedron_Shell)
+
+ if m_frequency != 1:
+ # Shell of the geodesic dome
+ m_domeShell = Part.Shell(m_domeFaces)
+ # if msg != 0:
+ # Part.show(m_domeShell)
+ else:
+ m_domeShell = None
+
+ return m_domeShell, m_icosahedron_Shell
+
+
+def plot_centerDome():
+ """ Plot a full geodesic dome shell.
+ X-Y-symmetry plane
+ for even frequencies
+ Select first a point for the center of the dome.
+
+ You migth defined first the 2 parameters of the dome:
+ Dome Diameter
+ Frequency Parameter (Integer between 1 to 10)
+ If Frequency Parameter = 1, the code create an icosahedron.
+ An icosahedron is a polyhedron with 20 faces.
+ Original code from : Ulrich Brammer
+ """
+ msg=verbose
+ createFolders('WorkObjects')
+
+ error_msg =\
+ "Unable to create a Dome : \n" +\
+ "Select one (or several) point(s) first for the center location !\n"+\
+ "No selection means the center will be at (0,0,0) !"
+ result_msg = " : Dome created !"
+ name = "Dome"
+ part = "Part::Feature"
+ Pt_List = []
+
+ m_actDoc = get_ActiveDocument(info=msg)
+ if m_actDoc.Name == None:
+ return None
+
+ Selection = get_SelectedObjects(info=msg, printError=False)
+
+ if Selection == None:
+ if msg != 0:
+ print_msg("Append Origin as Center !")
+ #Origin = Base.Vector(0, 0, 0)
+ #Pt_List.append(Part.Vertex(Origin).Point)
+ Pt_List.append(Base.Vector(0, 0, 0))
+ Number_of_Points = 1
+ else:
+ SelectedObjects = Selection
+ Number_of_Points = SelectedObjects[0]
+ if (SelectedObjects[0] >= 1) :
+ for m_point in SelectedObjects[3]:
+ Pt_List.append(m_point.Point)
+ else:
+ printError_msg(error_msg)
+ return
+
+ try:
+ if msg != 0:
+ print_msg("Number_of_Points=" + str(Number_of_Points))
+ print_msg("Point_List=" + str(Pt_List))
+
+ frequency = int(m_frequencyDome)
+ radius = m_diameterDome/2.
+ if msg != 0:
+ print_msg("Radius is : " + str(radius))
+ print_msg("Frequency is : " + str(frequency))
+
+ for center in Pt_List:
+ if msg != 0:
+ print_point(center, msg="Center : ")
+ #Sphere with radius of geodesic dome for debugging purposes
+ sphere_User_Name, sphere = plot_sphere(radius, center, part, "Sphere", grp="WorkObjects")
+
+ dome_User_Name, dome = plot_Dome(center, radius, frequency, part, name, grp="WorkObjects")
+
+ print_point(center,str(dome_User_Name) + result_msg + " at :")
+ m_actDoc.recompute()
+ del Pt_List[:]
+ except:
+ printError_msg(error_msg)
+
def view_align():
""" Set the current view perpendicular to the selected Face, Edge
@@ -6513,39 +7379,467 @@ def object_clearance():
except:
printError_msg(error_msg)
+
+def object_angle():
+ """
+ Check for two Edges/Planes angle:
+ Angle measurement between two Edges, two Planes
+ or One Edge and One Plane
+
+ NB:
+ Normals of Planes will be used.
+ """
+ msg=verbose
+
+ error_msg =\
+ "INCORRECT Object(s) Selection :\n" +\
+ "You Must Select Two(2) Edges !\n"+\
+ "Or Two(2) Planes !\n"+\
+ "Or One Edge and One Plane !"
+
+ Selection = get_SelectedObjects(info=msg, printError=False)
+ try:
+ SelectedObjects = Selection
+ Number_of_Edges = SelectedObjects[1]
+ Number_of_Planes = SelectedObjects[2]
+ if msg!=0:
+ print_msg("Number_of_Edges=" + str(Number_of_Edges))
+ print_msg("Number_of_Planes=" + str(Number_of_Planes))
+
+ if Number_of_Edges == 2:
+ Edge_List = SelectedObjects[4]
+ if msg != 0:
+ print_msg(" Edge_List=" + str(Edge_List))
+ m_angle, m_angle_rad = angleBetween(Edge_List[0],Edge_List[1])
+ result = "Between 2 Edges :\n"+\
+ "Angle is :\n" + str(m_angle) + " deg\n" + str(m_angle_rad) + " rad\n"
+ print_gui_msg(result)
+
+ elif Number_of_Planes == 2 :
+ Plane_List = SelectedObjects[5]
+ if msg != 0:
+ print_msg(" Plane_List=" + str(Plane_List))
+
+ Normal1 = Plane_List[0].normalAt(0,0)
+ Normal2 = Plane_List[1].normalAt(0,0)
+ if msg != 0:
+ print_point(Normal1, msg="Normal1 : ")
+ print_point(Normal2, msg="Normal2 : ")
+
+ m_angle, m_angle_rad = angleBetween(Normal1,Normal2)
+ result = "Between 2 Planes :\n"+\
+ "Angle is :\n" + str(m_angle) + " deg\n" + str(m_angle_rad) + " rad\n"
+ print_gui_msg(result)
+
+ elif Number_of_Planes == 1 and Number_of_Edges == 1:
+ Edge_List = SelectedObjects[4]
+ Plane_List = SelectedObjects[5]
+ if msg != 0:
+ print_msg(" Edge_List =" + str(Edge_List))
+ print_msg(" Plane_List=" + str(Plane_List))
+
+ Normal1 = Plane_List[0].normalAt(0,0)
+
+ m_angle, m_angle_rad = angleBetween(Edge_List[0],Normal1)
+ result = "Between One Edge and One Plane :\n"+\
+ "Angle is :\n" + str(m_angle) + " deg\n" + str(m_angle_rad) + " rad\n"
+ print_gui_msg(result)
+ else:
+ printError_msg(error_msg)
+
+ except:
+ printError_msg(error_msg)
+
+
+def points_distance():
+ """
+ Check for two Points distance:
+ Distances measurement and Delta values (on main Axes) between two Points
+
+ Original code from Mario52
+ """
+ msg=verbose
+
+ error_msg = "INCORRECT Object(s) Selection :\n\nYou Must Select Two(2) Points !"
+
+ Selection = get_SelectedObjects(info=msg, printError=False)
+ try:
+ SelectedObjects = Selection
+ Number_of_Points = SelectedObjects[0]
+ if msg!=0:
+ print_msg("Number_of_Points=" + str(Number_of_Points))
+
+ if Number_of_Points != 2:
+ printError_msg(error_msg)
+ return
+
+ Point_List = SelectedObjects[3]
+
+ pos_X1 = Point_List[0].Point.x
+ pos_Y1 = Point_List[0].Point.y
+ pos_Z1 = Point_List[0].Point.z
+ if msg!=0:
+ print_point(Point_List[0].Point, msg="First Point : ")
+
+ pos_X2 = Point_List[1].Point.x
+ pos_Y2 = Point_List[1].Point.y
+ pos_Z2 = Point_List[1].Point.z
+ if msg!=0:
+ print_point(Point_List[1].Point, msg="Last Point : ")
+
+ m_dist = distanceBetween(Point_List[0].Point,Point_List[1].Point)
+ if msg!=0:
+ print_msg("Distance is : " + str(m_dist))
+
+ msg=\
+ "Begin : X1 "+str(pos_X1)+" Y1: "+str(pos_Y1)+" Z1: "+str(pos_Z1)+"\n\n" +\
+ "End : X2 "+str(pos_X2)+" Y2: "+str(pos_Y2)+" Z2: "+str(pos_Z2)+"\n\n" +\
+ "Delta X : "+str(abs(pos_X1-pos_X2))+"\n" +\
+ "Delta Y : "+str(abs(pos_Y1-pos_Y2))+"\n" +\
+ "Delta Z : "+str(abs(pos_Z1-pos_Z2))+"\n\n" +\
+ "Distance : " + str(m_dist)
+
+ print_gui_msg(msg)
+ except:
+ printError_msg(error_msg)
+
+
+def camera_orientation():
+ """ Detect the position of the camera.
+ The returned value is the value provided
+ by the function getCameraOrientation().
+ """
+ msg=verbose
+ pl = FreeCAD.Placement()
+ pl.Rotation = Gui.ActiveDocument.ActiveView.getCameraOrientation()
+
+ xP = pl.Rotation.Q[0]
+ yP = pl.Rotation.Q[1]
+ zP = pl.Rotation.Q[2]
+ qP = pl.Rotation.Q[3]
+
+ msg=\
+ "___Camera_Orientation____________________"+"\n" +\
+ "Radians XYZ Q : " + str(pl.Rotation.Q)+"\n" +\
+ "Degrees XYZ : " + str(math.degrees(xP)) + " , " +str(math.degrees(yP)) + " , " + str(math.degrees(zP)) +"\n" +\
+ "Degrees Q : " + str(math.degrees(qP)) +"\n"+\
+ "Radians Axis.xyz A : " + str(pl.Rotation.Axis) + " , " + str(pl.Rotation.Angle) +"\n"+\
+ "Degrees Axis.x : " + str(math.degrees(pl.Rotation.Axis.x)) +"\n"+\
+ "Degrees Axis.y : " + str(math.degrees(pl.Rotation.Axis.y)) +"\n"+\
+ "Degrees Axis.z : " + str(math.degrees(pl.Rotation.Axis.z)) +"\n"+\
+ "Degrees Angle : " + str(math.degrees(pl.Rotation.Angle))
+
+ print_gui_msg(msg)
+
def object_align2view():
- """ Place your object selected to the position ActiveView (camera)
- __author__ = "Mario52"
"""
- # revoir le point de rotation
- msg=0
- error_msg = "Select one object !"
+ Align the face of selected object(s) to the actual view Plane.
+ - Click first to select a Face of one or several objects.
+
+ NB:
+ The center of rotation is the center of the bounbing box if possible or
+ the center of the Face.
+
+ if the Face of the object selected is already aligned to the view Plane,
+ a rotation of 180 deg is applied to the object.
+ In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1)
+ """
+ msg=verbose
+
+ error_msg =\
+ "INCORRECT Object(s) Selection :\n" +\
+ "You Must Select at least one Face of one Object !\n" +\
+ "All Face(s) will be aligned to the actual view Plane!"
+
+ Selection = get_SelectedObjectsWithParent(info=msg, printError=False)
+ try:
+ SelectedObjects = Selection
+ Number_of_Planes = SelectedObjects[2]
+ if msg!=0:
+ print_msg("Number_of_Planes=" + str(Number_of_Planes))
+ if Number_of_Planes >= 1 :
+ Plane_List = SelectedObjects[5]
+ if msg != 0:
+ print_msg(" Plane_List=" + str(Plane_List))
+
+ Origin = Base.Vector(0, 0, 0)
+
+ Plane_Normal_ref = Gui.ActiveDocument.ActiveView.getViewDirection()
+ if msg != 0:
+ print_point(Plane_Normal_ref, msg="Reference Plane_Normal = ")
+
+ for Selected_Plane_dict in Plane_List:
+ if msg != 0:
+ print_msg("Selected_Plane_dict = " + str(Selected_Plane_dict))
+ for Selected_Plane, Parent_Plane in Selected_Plane_dict.iteritems():
+ if msg != 0:
+ print_msg("Selected_Plane = " + str(Selected_Plane))
+ print_msg("Parent = " + str(Parent_Plane))
+ try:
+ Plane_Point = Parent_Plane.Shape.BoundBox.Center
+ except:
+ Plane_Point = Selected_Plane.CenterOfMass
+
+ Plane_Normal = Selected_Plane.normalAt(0,0)
+ if msg != 0:
+ print_point(Plane_Point, msg="Plane_Point = ")
+ print_point(Plane_Normal, msg="Plane_Normal = ")
+ if colinearVectors(Plane_Normal, Origin, Plane_Normal_ref, info=0, tolerance=1e-12):
+ rot_axis = Base.Vector(0, 0, 1).cross(Plane_Normal)
+ rot_center = Plane_Point
+ rot_angle = 180.
+ Draft.rotate(Parent_Plane,rot_angle,rot_center,rot_axis)
+ else:
+ m_angle, m_angle_rad = angleBetween(Plane_Normal,Plane_Normal_ref)
+ rot_axis = Plane_Normal.cross(Plane_Normal_ref)
+ rot_center = Plane_Point
+ rot_angle = m_angle
+ Draft.rotate(Parent_Plane,rot_angle,rot_center,rot_axis)
+ else:
+ printError_msg(error_msg)
+ except:
+ printError_msg(error_msg)
+
+
+def angleAlignFaces(value):
+ """ Respond to the change in angle value from the text box.
+ """
+ try:
+ # First we check if a valid number have been entered
+ global m_angleAlignFaces
+ if str(value) == '-':
+ return
+ m_angleAlignFaces = float(value)
+ print_msg("New angle in degrees is :" + str(m_angleAlignFaces))
+ except ValueError:
+ printError_msg("Angle must be valid number !")
+
+
+def object_alignFaces():
+ """
+ Align the Face(s) from selected object(s) to the last Face selected.
+ - Click first to select a Face of an object or several Faces from several objects.
+ - Click second to select a Face to align to.
- m_actDoc = get_ActiveDocument(info=msg)
- if m_actDoc == None:
- return None
+ NB:
+ The center of rotation is the center of the bounbing box if possible or
+ the center of the Face.
+
+ if the Face of the object selected is already aligned to the last one,
+ a rotation of 180 deg is applied to the object.
+ In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1)
+ """
+ msg=verbose
- m_num, m_selEx, m_objs, m_objNames = get_InfoObjects(info=msg)
- Center = centerObjectsPoint(m_objs)
- if Center != None:
- pl = FreeCAD.Placement()
- pl.Rotation = Gui.ActiveDocument.ActiveView.getCameraOrientation()
- pl.Base = App.Vector(0,0,0)
- for m_objName in m_objNames:
- App.ActiveDocument.getObject(m_objName).Placement=pl
+ error_msg =\
+ "INCORRECT Object(s) Selection :\n" +\
+ "You Must Select at least two(2) Faces (from two objects) !\n" +\
+ "All Faces will be aligned to the last one !"
+
+ Selection = get_SelectedObjectsWithParent(info=msg, printError=False)
+
+ try:
+ SelectedObjects = Selection
+ Number_of_Planes = SelectedObjects[2]
+ if msg!=0:
+ print_msg("Number_of_Planes=" + str(Number_of_Planes))
+
+ if Number_of_Planes >= 2 :
+ Plane_List = SelectedObjects[5]
+ if msg != 0:
+ print_msg(" Plane_List=" + str(Plane_List))
+
+ Origin = Base.Vector(0, 0, 0)
+ # Get the Reference Plane : last of the selected
+ Ref_Plane_dict = Plane_List[-1]
+ for Selected_Plane, Parent_Plane in Ref_Plane_dict.iteritems():
+ Plane_Point_ref = Selected_Plane.CenterOfMass
+ Plane_Normal_ref = Selected_Plane.normalAt(0,0)
+ if msg != 0:
+ print_point(Plane_Point_ref, msg="Reference Plane_Point = ")
+ print_point(Plane_Normal_ref, msg="Reference Plane_Normal = ")
+ del Plane_List[-1]
+
+ for Selected_Plane_dict in Plane_List:
+ if msg != 0:
+ print_msg("Selected_Plane_dict = " + str(Selected_Plane_dict))
+ for Selected_Plane, Parent_Plane in Selected_Plane_dict.iteritems():
+ if msg != 0:
+ print_msg("Selected_Plane = " + str(Selected_Plane))
+ print_msg("Parent = " + str(Parent_Plane))
+ try:
+ Plane_Point = Parent_Plane.Shape.BoundBox.Center
+ except:
+ Plane_Point = Selected_Plane.CenterOfMass
+
+ Plane_Normal = Selected_Plane.normalAt(0,0)
+ if msg != 0:
+ print_point(Plane_Point, msg="Plane_Point = ")
+ print_point(Plane_Normal, msg="Plane_Normal = ")
+
+ if colinearVectors(Plane_Normal, Origin, Plane_Normal_ref, info=0, tolerance=1e-12):
+ rot_axis = Base.Vector(0, 0, 1).cross(Plane_Normal)
+ rot_center = Plane_Point
+ rot_angle = 180. + m_angleAlignFaces
+ Draft.rotate(Parent_Plane,rot_angle,rot_center,rot_axis)
+ else:
+ m_angle, m_angle_rad = angleBetween(Plane_Normal,Plane_Normal_ref)
+ rot_axis = Plane_Normal.cross(Plane_Normal_ref)
+ rot_center = Plane_Point
+ rot_angle = m_angle + m_angleAlignFaces
+ Draft.rotate(Parent_Plane,rot_angle,rot_center,rot_axis)
+ else:
+ printError_msg(error_msg)
+ except:
+ printError_msg(error_msg)
+
+
+def angleAlignEdges(value):
+ """ Respond to the change in angle value from the text box.
+ """
+ try:
+ # First we check if a valid number have been entered
+ global m_angleAlignEdges
+ if str(value) == '-':
+ return
+ m_angleAlignEdges = float(value)
+ print_msg("New angle in degrees is :" + str(m_angleAlignEdges))
+ except ValueError:
+ printError_msg("Angle must be valid number !")
+
+
+def object_alignEdges():
+ """
+ Align the Edge(s) from selected object(s) to the last Edge selected.
+ - Click first to select an Edge of an object or several Edges from several objects.
+ - Click second to select an Edge to align to.
+
+ NB:
+ The center of rotation is the center of the bounbing box if possible or
+ the center of the Edge.
+
+ if the Edge of the object selected is already aligned to the last one,
+ a rotation of 180 deg is applied to the object.
+ In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1)
+ """
+ msg=verbose
+
+ error_msg =\
+ "INCORRECT Object(s) Selection :\n" +\
+ "You Must Select at least two(2) Edges (from two objects) !\n" +\
+ "All Edges will be aligned to the last one !"
+
+ Selection = get_SelectedObjectsWithParent(info=msg, printError=False)
+
+ try:
+ SelectedObjects = Selection
+ Number_of_Edges = SelectedObjects[1]
+ if msg!=0:
+ print_msg("Number_of_Edges=" + str(Number_of_Edges))
+
+ if Number_of_Edges >= 2 :
+ Edge_List = SelectedObjects[4]
+ if msg != 0:
+ print_msg(" Edge_List=" + str(Edge_List))
+
+ # Get the Reference Edge : last of the selected
+ Ref_Edge_dict = Edge_List[-1]
+ for Selected_Edge, Parent_Edge in Ref_Edge_dict.iteritems():
+ Edge_ref = Selected_Edge
+
+ del Edge_List[-1]
+
+ for Selected_Edge_dict in Edge_List:
+ if msg != 0:
+ print_msg("Selected_Edge_dict = " + str(Selected_Edge_dict))
+ for Selected_Edge, Parent_Edge in Selected_Edge_dict.iteritems():
+ if msg != 0:
+ print_msg("Selected_Edge = " + str(Selected_Edge))
+ print_msg("Parent = " + str(Parent_Edge))
+ try:
+ Edge_Point = Parent_Edge.Shape.BoundBox.Center
+ except:
+ Edge_Point = centerLinePoint(Selected_Edge,info=0)
+
+ if msg != 0:
+ print_point(Edge_Point, msg="Edge_Point = ")
+ Edge = Selected_Edge
+
+ if colinearEdges(Edge, Edge_ref, info=msg , tolerance=1e-12):
+ rot_axis = Base.Vector(0, 0, 1).cross(edgeToVector(Edge))
+ rot_center = Edge_Point
+ rot_angle = 180. + m_angleAlignEdges
+ Draft.rotate(Parent_Edge,rot_angle,rot_center,rot_axis)
+ else:
+ m_angle, m_angle_rad = angleBetween(Edge,Edge_ref)
+ print_msg("m_angle = " + str(m_angle))
+ rot_axis = edgeToVector(Edge).cross(edgeToVector(Edge_ref))
+ print_msg("rot_axis = " + str(rot_axis))
+ rot_center = Edge_Point
+ rot_angle = m_angle + m_angleAlignEdges
+ Draft.rotate(Parent_Edge,rot_angle,rot_center,rot_axis)
+ else:
+ printError_msg(error_msg)
+ except:
+ printError_msg(error_msg)
- else:
- printError_msg(error_msg)
+
+def object_jointPoints():
+ """
+ """
+ msg=verbose
+ msg=1
+
+ error_msg =\
+ "INCORRECT Object(s) Selection :\n" +\
+ "You Must Select at least two(2) Points (from two objects) !\n" +\
+ "All Points will be displaced onto the last one !"
+
+ Selection = get_SelectedObjectsWithParent(info=msg, printError=False)
+
+ try:
+ SelectedObjects = Selection
+
+ SelectedObjects = Selection
+ Number_of_Points = SelectedObjects[0]
+ if msg!=0:
+ print_msg("Number_of_Points=" + str(Number_of_Points))
+
+ if Number_of_Points >= 2 :
+ Point_List = SelectedObjects[3]
+ if msg != 0:
+ print_msg(" Point_List=" + str(Point_List))
+
+ # Get the Reference Point : last of the selected
+ Ref_Point_dict = Point_List[-1]
+ for Selected_Point, Parent_Point in Ref_Point_dict.iteritems():
+ Point_ref = Selected_Point
+ Parent_ref = Parent_Point
+ if msg != 0:
+ print_point(Point_ref, msg="Reference Point_ref = ")
+ del Point_List[-1]
+
+ for Selected_Point_dict in Point_List:
+ if msg != 0:
+ print_msg("Selected_Point_dict = " + str(Selected_Point_dict))
+ for Selected_Point, Parent_Point in Selected_Point_dict.iteritems():
+ if msg != 0:
+ print_msg("Selected_Point = " + str(Selected_Point))
+ print_msg("Parent_Point = " + str(Parent_Point))
+ m_move = Point_ref.Point.sub(Selected_Point.Point)
+ print_msg("m_move = " + str(m_move))
+ m_rot = Parent_Point.Placement.Rotation
+ m_base = Parent_Point.Placement.Base
+ m_newplace = App.Placement(m_base.add(m_move), m_rot )
+ Parent_Point.Placement = m_newplace
+
+ else:
+ printError_msg(error_msg)
+
+ except:
+ printError_msg(error_msg)
- #sel = Gui.Selection.getSelection()
- #Nameelement = sel[0].Name
- #pl = FreeCAD.Placement()
- #pl.Rotation = Gui.ActiveDocument.ActiveView.getCameraOrientation()
- #pl.Base = FreeCAD.Vector(0.0,0.0,0.0)
- #App.ActiveDocument.getObject(Nameelement).Placement=pl
-
-
####################################################################################
try:
_fromUtf8 = QtCore.QString.fromUtf8
@@ -6632,6 +7926,7 @@ class WorkFeatureTab():
"button_twoplanes_axis" : "plot_2PlanesAxis",
"button_distLine" : "plot_distLine",
+ "button_angleLine" : "plot_angleLine",
"button_cut_axis" : "plot_cutAxis",
"button_cut_wire_axis" : "plot_cutWireAxis",
"button_extension_axis" : "plot_extensionAxis",
@@ -6643,7 +7938,7 @@ class WorkFeatureTab():
"button_linepoint_circle" : "plot_linepointCircle",
"button_3points_circle" : "plot_3pointsCircle",
"button_cut_circle" : "plot_cutCircle",
- "button_3points_ellipse" : "plot_3pointsEllipse",
+ "button_3points_ellipse" : "plot_3pointsEllipse",
"button_threepoints_plane" : "plot_3PointsPlane",
"button_axisandpoint_plane" : "plot_axisPointPlane",
@@ -6661,6 +7956,8 @@ class WorkFeatureTab():
"button_boundingbox" : "plot_boundingBox",
"button_cylinder_create" : "plot_axisPointCylinder",
"button_cube_create" : "plot_axisPointCube",
+ "button_sphere_create" : "plot_centerSphere",
+ "button_dome_create" : "plot_centerDome",
"button_alignview" : "view_align",
@@ -6674,7 +7971,14 @@ class WorkFeatureTab():
"button_isPerpendicular" : "object_perpendicular",
"button_isCoplanar" : "object_coplanar",
"button_isClearance" : "object_clearance",
-
+ "button_isAngle" : "object_angle",
+ "button_isDistance" : "points_distance",
+ "button_isView" : "camera_orientation",
+
+ "button_alignface2view" : "object_align2view",
+ "button_align_faces" : "object_alignFaces",
+ "button_align_edges" : "object_alignEdges",
+ "button_joint_points" : "object_jointPoints",
}
self.connections_for_text_changed = {
@@ -6684,6 +7988,7 @@ class WorkFeatureTab():
"extension_twopoints_axis" : "extensionTwoPointsAxis",
"extension_face_normal" : "extensionFaceNormal",
"extension_line_point_axis" : "extensionLinePointAxis",
+ "extension_line" : "extensionLine",
"radius_circle" : "radiusCircle",
@@ -6694,7 +7999,9 @@ class WorkFeatureTab():
"length_cylinder" : "lengthCylinder",
"section_cube" : "sectionCube",
"height_cube" : "heightCube",
-
+ "diameter_sphere" : "diameterSphere",
+ "diameter_dome" : "diameterDome",
+
"angle_cut_object" : "angleCutObject",
"thickness_cut_object" : "thicknessCutObject",
@@ -6707,7 +8014,8 @@ class WorkFeatureTab():
"dist_plane" : "distPlane",
"dist_line" : "distLine",
"dist_point" : "distPoint",
-
+ "angle_align_faces" : "angleAlignFaces",
+ "angle_align_edges" : "angleAlignEdges",
}
self.connections_for_spin_changed = {
@@ -6718,7 +8026,9 @@ class WorkFeatureTab():
"spin_circle_cut" : "numberCircleCut",
"spin_dist_plane" : "numberPlane",
"spin_dist_line" : "numberLine",
+ "spin_angle_line" : "numberLine2",
"spin_dist_point" : "numberPoint",
+ "spin_frequency_dome" : "frequencyDome",
}
self.connections_for_radiobutton_clicked = {
@@ -6785,17 +8095,27 @@ class WorkFeatureTab():
}
self.connections_for_ObjTrans_combobox_changed = {
- "ObjTrans_comboBox_start" : "start_value",
- "ObjTrans_comboBox_end" : "end_value",
+ "ObjTrans_comboBox_start" : "select_start_type",
+ "ObjTrans_comboBox_end" : "select_end_type",
}
self.connections_for_ObjTrans_checkbox_toggled = {
"ObjTrans_duplicate" : "copyFlag",
+ "ObjTrans_deepCopy" : "deepCopyFlag",
}
self.connections_for_ObjTrans_spin_changed = {
"ObjTrans_spin" : "numberCopies",
}
+
+ self.connections_for_ObjTrans_return_pressed = {
+ "ObjTrans_start_x" : "start_x_entered",
+ "ObjTrans_start_y" : "start_y_entered",
+ "ObjTrans_start_z" : "start_z_entered",
+ "ObjTrans_end_x" : "end_x_entered",
+ "ObjTrans_end_y" : "end_y_entered",
+ "ObjTrans_end_z" : "end_z_entered",
+ }
#==============================================================================
# Connect to Translation functions
#==============================================================================
@@ -6820,7 +8140,11 @@ class WorkFeatureTab():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("valueChanged(int)"),getattr(self.trans, str(m_val)))
-
+
+ for m_key, m_val in self.connections_for_ObjTrans_return_pressed.items():
+ #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )
+ QtCore.QObject.connect(getattr(self.ui, str(m_key)),
+ QtCore.SIGNAL("returnPressed()"),getattr(self.trans, str(m_val)))
#==============================================================================
# Define Connections to Rotation Object
#==============================================================================
@@ -6832,6 +8156,7 @@ class WorkFeatureTab():
"ObjRot_button_select" : "initialize",
"ObjRot_button_select_center" : "select_center",
"ObjRot_button_select_axis" : "select_axis",
+ "ObjRot_button_select_angle" : "select_angle",
"ObjRot_button_reset" : "reset",
"ObjRot_button_apply" : "application",
}