diff --git a/WorkFeature/Doc/WF_documentation.pdf b/WorkFeature/Doc/WF_documentation.pdf
new file mode 100644
index 0000000..880f006
Binary files /dev/null and b/WorkFeature/Doc/WF_documentation.pdf differ
diff --git a/WorkFeature/Doc/WF_releasesDocumentation.pdf b/WorkFeature/Doc/WF_releasesDocumentation.pdf
index d87fe8c..7f67a41 100644
Binary files a/WorkFeature/Doc/WF_releasesDocumentation.pdf and b/WorkFeature/Doc/WF_releasesDocumentation.pdf differ
diff --git a/WorkFeature/Icons/WF_3pointsArc.svg b/WorkFeature/Icons/WF_3pointsArc.svg
new file mode 100644
index 0000000..787a61b
--- /dev/null
+++ b/WorkFeature/Icons/WF_3pointsArc.svg
@@ -0,0 +1,318 @@
+
+
+
+
diff --git a/WorkFeature/Icons/WF_ImageScale.svg b/WorkFeature/Icons/WF_ImageScale.svg
new file mode 100644
index 0000000..4a2187c
--- /dev/null
+++ b/WorkFeature/Icons/WF_ImageScale.svg
@@ -0,0 +1,704 @@
+
+
+
+
diff --git a/WorkFeature/Icons/WF_bezierCubic2nodes.svg b/WorkFeature/Icons/WF_bezierCubic2nodes.svg
new file mode 100644
index 0000000..5d1fdc1
--- /dev/null
+++ b/WorkFeature/Icons/WF_bezierCubic2nodes.svg
@@ -0,0 +1,300 @@
+
+
+
+
diff --git a/WorkFeature/Ressources/Parametric2D.dat b/WorkFeature/Ressources/Parametric2D.dat
index 6915c18..dd4a448 100644
--- a/WorkFeature/Ressources/Parametric2D.dat
+++ b/WorkFeature/Ressources/Parametric2D.dat
@@ -21,3 +21,4 @@ Name, a (t), b (a,t), X (a,b,t), Y(a,b,t), Polar, tmin, tmax, tstep
['Witch of Agnesi', '100 # Radius', 'a', 'a*tan(t)', 'b*cos(t)*cos(t)', '-pi/2.5+0.01', 'pi/2.5-0.01', '0.01', '0']
['Kappa', '10 # Radius', 'a', 'a*tan(t)', 't', '0', '2*pi', '0.01', '1']
['Trefle de Habenicht', '3', 'a', '1+cos(a*t)+(sin(a*t)*sin(a*t))', 't', '0', '2*pi', '0.01', '1']
+['Hypotrochoid', '4.5', 'a/1.5', 'a*((a/b -1)*cos(t) + (1/(a/b -1))*cos((a/b -1)*t))', 'a*((a/b -1)*sin(t) - (1/(a/b -1))*sin((a/b -1)*t))', '0', '4*pi', '0.1', '0']
\ No newline at end of file
diff --git a/WorkFeature/Ressources/Parametric3D.dat b/WorkFeature/Ressources/Parametric3D.dat
index 7a89a75..1d93164 100644
--- a/WorkFeature/Ressources/Parametric3D.dat
+++ b/WorkFeature/Ressources/Parametric3D.dat
@@ -18,3 +18,5 @@ Name, a (t), b (a,t),c (a,b,t), X (a,b,c,t), Y (a,b,c,t), Z (a,b,c,t), tmin, tma
['3D Lissajous', '10 ', '10', '0', 'a*cos(3*t)', 'a*sin(2*t)', 'b*sin(7*t)', '0.0', '2*pi', '0.01']
['Trefoil knot', '10', '0', '1 #-1 senestre', 'a*(cos(t)+2*cos(2*t))', 'a*(sin(t)-2*sin(2*t))', 'a*2*c*sin(3*t)', '0.0', '2*pi', '0.01']
['Nfoil knot', '10', '10 #number of foils', '1 #-1 senestre', 'a*(cos(t)+2*cos((b-1)*t))', 'a*(sin(t)-2*sin((b-1)*t))', 'a*2*c*sin(b*t)', '0.0', '2*pi', '0.01']
+['Hypotrochoid-3', '4.5', 'a/1.5', '1', 'a*((a/b -1)*cos(t) + (c/(a/b -1))*cos((a/b -1)*t))', 'a*((a/b -1)*sin(t) - (c/(a/b -1))*sin((a/b -1)*t))', '0.5*t', '0.0', '10*4*pi', '0.1']
+['Helix on Circle', '30', '10', '0.05', '(a+b*cos(t))*cos(c*t)', '(a+b*cos(t))*sin(c*t)', 'b*sin(t)', '0.0', '24*2*pi', '0.1']
\ No newline at end of file
diff --git a/WorkFeature/Sweep/sweep.py b/WorkFeature/Sweep/sweep.py
new file mode 100644
index 0000000..63087ab
--- /dev/null
+++ b/WorkFeature/Sweep/sweep.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+
+from __future__ import division
+
+
+class Sweep():
+ def __init__(self, obj, profile, path):
+ """ Sweep: represents an extrusion of a profile along a path.
+ """
+ obj.addProperty("App::PropertyString", "type", "Sweep", "type of the object").type = "sweep"
+ obj.addProperty("App::PropertyLink","profile","Sweep","wire/sketch profile of the sweep").profile = profile
+
+ def execute(self, fp):
+ """ Print a short message when doing a recomputation, this method is mandatory.
+ """
+ FreeCAD.Console.PrintMessage("Recompute Python Sweep object\n")
\ No newline at end of file
diff --git a/WorkFeature/Ui/WFGui_2015.py b/WorkFeature/Ui/WFGui_2015.py
index 06e5bb5..a2ed069 100644
--- a/WorkFeature/Ui/WFGui_2015.py
+++ b/WorkFeature/Ui/WFGui_2015.py
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
-# Form implementation generated from reading ui file 'WFGui_2015.ui'
+# Form implementation generated from reading ui file 'WFGui_2016_09.ui'
#
-# Created: Tue Mar 29 07:16:30 2016
+# Created: Sat Sep 10 09:18:06 2016
# by: PySide UI code generator 4.11.3
#
# WARNING! All changes made in this file will be lost!
@@ -685,105 +685,49 @@ class Ui_Form(object):
icon44 = QtGui.QIcon()
icon44.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_axis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.tabWidget_7.addTab(self.Axis_Tab, icon44, _fromUtf8(""))
- self.tab_16 = QtGui.QWidget()
- self.tab_16.setObjectName(_fromUtf8("tab_16"))
- self.gridLayout = QtGui.QGridLayout(self.tab_16)
- self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
- self.horizontalLayout_66 = QtGui.QHBoxLayout()
- self.horizontalLayout_66.setObjectName(_fromUtf8("horizontalLayout_66"))
- self.button_linecenter_circle = QtGui.QPushButton(self.tab_16)
- icon45 = QtGui.QIcon()
- icon45.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineCenterCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_linecenter_circle.setIcon(icon45)
- self.button_linecenter_circle.setIconSize(QtCore.QSize(32, 32))
- self.button_linecenter_circle.setObjectName(_fromUtf8("button_linecenter_circle"))
- self.horizontalLayout_66.addWidget(self.button_linecenter_circle)
- self.radius_circle = QtGui.QLineEdit(self.tab_16)
- self.radius_circle.setMinimumSize(QtCore.QSize(40, 0))
- self.radius_circle.setMaximumSize(QtCore.QSize(60, 16777215))
- self.radius_circle.setObjectName(_fromUtf8("radius_circle"))
- self.horizontalLayout_66.addWidget(self.radius_circle)
- self.gridLayout.addLayout(self.horizontalLayout_66, 0, 0, 1, 1)
- self.button_linepoint_circle = QtGui.QPushButton(self.tab_16)
- icon46 = QtGui.QIcon()
- icon46.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_linepoint_circle.setIcon(icon46)
- self.button_linepoint_circle.setIconSize(QtCore.QSize(32, 32))
- self.button_linepoint_circle.setObjectName(_fromUtf8("button_linepoint_circle"))
- self.gridLayout.addWidget(self.button_linepoint_circle, 1, 0, 1, 1)
- self.button_3points_circle = QtGui.QPushButton(self.tab_16)
- icon47 = QtGui.QIcon()
- icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_3points_circle.setIcon(icon47)
- self.button_3points_circle.setIconSize(QtCore.QSize(32, 32))
- self.button_3points_circle.setObjectName(_fromUtf8("button_3points_circle"))
- self.gridLayout.addWidget(self.button_3points_circle, 2, 0, 1, 1)
- self.horizontalLayout_67 = QtGui.QHBoxLayout()
- self.horizontalLayout_67.setObjectName(_fromUtf8("horizontalLayout_67"))
- self.button_cut_circle = QtGui.QPushButton(self.tab_16)
- icon48 = QtGui.QIcon()
- icon48.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_cut_circle.setIcon(icon48)
- self.button_cut_circle.setIconSize(QtCore.QSize(32, 32))
- self.button_cut_circle.setObjectName(_fromUtf8("button_cut_circle"))
- self.horizontalLayout_67.addWidget(self.button_cut_circle)
- self.spin_circle_cut = QtGui.QSpinBox(self.tab_16)
- self.spin_circle_cut.setMinimumSize(QtCore.QSize(40, 0))
- self.spin_circle_cut.setMaximumSize(QtCore.QSize(50, 16777215))
- self.spin_circle_cut.setMinimum(2)
- self.spin_circle_cut.setMaximum(100)
- self.spin_circle_cut.setSingleStep(1)
- self.spin_circle_cut.setObjectName(_fromUtf8("spin_circle_cut"))
- self.horizontalLayout_67.addWidget(self.spin_circle_cut)
- self.gridLayout.addLayout(self.horizontalLayout_67, 3, 0, 1, 1)
- self.button_3points_ellipse = QtGui.QPushButton(self.tab_16)
- icon49 = QtGui.QIcon()
- icon49.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsEllipse.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_3points_ellipse.setIcon(icon49)
- self.button_3points_ellipse.setIconSize(QtCore.QSize(32, 32))
- self.button_3points_ellipse.setObjectName(_fromUtf8("button_3points_ellipse"))
- self.gridLayout.addWidget(self.button_3points_ellipse, 4, 0, 1, 1)
- spacerItem7 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout.addItem(spacerItem7, 5, 0, 1, 1)
- self.button_circle_to_sketch = QtGui.QPushButton(self.tab_16)
- self.button_circle_to_sketch.setIcon(icon19)
- self.button_circle_to_sketch.setIconSize(QtCore.QSize(32, 32))
- self.button_circle_to_sketch.setObjectName(_fromUtf8("button_circle_to_sketch"))
- self.gridLayout.addWidget(self.button_circle_to_sketch, 6, 0, 1, 1)
- spacerItem8 = QtGui.QSpacerItem(20, 121, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout.addItem(spacerItem8, 7, 0, 1, 1)
- icon50 = QtGui.QIcon()
- icon50.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_circle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_7.addTab(self.tab_16, icon50, _fromUtf8(""))
- self.Wire_Tab_2 = QtGui.QWidget()
- self.Wire_Tab_2.setObjectName(_fromUtf8("Wire_Tab_2"))
- self.gridLayout_74 = QtGui.QGridLayout(self.Wire_Tab_2)
+ self.Wire_Tab = QtGui.QWidget()
+ self.Wire_Tab.setObjectName(_fromUtf8("Wire_Tab"))
+ self.gridLayout_74 = QtGui.QGridLayout(self.Wire_Tab)
self.gridLayout_74.setObjectName(_fromUtf8("gridLayout_74"))
- self.lineEdit = QtGui.QLineEdit(self.Wire_Tab_2)
+ self.lineEdit = QtGui.QLineEdit(self.Wire_Tab)
self.lineEdit.setReadOnly(True)
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.gridLayout_74.addWidget(self.lineEdit, 0, 0, 1, 1)
- self.tabWidget_8 = QtGui.QTabWidget(self.Wire_Tab_2)
+ self.tabWidget_8 = QtGui.QTabWidget(self.Wire_Tab)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.tabWidget_8.sizePolicy().hasHeightForWidth())
self.tabWidget_8.setSizePolicy(sizePolicy)
self.tabWidget_8.setObjectName(_fromUtf8("tabWidget_8"))
- self.tab_14 = QtGui.QWidget()
- self.tab_14.setObjectName(_fromUtf8("tab_14"))
- self.gridLayout_75 = QtGui.QGridLayout(self.tab_14)
+ self.Wire_Tab1_3 = QtGui.QWidget()
+ self.Wire_Tab1_3.setObjectName(_fromUtf8("Wire_Tab1_3"))
+ self.gridLayout_7 = QtGui.QGridLayout(self.Wire_Tab1_3)
+ self.gridLayout_7.setObjectName(_fromUtf8("gridLayout_7"))
+ spacerItem7 = QtGui.QSpacerItem(20, 588, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_7.addItem(spacerItem7, 1, 0, 1, 1)
+ self.button_4points_bezier = QtGui.QPushButton(self.Wire_Tab1_3)
+ icon45 = QtGui.QIcon()
+ icon45.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_bezierCubic2nodes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_4points_bezier.setIcon(icon45)
+ self.button_4points_bezier.setIconSize(QtCore.QSize(32, 32))
+ self.button_4points_bezier.setObjectName(_fromUtf8("button_4points_bezier"))
+ self.gridLayout_7.addWidget(self.button_4points_bezier, 0, 0, 1, 1)
+ self.tabWidget_8.addTab(self.Wire_Tab1_3, _fromUtf8(""))
+ self.Wire_Tab2_3 = QtGui.QWidget()
+ self.Wire_Tab2_3.setObjectName(_fromUtf8("Wire_Tab2_3"))
+ self.gridLayout_75 = QtGui.QGridLayout(self.Wire_Tab2_3)
self.gridLayout_75.setObjectName(_fromUtf8("gridLayout_75"))
- self.scrollArea_2 = QtGui.QScrollArea(self.tab_14)
+ self.scrollArea_2 = QtGui.QScrollArea(self.Wire_Tab2_3)
self.scrollArea_2.setWidgetResizable(True)
self.scrollArea_2.setObjectName(_fromUtf8("scrollArea_2"))
self.scrollAreaWidgetContents_5 = QtGui.QWidget()
- self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 249, 648))
+ self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 245, 648))
self.scrollAreaWidgetContents_5.setObjectName(_fromUtf8("scrollAreaWidgetContents_5"))
self.gridLayout_76 = QtGui.QGridLayout(self.scrollAreaWidgetContents_5)
self.gridLayout_76.setObjectName(_fromUtf8("gridLayout_76"))
- spacerItem9 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_76.addItem(spacerItem9, 7, 0, 1, 1)
+ spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_76.addItem(spacerItem8, 7, 0, 1, 1)
self.groupBox_14 = QtGui.QGroupBox(self.scrollAreaWidgetContents_5)
self.groupBox_14.setObjectName(_fromUtf8("groupBox_14"))
self.gridLayout_77 = QtGui.QGridLayout(self.groupBox_14)
@@ -982,8 +926,8 @@ class Ui_Form(object):
self.ParCurve_button_store_2.setMaximumSize(QtCore.QSize(60, 16777215))
self.ParCurve_button_store_2.setObjectName(_fromUtf8("ParCurve_button_store_2"))
self.horizontalLayout_62.addWidget(self.ParCurve_button_store_2)
- spacerItem10 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout_62.addItem(spacerItem10)
+ spacerItem9 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.horizontalLayout_62.addItem(spacerItem9)
self.ParCurve_button_apply_2 = QtGui.QPushButton(self.scrollAreaWidgetContents_5)
self.ParCurve_button_apply_2.setMinimumSize(QtCore.QSize(40, 0))
self.ParCurve_button_apply_2.setMaximumSize(QtCore.QSize(60, 16777215))
@@ -992,12 +936,12 @@ class Ui_Form(object):
self.gridLayout_76.addLayout(self.horizontalLayout_62, 6, 0, 1, 1)
self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_5)
self.gridLayout_75.addWidget(self.scrollArea_2, 0, 0, 1, 1)
- self.tabWidget_8.addTab(self.tab_14, _fromUtf8(""))
- self.tab_15 = QtGui.QWidget()
- self.tab_15.setObjectName(_fromUtf8("tab_15"))
- self.gridLayout_80 = QtGui.QGridLayout(self.tab_15)
+ self.tabWidget_8.addTab(self.Wire_Tab2_3, _fromUtf8(""))
+ self.Wire_Tab3_3 = QtGui.QWidget()
+ self.Wire_Tab3_3.setObjectName(_fromUtf8("Wire_Tab3_3"))
+ self.gridLayout_80 = QtGui.QGridLayout(self.Wire_Tab3_3)
self.gridLayout_80.setObjectName(_fromUtf8("gridLayout_80"))
- self.scrollArea_5 = QtGui.QScrollArea(self.tab_15)
+ self.scrollArea_5 = QtGui.QScrollArea(self.Wire_Tab3_3)
self.scrollArea_5.setWidgetResizable(True)
self.scrollArea_5.setObjectName(_fromUtf8("scrollArea_5"))
self.scrollAreaWidgetContents_6 = QtGui.QWidget()
@@ -1197,16 +1141,16 @@ class Ui_Form(object):
self.ParCurve_button_store_3.setMaximumSize(QtCore.QSize(60, 16777215))
self.ParCurve_button_store_3.setObjectName(_fromUtf8("ParCurve_button_store_3"))
self.horizontalLayout_65.addWidget(self.ParCurve_button_store_3)
- spacerItem11 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout_65.addItem(spacerItem11)
+ spacerItem10 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.horizontalLayout_65.addItem(spacerItem10)
self.ParCurve_button_apply_3 = QtGui.QPushButton(self.scrollAreaWidgetContents_6)
self.ParCurve_button_apply_3.setMinimumSize(QtCore.QSize(40, 0))
self.ParCurve_button_apply_3.setMaximumSize(QtCore.QSize(60, 16777215))
self.ParCurve_button_apply_3.setObjectName(_fromUtf8("ParCurve_button_apply_3"))
self.horizontalLayout_65.addWidget(self.ParCurve_button_apply_3)
self.gridLayout_81.addLayout(self.horizontalLayout_65, 6, 0, 1, 1)
- spacerItem12 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_81.addItem(spacerItem12, 7, 0, 1, 1)
+ spacerItem11 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_81.addItem(spacerItem11, 7, 0, 1, 1)
self.groupBox_19 = QtGui.QGroupBox(self.scrollAreaWidgetContents_6)
self.groupBox_19.setObjectName(_fromUtf8("groupBox_19"))
self.gridLayout_3 = QtGui.QGridLayout(self.groupBox_19)
@@ -1234,11 +1178,88 @@ class Ui_Form(object):
self.gridLayout_81.addWidget(self.groupBox_19, 4, 0, 1, 1)
self.scrollArea_5.setWidget(self.scrollAreaWidgetContents_6)
self.gridLayout_80.addWidget(self.scrollArea_5, 0, 0, 1, 1)
- self.tabWidget_8.addTab(self.tab_15, _fromUtf8(""))
+ self.tabWidget_8.addTab(self.Wire_Tab3_3, _fromUtf8(""))
self.gridLayout_74.addWidget(self.tabWidget_8, 1, 0, 1, 1)
+ icon46 = QtGui.QIcon()
+ icon46.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_wire.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_7.addTab(self.Wire_Tab, icon46, _fromUtf8(""))
+ self.Circle_Tab = QtGui.QWidget()
+ self.Circle_Tab.setObjectName(_fromUtf8("Circle_Tab"))
+ self.gridLayout = QtGui.QGridLayout(self.Circle_Tab)
+ self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
+ self.horizontalLayout_66 = QtGui.QHBoxLayout()
+ self.horizontalLayout_66.setObjectName(_fromUtf8("horizontalLayout_66"))
+ self.button_linecenter_circle = QtGui.QPushButton(self.Circle_Tab)
+ icon47 = QtGui.QIcon()
+ icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineCenterCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_linecenter_circle.setIcon(icon47)
+ self.button_linecenter_circle.setIconSize(QtCore.QSize(32, 32))
+ self.button_linecenter_circle.setObjectName(_fromUtf8("button_linecenter_circle"))
+ self.horizontalLayout_66.addWidget(self.button_linecenter_circle)
+ self.radius_circle = QtGui.QLineEdit(self.Circle_Tab)
+ self.radius_circle.setMinimumSize(QtCore.QSize(40, 0))
+ self.radius_circle.setMaximumSize(QtCore.QSize(60, 16777215))
+ self.radius_circle.setObjectName(_fromUtf8("radius_circle"))
+ self.horizontalLayout_66.addWidget(self.radius_circle)
+ self.gridLayout.addLayout(self.horizontalLayout_66, 0, 0, 1, 1)
+ self.button_linepoint_circle = QtGui.QPushButton(self.Circle_Tab)
+ icon48 = QtGui.QIcon()
+ icon48.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_linepoint_circle.setIcon(icon48)
+ self.button_linepoint_circle.setIconSize(QtCore.QSize(32, 32))
+ self.button_linepoint_circle.setObjectName(_fromUtf8("button_linepoint_circle"))
+ self.gridLayout.addWidget(self.button_linepoint_circle, 1, 0, 1, 1)
+ spacerItem12 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout.addItem(spacerItem12, 7, 0, 1, 1)
+ self.button_3points_ellipse = QtGui.QPushButton(self.Circle_Tab)
+ icon49 = QtGui.QIcon()
+ icon49.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsEllipse.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_3points_ellipse.setIcon(icon49)
+ self.button_3points_ellipse.setIconSize(QtCore.QSize(32, 32))
+ self.button_3points_ellipse.setObjectName(_fromUtf8("button_3points_ellipse"))
+ self.gridLayout.addWidget(self.button_3points_ellipse, 4, 0, 1, 1)
+ self.button_circle_to_sketch = QtGui.QPushButton(self.Circle_Tab)
+ self.button_circle_to_sketch.setIcon(icon19)
+ self.button_circle_to_sketch.setIconSize(QtCore.QSize(32, 32))
+ self.button_circle_to_sketch.setObjectName(_fromUtf8("button_circle_to_sketch"))
+ self.gridLayout.addWidget(self.button_circle_to_sketch, 8, 0, 1, 1)
+ spacerItem13 = QtGui.QSpacerItem(20, 121, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout.addItem(spacerItem13, 9, 0, 1, 1)
+ self.button_3points_arc = QtGui.QPushButton(self.Circle_Tab)
+ icon50 = QtGui.QIcon()
+ icon50.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsArc.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_3points_arc.setIcon(icon50)
+ self.button_3points_arc.setIconSize(QtCore.QSize(32, 32))
+ self.button_3points_arc.setObjectName(_fromUtf8("button_3points_arc"))
+ self.gridLayout.addWidget(self.button_3points_arc, 5, 0, 1, 1)
+ self.button_3points_circle = QtGui.QPushButton(self.Circle_Tab)
icon51 = QtGui.QIcon()
- icon51.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_wire.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_7.addTab(self.Wire_Tab_2, icon51, _fromUtf8(""))
+ icon51.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_3points_circle.setIcon(icon51)
+ self.button_3points_circle.setIconSize(QtCore.QSize(32, 32))
+ self.button_3points_circle.setObjectName(_fromUtf8("button_3points_circle"))
+ self.gridLayout.addWidget(self.button_3points_circle, 2, 0, 1, 1)
+ self.horizontalLayout_67 = QtGui.QHBoxLayout()
+ self.horizontalLayout_67.setObjectName(_fromUtf8("horizontalLayout_67"))
+ self.button_cut_circle = QtGui.QPushButton(self.Circle_Tab)
+ icon52 = QtGui.QIcon()
+ icon52.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_cut_circle.setIcon(icon52)
+ self.button_cut_circle.setIconSize(QtCore.QSize(32, 32))
+ self.button_cut_circle.setObjectName(_fromUtf8("button_cut_circle"))
+ self.horizontalLayout_67.addWidget(self.button_cut_circle)
+ self.spin_circle_cut = QtGui.QSpinBox(self.Circle_Tab)
+ self.spin_circle_cut.setMinimumSize(QtCore.QSize(40, 0))
+ self.spin_circle_cut.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.spin_circle_cut.setMinimum(2)
+ self.spin_circle_cut.setMaximum(100)
+ self.spin_circle_cut.setSingleStep(1)
+ self.spin_circle_cut.setObjectName(_fromUtf8("spin_circle_cut"))
+ self.horizontalLayout_67.addWidget(self.spin_circle_cut)
+ self.gridLayout.addLayout(self.horizontalLayout_67, 6, 0, 1, 1)
+ icon53 = QtGui.QIcon()
+ icon53.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_circle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_7.addTab(self.Circle_Tab, icon53, _fromUtf8(""))
self.Plane_Tab = QtGui.QWidget()
self.Plane_Tab.setObjectName(_fromUtf8("Plane_Tab"))
self.gridLayout_17 = QtGui.QGridLayout(self.Plane_Tab)
@@ -1250,46 +1271,46 @@ class Ui_Form(object):
self.gridLayout_18 = QtGui.QGridLayout(self.Plane_Tab1_2)
self.gridLayout_18.setObjectName(_fromUtf8("gridLayout_18"))
self.button_threepoints_plane = QtGui.QPushButton(self.Plane_Tab1_2)
- icon52 = QtGui.QIcon()
- icon52.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_threepoints_plane.setIcon(icon52)
+ icon54 = QtGui.QIcon()
+ icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_threepoints_plane.setIcon(icon54)
self.button_threepoints_plane.setIconSize(QtCore.QSize(32, 32))
self.button_threepoints_plane.setObjectName(_fromUtf8("button_threepoints_plane"))
self.gridLayout_18.addWidget(self.button_threepoints_plane, 0, 0, 1, 1)
self.button_twopoints_plane = QtGui.QPushButton(self.Plane_Tab1_2)
- icon53 = QtGui.QIcon()
- icon53.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoPointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_twopoints_plane.setIcon(icon53)
+ icon55 = QtGui.QIcon()
+ icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoPointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_twopoints_plane.setIcon(icon55)
self.button_twopoints_plane.setIconSize(QtCore.QSize(32, 32))
self.button_twopoints_plane.setObjectName(_fromUtf8("button_twopoints_plane"))
self.gridLayout_18.addWidget(self.button_twopoints_plane, 1, 0, 1, 1)
self.button_Npoints_plane = QtGui.QPushButton(self.Plane_Tab1_2)
- icon54 = QtGui.QIcon()
- icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_Npoints_plane.setIcon(icon54)
+ icon56 = QtGui.QIcon()
+ icon56.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_Npoints_plane.setIcon(icon56)
self.button_Npoints_plane.setIconSize(QtCore.QSize(32, 32))
self.button_Npoints_plane.setObjectName(_fromUtf8("button_Npoints_plane"))
self.gridLayout_18.addWidget(self.button_Npoints_plane, 2, 0, 1, 1)
self.button_axisandpoint_plane = QtGui.QPushButton(self.Plane_Tab1_2)
- icon55 = QtGui.QIcon()
- icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_axisandpoint_plane.setIcon(icon55)
+ icon57 = QtGui.QIcon()
+ icon57.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_axisandpoint_plane.setIcon(icon57)
self.button_axisandpoint_plane.setIconSize(QtCore.QSize(32, 32))
self.button_axisandpoint_plane.setObjectName(_fromUtf8("button_axisandpoint_plane"))
self.gridLayout_18.addWidget(self.button_axisandpoint_plane, 3, 0, 1, 1)
self.button_axis_point_plane = QtGui.QPushButton(self.Plane_Tab1_2)
- icon56 = QtGui.QIcon()
- icon56.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane2.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_axis_point_plane.setIcon(icon56)
+ icon58 = QtGui.QIcon()
+ icon58.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane2.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_axis_point_plane.setIcon(icon58)
self.button_axis_point_plane.setIconSize(QtCore.QSize(32, 32))
self.button_axis_point_plane.setObjectName(_fromUtf8("button_axis_point_plane"))
self.gridLayout_18.addWidget(self.button_axis_point_plane, 4, 0, 1, 1)
self.gridLayout_90 = QtGui.QGridLayout()
self.gridLayout_90.setObjectName(_fromUtf8("gridLayout_90"))
self.button_planeandpoint_plane = QtGui.QPushButton(self.Plane_Tab1_2)
- icon57 = QtGui.QIcon()
- icon57.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_planeandpoint_plane.setIcon(icon57)
+ icon59 = QtGui.QIcon()
+ icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_planeandpoint_plane.setIcon(icon59)
self.button_planeandpoint_plane.setIconSize(QtCore.QSize(32, 32))
self.button_planeandpoint_plane.setObjectName(_fromUtf8("button_planeandpoint_plane"))
self.gridLayout_90.addWidget(self.button_planeandpoint_plane, 0, 0, 1, 1)
@@ -1307,9 +1328,9 @@ class Ui_Form(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.button_planeandaxis_plane.sizePolicy().hasHeightForWidth())
self.button_planeandaxis_plane.setSizePolicy(sizePolicy)
- icon58 = QtGui.QIcon()
- icon58.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_planeandaxis_plane.setIcon(icon58)
+ icon60 = QtGui.QIcon()
+ icon60.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_planeandaxis_plane.setIcon(icon60)
self.button_planeandaxis_plane.setIconSize(QtCore.QSize(32, 32))
self.button_planeandaxis_plane.setObjectName(_fromUtf8("button_planeandaxis_plane"))
self.gridLayout_89.addWidget(self.button_planeandaxis_plane, 0, 0, 1, 1)
@@ -1327,9 +1348,9 @@ class Ui_Form(object):
self.horizontalLayout_70 = QtGui.QHBoxLayout()
self.horizontalLayout_70.setObjectName(_fromUtf8("horizontalLayout_70"))
self.button_distPlane = QtGui.QPushButton(self.Plane_Tab1_2)
- icon59 = QtGui.QIcon()
- icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_distPlane.setIcon(icon59)
+ icon61 = QtGui.QIcon()
+ icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_distPlane.setIcon(icon61)
self.button_distPlane.setIconSize(QtCore.QSize(32, 32))
self.button_distPlane.setObjectName(_fromUtf8("button_distPlane"))
self.horizontalLayout_70.addWidget(self.button_distPlane)
@@ -1363,9 +1384,9 @@ class Ui_Form(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.button_face_tangent.sizePolicy().hasHeightForWidth())
self.button_face_tangent.setSizePolicy(sizePolicy)
- icon60 = QtGui.QIcon()
- icon60.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_face_tangent.setIcon(icon60)
+ icon62 = QtGui.QIcon()
+ icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_face_tangent.setIcon(icon62)
self.button_face_tangent.setIconSize(QtCore.QSize(32, 32))
self.button_face_tangent.setObjectName(_fromUtf8("button_face_tangent"))
self.horizontalLayout_69.addWidget(self.button_face_tangent)
@@ -1390,8 +1411,8 @@ class Ui_Form(object):
self.width_plane_2.setObjectName(_fromUtf8("width_plane_2"))
self.horizontalLayout_69.addWidget(self.width_plane_2)
self.gridLayout_18.addLayout(self.horizontalLayout_69, 8, 0, 1, 1)
- spacerItem13 = QtGui.QSpacerItem(20, 235, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_18.addItem(spacerItem13, 9, 0, 1, 1)
+ spacerItem14 = QtGui.QSpacerItem(20, 235, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_18.addItem(spacerItem14, 9, 0, 1, 1)
self.tabWidget_3.addTab(self.Plane_Tab1_2, _fromUtf8(""))
self.Plane_Tab2_2 = QtGui.QWidget()
self.Plane_Tab2_2.setObjectName(_fromUtf8("Plane_Tab2_2"))
@@ -1405,9 +1426,9 @@ class Ui_Form(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.button_click_for_plane.sizePolicy().hasHeightForWidth())
self.button_click_for_plane.setSizePolicy(sizePolicy)
- icon61 = QtGui.QIcon()
- icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_click_for_plane.setIcon(icon61)
+ icon63 = QtGui.QIcon()
+ icon63.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_click_for_plane.setIcon(icon63)
self.button_click_for_plane.setIconSize(QtCore.QSize(32, 32))
self.button_click_for_plane.setObjectName(_fromUtf8("button_click_for_plane"))
self.horizontalLayout_68.addWidget(self.button_click_for_plane)
@@ -1440,9 +1461,9 @@ class Ui_Form(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.button_extension_plane.sizePolicy().hasHeightForWidth())
self.button_extension_plane.setSizePolicy(sizePolicy)
- icon62 = QtGui.QIcon()
- icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_extension_plane.setIcon(icon62)
+ icon64 = QtGui.QIcon()
+ icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_extension_plane.setIcon(icon64)
self.button_extension_plane.setIconSize(QtCore.QSize(32, 32))
self.button_extension_plane.setObjectName(_fromUtf8("button_extension_plane"))
self.horizontalLayout_71.addWidget(self.button_extension_plane)
@@ -1458,24 +1479,24 @@ class Ui_Form(object):
self.horizontalLayout_71.addWidget(self.extension_plane)
self.gridLayout_36.addLayout(self.horizontalLayout_71, 1, 0, 1, 1)
self.button_object_center_planes = QtGui.QPushButton(self.Plane_Tab2_2)
- icon63 = QtGui.QIcon()
- icon63.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPlanes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_object_center_planes.setIcon(icon63)
+ icon65 = QtGui.QIcon()
+ icon65.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPlanes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_object_center_planes.setIcon(icon65)
self.button_object_center_planes.setIconSize(QtCore.QSize(32, 32))
self.button_object_center_planes.setObjectName(_fromUtf8("button_object_center_planes"))
self.gridLayout_36.addWidget(self.button_object_center_planes, 2, 0, 1, 1)
- spacerItem14 = QtGui.QSpacerItem(20, 527, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_36.addItem(spacerItem14, 3, 0, 1, 1)
+ spacerItem15 = QtGui.QSpacerItem(20, 527, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_36.addItem(spacerItem15, 3, 0, 1, 1)
self.tabWidget_3.addTab(self.Plane_Tab2_2, _fromUtf8(""))
self.gridLayout_17.addWidget(self.tabWidget_3, 0, 0, 1, 1)
- icon64 = QtGui.QIcon()
- icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_plane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_7.addTab(self.Plane_Tab, icon64, _fromUtf8(""))
- self.tab_17 = QtGui.QWidget()
- self.tab_17.setObjectName(_fromUtf8("tab_17"))
- self.gridLayout_6 = QtGui.QGridLayout(self.tab_17)
+ icon66 = QtGui.QIcon()
+ icon66.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_plane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_7.addTab(self.Plane_Tab, icon66, _fromUtf8(""))
+ self.Sweep_Tab = QtGui.QWidget()
+ self.Sweep_Tab.setObjectName(_fromUtf8("Sweep_Tab"))
+ self.gridLayout_6 = QtGui.QGridLayout(self.Sweep_Tab)
self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6"))
- self.frame_9 = QtGui.QFrame(self.tab_17)
+ self.frame_9 = QtGui.QFrame(self.Sweep_Tab)
self.frame_9.setFrameShape(QtGui.QFrame.StyledPanel)
self.frame_9.setFrameShadow(QtGui.QFrame.Raised)
self.frame_9.setLineWidth(3)
@@ -1507,23 +1528,23 @@ class Ui_Form(object):
self.gridLayout_87.addWidget(self.radioButton_Frenet, 1, 1, 1, 1)
self.gridLayout_86.addLayout(self.gridLayout_87, 0, 0, 1, 1)
self.button_sweep = QtGui.QPushButton(self.frame_9)
- icon65 = QtGui.QIcon()
- icon65.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Sweep.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_sweep.setIcon(icon65)
+ icon67 = QtGui.QIcon()
+ icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Sweep.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_sweep.setIcon(icon67)
self.button_sweep.setIconSize(QtCore.QSize(32, 32))
self.button_sweep.setObjectName(_fromUtf8("button_sweep"))
self.gridLayout_86.addWidget(self.button_sweep, 1, 0, 1, 1)
self.gridLayout_6.addWidget(self.frame_9, 0, 0, 1, 1)
- spacerItem15 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_6.addItem(spacerItem15, 2, 0, 1, 1)
- self.button_beam = QtGui.QPushButton(self.tab_17)
- icon66 = QtGui.QIcon()
- icon66.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_beam.setIcon(icon66)
+ spacerItem16 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_6.addItem(spacerItem16, 2, 0, 1, 1)
+ self.button_beam = QtGui.QPushButton(self.Sweep_Tab)
+ icon68 = QtGui.QIcon()
+ icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_beam.setIcon(icon68)
self.button_beam.setIconSize(QtCore.QSize(32, 32))
self.button_beam.setObjectName(_fromUtf8("button_beam"))
self.gridLayout_6.addWidget(self.button_beam, 1, 0, 1, 1)
- self.tabWidget_7.addTab(self.tab_17, icon66, _fromUtf8(""))
+ self.tabWidget_7.addTab(self.Sweep_Tab, icon68, _fromUtf8(""))
self.Objects_Tab2_2 = QtGui.QWidget()
self.Objects_Tab2_2.setEnabled(True)
self.Objects_Tab2_2.setMinimumSize(QtCore.QSize(0, 0))
@@ -1536,17 +1557,17 @@ class Ui_Form(object):
self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4"))
self.button_boundingboxes = QtGui.QPushButton(self.Objects_Tab2_2)
self.button_boundingboxes.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon67 = QtGui.QIcon()
- icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_boundingboxes.setIcon(icon67)
+ icon69 = QtGui.QIcon()
+ icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_boundingboxes.setIcon(icon69)
self.button_boundingboxes.setIconSize(QtCore.QSize(32, 32))
self.button_boundingboxes.setObjectName(_fromUtf8("button_boundingboxes"))
self.verticalLayout_4.addWidget(self.button_boundingboxes)
self.button_boundingbox = QtGui.QPushButton(self.Objects_Tab2_2)
self.button_boundingbox.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon68 = QtGui.QIcon()
- icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_boundingbox.setIcon(icon68)
+ icon70 = QtGui.QIcon()
+ icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_boundingbox.setIcon(icon70)
self.button_boundingbox.setIconSize(QtCore.QSize(32, 32))
self.button_boundingbox.setObjectName(_fromUtf8("button_boundingbox"))
self.verticalLayout_4.addWidget(self.button_boundingbox)
@@ -1567,9 +1588,9 @@ class Ui_Form(object):
self.gridLayout_93 = QtGui.QGridLayout()
self.gridLayout_93.setObjectName(_fromUtf8("gridLayout_93"))
self.button_cylinder_create = QtGui.QPushButton(self.Objects_Tab2_2)
- icon69 = QtGui.QIcon()
- icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinder.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_cylinder_create.setIcon(icon69)
+ icon71 = QtGui.QIcon()
+ icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinder.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_cylinder_create.setIcon(icon71)
self.button_cylinder_create.setIconSize(QtCore.QSize(32, 32))
self.button_cylinder_create.setObjectName(_fromUtf8("button_cylinder_create"))
self.gridLayout_93.addWidget(self.button_cylinder_create, 0, 0, 1, 1)
@@ -1597,9 +1618,9 @@ class Ui_Form(object):
self.horizontalLayout_73 = QtGui.QHBoxLayout()
self.horizontalLayout_73.setObjectName(_fromUtf8("horizontalLayout_73"))
self.button_cube_create = QtGui.QPushButton(self.Objects_Tab2_2)
- icon70 = QtGui.QIcon()
- icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cube.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_cube_create.setIcon(icon70)
+ icon72 = QtGui.QIcon()
+ icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cube.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_cube_create.setIcon(icon72)
self.button_cube_create.setIconSize(QtCore.QSize(32, 32))
self.button_cube_create.setObjectName(_fromUtf8("button_cube_create"))
self.horizontalLayout_73.addWidget(self.button_cube_create)
@@ -1627,9 +1648,9 @@ class Ui_Form(object):
self.horizontalLayout_74 = QtGui.QHBoxLayout()
self.horizontalLayout_74.setObjectName(_fromUtf8("horizontalLayout_74"))
self.button_sphere_create = QtGui.QPushButton(self.Objects_Tab2_2)
- icon71 = QtGui.QIcon()
- icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_sphere.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_sphere_create.setIcon(icon71)
+ icon73 = QtGui.QIcon()
+ icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_sphere.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_sphere_create.setIcon(icon73)
self.button_sphere_create.setIconSize(QtCore.QSize(32, 32))
self.button_sphere_create.setObjectName(_fromUtf8("button_sphere_create"))
self.horizontalLayout_74.addWidget(self.button_sphere_create)
@@ -1647,9 +1668,9 @@ class Ui_Form(object):
self.horizontalLayout_77 = QtGui.QHBoxLayout()
self.horizontalLayout_77.setObjectName(_fromUtf8("horizontalLayout_77"))
self.button_dome_create = QtGui.QPushButton(self.Objects_Tab2_2)
- icon72 = QtGui.QIcon()
- icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_dome.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_dome_create.setIcon(icon72)
+ icon74 = QtGui.QIcon()
+ icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_dome.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_dome_create.setIcon(icon74)
self.button_dome_create.setIconSize(QtCore.QSize(32, 32))
self.button_dome_create.setObjectName(_fromUtf8("button_dome_create"))
self.horizontalLayout_77.addWidget(self.button_dome_create)
@@ -1676,9 +1697,9 @@ class Ui_Form(object):
self.horizontalLayout_75 = QtGui.QHBoxLayout()
self.horizontalLayout_75.setObjectName(_fromUtf8("horizontalLayout_75"))
self.button_letter = QtGui.QPushButton(self.Objects_Tab2_2)
- icon73 = QtGui.QIcon()
- icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointText.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_letter.setIcon(icon73)
+ icon75 = QtGui.QIcon()
+ icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointText.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_letter.setIcon(icon75)
self.button_letter.setIconSize(QtCore.QSize(32, 32))
self.button_letter.setObjectName(_fromUtf8("button_letter"))
self.horizontalLayout_75.addWidget(self.button_letter)
@@ -1700,9 +1721,9 @@ class Ui_Form(object):
self.horizontalLayout_76 = QtGui.QHBoxLayout()
self.horizontalLayout_76.setObjectName(_fromUtf8("horizontalLayout_76"))
self.button_revolve = QtGui.QPushButton(self.Objects_Tab2_2)
- icon74 = QtGui.QIcon()
- icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Revolve.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_revolve.setIcon(icon74)
+ icon76 = QtGui.QIcon()
+ icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Revolve.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_revolve.setIcon(icon76)
self.button_revolve.setIconSize(QtCore.QSize(32, 32))
self.button_revolve.setObjectName(_fromUtf8("button_revolve"))
self.horizontalLayout_76.addWidget(self.button_revolve)
@@ -1718,31 +1739,75 @@ class Ui_Form(object):
self.horizontalLayout_76.addWidget(self.angle_revolve)
self.gridLayout_5.addLayout(self.horizontalLayout_76, 7, 0, 1, 1)
self.button_copy_objects = QtGui.QPushButton(self.Objects_Tab2_2)
- icon75 = QtGui.QIcon()
- icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCopy.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_copy_objects.setIcon(icon75)
+ icon77 = QtGui.QIcon()
+ icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCopy.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_copy_objects.setIcon(icon77)
self.button_copy_objects.setIconSize(QtCore.QSize(32, 32))
self.button_copy_objects.setObjectName(_fromUtf8("button_copy_objects"))
self.gridLayout_5.addWidget(self.button_copy_objects, 8, 0, 1, 1)
self.button_common = QtGui.QPushButton(self.Objects_Tab2_2)
- icon76 = QtGui.QIcon()
- icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_common.setIcon(icon76)
+ icon78 = QtGui.QIcon()
+ icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_common.setIcon(icon78)
self.button_common.setIconSize(QtCore.QSize(32, 32))
self.button_common.setObjectName(_fromUtf8("button_common"))
self.gridLayout_5.addWidget(self.button_common, 9, 0, 1, 1)
self.button_difference = QtGui.QPushButton(self.Objects_Tab2_2)
- icon77 = QtGui.QIcon()
- icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_difference.setIcon(icon77)
+ icon79 = QtGui.QIcon()
+ icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_difference.setIcon(icon79)
self.button_difference.setIconSize(QtCore.QSize(32, 32))
self.button_difference.setObjectName(_fromUtf8("button_difference"))
self.gridLayout_5.addWidget(self.button_difference, 10, 0, 1, 1)
- spacerItem16 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_5.addItem(spacerItem16, 11, 0, 1, 1)
- icon78 = QtGui.QIcon()
- icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_7.addTab(self.Objects_Tab2_2, icon78, _fromUtf8(""))
+ spacerItem17 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_5.addItem(spacerItem17, 11, 0, 1, 1)
+ icon80 = QtGui.QIcon()
+ icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_7.addTab(self.Objects_Tab2_2, icon80, _fromUtf8(""))
+ self.tab_2 = QtGui.QWidget()
+ self.tab_2.setObjectName(_fromUtf8("tab_2"))
+ self.gridLayout_8 = QtGui.QGridLayout(self.tab_2)
+ self.gridLayout_8.setObjectName(_fromUtf8("gridLayout_8"))
+ self.horizontalLayout_4 = QtGui.QHBoxLayout()
+ self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
+ self.button_scale_image = QtGui.QPushButton(self.tab_2)
+ icon81 = QtGui.QIcon()
+ icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_ImageScale.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_scale_image.setIcon(icon81)
+ self.button_scale_image.setIconSize(QtCore.QSize(32, 32))
+ self.button_scale_image.setObjectName(_fromUtf8("button_scale_image"))
+ self.horizontalLayout_4.addWidget(self.button_scale_image)
+ self.Image_comboBox_axis_scale = QtGui.QComboBox(self.tab_2)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.Image_comboBox_axis_scale.sizePolicy().hasHeightForWidth())
+ self.Image_comboBox_axis_scale.setSizePolicy(sizePolicy)
+ self.Image_comboBox_axis_scale.setMinimumSize(QtCore.QSize(40, 0))
+ self.Image_comboBox_axis_scale.setMaximumSize(QtCore.QSize(60, 16777215))
+ self.Image_comboBox_axis_scale.setLayoutDirection(QtCore.Qt.LeftToRight)
+ self.Image_comboBox_axis_scale.setObjectName(_fromUtf8("Image_comboBox_axis_scale"))
+ self.Image_comboBox_axis_scale.addItem(_fromUtf8(""))
+ self.Image_comboBox_axis_scale.addItem(_fromUtf8(""))
+ self.Image_comboBox_axis_scale.addItem(_fromUtf8(""))
+ self.Image_comboBox_axis_scale.addItem(_fromUtf8(""))
+ self.Image_comboBox_axis_scale.addItem(_fromUtf8(""))
+ self.Image_comboBox_axis_scale.addItem(_fromUtf8(""))
+ self.horizontalLayout_4.addWidget(self.Image_comboBox_axis_scale)
+ self.length_image = QtGui.QLineEdit(self.tab_2)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.length_image.sizePolicy().hasHeightForWidth())
+ self.length_image.setSizePolicy(sizePolicy)
+ self.length_image.setMinimumSize(QtCore.QSize(60, 0))
+ self.length_image.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.length_image.setObjectName(_fromUtf8("length_image"))
+ self.horizontalLayout_4.addWidget(self.length_image)
+ self.gridLayout_8.addLayout(self.horizontalLayout_4, 0, 0, 1, 1)
+ spacerItem18 = QtGui.QSpacerItem(20, 650, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_8.addItem(spacerItem18, 1, 0, 1, 1)
+ self.tabWidget_7.addTab(self.tab_2, _fromUtf8(""))
self.Modif_Tab_2 = QtGui.QWidget()
self.Modif_Tab_2.setObjectName(_fromUtf8("Modif_Tab_2"))
self.gridLayout_94 = QtGui.QGridLayout(self.Modif_Tab_2)
@@ -1760,9 +1825,9 @@ class Ui_Form(object):
sizePolicy.setHeightForWidth(self.button_alignface2view.sizePolicy().hasHeightForWidth())
self.button_alignface2view.setSizePolicy(sizePolicy)
self.button_alignface2view.setMaximumSize(QtCore.QSize(220, 16777215))
- icon79 = QtGui.QIcon()
- icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_alignface2view.setIcon(icon79)
+ icon82 = QtGui.QIcon()
+ icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_alignface2view.setIcon(icon82)
self.button_alignface2view.setIconSize(QtCore.QSize(32, 32))
self.button_alignface2view.setObjectName(_fromUtf8("button_alignface2view"))
self.gridLayout_9.addWidget(self.button_alignface2view, 0, 0, 1, 1)
@@ -1770,9 +1835,9 @@ class Ui_Form(object):
self.horizontalLayout_78.setObjectName(_fromUtf8("horizontalLayout_78"))
self.button_align_faces = QtGui.QPushButton(self.align_tab_2)
self.button_align_faces.setMaximumSize(QtCore.QSize(220, 16777215))
- icon80 = QtGui.QIcon()
- icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_align_faces.setIcon(icon80)
+ icon83 = QtGui.QIcon()
+ icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_align_faces.setIcon(icon83)
self.button_align_faces.setIconSize(QtCore.QSize(32, 32))
self.button_align_faces.setObjectName(_fromUtf8("button_align_faces"))
self.horizontalLayout_78.addWidget(self.button_align_faces)
@@ -1791,9 +1856,9 @@ class Ui_Form(object):
self.horizontalLayout_79.setObjectName(_fromUtf8("horizontalLayout_79"))
self.button_align_edges = QtGui.QPushButton(self.align_tab_2)
self.button_align_edges.setMaximumSize(QtCore.QSize(220, 16777215))
- icon81 = QtGui.QIcon()
- icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_align_edges.setIcon(icon81)
+ icon84 = QtGui.QIcon()
+ icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_align_edges.setIcon(icon84)
self.button_align_edges.setIconSize(QtCore.QSize(32, 32))
self.button_align_edges.setObjectName(_fromUtf8("button_align_edges"))
self.horizontalLayout_79.addWidget(self.button_align_edges)
@@ -1811,9 +1876,9 @@ class Ui_Form(object):
self.horizontalLayout_2 = QtGui.QHBoxLayout()
self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
self.button_align_main_axis = QtGui.QPushButton(self.align_tab_2)
- icon82 = QtGui.QIcon()
- icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignMainAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_align_main_axis.setIcon(icon82)
+ icon85 = QtGui.QIcon()
+ icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignMainAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_align_main_axis.setIcon(icon85)
self.button_align_main_axis.setIconSize(QtCore.QSize(32, 32))
self.button_align_main_axis.setObjectName(_fromUtf8("button_align_main_axis"))
self.horizontalLayout_2.addWidget(self.button_align_main_axis)
@@ -1829,21 +1894,21 @@ class Ui_Form(object):
self.horizontalLayout_2.addWidget(self.angle_align_main_axis)
self.gridLayout_9.addLayout(self.horizontalLayout_2, 3, 0, 1, 1)
self.button_joint_points = QtGui.QPushButton(self.align_tab_2)
- icon83 = QtGui.QIcon()
- icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_joint_points.setIcon(icon83)
+ icon86 = QtGui.QIcon()
+ icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_joint_points.setIcon(icon86)
self.button_joint_points.setIconSize(QtCore.QSize(32, 32))
self.button_joint_points.setObjectName(_fromUtf8("button_joint_points"))
self.gridLayout_9.addWidget(self.button_joint_points, 4, 0, 1, 1)
self.button_joint_faces = QtGui.QPushButton(self.align_tab_2)
- icon84 = QtGui.QIcon()
- icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_joint_faces.setIcon(icon84)
+ icon87 = QtGui.QIcon()
+ icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_joint_faces.setIcon(icon87)
self.button_joint_faces.setIconSize(QtCore.QSize(32, 32))
self.button_joint_faces.setObjectName(_fromUtf8("button_joint_faces"))
self.gridLayout_9.addWidget(self.button_joint_faces, 5, 0, 1, 1)
- spacerItem17 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_9.addItem(spacerItem17, 6, 0, 1, 1)
+ spacerItem19 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_9.addItem(spacerItem19, 6, 0, 1, 1)
self.tabWidget_9.addTab(self.align_tab_2, _fromUtf8(""))
self.cut_tab_2 = QtGui.QWidget()
self.cut_tab_2.setObjectName(_fromUtf8("cut_tab_2"))
@@ -1953,8 +2018,8 @@ class Ui_Form(object):
self.button_cut_reset.setMaximumSize(QtCore.QSize(60, 16777215))
self.button_cut_reset.setObjectName(_fromUtf8("button_cut_reset"))
self.horizontalLayout_80.addWidget(self.button_cut_reset)
- spacerItem18 = QtGui.QSpacerItem(18, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout_80.addItem(spacerItem18)
+ spacerItem20 = QtGui.QSpacerItem(18, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.horizontalLayout_80.addItem(spacerItem20)
self.button_cut_apply = QtGui.QPushButton(self.groupBox_20)
self.button_cut_apply.setEnabled(False)
self.button_cut_apply.setMaximumSize(QtCore.QSize(50, 16777215))
@@ -1965,8 +2030,8 @@ class Ui_Form(object):
self.gridLayout_98.addLayout(self.gridLayout_100, 1, 0, 1, 1)
self.gridLayout_97.addWidget(self.groupBox_20, 0, 0, 1, 1)
self.gridLayout_96.addWidget(self.frame_10, 0, 0, 1, 1)
- spacerItem19 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_96.addItem(spacerItem19, 1, 0, 1, 1)
+ spacerItem21 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_96.addItem(spacerItem21, 1, 0, 1, 1)
self.tabWidget_9.addTab(self.cut_tab_2, _fromUtf8(""))
self.rotate_tab_2 = QtGui.QWidget()
self.rotate_tab_2.setObjectName(_fromUtf8("rotate_tab_2"))
@@ -2010,9 +2075,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_105.addWidget(self.ObjRot_button_select_axis, 1, 0, 1, 1)
- icon85 = QtGui.QIcon()
- icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_10.addTab(self.tab_18, icon85, _fromUtf8(""))
+ icon88 = QtGui.QIcon()
+ icon88.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_10.addTab(self.tab_18, icon88, _fromUtf8(""))
self.tab_19 = QtGui.QWidget()
self.tab_19.setObjectName(_fromUtf8("tab_19"))
self.gridLayout_106 = QtGui.QGridLayout(self.tab_19)
@@ -2039,9 +2104,9 @@ 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_106.addWidget(self.ObjRot_button_select_center, 1, 0, 1, 1)
- icon86 = QtGui.QIcon()
- icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_10.addTab(self.tab_19, icon86, _fromUtf8(""))
+ icon89 = QtGui.QIcon()
+ icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_10.addTab(self.tab_19, icon89, _fromUtf8(""))
self.gridLayout_104.addWidget(self.tabWidget_10, 1, 0, 1, 1)
self.groupBox_21 = QtGui.QGroupBox(self.frame_11)
self.groupBox_21.setMinimumSize(QtCore.QSize(150, 67))
@@ -2077,9 +2142,9 @@ class Ui_Form(object):
self.ObjRot_button_select_angle.setMaximumSize(QtCore.QSize(80, 16777215))
self.ObjRot_button_select_angle.setObjectName(_fromUtf8("ObjRot_button_select_angle"))
self.gridLayout_109.addWidget(self.ObjRot_button_select_angle, 0, 0, 1, 1)
- icon87 = QtGui.QIcon()
- icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_11.addTab(self.tab_21, icon87, _fromUtf8(""))
+ icon90 = QtGui.QIcon()
+ icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_11.addTab(self.tab_21, icon90, _fromUtf8(""))
self.gridLayout_107.addWidget(self.tabWidget_11, 0, 0, 1, 1)
self.horizontalLayout_81 = QtGui.QHBoxLayout()
self.horizontalLayout_81.setObjectName(_fromUtf8("horizontalLayout_81"))
@@ -2107,8 +2172,8 @@ class Ui_Form(object):
self.ObjRot_button_reset.setMaximumSize(QtCore.QSize(60, 16777215))
self.ObjRot_button_reset.setObjectName(_fromUtf8("ObjRot_button_reset"))
self.horizontalLayout_82.addWidget(self.ObjRot_button_reset)
- spacerItem20 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout_82.addItem(spacerItem20)
+ spacerItem22 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.horizontalLayout_82.addItem(spacerItem22)
self.ObjRot_button_apply = QtGui.QPushButton(self.frame_11)
self.ObjRot_button_apply.setMinimumSize(QtCore.QSize(40, 0))
self.ObjRot_button_apply.setMaximumSize(QtCore.QSize(60, 16777215))
@@ -2116,8 +2181,8 @@ class Ui_Form(object):
self.horizontalLayout_82.addWidget(self.ObjRot_button_apply)
self.gridLayout_104.addLayout(self.horizontalLayout_82, 3, 0, 1, 1)
self.gridLayout_103.addWidget(self.frame_11, 0, 0, 1, 1)
- spacerItem21 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_103.addItem(spacerItem21, 1, 0, 1, 1)
+ spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_103.addItem(spacerItem23, 1, 0, 1, 1)
self.tabWidget_9.addTab(self.rotate_tab_2, _fromUtf8(""))
self.translate_tab_2 = QtGui.QWidget()
self.translate_tab_2.setObjectName(_fromUtf8("translate_tab_2"))
@@ -2228,9 +2293,9 @@ class Ui_Form(object):
self.gridLayout_114.addLayout(self.gridLayout_117, 2, 0, 1, 1)
self.gridLayout_113.addLayout(self.gridLayout_114, 2, 0, 1, 1)
self.gridLayout_112.addWidget(self.groupBox_22, 0, 0, 1, 1)
- icon88 = QtGui.QIcon()
- icon88.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_12.addTab(self.tab_22, icon88, _fromUtf8(""))
+ icon91 = QtGui.QIcon()
+ icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_12.addTab(self.tab_22, icon91, _fromUtf8(""))
self.tab_23 = QtGui.QWidget()
self.tab_23.setObjectName(_fromUtf8("tab_23"))
self.gridLayout_118 = QtGui.QGridLayout(self.tab_23)
@@ -2305,9 +2370,9 @@ class Ui_Form(object):
self.gridLayout_120.addLayout(self.gridLayout_123, 0, 0, 1, 1)
self.gridLayout_119.addLayout(self.gridLayout_120, 2, 0, 1, 1)
self.gridLayout_118.addWidget(self.groupBox_23, 0, 0, 1, 1)
- icon89 = QtGui.QIcon()
- icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_12.addTab(self.tab_23, icon89, _fromUtf8(""))
+ icon92 = QtGui.QIcon()
+ icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_12.addTab(self.tab_23, icon92, _fromUtf8(""))
self.gridLayout_111.addWidget(self.tabWidget_12, 2, 0, 1, 1)
self.horizontalLayout_84 = QtGui.QHBoxLayout()
self.horizontalLayout_84.setObjectName(_fromUtf8("horizontalLayout_84"))
@@ -2316,8 +2381,8 @@ class Ui_Form(object):
self.ObjTrans_button_reset.setMaximumSize(QtCore.QSize(60, 16777215))
self.ObjTrans_button_reset.setObjectName(_fromUtf8("ObjTrans_button_reset"))
self.horizontalLayout_84.addWidget(self.ObjTrans_button_reset)
- spacerItem22 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout_84.addItem(spacerItem22)
+ spacerItem24 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.horizontalLayout_84.addItem(spacerItem24)
self.ObjTrans_button_apply = QtGui.QPushButton(self.frame_12)
self.ObjTrans_button_apply.setMinimumSize(QtCore.QSize(40, 0))
self.ObjTrans_button_apply.setMaximumSize(QtCore.QSize(60, 16777215))
@@ -2325,8 +2390,8 @@ class Ui_Form(object):
self.horizontalLayout_84.addWidget(self.ObjTrans_button_apply)
self.gridLayout_111.addLayout(self.horizontalLayout_84, 3, 0, 1, 1)
self.gridLayout_110.addWidget(self.frame_12, 0, 0, 1, 1)
- spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_110.addItem(spacerItem23, 1, 0, 1, 1)
+ spacerItem25 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_110.addItem(spacerItem25, 1, 0, 1, 1)
self.tabWidget_9.addTab(self.translate_tab_2, _fromUtf8(""))
self.gridLayout_94.addWidget(self.tabWidget_9, 0, 0, 1, 1)
self.tabWidget_7.addTab(self.Modif_Tab_2, _fromUtf8(""))
@@ -2341,103 +2406,103 @@ class Ui_Form(object):
sizePolicy.setHeightForWidth(self.button_alignview.sizePolicy().hasHeightForWidth())
self.button_alignview.setSizePolicy(sizePolicy)
self.button_alignview.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon90 = QtGui.QIcon()
- icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_alignview.setIcon(icon90)
+ icon93 = QtGui.QIcon()
+ icon93.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_alignview.setIcon(icon93)
self.button_alignview.setIconSize(QtCore.QSize(32, 32))
self.button_alignview.setObjectName(_fromUtf8("button_alignview"))
self.gridLayout_124.addWidget(self.button_alignview, 0, 0, 1, 1)
- spacerItem24 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_124.addItem(spacerItem24, 2, 0, 1, 1)
+ spacerItem26 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_124.addItem(spacerItem26, 2, 0, 1, 1)
self.button_trackcamera = QtGui.QPushButton(self.View_Tab_2)
- icon91 = QtGui.QIcon()
- icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_trackcamera.setIcon(icon91)
+ icon94 = QtGui.QIcon()
+ icon94.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_trackcamera.setIcon(icon94)
self.button_trackcamera.setIconSize(QtCore.QSize(32, 32))
self.button_trackcamera.setObjectName(_fromUtf8("button_trackcamera"))
self.gridLayout_124.addWidget(self.button_trackcamera, 1, 0, 1, 1)
- icon92 = QtGui.QIcon()
- icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_7.addTab(self.View_Tab_2, icon92, _fromUtf8(""))
+ icon95 = QtGui.QIcon()
+ icon95.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_7.addTab(self.View_Tab_2, icon95, _fromUtf8(""))
self.tab_24 = QtGui.QWidget()
self.tab_24.setObjectName(_fromUtf8("tab_24"))
self.gridLayout_125 = QtGui.QGridLayout(self.tab_24)
self.gridLayout_125.setObjectName(_fromUtf8("gridLayout_125"))
self.button_isView = QtGui.QPushButton(self.tab_24)
- icon93 = QtGui.QIcon()
- icon93.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isView.setIcon(icon93)
+ icon96 = QtGui.QIcon()
+ icon96.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isView.setIcon(icon96)
self.button_isView.setIconSize(QtCore.QSize(32, 32))
self.button_isView.setObjectName(_fromUtf8("button_isView"))
self.gridLayout_125.addWidget(self.button_isView, 9, 0, 1, 1)
- spacerItem25 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_125.addItem(spacerItem25, 10, 0, 1, 1)
+ spacerItem27 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_125.addItem(spacerItem27, 10, 0, 1, 1)
self.button_isParallel = QtGui.QPushButton(self.tab_24)
- icon94 = QtGui.QIcon()
- icon94.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isParallel.setIcon(icon94)
+ icon97 = QtGui.QIcon()
+ icon97.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isParallel.setIcon(icon97)
self.button_isParallel.setIconSize(QtCore.QSize(32, 32))
self.button_isParallel.setObjectName(_fromUtf8("button_isParallel"))
self.gridLayout_125.addWidget(self.button_isParallel, 0, 0, 1, 1)
self.button_isAngle = QtGui.QPushButton(self.tab_24)
- icon95 = QtGui.QIcon()
- icon95.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isAngle.setIcon(icon95)
+ icon98 = QtGui.QIcon()
+ icon98.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isAngle.setIcon(icon98)
self.button_isAngle.setIconSize(QtCore.QSize(32, 32))
self.button_isAngle.setObjectName(_fromUtf8("button_isAngle"))
self.gridLayout_125.addWidget(self.button_isAngle, 4, 0, 1, 1)
self.button_isLength = QtGui.QPushButton(self.tab_24)
- icon96 = QtGui.QIcon()
- icon96.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isLength.setIcon(icon96)
+ icon99 = QtGui.QIcon()
+ icon99.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isLength.setIcon(icon99)
self.button_isLength.setIconSize(QtCore.QSize(32, 32))
self.button_isLength.setObjectName(_fromUtf8("button_isLength"))
self.gridLayout_125.addWidget(self.button_isLength, 6, 0, 1, 1)
self.button_isDistance = QtGui.QPushButton(self.tab_24)
- icon97 = QtGui.QIcon()
- icon97.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isDistance.setIcon(icon97)
+ icon100 = QtGui.QIcon()
+ icon100.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isDistance.setIcon(icon100)
self.button_isDistance.setIconSize(QtCore.QSize(32, 32))
self.button_isDistance.setObjectName(_fromUtf8("button_isDistance"))
self.gridLayout_125.addWidget(self.button_isDistance, 5, 0, 1, 1)
self.button_isCoplanar = QtGui.QPushButton(self.tab_24)
- icon98 = QtGui.QIcon()
- icon98.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isCoplanar.setIcon(icon98)
+ icon101 = QtGui.QIcon()
+ icon101.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isCoplanar.setIcon(icon101)
self.button_isCoplanar.setIconSize(QtCore.QSize(32, 32))
self.button_isCoplanar.setObjectName(_fromUtf8("button_isCoplanar"))
self.gridLayout_125.addWidget(self.button_isCoplanar, 2, 0, 1, 1)
self.button_isArea = QtGui.QPushButton(self.tab_24)
- icon99 = QtGui.QIcon()
- icon99.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isArea.setIcon(icon99)
+ icon102 = QtGui.QIcon()
+ icon102.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isArea.setIcon(icon102)
self.button_isArea.setIconSize(QtCore.QSize(32, 32))
self.button_isArea.setObjectName(_fromUtf8("button_isArea"))
self.gridLayout_125.addWidget(self.button_isArea, 7, 0, 1, 1)
self.button_isPerpendicular = QtGui.QPushButton(self.tab_24)
- icon100 = QtGui.QIcon()
- icon100.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isPerpendicular.setIcon(icon100)
+ icon103 = QtGui.QIcon()
+ icon103.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isPerpendicular.setIcon(icon103)
self.button_isPerpendicular.setIconSize(QtCore.QSize(32, 32))
self.button_isPerpendicular.setObjectName(_fromUtf8("button_isPerpendicular"))
self.gridLayout_125.addWidget(self.button_isPerpendicular, 1, 0, 1, 1)
self.button_isClearance = QtGui.QPushButton(self.tab_24)
- icon101 = QtGui.QIcon()
- icon101.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isClearance.setIcon(icon101)
+ icon104 = QtGui.QIcon()
+ icon104.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isClearance.setIcon(icon104)
self.button_isClearance.setIconSize(QtCore.QSize(32, 32))
self.button_isClearance.setObjectName(_fromUtf8("button_isClearance"))
self.gridLayout_125.addWidget(self.button_isClearance, 3, 0, 1, 1)
self.button_isRadius = QtGui.QPushButton(self.tab_24)
- icon102 = QtGui.QIcon()
- icon102.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isRadius.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isRadius.setIcon(icon102)
+ icon105 = QtGui.QIcon()
+ icon105.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isRadius.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isRadius.setIcon(icon105)
self.button_isRadius.setIconSize(QtCore.QSize(32, 32))
self.button_isRadius.setObjectName(_fromUtf8("button_isRadius"))
self.gridLayout_125.addWidget(self.button_isRadius, 8, 0, 1, 1)
- icon103 = QtGui.QIcon()
- icon103.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_7.addTab(self.tab_24, icon103, _fromUtf8(""))
+ icon106 = QtGui.QIcon()
+ icon106.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_7.addTab(self.tab_24, icon106, _fromUtf8(""))
self.gridLayout_128.addWidget(self.tabWidget_7, 0, 0, 1, 1)
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.gridLayout_34.addWidget(self.scrollArea, 0, 0, 1, 1)
@@ -2446,21 +2511,22 @@ class Ui_Form(object):
self.button_WF_quit = QtGui.QPushButton(Form)
self.button_WF_quit.setObjectName(_fromUtf8("button_WF_quit"))
self.horizontalLayout_43.addWidget(self.button_WF_quit)
- spacerItem26 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout_43.addItem(spacerItem26)
+ spacerItem28 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.horizontalLayout_43.addItem(spacerItem28)
self.label_release = QtGui.QLabel(Form)
self.label_release.setObjectName(_fromUtf8("label_release"))
self.horizontalLayout_43.addWidget(self.label_release)
self.gridLayout_34.addLayout(self.horizontalLayout_43, 1, 0, 1, 1)
self.retranslateUi(Form)
- self.tabWidget_7.setCurrentIndex(0)
- self.tabWidget.setCurrentIndex(2)
- self.tabWidget_2.setCurrentIndex(2)
+ self.tabWidget_7.setCurrentIndex(6)
+ self.tabWidget.setCurrentIndex(0)
+ self.tabWidget_2.setCurrentIndex(0)
self.point_loc_comboBox.setCurrentIndex(1)
self.tabWidget_8.setCurrentIndex(0)
self.tabWidget_3.setCurrentIndex(1)
self.transition_comboBox.setCurrentIndex(2)
+ self.Image_comboBox_axis_scale.setCurrentIndex(0)
self.tabWidget_9.setCurrentIndex(0)
self.tabWidget_10.setCurrentIndex(0)
self.ObjRot_comboBox_axis.setCurrentIndex(0)
@@ -2473,7 +2539,10 @@ class Ui_Form(object):
def retranslateUi(self, Form):
Form.setWindowTitle(_translate("Form", "WorkFeature", None))
- self.button_origin.setToolTip(_translate("Form", "Create at origin: a point and X,Y and Z axis and XZ,XY and YZ planes", None))
+ self.button_origin.setToolTip(_translate("Form", "Create at origin of the document: \n"
+" a point,\n"
+" X, Y, Z axis, \n"
+" XZ, XY, YZ planes.", None))
self.button_origin.setText(_translate("Form", "Origin", None))
self.groupBox_13.setTitle(_translate("Form", "Preferences :", None))
self.radioButton_verbose.setToolTip(_translate("Form", "Toggle here if you want a lot of information printed into report View.", None))
@@ -2508,14 +2577,17 @@ class Ui_Form(object):
self.tolerance_edit.setText(_translate("Form", "1e-10", None))
self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Origin_Tab_2), _translate("Form", "Ori. Pref.", None))
self.button_object_center.setToolTip(_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"
-" All center of Mass will be created too.\n"
+"if BBox is not toggled :\n"
+" This point is the MEAN location of all center of Mass (if exist) of all objects.\n"
+" All center of Mass of al selected object(s) will be created too.\n"
" \n"
-"if BBox check box is toggled\n"
-" This point is the center of the Global X,Y,Z bounding box of all objects.\n"
-" This bounding box alway exists (especially for draft objects).\n"
-" Be aware this point is not necessary the center of Mass of all Objects!", None))
+"if BBox check box is toggled :\n"
+" This point is the center of the Global X,Y,Z bounding box of all objects.\n"
+" This global bounding box alway exists (especially for draft objects).\n"
+" Be aware this point is not necessary the center of Mass of all Objects!\n"
+"\n"
+"- First select one or several Object(s)\n"
+"- Then push this button", None))
self.button_object_center.setText(_translate("Form", "Object(s) Center", None))
self.checkBox_object_center.setToolTip(_translate("Form", "if BBox check box is toggled\n"
" This point is the center of the Global X,Y,Z bounding box of all objects.\n"
@@ -2523,41 +2595,85 @@ class Ui_Form(object):
" Be aware this point is not necessary the center of Mass of all Objects!", None))
self.checkBox_object_center.setText(_translate("Form", "BBox", None))
self.button_Npoints_center.setToolTip(_translate("Form", "Point=(N Points):\n"
-"Create a Point at mean location of all selected points.\n"
-"- First select several Points\n"
+"Create a Point at MEAN location of all selected points.\n"
+"- First select several Points (at least 2)\n"
"- Then push this button", None))
self.button_Npoints_center.setText(_translate("Form", "Points Center", None))
- self.button_line_center.setToolTip(_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))
+ self.button_line_center.setToolTip(_translate("Form", "Create Point(s) :\n"
+"Cut each selected Line(s) in 2 (n) parts and\n"
+"create a (n-1) Point(s) along selected edge(s) except at extrema.\n"
+"The number indicates how many parts to consider.\n"
+"\n"
+"- First define the number of Parts, then\n"
+"- Select at least 2 Points and/or\n"
+"- Select one or several Line/Edge(s) and/or\n"
+"- Select one Plane/Face to process all (4) Edges and/or\n"
+"- Select one Object to process all Edges at once\n"
+"- Then Click on the button ", None))
self.button_line_center.setText(_translate("Form", "Line(s) Center", None))
self.spin_line_center.setToolTip(_translate("Form", "The number indicates in how many parts each selected Lines(s) will be cut (Max 100).", None))
- self.button_line_extrema.setToolTip(_translate("Form", "Create Points at start and end location of each selected Line(s).", None))
+ self.button_line_extrema.setToolTip(_translate("Form", "Create Points at start and end location of each selected Line(s).\n"
+"\n"
+"- Select one or several Line/Edge(s) and/or\n"
+"- Select one Plane/Face to process all (4) Edges and/or\n"
+"- Select one Object to process all Edges at once\n"
+"- Then Click on the button ", None))
self.button_line_extrema.setText(_translate("Form", "Line(s) Extrema", None))
- self.button_circle_center.setToolTip(_translate("Form", "Create a Point at center location of each selected Circle(s) or Arc(s).", None))
+ self.button_circle_center.setToolTip(_translate("Form", "Create a Point at center location of each selected Circle(s), Arc(s) or Ellipse(s).\n"
+"\n"
+"- Select one or several Circle(s), Arc(s) or Ellipse(s)\n"
+"- Then Click on the button", None))
self.button_circle_center.setText(_translate("Form", "Circle(s) Center", None))
- self.button_face_center.setToolTip(_translate("Form", "Create a Point at center location of each selected Face(s).", None))
+ self.button_face_center.setToolTip(_translate("Form", "Create a Point at center location of each selected Face(s).\n"
+"\n"
+"- Select one or several Plane/Face(s) to process and/or\n"
+"- Select one or several Object(s) to process all Faces at once\n"
+"- Then Click on the button ", None))
self.button_face_center.setText(_translate("Form", "Face(s) Center", None))
- self.button_line_face_point.setToolTip(_translate("Form", "Create a point at the intersection of the Line and Plane selected.", None))
+ self.button_line_face_point.setToolTip(_translate("Form", "Create a point at the intersection of the Line(s) and Plane(s) selected.\n"
+" \n"
+"First\n"
+"- Select at least 2 Points and/or\n"
+"- Select one or several Line/Edge(s) \n"
+"and Second\n"
+"- Select one or several Plane/Face(s) to process and/or\n"
+"- Select one or several Object(s) to process all Faces at once\n"
+"- Then Click on the button\n"
+"\n"
+"Be aware that if the plane is not extended enough the intersection Point is still created (as if). ", None))
self.button_line_face_point.setText(_translate("Form", "Point=(Line,Face) ", None))
self.button_point_face_point.setToolTip(_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"
+"First\n"
+"- Select one (or several) Point(s) and/or\n"
+"- Select one or several Line/Edge(s) \n"
+"and Second\n"
+"- Select one or several Plane/Face(s) to process and/or\n"
+"- Select one or several Object(s) to process all Faces at once\n"
+"- Then Click on the 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))
+"The Vector TC is perpendicular to the plane.\n"
+"\n"
+"Be aware that if the plane is not extended enough the intersection Point is still created (as if). ", None))
self.button_point_face_point.setText(_translate("Form", "Point(s)=(Pt(s),Face(s))", None))
self.button_point_line_point.setToolTip(_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"
+" Create projection(s) of Point(s) onto Line(s).\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))
+" First\n"
+" - Select one (or several) Point(s)\n"
+" and Second\n"
+" - Select one or several Line/Edge(s) and/or\n"
+" - Select one or several Plane/Face(s) to process and/or\n"
+" - Select one or several Object(s) to process all Faces at once\n"
+" - Then Click on the button\n"
+" \n"
+" Plot the intersection point T on a Line given one Linee and One Point C.\n"
+" The Vector TC is perpendicular to the Line.\n"
+" The symetric point Cprime is also created as TC=TCprime.\n"
+" \n"
+" Be aware that if the line is not extended enough the intersection Point is still created (as if).", None))
self.button_point_line_point.setText(_translate("Form", "Point(s)=(Pt(s),Line(s)) ", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Point_Tab1_3), _translate("Form", "Point 1/3", None))
self.tabWidget.setTabToolTip(self.tabWidget.indexOf(self.Point_Tab1_3), _translate("Form", "Create Point(s)", None))
@@ -2618,7 +2734,7 @@ class Ui_Form(object):
"- Then click on this button.", None))
self.button_object_Npoint.setText(_translate("Form", "Object(s) N Point(s)", None))
self.button_point_to_sketch.setToolTip(_translate("Form", "Transform Point(s) in Sketch\'s Point(s) by projection onto the Sketch\'s Plane:\n"
-"- First select an existing Skecth;\n"
+"- First select an existing Sketch;\n"
"- Select as much as Points needed;\n"
"Then click on this button.", None))
self.button_point_to_sketch.setText(_translate("Form", "Point(s) to Sketch", None))
@@ -2854,37 +2970,13 @@ class Ui_Form(object):
self.button_line_to_sketch.setText(_translate("Form", "Axis(es) to Sketch", None))
self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.Axis_Tab31_3), _translate("Form", "Axis 3/3", None))
self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Axis_Tab), _translate("Form", "Axis", None))
- self.button_linecenter_circle.setToolTip(_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))
- self.button_linecenter_circle.setText(_translate("Form", "Circle=(Axis, center)", None))
- self.radius_circle.setToolTip(_translate("Form", "Radius of the Circle.", None))
- self.radius_circle.setText(_translate("Form", "10.0", None))
- self.button_linepoint_circle.setToolTip(_translate("Form", "Select an Axis and a Point to create a Circle\n"
-"centered on the Axis and tangenting the Point.", None))
- self.button_linepoint_circle.setText(_translate("Form", "Circle=(Axis, point)", None))
- self.button_3points_circle.setToolTip(_translate("Form", "Select 3 Points to create a Circle.", None))
- self.button_3points_circle.setText(_translate("Form", "Circle=(3 points)", None))
- self.button_cut_circle.setToolTip(_translate("Form", "Create Arcs:\n"
-"Cut the selected Circle(s) or Arc(s) in 2(n) parts and create 2(n) Arcs.\n"
-"The number indicates in how many parts to cut.\n"
-"- First select as many Circles and Arcs you want\n"
-"- Second set the number of parts\n"
-"- Third push this button\n"
-"\n"
-"NB: You can change the successive lines to be bicolor (red and white) \n"
-"in \"Ori. Pref.\" TAB", None))
- self.button_cut_circle.setText(_translate("Form", "Arcs=Cut(Circle)", None))
- self.spin_circle_cut.setToolTip(_translate("Form", "The number indicates in how many parts the selected Circle will be cut (Max 100).", None))
- self.button_3points_ellipse.setToolTip(_translate("Form", "Select a center and 2 Points to create an Ellipse.", None))
- self.button_3points_ellipse.setText(_translate("Form", "Ellipse=(3 points)", None))
- self.button_circle_to_sketch.setToolTip(_translate("Form", "Transform Circle(s) and Arc(s) in Sketch\'s object(s) by projection onto the Sketch\'s Plane:\n"
-"- First select an existing Skecth;\n"
-"- Select as much as Circles and arcs needed;\n"
-"Then click on this button.", None))
- self.button_circle_to_sketch.setText(_translate("Form", "Circle(s) to Sketch", None))
- self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_16), _translate("Form", "Circle", None))
self.lineEdit.setText(_translate("Form", "Examples from http://www.mathcurve.com/", None))
+ self.button_4points_bezier.setToolTip(_translate("Form", "Bezier Cubic=(4 Points):\n"
+"Create a Wire (Bezier Cubic) from 4 selected points.\n"
+"- First 4 Points\n"
+"- Then push this button", None))
+ self.button_4points_bezier.setText(_translate("Form", "4 Points Bezier Cubic", None))
+ self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.Wire_Tab1_3), _translate("Form", "Wire", None))
self.groupBox_14.setTitle(_translate("Form", "Equation :", None))
self.label_y_3.setText(_translate("Form", "Y (a,b,t) ", None))
self.ParCurve_a_2.setText(_translate("Form", "10 # Radius", None))
@@ -2923,7 +3015,7 @@ class Ui_Form(object):
self.ParCurve_button_store_2.setText(_translate("Form", "Store", None))
self.ParCurve_button_apply_2.setToolTip(_translate("Form", "Click to visualize the curve.", None))
self.ParCurve_button_apply_2.setText(_translate("Form", "Apply", None))
- self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_14), _translate("Form", "Parametric 2D", None))
+ self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.Wire_Tab2_3), _translate("Form", "Parametric 2D", None))
self.ParCurve_comboBox_3.setToolTip(_translate("Form", "Choose another curve from the list.", None))
self.ParCurve_button_edit_3.setToolTip(_translate("Form", "Click to access to a table where you can edit all parameters of all curves and \n"
"save your custom curves.", None))
@@ -2961,8 +3053,44 @@ class Ui_Form(object):
self.checkBox_polyline_3.setText(_translate("Form", "Polyline", None))
self.checkBox_bspline_3.setText(_translate("Form", "Bspline", None))
self.checkBox_bezier_3.setText(_translate("Form", "Bezier", None))
- self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_15), _translate("Form", "Parametric 3D", None))
- self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Wire_Tab_2), _translate("Form", "Wire", None))
+ self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.Wire_Tab3_3), _translate("Form", "Parametric 3D", None))
+ self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Wire_Tab), _translate("Form", "Wire", None))
+ self.button_linecenter_circle.setToolTip(_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))
+ self.button_linecenter_circle.setText(_translate("Form", "Circle=(Axis, center)", None))
+ self.radius_circle.setToolTip(_translate("Form", "Radius of the Circle.", None))
+ self.radius_circle.setText(_translate("Form", "10.0", None))
+ self.button_linepoint_circle.setToolTip(_translate("Form", "Select an Axis and a Point to create a Circle\n"
+"centered on the Axis and tangenting the Point.", None))
+ self.button_linepoint_circle.setText(_translate("Form", "Circle=(Axis, point)", None))
+ self.button_3points_ellipse.setToolTip(_translate("Form", "Select a center and 2 Points to create an Ellipse.", None))
+ self.button_3points_ellipse.setText(_translate("Form", "Ellipse=(3 points)", None))
+ self.button_circle_to_sketch.setToolTip(_translate("Form", "Transform Circle(s) and Arc(s) in Sketch\'s object(s) by projection onto the Sketch\'s Plane:\n"
+"- First select an existing Skecth;\n"
+"- Select as much as Circles and arcs needed;\n"
+"Then click on this button.", None))
+ self.button_circle_to_sketch.setText(_translate("Form", "Circle(s) to Sketch", None))
+ self.button_3points_arc.setToolTip(_translate("Form", "Arc=(3 Points):\n"
+"Create one Arc depending on 3 points.\n"
+"\n"
+"- First select 3 Points\n"
+"- Then Click on the button", None))
+ self.button_3points_arc.setText(_translate("Form", "Arc=(3 points)", None))
+ self.button_3points_circle.setToolTip(_translate("Form", "Select 3 Points to create a Circle.", None))
+ self.button_3points_circle.setText(_translate("Form", "Circle=(3 points)", None))
+ self.button_cut_circle.setToolTip(_translate("Form", "Create Arcs:\n"
+"Cut the selected Circle(s) or Arc(s) in 2(n) parts and create 2(n) Arcs.\n"
+"The number indicates in how many parts to cut.\n"
+"- First select as many Circles and Arcs you want\n"
+"- Second set the number of parts\n"
+"- Third push this button\n"
+"\n"
+"NB: You can change the successive lines to be bicolor (red and white) \n"
+"in \"Ori. Pref.\" TAB", None))
+ self.button_cut_circle.setText(_translate("Form", "Arcs=Cut(Circle)", None))
+ self.spin_circle_cut.setToolTip(_translate("Form", "The number indicates in how many parts the selected Circle will be cut (Max 100).", None))
+ self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Circle_Tab), _translate("Form", "Circle", None))
self.button_threepoints_plane.setToolTip(_translate("Form", "Plane=(3 Points):\n"
"Create a Plane crossing 3 Points.\n"
"- First select 3 different points\n"
@@ -3123,7 +3251,7 @@ class Ui_Form(object):
"- Then push this button\n"
"", None))
self.button_beam.setText(_translate("Form", "Beam", None))
- self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_17), _translate("Form", "Sweep", None))
+ self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Sweep_Tab), _translate("Form", "Sweep", None))
self.button_boundingboxes.setToolTip(_translate("Form", "Create bounding boxes around each of selected object(s).\n"
"6 rectangles at the limits of each bounding boxes will be created.", None))
self.button_boundingboxes.setText(_translate("Form", "Bounding Box(es)", None))
@@ -3238,6 +3366,39 @@ class Ui_Form(object):
" Authors = 2015 Gaël Ecorchard (Galou)", None))
self.button_difference.setText(_translate("Form", "Difference", None))
self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Objects_Tab2_2), _translate("Form", "Object", None))
+ self.button_scale_image.setToolTip(_translate("Form", "Copy and Scale Image(s) :\n"
+"Scale an image along desired direction(s) (make a copy first of the original Image).\n"
+"- First define the direction(s) on the right combo (default is XY):\n"
+" if X is selected then only X direction will be scaled\n"
+" if XY is selected then the scale will be squared in X and Y directions together\n"
+"- Select one or several Images (in combo view)\n"
+"- Select one Line (or 2 Points) (close to the Image) you want to define new dimension.\n"
+"(better to select a Line strictly in X direction if you want to enlarge/squize the Image in X direction)\n"
+"- Then give the target dimension of the Line (on the last right LineEdit).\n"
+"Then push the button\n"
+"", None))
+ self.button_scale_image.setText(_translate("Form", "Scale", None))
+ self.Image_comboBox_axis_scale.setToolTip(_translate("Form", "Axis of Scaling for image.\n"
+"Options :\n"
+" XY\n"
+" XZ\n"
+" YZ\n"
+" X\n"
+" Y\n"
+" Z\n"
+"i.e.: if XY is selected then the X and Y dimensions will be scaled together.\n"
+"if only X is selected the only X dimension will be scaled.\n"
+"\n"
+"Note that some options are invalid regarding the image\'s plane.", None))
+ self.Image_comboBox_axis_scale.setItemText(0, _translate("Form", "XY", None))
+ self.Image_comboBox_axis_scale.setItemText(1, _translate("Form", "XZ", None))
+ self.Image_comboBox_axis_scale.setItemText(2, _translate("Form", "YZ", None))
+ self.Image_comboBox_axis_scale.setItemText(3, _translate("Form", "X", None))
+ self.Image_comboBox_axis_scale.setItemText(4, _translate("Form", "Y", None))
+ self.Image_comboBox_axis_scale.setItemText(5, _translate("Form", "Z", None))
+ self.length_image.setToolTip(_translate("Form", "Desired length(s).", None))
+ self.length_image.setText(_translate("Form", "100.0", None))
+ self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_2), _translate("Form", "Image", None))
self.button_alignface2view.setToolTip(_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"
"These objects will be moved not the point of view.\n"
diff --git a/WorkFeature/Ui/WFGui_2015.ui b/WorkFeature/Ui/WFGui_2015.ui
index 2f3bd4c..197c35b 100644
--- a/WorkFeature/Ui/WFGui_2015.ui
+++ b/WorkFeature/Ui/WFGui_2015.ui
@@ -57,7 +57,7 @@
QTabWidget::West
- 0
+ 8
@@ -71,7 +71,10 @@
-
- Create at origin: a point and X,Y and Z axis and XZ,XY and YZ planes
+ Create at origin of the document:
+ a point,
+ X, Y, Z axis,
+ XZ, XY, YZ planes.
Origin
@@ -228,7 +231,7 @@
-
- 2
+ 0
@@ -244,14 +247,17 @@
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 not toggled :
+ This point is the MEAN location of all center of Mass (if exist) of all objects.
+ All center of Mass of al selected object(s) will be created too.
-if BBox check box 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!
+if BBox check box is toggled :
+ This point is the center of the Global X,Y,Z bounding box of all objects.
+ This global bounding box alway exists (especially for draft objects).
+ Be aware this point is not necessary the center of Mass of all Objects!
+
+- First select one or several Object(s)
+- Then push this button
Object(s) Center
@@ -287,8 +293,8 @@ if BBox check box is toggled
Point=(N Points):
-Create a Point at mean location of all selected points.
-- First select several Points
+Create a Point at MEAN location of all selected points.
+- First select several Points (at least 2)
- Then push this button
@@ -317,9 +323,17 @@ Create a Point at mean location of all selected points.
- 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.
+ Create Point(s) :
+Cut each selected Line(s) in 2 (n) parts and
+create a (n-1) Point(s) along selected edge(s) except at extrema.
+The number indicates how many parts to consider.
+
+- First define the number of Parts, then
+- Select at least 2 Points and/or
+- Select one or several Line/Edge(s) and/or
+- Select one Plane/Face to process all (4) Edges and/or
+- Select one Object to process all Edges at once
+- Then Click on the button
Line(s) Center
@@ -369,7 +383,12 @@ The number indicates how many parts to consider.
-
- Create Points at start and end location of each selected Line(s).
+ Create Points at start and end location of each selected Line(s).
+
+- Select one or several Line/Edge(s) and/or
+- Select one Plane/Face to process all (4) Edges and/or
+- Select one Object to process all Edges at once
+- Then Click on the button
Line(s) Extrema
@@ -389,7 +408,10 @@ The number indicates how many parts to consider.
-
- Create a Point at center location of each selected Circle(s) or Arc(s).
+ Create a Point at center location of each selected Circle(s), Arc(s) or Ellipse(s).
+
+- Select one or several Circle(s), Arc(s) or Ellipse(s)
+- Then Click on the button
Circle(s) Center
@@ -409,7 +431,11 @@ The number indicates how many parts to consider.
-
- Create a Point at center location of each selected Face(s).
+ Create a Point at center location of each selected Face(s).
+
+- Select one or several Plane/Face(s) to process and/or
+- Select one or several Object(s) to process all Faces at once
+- Then Click on the button
Face(s) Center
@@ -429,7 +455,17 @@ The number indicates how many parts to consider.
-
- Create a point at the intersection of the Line and Plane selected.
+ Create a point at the intersection of the Line(s) and Plane(s) selected.
+
+First
+- Select at least 2 Points and/or
+- Select one or several Line/Edge(s)
+and Second
+- Select one or several Plane/Face(s) to process and/or
+- Select one or several Object(s) to process all Faces at once
+- Then Click on the button
+
+Be aware that if the plane is not extended enough the intersection Point is still created (as if).
Point=(Line,Face)
@@ -451,12 +487,19 @@ The number indicates how many parts to consider.
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
+
+First
+- Select one (or several) Point(s) and/or
+- Select one or several Line/Edge(s)
+and Second
+- Select one or several Plane/Face(s) to process and/or
+- Select one or several Object(s) to process all Faces at once
+- Then Click on the button
Plot the intersection point T on a Plane given one Plane and One Point C.
-The Vector TC is perpendicular to the plane.
+The Vector TC is perpendicular to the plane.
+
+Be aware that if the plane is not extended enough the intersection Point is still created (as if).
Point(s)=(Pt(s),Face(s))
@@ -477,14 +520,21 @@ The Vector TC is perpendicular to the plane.
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
+ Create projection(s) of Point(s) onto Line(s).
-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.
+ First
+ - Select one (or several) Point(s)
+ and Second
+ - Select one or several Line/Edge(s) and/or
+ - Select one or several Plane/Face(s) to process and/or
+ - Select one or several Object(s) to process all Faces at once
+ - Then Click on the button
+
+ 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.
+
+ Be aware that if the line is not extended enough the intersection Point is still created (as if).
Point(s)=(Pt(s),Line(s))
@@ -879,7 +929,7 @@ MB2 and MB3 can still be used for view zoom and view rotation.
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.
@@ -1003,7 +1053,7 @@ One (x, y, z) triplet per line seperated by blank.
-
- 2
+ 0
@@ -2105,236 +2155,7 @@ Then click on this button.
-
-
-
- ../Icons/WF_circle.svg../Icons/WF_circle.svg
-
-
- Circle
-
-
- -
-
-
-
-
-
- Select an Axis and a Point to create a Circle
-centered on the Point, perpendicular to the Axis
-with the given radius.
-
-
- Circle=(Axis, center)
-
-
-
- ../Icons/WF_lineCenterCircle.svg../Icons/WF_lineCenterCircle.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 40
- 0
-
-
-
-
- 60
- 16777215
-
-
-
- Radius of the Circle.
-
-
- 10.0
-
-
-
-
-
- -
-
-
- Select an Axis and a Point to create a Circle
-centered on the Axis and tangenting the Point.
-
-
- Circle=(Axis, point)
-
-
-
- ../Icons/WF_linePointCircle.svg../Icons/WF_linePointCircle.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Select 3 Points to create a Circle.
-
-
- Circle=(3 points)
-
-
-
- ../Icons/WF_3pointsCircle.svg../Icons/WF_3pointsCircle.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
-
-
- Create Arcs:
-Cut the selected Circle(s) or Arc(s) in 2(n) parts and create 2(n) Arcs.
-The number indicates in how many parts to cut.
-- First select as many Circles and Arcs you want
-- Second set the number of parts
-- Third push this button
-
-NB: You can change the successive lines to be bicolor (red and white)
-in "Ori. Pref." TAB
-
-
- Arcs=Cut(Circle)
-
-
-
- ../Icons/WF_cutCircle.svg../Icons/WF_cutCircle.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 40
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- The number indicates in how many parts the selected Circle will be cut (Max 100).
-
-
- 2
-
-
- 100
-
-
- 1
-
-
-
-
-
- -
-
-
- Select a center and 2 Points to create an Ellipse.
-
-
- Ellipse=(3 points)
-
-
-
- ../Icons/WF_3pointsEllipse.svg../Icons/WF_3pointsEllipse.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- Transform Circle(s) and Arc(s) in Sketch's object(s) by projection onto the Sketch's Plane:
-- First select an existing Skecth;
-- Select as much as Circles and arcs needed;
-Then click on this button.
-
-
- Circle(s) to Sketch
-
-
-
- ../Icons/WF_2Sketch.svg../Icons/WF_2Sketch.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 121
-
-
-
-
-
-
-
+
../Icons/WF_wire.svg../Icons/WF_wire.svg
@@ -2364,7 +2185,64 @@ Then click on this button.
0
-
+
+
+ Wire
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 588
+
+
+
+
+ -
+
+
+ Bezier Cubic=(4 Points):
+Create a Wire (Bezier Cubic) from 4 selected points.
+- First 4 Points
+- Then push this button
+
+
+ 4 Points Bezier Cubic
+
+
+
+ ../Icons/WF_bezierCubic2nodes.svg../Icons/WF_bezierCubic2nodes.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Projects Wires on a Plane:
+
+- First select an existing Face/Plane or 3 Points
+- Second one or several Wires
+- Then push this button
+
+
+ Flatten Wire
+
+
+
+
+
+
Parametric 2D
@@ -2379,7 +2257,7 @@ Then click on this button.
0
0
- 249
+ 245
648
@@ -2970,7 +2848,7 @@ To save your curve you need to go to "Edit".
-
+
Parametric 3D
@@ -3633,6 +3511,259 @@ To save your curve you need to go to "Edit".
+
+
+
+ ../Icons/WF_circle.svg../Icons/WF_circle.svg
+
+
+ Circle
+
+
+ -
+
+
-
+
+
+ Select an Axis and a Point to create a Circle
+centered on the Point, perpendicular to the Axis
+with the given radius.
+
+
+ Circle=(Axis, center)
+
+
+
+ ../Icons/WF_lineCenterCircle.svg../Icons/WF_lineCenterCircle.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Radius of the Circle.
+
+
+ 10.0
+
+
+
+
+
+ -
+
+
+ Select an Axis and a Point to create a Circle
+centered on the Axis and tangenting the Point.
+
+
+ Circle=(Axis, point)
+
+
+
+ ../Icons/WF_linePointCircle.svg../Icons/WF_linePointCircle.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Select a center and 2 Points to create an Ellipse.
+
+
+ Ellipse=(3 points)
+
+
+
+ ../Icons/WF_3pointsEllipse.svg../Icons/WF_3pointsEllipse.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Transform Circle(s) and Arc(s) in Sketch's object(s) by projection onto the Sketch's Plane:
+- First select an existing Skecth;
+- Select as much as Circles and arcs needed;
+Then click on this button.
+
+
+ Circle(s) to Sketch
+
+
+
+ ../Icons/WF_2Sketch.svg../Icons/WF_2Sketch.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 121
+
+
+
+
+ -
+
+
+ Arc=(3 Points):
+Create one Arc depending on 3 points.
+
+- First select 3 Points
+- Then Click on the button
+
+
+ Arc=(3 points)
+
+
+
+ ../Icons/WF_3pointsArc.svg../Icons/WF_3pointsArc.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Select 3 Points to create a Circle.
+
+
+ Circle=(3 points)
+
+
+
+ ../Icons/WF_3pointsCircle.svg../Icons/WF_3pointsCircle.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
-
+
+
+ Create Arcs:
+Cut the selected Circle(s) or Arc(s) in 2(n) parts and create 2(n) Arcs.
+The number indicates in how many parts to cut.
+- First select as many Circles and Arcs you want
+- Second set the number of parts
+- Third push this button
+
+NB: You can change the successive lines to be bicolor (red and white)
+in "Ori. Pref." TAB
+
+
+ Arcs=Cut(Circle)
+
+
+
+ ../Icons/WF_cutCircle.svg../Icons/WF_cutCircle.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ The number indicates in how many parts the selected Circle will be cut (Max 100).
+
+
+ 2
+
+
+ 100
+
+
+ 1
+
+
+
+
+
+
+
@@ -4301,7 +4432,7 @@ Create 3 Planes (XY, XZ and YZ) at center location of all selected Object(s).
-
+
../Icons/WF_Beam.svg../Icons/WF_Beam.svg
@@ -4457,7 +4588,7 @@ NB: You can change first:
- -
+
-
Qt::Vertical
@@ -4496,6 +4627,23 @@ Will extrude a Section along a Linear Trajectory.
+ -
+
+
+ Beam Cut Miter
+
+
+
+ ../Icons/WF_BeamMiterCut.svg../Icons/WF_BeamMiterCut.svg
+
+
+
+ 32
+ 32
+
+
+
+
@@ -5168,6 +5316,214 @@ Original code from HighlightDifference.FCMacro
+
+
+ Image
+
+
+ -
+
+
-
+
+
+ Rotate
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Qt::LeftToRight
+
+
+ 0
+
+
-
+
+ X
+
+
+ -
+
+ Y
+
+
+ -
+
+ Z
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Copy and Scale Image(s) :
+Scale an image along desired direction(s) (make a copy first of the original Image).
+- First define the direction(s) on the right combo (default is XY):
+ if X is selected then only X direction will be scaled
+ if XY is selected then the scale will be squared in X and Y directions together
+- Select one or several Images (in combo view)
+- Select one Line (or 2 Points) (close to the Image) you want to define new dimension.
+(better to select a Line strictly in X direction if you want to enlarge/squize the Image in X direction)
+- Then give the target dimension of the Line (on the last right LineEdit).
+Then push the button
+
+
+
+ Scale
+
+
+
+ ../Icons/WF_ImageScale.svg../Icons/WF_ImageScale.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Axis of Scaling for image.
+Options :
+ XY
+ XZ
+ YZ
+ X
+ Y
+ Z
+i.e.: if XY is selected then the X and Y dimensions will be scaled together.
+if only X is selected the only X dimension will be scaled.
+
+Note that some options are invalid regarding the image's plane.
+
+
+ Qt::LeftToRight
+
+
+ 0
+
+
-
+
+ XY
+
+
+ -
+
+ XZ
+
+
+ -
+
+ YZ
+
+
+ -
+
+ X
+
+
+ -
+
+ Y
+
+
+ -
+
+ Z
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 60
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ Desired length(s).
+
+
+ 100.0
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 650
+
+
+
+
+
+
Modif.
diff --git a/WorkFeature/Utils/WF_Utils.py b/WorkFeature/Utils/WF_Utils.py
index a347b75..9f15114 100644
--- a/WorkFeature/Utils/WF_Utils.py
+++ b/WorkFeature/Utils/WF_Utils.py
@@ -8,6 +8,8 @@ try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
+
+import FreeCAD as App
###############################################################################
@@ -154,7 +156,7 @@ def read_text(filename):
print "\nERROR : " + str(filename) + " not a valid file !"
return None
-
+
###############################################################################
# Classes
class DefineAndConnectEvents():
diff --git a/WorkFeature/Utils/WF_curve.py b/WorkFeature/Utils/WF_curve.py
new file mode 100644
index 0000000..83441a6
--- /dev/null
+++ b/WorkFeature/Utils/WF_curve.py
@@ -0,0 +1,323 @@
+# -*- coding: utf-8 -*-
+"""
+Created on Tue Mar 1 06:59:10 2016
+
+@author: laurent
+"""
+from __future__ import division
+from math import factorial
+
+
+# Pascal's triangle
+p_t = [ [1], # n=0
+ [1,1], # n=1
+ [1,2,1], # n=2
+ [1,3,3,1], # n=3
+ [1,4,6,4,1], # n=4
+ [1,5,10,10,5,1], # n=5
+ [1,6,15,20,15,6,1]] # n=6
+
+#==============================================================================
+# binomial(n,k):
+# while(n >= lut.length):
+# s = lut.length
+# nextRow = new array(size=s+1)
+# nextRow[0] = 1
+# for(i=1, prev=s-1; i<prev; i++):
+# nextRow[i] = lut[prev][i-1] + lut[prev][i]
+# nextRow[s] = 1
+# lut.add(nextRow)
+# return lut[n][k]
+#==============================================================================
+def binomial(n, i):
+ """ return binomial terms from Pascal triangle from predefined list or
+ calculate the terms if not already in the list.
+ """
+ global p_t
+ m_l = len(p_t)
+ while n >= m_l:
+ m_next_row = []
+ m_next_row.append(1)
+ for m_i in range(1,m_l):
+ m_next_row.append(p_t[m_l-1][m_i-1]+p_t[m_l-1][m_i])
+ m_next_row.append(1)
+ # print m_next_row
+ p_t.append(m_next_row)
+ m_l = len(p_t)
+
+ return p_t[n][i]
+
+
+def binomial_term(n, i):
+ """ binomial coefficient = n! / (i!(n - i)!)
+ """
+ return factorial(n) / (factorial(i) * factorial(n - i))
+
+
+#==============================================================================
+# function Bezier(n,t):
+# sum = 0
+# for(k=0; k= longueur: #
+# dash01 = int(longueur / 6) # altenate solution
+# space01 = int(longueur / 6) # altenate solution
+# dash02 = int(longueur / 6) # altenate solution
+# space02 = int(longueur / 6) # altenate solution
+# FreeCAD.Console.PrintError("Alernate Dash"+"\n") # altenate solution
+# numberOfPoints = longueur #
+# points = selectionObjects[compt_Oject].Shape.Edges[compt_Edges].discretize(int(numberOfPoints)) # Dicretize
+############################################################################################################################
+#####selection 1 objet ou sous objet a la fois dans la vue 3D getSelectionEx()#############################################
+ selectionObjects = FreeCADGui.Selection.getSelectionEx() # Select an object or sub object getSelectionEx
+ for selection in selectionObjects: #
+ for selectedEdge in selection.SubObjects: #
+ longueur = (selectedEdge.Length) * precision #
+ if (dash01 + space01 + dash02 + space02) >= longueur: # altenate solution
+ dash01 = int(longueur / 6) # altenate solution
+ space01 = int(longueur / 6) # altenate solution
+ dash02 = int(longueur / 6) # altenate solution
+ space02 = int(longueur / 6) # altenate solution
+ FreeCAD.Console.PrintError("Alernate Dash"+"\n") # altenate solution
+ numberOfPoints = longueur #
+ points = selectedEdge.Edges[0].discretize(int(numberOfPoints)) # Dicretize
+###########################################################################################################################
+ #######cut line in dashDot coordinates#########################################################################
+ compt = 0
+ points2 += [points[0]]
+
+ for ii2 in range(len(points)):
+ try:
+ compt += int(dash01)
+ points2 += [points[compt]]
+ compt += int(space01)
+ points2 += [points[compt]]
+ if typeLine > 1: # typeLine = 2 "___ _ ___ _ ___ _ " dash dot
+ compt += int(dash02)
+ points2 += [points[compt]]
+ compt += int(space01)
+ points2 += [points[compt]]
+ if typeLine > 2: # typeLine = 3 "___ _ _ ___ _ _ ___" dash dot dot
+ compt += int(dash02)
+ points2 += [points[compt]]
+ compt += int(space01)
+ points2 += [points[compt]]
+ except Exception:
+ points2 += [points[-1]]
+ points2[-1] = points[-1]
+ break
+
+ createLines(len(points2), points2)
+ #######cut line in dash coordinates##############################################################################
+
+ if compLine == 0:
+ comp = Part.makeCompound(ligne) # si compount ligne separee
+ Part.show(comp) # si compount ligne separee
+ else:
+ comp2 += ligne
+ colorize()
+ ligne[:] = [] # si compount ligne separee
+
+ points[:] = []
+ points2[:] = []
+
+ for i in nom:
+ FreeCAD.ActiveDocument.removeObject(i)
+
+ if compLine != 0: # 1 = toutes les selections en un compount
+ comp = Part.makeCompound(comp2) # si compount ensemble complet
+ Part.show(comp) # si compount ensemble complet
+ colorize()
+
+ nom[:] = []
+ ligne[:] = []
+ comp2[:] = []
+ points[:] = []
+ points2[:] = []
+
+ except Exception:
+ FreeCAD.Console.PrintError("can not create"+"\n")
+ else:
+ FreeCAD.Console.PrintError("Zero not permitted"+"\n")
+
+#dashLine(dash01 = 1.0, space01 = 0.2, dash02 = 0.2, space02 = 0.2, compLine = 0, red = 0, green = 0, blue = 255, typeLine = 2)
\ No newline at end of file
diff --git a/WorkFeature/Utils/WF_plane.py b/WorkFeature/Utils/WF_plane.py
new file mode 100644
index 0000000..18490c2
--- /dev/null
+++ b/WorkFeature/Utils/WF_plane.py
@@ -0,0 +1,104 @@
+# -*- coding: utf-8 -*-
+"""
+Created on Thu Jan 21 22:10:41 2016
+
+@author: laurent
+"""
+
+import numpy as np
+import scipy.optimize
+
+def fitPLaneLTSQ(XYZ):
+ # Fits a plane to a point cloud,
+ # Where Z = aX + bY + c ----Eqn #1
+ # Rearanging Eqn1: aX + bY -Z +c =0
+ # Gives normal (a,b,-1)
+ # Normal = (a,b,-1)
+ [rows,cols] = XYZ.shape
+ G = np.ones((rows,3))
+ G[:,0] = XYZ[:,0] #X
+ G[:,1] = XYZ[:,1] #Y
+ Z = XYZ[:,2]
+ (a,b,c),resid,rank,s = np.linalg.lstsq(G,Z)
+ normal = (a,b,-1)
+ nn = np.linalg.norm(normal)
+ normal = normal / nn
+ return normal
+
+
+def fitPlaneSVD(XYZ):
+ [rows,cols] = XYZ.shape
+ # Set up constraint equations of the form AB = 0,
+ # where B is a column vector of the plane coefficients
+ # in the form b(1)*X + b(2)*Y +b(3)*Z + b(4) = 0.
+ p = (np.ones((rows,1)))
+ AB = np.hstack([XYZ,p])
+ [u, d, v] = np.linalg.svd(AB,0)
+ B = v[3,:]; # Solution is last column of v.
+ nn = np.linalg.norm(B[0:3])
+ B = B / nn
+ return B[0:3]
+
+
+def fitPlaneEigen(XYZ):
+ # Works, in this case but don't understand!
+ average=sum(XYZ)/XYZ.shape[0]
+ covariant=np.cov(XYZ - average)
+ eigenvalues,eigenvectors = np.linalg.eig(covariant)
+ want_max = eigenvectors[:,eigenvalues.argmax()]
+ (c,a,b) = want_max[3:6] # Do not understand! Why 3:6? Why (c,a,b)?
+ normal = np.array([a,b,c])
+ nn = np.linalg.norm(normal)
+ return normal / nn
+
+def fitPlaneSolve(XYZ):
+ X = XYZ[:,0]
+ Y = XYZ[:,1]
+ Z = XYZ[:,2]
+ npts = len(X)
+ A = np.array([ [sum(X*X), sum(X*Y), sum(X)],
+ [sum(X*Y), sum(Y*Y), sum(Y)],
+ [sum(X), sum(Y), npts] ])
+ B = np.array([ [sum(X*Z), sum(Y*Z), sum(Z)] ])
+ normal = np.linalg.solve(A,B.T)
+ nn = np.linalg.norm(normal)
+ normal = normal / nn
+ return normal.ravel()
+
+def fitPlaneOptimize(XYZ):
+ def residiuals(parameter,f,x,y):
+ return [(f[i] - model(parameter,x[i],y[i])) for i in range(len(f))]
+
+
+ def model(parameter, x, y):
+ a, b, c = parameter
+ return a*x + b*y + c
+
+ X = XYZ[:,0]
+ Y = XYZ[:,1]
+ Z = XYZ[:,2]
+ p0 = [1., 1.,1.] # initial guess
+ result = scipy.optimize.leastsq(residiuals, p0, args=(Z,X,Y))[0]
+ normal = result[0:3]
+ nn = np.linalg.norm(normal)
+ normal = normal / nn
+ return normal
+
+
+if __name__=="__main__":
+ XYZ = np.array([
+ [0,0,1],
+ [0,1,2],
+ [0,2,3],
+ [1,0,1],
+ [1,1,2],
+ [1,2,3],
+ [2,0,1],
+ [2,1,2],
+ [2,2,3]
+ ])
+ print "Solve: ",fitPlaneSolve(XYZ)
+ print "Optim: ",fitPlaneOptimize(XYZ)
+ print "SVD: ",fitPlaneSVD(XYZ)
+ print "LTSQ: ",fitPLaneLTSQ(XYZ)
+ print "Eigen: ",fitPlaneEigen(XYZ)
\ No newline at end of file
diff --git a/WorkFeature/Utils/WF_points_set.pyc b/WorkFeature/Utils/WF_points_set.pyc
new file mode 100644
index 0000000..754864b
Binary files /dev/null and b/WorkFeature/Utils/WF_points_set.pyc differ
diff --git a/WorkFeature/WFGui_2015.py b/WorkFeature/WFGui_2015.py
index 06e5bb5..a2ed069 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.ui'
+# Form implementation generated from reading ui file 'WFGui_2016_09.ui'
#
-# Created: Tue Mar 29 07:16:30 2016
+# Created: Sat Sep 10 09:18:06 2016
# by: PySide UI code generator 4.11.3
#
# WARNING! All changes made in this file will be lost!
@@ -685,105 +685,49 @@ class Ui_Form(object):
icon44 = QtGui.QIcon()
icon44.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_axis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.tabWidget_7.addTab(self.Axis_Tab, icon44, _fromUtf8(""))
- self.tab_16 = QtGui.QWidget()
- self.tab_16.setObjectName(_fromUtf8("tab_16"))
- self.gridLayout = QtGui.QGridLayout(self.tab_16)
- self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
- self.horizontalLayout_66 = QtGui.QHBoxLayout()
- self.horizontalLayout_66.setObjectName(_fromUtf8("horizontalLayout_66"))
- self.button_linecenter_circle = QtGui.QPushButton(self.tab_16)
- icon45 = QtGui.QIcon()
- icon45.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineCenterCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_linecenter_circle.setIcon(icon45)
- self.button_linecenter_circle.setIconSize(QtCore.QSize(32, 32))
- self.button_linecenter_circle.setObjectName(_fromUtf8("button_linecenter_circle"))
- self.horizontalLayout_66.addWidget(self.button_linecenter_circle)
- self.radius_circle = QtGui.QLineEdit(self.tab_16)
- self.radius_circle.setMinimumSize(QtCore.QSize(40, 0))
- self.radius_circle.setMaximumSize(QtCore.QSize(60, 16777215))
- self.radius_circle.setObjectName(_fromUtf8("radius_circle"))
- self.horizontalLayout_66.addWidget(self.radius_circle)
- self.gridLayout.addLayout(self.horizontalLayout_66, 0, 0, 1, 1)
- self.button_linepoint_circle = QtGui.QPushButton(self.tab_16)
- icon46 = QtGui.QIcon()
- icon46.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_linepoint_circle.setIcon(icon46)
- self.button_linepoint_circle.setIconSize(QtCore.QSize(32, 32))
- self.button_linepoint_circle.setObjectName(_fromUtf8("button_linepoint_circle"))
- self.gridLayout.addWidget(self.button_linepoint_circle, 1, 0, 1, 1)
- self.button_3points_circle = QtGui.QPushButton(self.tab_16)
- icon47 = QtGui.QIcon()
- icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_3points_circle.setIcon(icon47)
- self.button_3points_circle.setIconSize(QtCore.QSize(32, 32))
- self.button_3points_circle.setObjectName(_fromUtf8("button_3points_circle"))
- self.gridLayout.addWidget(self.button_3points_circle, 2, 0, 1, 1)
- self.horizontalLayout_67 = QtGui.QHBoxLayout()
- self.horizontalLayout_67.setObjectName(_fromUtf8("horizontalLayout_67"))
- self.button_cut_circle = QtGui.QPushButton(self.tab_16)
- icon48 = QtGui.QIcon()
- icon48.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_cut_circle.setIcon(icon48)
- self.button_cut_circle.setIconSize(QtCore.QSize(32, 32))
- self.button_cut_circle.setObjectName(_fromUtf8("button_cut_circle"))
- self.horizontalLayout_67.addWidget(self.button_cut_circle)
- self.spin_circle_cut = QtGui.QSpinBox(self.tab_16)
- self.spin_circle_cut.setMinimumSize(QtCore.QSize(40, 0))
- self.spin_circle_cut.setMaximumSize(QtCore.QSize(50, 16777215))
- self.spin_circle_cut.setMinimum(2)
- self.spin_circle_cut.setMaximum(100)
- self.spin_circle_cut.setSingleStep(1)
- self.spin_circle_cut.setObjectName(_fromUtf8("spin_circle_cut"))
- self.horizontalLayout_67.addWidget(self.spin_circle_cut)
- self.gridLayout.addLayout(self.horizontalLayout_67, 3, 0, 1, 1)
- self.button_3points_ellipse = QtGui.QPushButton(self.tab_16)
- icon49 = QtGui.QIcon()
- icon49.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsEllipse.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_3points_ellipse.setIcon(icon49)
- self.button_3points_ellipse.setIconSize(QtCore.QSize(32, 32))
- self.button_3points_ellipse.setObjectName(_fromUtf8("button_3points_ellipse"))
- self.gridLayout.addWidget(self.button_3points_ellipse, 4, 0, 1, 1)
- spacerItem7 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout.addItem(spacerItem7, 5, 0, 1, 1)
- self.button_circle_to_sketch = QtGui.QPushButton(self.tab_16)
- self.button_circle_to_sketch.setIcon(icon19)
- self.button_circle_to_sketch.setIconSize(QtCore.QSize(32, 32))
- self.button_circle_to_sketch.setObjectName(_fromUtf8("button_circle_to_sketch"))
- self.gridLayout.addWidget(self.button_circle_to_sketch, 6, 0, 1, 1)
- spacerItem8 = QtGui.QSpacerItem(20, 121, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout.addItem(spacerItem8, 7, 0, 1, 1)
- icon50 = QtGui.QIcon()
- icon50.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_circle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_7.addTab(self.tab_16, icon50, _fromUtf8(""))
- self.Wire_Tab_2 = QtGui.QWidget()
- self.Wire_Tab_2.setObjectName(_fromUtf8("Wire_Tab_2"))
- self.gridLayout_74 = QtGui.QGridLayout(self.Wire_Tab_2)
+ self.Wire_Tab = QtGui.QWidget()
+ self.Wire_Tab.setObjectName(_fromUtf8("Wire_Tab"))
+ self.gridLayout_74 = QtGui.QGridLayout(self.Wire_Tab)
self.gridLayout_74.setObjectName(_fromUtf8("gridLayout_74"))
- self.lineEdit = QtGui.QLineEdit(self.Wire_Tab_2)
+ self.lineEdit = QtGui.QLineEdit(self.Wire_Tab)
self.lineEdit.setReadOnly(True)
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.gridLayout_74.addWidget(self.lineEdit, 0, 0, 1, 1)
- self.tabWidget_8 = QtGui.QTabWidget(self.Wire_Tab_2)
+ self.tabWidget_8 = QtGui.QTabWidget(self.Wire_Tab)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.tabWidget_8.sizePolicy().hasHeightForWidth())
self.tabWidget_8.setSizePolicy(sizePolicy)
self.tabWidget_8.setObjectName(_fromUtf8("tabWidget_8"))
- self.tab_14 = QtGui.QWidget()
- self.tab_14.setObjectName(_fromUtf8("tab_14"))
- self.gridLayout_75 = QtGui.QGridLayout(self.tab_14)
+ self.Wire_Tab1_3 = QtGui.QWidget()
+ self.Wire_Tab1_3.setObjectName(_fromUtf8("Wire_Tab1_3"))
+ self.gridLayout_7 = QtGui.QGridLayout(self.Wire_Tab1_3)
+ self.gridLayout_7.setObjectName(_fromUtf8("gridLayout_7"))
+ spacerItem7 = QtGui.QSpacerItem(20, 588, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_7.addItem(spacerItem7, 1, 0, 1, 1)
+ self.button_4points_bezier = QtGui.QPushButton(self.Wire_Tab1_3)
+ icon45 = QtGui.QIcon()
+ icon45.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_bezierCubic2nodes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_4points_bezier.setIcon(icon45)
+ self.button_4points_bezier.setIconSize(QtCore.QSize(32, 32))
+ self.button_4points_bezier.setObjectName(_fromUtf8("button_4points_bezier"))
+ self.gridLayout_7.addWidget(self.button_4points_bezier, 0, 0, 1, 1)
+ self.tabWidget_8.addTab(self.Wire_Tab1_3, _fromUtf8(""))
+ self.Wire_Tab2_3 = QtGui.QWidget()
+ self.Wire_Tab2_3.setObjectName(_fromUtf8("Wire_Tab2_3"))
+ self.gridLayout_75 = QtGui.QGridLayout(self.Wire_Tab2_3)
self.gridLayout_75.setObjectName(_fromUtf8("gridLayout_75"))
- self.scrollArea_2 = QtGui.QScrollArea(self.tab_14)
+ self.scrollArea_2 = QtGui.QScrollArea(self.Wire_Tab2_3)
self.scrollArea_2.setWidgetResizable(True)
self.scrollArea_2.setObjectName(_fromUtf8("scrollArea_2"))
self.scrollAreaWidgetContents_5 = QtGui.QWidget()
- self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 249, 648))
+ self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 245, 648))
self.scrollAreaWidgetContents_5.setObjectName(_fromUtf8("scrollAreaWidgetContents_5"))
self.gridLayout_76 = QtGui.QGridLayout(self.scrollAreaWidgetContents_5)
self.gridLayout_76.setObjectName(_fromUtf8("gridLayout_76"))
- spacerItem9 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_76.addItem(spacerItem9, 7, 0, 1, 1)
+ spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_76.addItem(spacerItem8, 7, 0, 1, 1)
self.groupBox_14 = QtGui.QGroupBox(self.scrollAreaWidgetContents_5)
self.groupBox_14.setObjectName(_fromUtf8("groupBox_14"))
self.gridLayout_77 = QtGui.QGridLayout(self.groupBox_14)
@@ -982,8 +926,8 @@ class Ui_Form(object):
self.ParCurve_button_store_2.setMaximumSize(QtCore.QSize(60, 16777215))
self.ParCurve_button_store_2.setObjectName(_fromUtf8("ParCurve_button_store_2"))
self.horizontalLayout_62.addWidget(self.ParCurve_button_store_2)
- spacerItem10 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout_62.addItem(spacerItem10)
+ spacerItem9 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.horizontalLayout_62.addItem(spacerItem9)
self.ParCurve_button_apply_2 = QtGui.QPushButton(self.scrollAreaWidgetContents_5)
self.ParCurve_button_apply_2.setMinimumSize(QtCore.QSize(40, 0))
self.ParCurve_button_apply_2.setMaximumSize(QtCore.QSize(60, 16777215))
@@ -992,12 +936,12 @@ class Ui_Form(object):
self.gridLayout_76.addLayout(self.horizontalLayout_62, 6, 0, 1, 1)
self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_5)
self.gridLayout_75.addWidget(self.scrollArea_2, 0, 0, 1, 1)
- self.tabWidget_8.addTab(self.tab_14, _fromUtf8(""))
- self.tab_15 = QtGui.QWidget()
- self.tab_15.setObjectName(_fromUtf8("tab_15"))
- self.gridLayout_80 = QtGui.QGridLayout(self.tab_15)
+ self.tabWidget_8.addTab(self.Wire_Tab2_3, _fromUtf8(""))
+ self.Wire_Tab3_3 = QtGui.QWidget()
+ self.Wire_Tab3_3.setObjectName(_fromUtf8("Wire_Tab3_3"))
+ self.gridLayout_80 = QtGui.QGridLayout(self.Wire_Tab3_3)
self.gridLayout_80.setObjectName(_fromUtf8("gridLayout_80"))
- self.scrollArea_5 = QtGui.QScrollArea(self.tab_15)
+ self.scrollArea_5 = QtGui.QScrollArea(self.Wire_Tab3_3)
self.scrollArea_5.setWidgetResizable(True)
self.scrollArea_5.setObjectName(_fromUtf8("scrollArea_5"))
self.scrollAreaWidgetContents_6 = QtGui.QWidget()
@@ -1197,16 +1141,16 @@ class Ui_Form(object):
self.ParCurve_button_store_3.setMaximumSize(QtCore.QSize(60, 16777215))
self.ParCurve_button_store_3.setObjectName(_fromUtf8("ParCurve_button_store_3"))
self.horizontalLayout_65.addWidget(self.ParCurve_button_store_3)
- spacerItem11 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout_65.addItem(spacerItem11)
+ spacerItem10 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.horizontalLayout_65.addItem(spacerItem10)
self.ParCurve_button_apply_3 = QtGui.QPushButton(self.scrollAreaWidgetContents_6)
self.ParCurve_button_apply_3.setMinimumSize(QtCore.QSize(40, 0))
self.ParCurve_button_apply_3.setMaximumSize(QtCore.QSize(60, 16777215))
self.ParCurve_button_apply_3.setObjectName(_fromUtf8("ParCurve_button_apply_3"))
self.horizontalLayout_65.addWidget(self.ParCurve_button_apply_3)
self.gridLayout_81.addLayout(self.horizontalLayout_65, 6, 0, 1, 1)
- spacerItem12 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_81.addItem(spacerItem12, 7, 0, 1, 1)
+ spacerItem11 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_81.addItem(spacerItem11, 7, 0, 1, 1)
self.groupBox_19 = QtGui.QGroupBox(self.scrollAreaWidgetContents_6)
self.groupBox_19.setObjectName(_fromUtf8("groupBox_19"))
self.gridLayout_3 = QtGui.QGridLayout(self.groupBox_19)
@@ -1234,11 +1178,88 @@ class Ui_Form(object):
self.gridLayout_81.addWidget(self.groupBox_19, 4, 0, 1, 1)
self.scrollArea_5.setWidget(self.scrollAreaWidgetContents_6)
self.gridLayout_80.addWidget(self.scrollArea_5, 0, 0, 1, 1)
- self.tabWidget_8.addTab(self.tab_15, _fromUtf8(""))
+ self.tabWidget_8.addTab(self.Wire_Tab3_3, _fromUtf8(""))
self.gridLayout_74.addWidget(self.tabWidget_8, 1, 0, 1, 1)
+ icon46 = QtGui.QIcon()
+ icon46.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_wire.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_7.addTab(self.Wire_Tab, icon46, _fromUtf8(""))
+ self.Circle_Tab = QtGui.QWidget()
+ self.Circle_Tab.setObjectName(_fromUtf8("Circle_Tab"))
+ self.gridLayout = QtGui.QGridLayout(self.Circle_Tab)
+ self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
+ self.horizontalLayout_66 = QtGui.QHBoxLayout()
+ self.horizontalLayout_66.setObjectName(_fromUtf8("horizontalLayout_66"))
+ self.button_linecenter_circle = QtGui.QPushButton(self.Circle_Tab)
+ icon47 = QtGui.QIcon()
+ icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineCenterCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_linecenter_circle.setIcon(icon47)
+ self.button_linecenter_circle.setIconSize(QtCore.QSize(32, 32))
+ self.button_linecenter_circle.setObjectName(_fromUtf8("button_linecenter_circle"))
+ self.horizontalLayout_66.addWidget(self.button_linecenter_circle)
+ self.radius_circle = QtGui.QLineEdit(self.Circle_Tab)
+ self.radius_circle.setMinimumSize(QtCore.QSize(40, 0))
+ self.radius_circle.setMaximumSize(QtCore.QSize(60, 16777215))
+ self.radius_circle.setObjectName(_fromUtf8("radius_circle"))
+ self.horizontalLayout_66.addWidget(self.radius_circle)
+ self.gridLayout.addLayout(self.horizontalLayout_66, 0, 0, 1, 1)
+ self.button_linepoint_circle = QtGui.QPushButton(self.Circle_Tab)
+ icon48 = QtGui.QIcon()
+ icon48.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_linepoint_circle.setIcon(icon48)
+ self.button_linepoint_circle.setIconSize(QtCore.QSize(32, 32))
+ self.button_linepoint_circle.setObjectName(_fromUtf8("button_linepoint_circle"))
+ self.gridLayout.addWidget(self.button_linepoint_circle, 1, 0, 1, 1)
+ spacerItem12 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout.addItem(spacerItem12, 7, 0, 1, 1)
+ self.button_3points_ellipse = QtGui.QPushButton(self.Circle_Tab)
+ icon49 = QtGui.QIcon()
+ icon49.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsEllipse.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_3points_ellipse.setIcon(icon49)
+ self.button_3points_ellipse.setIconSize(QtCore.QSize(32, 32))
+ self.button_3points_ellipse.setObjectName(_fromUtf8("button_3points_ellipse"))
+ self.gridLayout.addWidget(self.button_3points_ellipse, 4, 0, 1, 1)
+ self.button_circle_to_sketch = QtGui.QPushButton(self.Circle_Tab)
+ self.button_circle_to_sketch.setIcon(icon19)
+ self.button_circle_to_sketch.setIconSize(QtCore.QSize(32, 32))
+ self.button_circle_to_sketch.setObjectName(_fromUtf8("button_circle_to_sketch"))
+ self.gridLayout.addWidget(self.button_circle_to_sketch, 8, 0, 1, 1)
+ spacerItem13 = QtGui.QSpacerItem(20, 121, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout.addItem(spacerItem13, 9, 0, 1, 1)
+ self.button_3points_arc = QtGui.QPushButton(self.Circle_Tab)
+ icon50 = QtGui.QIcon()
+ icon50.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsArc.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_3points_arc.setIcon(icon50)
+ self.button_3points_arc.setIconSize(QtCore.QSize(32, 32))
+ self.button_3points_arc.setObjectName(_fromUtf8("button_3points_arc"))
+ self.gridLayout.addWidget(self.button_3points_arc, 5, 0, 1, 1)
+ self.button_3points_circle = QtGui.QPushButton(self.Circle_Tab)
icon51 = QtGui.QIcon()
- icon51.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_wire.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_7.addTab(self.Wire_Tab_2, icon51, _fromUtf8(""))
+ icon51.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_3points_circle.setIcon(icon51)
+ self.button_3points_circle.setIconSize(QtCore.QSize(32, 32))
+ self.button_3points_circle.setObjectName(_fromUtf8("button_3points_circle"))
+ self.gridLayout.addWidget(self.button_3points_circle, 2, 0, 1, 1)
+ self.horizontalLayout_67 = QtGui.QHBoxLayout()
+ self.horizontalLayout_67.setObjectName(_fromUtf8("horizontalLayout_67"))
+ self.button_cut_circle = QtGui.QPushButton(self.Circle_Tab)
+ icon52 = QtGui.QIcon()
+ icon52.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_cut_circle.setIcon(icon52)
+ self.button_cut_circle.setIconSize(QtCore.QSize(32, 32))
+ self.button_cut_circle.setObjectName(_fromUtf8("button_cut_circle"))
+ self.horizontalLayout_67.addWidget(self.button_cut_circle)
+ self.spin_circle_cut = QtGui.QSpinBox(self.Circle_Tab)
+ self.spin_circle_cut.setMinimumSize(QtCore.QSize(40, 0))
+ self.spin_circle_cut.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.spin_circle_cut.setMinimum(2)
+ self.spin_circle_cut.setMaximum(100)
+ self.spin_circle_cut.setSingleStep(1)
+ self.spin_circle_cut.setObjectName(_fromUtf8("spin_circle_cut"))
+ self.horizontalLayout_67.addWidget(self.spin_circle_cut)
+ self.gridLayout.addLayout(self.horizontalLayout_67, 6, 0, 1, 1)
+ icon53 = QtGui.QIcon()
+ icon53.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_circle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_7.addTab(self.Circle_Tab, icon53, _fromUtf8(""))
self.Plane_Tab = QtGui.QWidget()
self.Plane_Tab.setObjectName(_fromUtf8("Plane_Tab"))
self.gridLayout_17 = QtGui.QGridLayout(self.Plane_Tab)
@@ -1250,46 +1271,46 @@ class Ui_Form(object):
self.gridLayout_18 = QtGui.QGridLayout(self.Plane_Tab1_2)
self.gridLayout_18.setObjectName(_fromUtf8("gridLayout_18"))
self.button_threepoints_plane = QtGui.QPushButton(self.Plane_Tab1_2)
- icon52 = QtGui.QIcon()
- icon52.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_threepoints_plane.setIcon(icon52)
+ icon54 = QtGui.QIcon()
+ icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_threepoints_plane.setIcon(icon54)
self.button_threepoints_plane.setIconSize(QtCore.QSize(32, 32))
self.button_threepoints_plane.setObjectName(_fromUtf8("button_threepoints_plane"))
self.gridLayout_18.addWidget(self.button_threepoints_plane, 0, 0, 1, 1)
self.button_twopoints_plane = QtGui.QPushButton(self.Plane_Tab1_2)
- icon53 = QtGui.QIcon()
- icon53.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoPointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_twopoints_plane.setIcon(icon53)
+ icon55 = QtGui.QIcon()
+ icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoPointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_twopoints_plane.setIcon(icon55)
self.button_twopoints_plane.setIconSize(QtCore.QSize(32, 32))
self.button_twopoints_plane.setObjectName(_fromUtf8("button_twopoints_plane"))
self.gridLayout_18.addWidget(self.button_twopoints_plane, 1, 0, 1, 1)
self.button_Npoints_plane = QtGui.QPushButton(self.Plane_Tab1_2)
- icon54 = QtGui.QIcon()
- icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_Npoints_plane.setIcon(icon54)
+ icon56 = QtGui.QIcon()
+ icon56.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_Npoints_plane.setIcon(icon56)
self.button_Npoints_plane.setIconSize(QtCore.QSize(32, 32))
self.button_Npoints_plane.setObjectName(_fromUtf8("button_Npoints_plane"))
self.gridLayout_18.addWidget(self.button_Npoints_plane, 2, 0, 1, 1)
self.button_axisandpoint_plane = QtGui.QPushButton(self.Plane_Tab1_2)
- icon55 = QtGui.QIcon()
- icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_axisandpoint_plane.setIcon(icon55)
+ icon57 = QtGui.QIcon()
+ icon57.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_axisandpoint_plane.setIcon(icon57)
self.button_axisandpoint_plane.setIconSize(QtCore.QSize(32, 32))
self.button_axisandpoint_plane.setObjectName(_fromUtf8("button_axisandpoint_plane"))
self.gridLayout_18.addWidget(self.button_axisandpoint_plane, 3, 0, 1, 1)
self.button_axis_point_plane = QtGui.QPushButton(self.Plane_Tab1_2)
- icon56 = QtGui.QIcon()
- icon56.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane2.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_axis_point_plane.setIcon(icon56)
+ icon58 = QtGui.QIcon()
+ icon58.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane2.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_axis_point_plane.setIcon(icon58)
self.button_axis_point_plane.setIconSize(QtCore.QSize(32, 32))
self.button_axis_point_plane.setObjectName(_fromUtf8("button_axis_point_plane"))
self.gridLayout_18.addWidget(self.button_axis_point_plane, 4, 0, 1, 1)
self.gridLayout_90 = QtGui.QGridLayout()
self.gridLayout_90.setObjectName(_fromUtf8("gridLayout_90"))
self.button_planeandpoint_plane = QtGui.QPushButton(self.Plane_Tab1_2)
- icon57 = QtGui.QIcon()
- icon57.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_planeandpoint_plane.setIcon(icon57)
+ icon59 = QtGui.QIcon()
+ icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_planeandpoint_plane.setIcon(icon59)
self.button_planeandpoint_plane.setIconSize(QtCore.QSize(32, 32))
self.button_planeandpoint_plane.setObjectName(_fromUtf8("button_planeandpoint_plane"))
self.gridLayout_90.addWidget(self.button_planeandpoint_plane, 0, 0, 1, 1)
@@ -1307,9 +1328,9 @@ class Ui_Form(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.button_planeandaxis_plane.sizePolicy().hasHeightForWidth())
self.button_planeandaxis_plane.setSizePolicy(sizePolicy)
- icon58 = QtGui.QIcon()
- icon58.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_planeandaxis_plane.setIcon(icon58)
+ icon60 = QtGui.QIcon()
+ icon60.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_planeandaxis_plane.setIcon(icon60)
self.button_planeandaxis_plane.setIconSize(QtCore.QSize(32, 32))
self.button_planeandaxis_plane.setObjectName(_fromUtf8("button_planeandaxis_plane"))
self.gridLayout_89.addWidget(self.button_planeandaxis_plane, 0, 0, 1, 1)
@@ -1327,9 +1348,9 @@ class Ui_Form(object):
self.horizontalLayout_70 = QtGui.QHBoxLayout()
self.horizontalLayout_70.setObjectName(_fromUtf8("horizontalLayout_70"))
self.button_distPlane = QtGui.QPushButton(self.Plane_Tab1_2)
- icon59 = QtGui.QIcon()
- icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_distPlane.setIcon(icon59)
+ icon61 = QtGui.QIcon()
+ icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_distPlane.setIcon(icon61)
self.button_distPlane.setIconSize(QtCore.QSize(32, 32))
self.button_distPlane.setObjectName(_fromUtf8("button_distPlane"))
self.horizontalLayout_70.addWidget(self.button_distPlane)
@@ -1363,9 +1384,9 @@ class Ui_Form(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.button_face_tangent.sizePolicy().hasHeightForWidth())
self.button_face_tangent.setSizePolicy(sizePolicy)
- icon60 = QtGui.QIcon()
- icon60.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_face_tangent.setIcon(icon60)
+ icon62 = QtGui.QIcon()
+ icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_face_tangent.setIcon(icon62)
self.button_face_tangent.setIconSize(QtCore.QSize(32, 32))
self.button_face_tangent.setObjectName(_fromUtf8("button_face_tangent"))
self.horizontalLayout_69.addWidget(self.button_face_tangent)
@@ -1390,8 +1411,8 @@ class Ui_Form(object):
self.width_plane_2.setObjectName(_fromUtf8("width_plane_2"))
self.horizontalLayout_69.addWidget(self.width_plane_2)
self.gridLayout_18.addLayout(self.horizontalLayout_69, 8, 0, 1, 1)
- spacerItem13 = QtGui.QSpacerItem(20, 235, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_18.addItem(spacerItem13, 9, 0, 1, 1)
+ spacerItem14 = QtGui.QSpacerItem(20, 235, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_18.addItem(spacerItem14, 9, 0, 1, 1)
self.tabWidget_3.addTab(self.Plane_Tab1_2, _fromUtf8(""))
self.Plane_Tab2_2 = QtGui.QWidget()
self.Plane_Tab2_2.setObjectName(_fromUtf8("Plane_Tab2_2"))
@@ -1405,9 +1426,9 @@ class Ui_Form(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.button_click_for_plane.sizePolicy().hasHeightForWidth())
self.button_click_for_plane.setSizePolicy(sizePolicy)
- icon61 = QtGui.QIcon()
- icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_click_for_plane.setIcon(icon61)
+ icon63 = QtGui.QIcon()
+ icon63.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_click_for_plane.setIcon(icon63)
self.button_click_for_plane.setIconSize(QtCore.QSize(32, 32))
self.button_click_for_plane.setObjectName(_fromUtf8("button_click_for_plane"))
self.horizontalLayout_68.addWidget(self.button_click_for_plane)
@@ -1440,9 +1461,9 @@ class Ui_Form(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.button_extension_plane.sizePolicy().hasHeightForWidth())
self.button_extension_plane.setSizePolicy(sizePolicy)
- icon62 = QtGui.QIcon()
- icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_extension_plane.setIcon(icon62)
+ icon64 = QtGui.QIcon()
+ icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_extension_plane.setIcon(icon64)
self.button_extension_plane.setIconSize(QtCore.QSize(32, 32))
self.button_extension_plane.setObjectName(_fromUtf8("button_extension_plane"))
self.horizontalLayout_71.addWidget(self.button_extension_plane)
@@ -1458,24 +1479,24 @@ class Ui_Form(object):
self.horizontalLayout_71.addWidget(self.extension_plane)
self.gridLayout_36.addLayout(self.horizontalLayout_71, 1, 0, 1, 1)
self.button_object_center_planes = QtGui.QPushButton(self.Plane_Tab2_2)
- icon63 = QtGui.QIcon()
- icon63.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPlanes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_object_center_planes.setIcon(icon63)
+ icon65 = QtGui.QIcon()
+ icon65.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPlanes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_object_center_planes.setIcon(icon65)
self.button_object_center_planes.setIconSize(QtCore.QSize(32, 32))
self.button_object_center_planes.setObjectName(_fromUtf8("button_object_center_planes"))
self.gridLayout_36.addWidget(self.button_object_center_planes, 2, 0, 1, 1)
- spacerItem14 = QtGui.QSpacerItem(20, 527, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_36.addItem(spacerItem14, 3, 0, 1, 1)
+ spacerItem15 = QtGui.QSpacerItem(20, 527, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_36.addItem(spacerItem15, 3, 0, 1, 1)
self.tabWidget_3.addTab(self.Plane_Tab2_2, _fromUtf8(""))
self.gridLayout_17.addWidget(self.tabWidget_3, 0, 0, 1, 1)
- icon64 = QtGui.QIcon()
- icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_plane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_7.addTab(self.Plane_Tab, icon64, _fromUtf8(""))
- self.tab_17 = QtGui.QWidget()
- self.tab_17.setObjectName(_fromUtf8("tab_17"))
- self.gridLayout_6 = QtGui.QGridLayout(self.tab_17)
+ icon66 = QtGui.QIcon()
+ icon66.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_plane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_7.addTab(self.Plane_Tab, icon66, _fromUtf8(""))
+ self.Sweep_Tab = QtGui.QWidget()
+ self.Sweep_Tab.setObjectName(_fromUtf8("Sweep_Tab"))
+ self.gridLayout_6 = QtGui.QGridLayout(self.Sweep_Tab)
self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6"))
- self.frame_9 = QtGui.QFrame(self.tab_17)
+ self.frame_9 = QtGui.QFrame(self.Sweep_Tab)
self.frame_9.setFrameShape(QtGui.QFrame.StyledPanel)
self.frame_9.setFrameShadow(QtGui.QFrame.Raised)
self.frame_9.setLineWidth(3)
@@ -1507,23 +1528,23 @@ class Ui_Form(object):
self.gridLayout_87.addWidget(self.radioButton_Frenet, 1, 1, 1, 1)
self.gridLayout_86.addLayout(self.gridLayout_87, 0, 0, 1, 1)
self.button_sweep = QtGui.QPushButton(self.frame_9)
- icon65 = QtGui.QIcon()
- icon65.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Sweep.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_sweep.setIcon(icon65)
+ icon67 = QtGui.QIcon()
+ icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Sweep.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_sweep.setIcon(icon67)
self.button_sweep.setIconSize(QtCore.QSize(32, 32))
self.button_sweep.setObjectName(_fromUtf8("button_sweep"))
self.gridLayout_86.addWidget(self.button_sweep, 1, 0, 1, 1)
self.gridLayout_6.addWidget(self.frame_9, 0, 0, 1, 1)
- spacerItem15 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_6.addItem(spacerItem15, 2, 0, 1, 1)
- self.button_beam = QtGui.QPushButton(self.tab_17)
- icon66 = QtGui.QIcon()
- icon66.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_beam.setIcon(icon66)
+ spacerItem16 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_6.addItem(spacerItem16, 2, 0, 1, 1)
+ self.button_beam = QtGui.QPushButton(self.Sweep_Tab)
+ icon68 = QtGui.QIcon()
+ icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_beam.setIcon(icon68)
self.button_beam.setIconSize(QtCore.QSize(32, 32))
self.button_beam.setObjectName(_fromUtf8("button_beam"))
self.gridLayout_6.addWidget(self.button_beam, 1, 0, 1, 1)
- self.tabWidget_7.addTab(self.tab_17, icon66, _fromUtf8(""))
+ self.tabWidget_7.addTab(self.Sweep_Tab, icon68, _fromUtf8(""))
self.Objects_Tab2_2 = QtGui.QWidget()
self.Objects_Tab2_2.setEnabled(True)
self.Objects_Tab2_2.setMinimumSize(QtCore.QSize(0, 0))
@@ -1536,17 +1557,17 @@ class Ui_Form(object):
self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4"))
self.button_boundingboxes = QtGui.QPushButton(self.Objects_Tab2_2)
self.button_boundingboxes.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon67 = QtGui.QIcon()
- icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_boundingboxes.setIcon(icon67)
+ icon69 = QtGui.QIcon()
+ icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_boundingboxes.setIcon(icon69)
self.button_boundingboxes.setIconSize(QtCore.QSize(32, 32))
self.button_boundingboxes.setObjectName(_fromUtf8("button_boundingboxes"))
self.verticalLayout_4.addWidget(self.button_boundingboxes)
self.button_boundingbox = QtGui.QPushButton(self.Objects_Tab2_2)
self.button_boundingbox.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon68 = QtGui.QIcon()
- icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_boundingbox.setIcon(icon68)
+ icon70 = QtGui.QIcon()
+ icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_boundingbox.setIcon(icon70)
self.button_boundingbox.setIconSize(QtCore.QSize(32, 32))
self.button_boundingbox.setObjectName(_fromUtf8("button_boundingbox"))
self.verticalLayout_4.addWidget(self.button_boundingbox)
@@ -1567,9 +1588,9 @@ class Ui_Form(object):
self.gridLayout_93 = QtGui.QGridLayout()
self.gridLayout_93.setObjectName(_fromUtf8("gridLayout_93"))
self.button_cylinder_create = QtGui.QPushButton(self.Objects_Tab2_2)
- icon69 = QtGui.QIcon()
- icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinder.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_cylinder_create.setIcon(icon69)
+ icon71 = QtGui.QIcon()
+ icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinder.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_cylinder_create.setIcon(icon71)
self.button_cylinder_create.setIconSize(QtCore.QSize(32, 32))
self.button_cylinder_create.setObjectName(_fromUtf8("button_cylinder_create"))
self.gridLayout_93.addWidget(self.button_cylinder_create, 0, 0, 1, 1)
@@ -1597,9 +1618,9 @@ class Ui_Form(object):
self.horizontalLayout_73 = QtGui.QHBoxLayout()
self.horizontalLayout_73.setObjectName(_fromUtf8("horizontalLayout_73"))
self.button_cube_create = QtGui.QPushButton(self.Objects_Tab2_2)
- icon70 = QtGui.QIcon()
- icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cube.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_cube_create.setIcon(icon70)
+ icon72 = QtGui.QIcon()
+ icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cube.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_cube_create.setIcon(icon72)
self.button_cube_create.setIconSize(QtCore.QSize(32, 32))
self.button_cube_create.setObjectName(_fromUtf8("button_cube_create"))
self.horizontalLayout_73.addWidget(self.button_cube_create)
@@ -1627,9 +1648,9 @@ class Ui_Form(object):
self.horizontalLayout_74 = QtGui.QHBoxLayout()
self.horizontalLayout_74.setObjectName(_fromUtf8("horizontalLayout_74"))
self.button_sphere_create = QtGui.QPushButton(self.Objects_Tab2_2)
- icon71 = QtGui.QIcon()
- icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_sphere.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_sphere_create.setIcon(icon71)
+ icon73 = QtGui.QIcon()
+ icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_sphere.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_sphere_create.setIcon(icon73)
self.button_sphere_create.setIconSize(QtCore.QSize(32, 32))
self.button_sphere_create.setObjectName(_fromUtf8("button_sphere_create"))
self.horizontalLayout_74.addWidget(self.button_sphere_create)
@@ -1647,9 +1668,9 @@ class Ui_Form(object):
self.horizontalLayout_77 = QtGui.QHBoxLayout()
self.horizontalLayout_77.setObjectName(_fromUtf8("horizontalLayout_77"))
self.button_dome_create = QtGui.QPushButton(self.Objects_Tab2_2)
- icon72 = QtGui.QIcon()
- icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_dome.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_dome_create.setIcon(icon72)
+ icon74 = QtGui.QIcon()
+ icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_dome.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_dome_create.setIcon(icon74)
self.button_dome_create.setIconSize(QtCore.QSize(32, 32))
self.button_dome_create.setObjectName(_fromUtf8("button_dome_create"))
self.horizontalLayout_77.addWidget(self.button_dome_create)
@@ -1676,9 +1697,9 @@ class Ui_Form(object):
self.horizontalLayout_75 = QtGui.QHBoxLayout()
self.horizontalLayout_75.setObjectName(_fromUtf8("horizontalLayout_75"))
self.button_letter = QtGui.QPushButton(self.Objects_Tab2_2)
- icon73 = QtGui.QIcon()
- icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointText.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_letter.setIcon(icon73)
+ icon75 = QtGui.QIcon()
+ icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointText.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_letter.setIcon(icon75)
self.button_letter.setIconSize(QtCore.QSize(32, 32))
self.button_letter.setObjectName(_fromUtf8("button_letter"))
self.horizontalLayout_75.addWidget(self.button_letter)
@@ -1700,9 +1721,9 @@ class Ui_Form(object):
self.horizontalLayout_76 = QtGui.QHBoxLayout()
self.horizontalLayout_76.setObjectName(_fromUtf8("horizontalLayout_76"))
self.button_revolve = QtGui.QPushButton(self.Objects_Tab2_2)
- icon74 = QtGui.QIcon()
- icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Revolve.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_revolve.setIcon(icon74)
+ icon76 = QtGui.QIcon()
+ icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Revolve.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_revolve.setIcon(icon76)
self.button_revolve.setIconSize(QtCore.QSize(32, 32))
self.button_revolve.setObjectName(_fromUtf8("button_revolve"))
self.horizontalLayout_76.addWidget(self.button_revolve)
@@ -1718,31 +1739,75 @@ class Ui_Form(object):
self.horizontalLayout_76.addWidget(self.angle_revolve)
self.gridLayout_5.addLayout(self.horizontalLayout_76, 7, 0, 1, 1)
self.button_copy_objects = QtGui.QPushButton(self.Objects_Tab2_2)
- icon75 = QtGui.QIcon()
- icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCopy.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_copy_objects.setIcon(icon75)
+ icon77 = QtGui.QIcon()
+ icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCopy.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_copy_objects.setIcon(icon77)
self.button_copy_objects.setIconSize(QtCore.QSize(32, 32))
self.button_copy_objects.setObjectName(_fromUtf8("button_copy_objects"))
self.gridLayout_5.addWidget(self.button_copy_objects, 8, 0, 1, 1)
self.button_common = QtGui.QPushButton(self.Objects_Tab2_2)
- icon76 = QtGui.QIcon()
- icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_common.setIcon(icon76)
+ icon78 = QtGui.QIcon()
+ icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_common.setIcon(icon78)
self.button_common.setIconSize(QtCore.QSize(32, 32))
self.button_common.setObjectName(_fromUtf8("button_common"))
self.gridLayout_5.addWidget(self.button_common, 9, 0, 1, 1)
self.button_difference = QtGui.QPushButton(self.Objects_Tab2_2)
- icon77 = QtGui.QIcon()
- icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_difference.setIcon(icon77)
+ icon79 = QtGui.QIcon()
+ icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_difference.setIcon(icon79)
self.button_difference.setIconSize(QtCore.QSize(32, 32))
self.button_difference.setObjectName(_fromUtf8("button_difference"))
self.gridLayout_5.addWidget(self.button_difference, 10, 0, 1, 1)
- spacerItem16 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_5.addItem(spacerItem16, 11, 0, 1, 1)
- icon78 = QtGui.QIcon()
- icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_7.addTab(self.Objects_Tab2_2, icon78, _fromUtf8(""))
+ spacerItem17 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_5.addItem(spacerItem17, 11, 0, 1, 1)
+ icon80 = QtGui.QIcon()
+ icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_7.addTab(self.Objects_Tab2_2, icon80, _fromUtf8(""))
+ self.tab_2 = QtGui.QWidget()
+ self.tab_2.setObjectName(_fromUtf8("tab_2"))
+ self.gridLayout_8 = QtGui.QGridLayout(self.tab_2)
+ self.gridLayout_8.setObjectName(_fromUtf8("gridLayout_8"))
+ self.horizontalLayout_4 = QtGui.QHBoxLayout()
+ self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
+ self.button_scale_image = QtGui.QPushButton(self.tab_2)
+ icon81 = QtGui.QIcon()
+ icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_ImageScale.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_scale_image.setIcon(icon81)
+ self.button_scale_image.setIconSize(QtCore.QSize(32, 32))
+ self.button_scale_image.setObjectName(_fromUtf8("button_scale_image"))
+ self.horizontalLayout_4.addWidget(self.button_scale_image)
+ self.Image_comboBox_axis_scale = QtGui.QComboBox(self.tab_2)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.Image_comboBox_axis_scale.sizePolicy().hasHeightForWidth())
+ self.Image_comboBox_axis_scale.setSizePolicy(sizePolicy)
+ self.Image_comboBox_axis_scale.setMinimumSize(QtCore.QSize(40, 0))
+ self.Image_comboBox_axis_scale.setMaximumSize(QtCore.QSize(60, 16777215))
+ self.Image_comboBox_axis_scale.setLayoutDirection(QtCore.Qt.LeftToRight)
+ self.Image_comboBox_axis_scale.setObjectName(_fromUtf8("Image_comboBox_axis_scale"))
+ self.Image_comboBox_axis_scale.addItem(_fromUtf8(""))
+ self.Image_comboBox_axis_scale.addItem(_fromUtf8(""))
+ self.Image_comboBox_axis_scale.addItem(_fromUtf8(""))
+ self.Image_comboBox_axis_scale.addItem(_fromUtf8(""))
+ self.Image_comboBox_axis_scale.addItem(_fromUtf8(""))
+ self.Image_comboBox_axis_scale.addItem(_fromUtf8(""))
+ self.horizontalLayout_4.addWidget(self.Image_comboBox_axis_scale)
+ self.length_image = QtGui.QLineEdit(self.tab_2)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.length_image.sizePolicy().hasHeightForWidth())
+ self.length_image.setSizePolicy(sizePolicy)
+ self.length_image.setMinimumSize(QtCore.QSize(60, 0))
+ self.length_image.setMaximumSize(QtCore.QSize(50, 16777215))
+ self.length_image.setObjectName(_fromUtf8("length_image"))
+ self.horizontalLayout_4.addWidget(self.length_image)
+ self.gridLayout_8.addLayout(self.horizontalLayout_4, 0, 0, 1, 1)
+ spacerItem18 = QtGui.QSpacerItem(20, 650, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_8.addItem(spacerItem18, 1, 0, 1, 1)
+ self.tabWidget_7.addTab(self.tab_2, _fromUtf8(""))
self.Modif_Tab_2 = QtGui.QWidget()
self.Modif_Tab_2.setObjectName(_fromUtf8("Modif_Tab_2"))
self.gridLayout_94 = QtGui.QGridLayout(self.Modif_Tab_2)
@@ -1760,9 +1825,9 @@ class Ui_Form(object):
sizePolicy.setHeightForWidth(self.button_alignface2view.sizePolicy().hasHeightForWidth())
self.button_alignface2view.setSizePolicy(sizePolicy)
self.button_alignface2view.setMaximumSize(QtCore.QSize(220, 16777215))
- icon79 = QtGui.QIcon()
- icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_alignface2view.setIcon(icon79)
+ icon82 = QtGui.QIcon()
+ icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_alignface2view.setIcon(icon82)
self.button_alignface2view.setIconSize(QtCore.QSize(32, 32))
self.button_alignface2view.setObjectName(_fromUtf8("button_alignface2view"))
self.gridLayout_9.addWidget(self.button_alignface2view, 0, 0, 1, 1)
@@ -1770,9 +1835,9 @@ class Ui_Form(object):
self.horizontalLayout_78.setObjectName(_fromUtf8("horizontalLayout_78"))
self.button_align_faces = QtGui.QPushButton(self.align_tab_2)
self.button_align_faces.setMaximumSize(QtCore.QSize(220, 16777215))
- icon80 = QtGui.QIcon()
- icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_align_faces.setIcon(icon80)
+ icon83 = QtGui.QIcon()
+ icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_align_faces.setIcon(icon83)
self.button_align_faces.setIconSize(QtCore.QSize(32, 32))
self.button_align_faces.setObjectName(_fromUtf8("button_align_faces"))
self.horizontalLayout_78.addWidget(self.button_align_faces)
@@ -1791,9 +1856,9 @@ class Ui_Form(object):
self.horizontalLayout_79.setObjectName(_fromUtf8("horizontalLayout_79"))
self.button_align_edges = QtGui.QPushButton(self.align_tab_2)
self.button_align_edges.setMaximumSize(QtCore.QSize(220, 16777215))
- icon81 = QtGui.QIcon()
- icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_align_edges.setIcon(icon81)
+ icon84 = QtGui.QIcon()
+ icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_align_edges.setIcon(icon84)
self.button_align_edges.setIconSize(QtCore.QSize(32, 32))
self.button_align_edges.setObjectName(_fromUtf8("button_align_edges"))
self.horizontalLayout_79.addWidget(self.button_align_edges)
@@ -1811,9 +1876,9 @@ class Ui_Form(object):
self.horizontalLayout_2 = QtGui.QHBoxLayout()
self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
self.button_align_main_axis = QtGui.QPushButton(self.align_tab_2)
- icon82 = QtGui.QIcon()
- icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignMainAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_align_main_axis.setIcon(icon82)
+ icon85 = QtGui.QIcon()
+ icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignMainAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_align_main_axis.setIcon(icon85)
self.button_align_main_axis.setIconSize(QtCore.QSize(32, 32))
self.button_align_main_axis.setObjectName(_fromUtf8("button_align_main_axis"))
self.horizontalLayout_2.addWidget(self.button_align_main_axis)
@@ -1829,21 +1894,21 @@ class Ui_Form(object):
self.horizontalLayout_2.addWidget(self.angle_align_main_axis)
self.gridLayout_9.addLayout(self.horizontalLayout_2, 3, 0, 1, 1)
self.button_joint_points = QtGui.QPushButton(self.align_tab_2)
- icon83 = QtGui.QIcon()
- icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_joint_points.setIcon(icon83)
+ icon86 = QtGui.QIcon()
+ icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_joint_points.setIcon(icon86)
self.button_joint_points.setIconSize(QtCore.QSize(32, 32))
self.button_joint_points.setObjectName(_fromUtf8("button_joint_points"))
self.gridLayout_9.addWidget(self.button_joint_points, 4, 0, 1, 1)
self.button_joint_faces = QtGui.QPushButton(self.align_tab_2)
- icon84 = QtGui.QIcon()
- icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_joint_faces.setIcon(icon84)
+ icon87 = QtGui.QIcon()
+ icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_joint_faces.setIcon(icon87)
self.button_joint_faces.setIconSize(QtCore.QSize(32, 32))
self.button_joint_faces.setObjectName(_fromUtf8("button_joint_faces"))
self.gridLayout_9.addWidget(self.button_joint_faces, 5, 0, 1, 1)
- spacerItem17 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_9.addItem(spacerItem17, 6, 0, 1, 1)
+ spacerItem19 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_9.addItem(spacerItem19, 6, 0, 1, 1)
self.tabWidget_9.addTab(self.align_tab_2, _fromUtf8(""))
self.cut_tab_2 = QtGui.QWidget()
self.cut_tab_2.setObjectName(_fromUtf8("cut_tab_2"))
@@ -1953,8 +2018,8 @@ class Ui_Form(object):
self.button_cut_reset.setMaximumSize(QtCore.QSize(60, 16777215))
self.button_cut_reset.setObjectName(_fromUtf8("button_cut_reset"))
self.horizontalLayout_80.addWidget(self.button_cut_reset)
- spacerItem18 = QtGui.QSpacerItem(18, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout_80.addItem(spacerItem18)
+ spacerItem20 = QtGui.QSpacerItem(18, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.horizontalLayout_80.addItem(spacerItem20)
self.button_cut_apply = QtGui.QPushButton(self.groupBox_20)
self.button_cut_apply.setEnabled(False)
self.button_cut_apply.setMaximumSize(QtCore.QSize(50, 16777215))
@@ -1965,8 +2030,8 @@ class Ui_Form(object):
self.gridLayout_98.addLayout(self.gridLayout_100, 1, 0, 1, 1)
self.gridLayout_97.addWidget(self.groupBox_20, 0, 0, 1, 1)
self.gridLayout_96.addWidget(self.frame_10, 0, 0, 1, 1)
- spacerItem19 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_96.addItem(spacerItem19, 1, 0, 1, 1)
+ spacerItem21 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_96.addItem(spacerItem21, 1, 0, 1, 1)
self.tabWidget_9.addTab(self.cut_tab_2, _fromUtf8(""))
self.rotate_tab_2 = QtGui.QWidget()
self.rotate_tab_2.setObjectName(_fromUtf8("rotate_tab_2"))
@@ -2010,9 +2075,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_105.addWidget(self.ObjRot_button_select_axis, 1, 0, 1, 1)
- icon85 = QtGui.QIcon()
- icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_10.addTab(self.tab_18, icon85, _fromUtf8(""))
+ icon88 = QtGui.QIcon()
+ icon88.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_10.addTab(self.tab_18, icon88, _fromUtf8(""))
self.tab_19 = QtGui.QWidget()
self.tab_19.setObjectName(_fromUtf8("tab_19"))
self.gridLayout_106 = QtGui.QGridLayout(self.tab_19)
@@ -2039,9 +2104,9 @@ 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_106.addWidget(self.ObjRot_button_select_center, 1, 0, 1, 1)
- icon86 = QtGui.QIcon()
- icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_10.addTab(self.tab_19, icon86, _fromUtf8(""))
+ icon89 = QtGui.QIcon()
+ icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_10.addTab(self.tab_19, icon89, _fromUtf8(""))
self.gridLayout_104.addWidget(self.tabWidget_10, 1, 0, 1, 1)
self.groupBox_21 = QtGui.QGroupBox(self.frame_11)
self.groupBox_21.setMinimumSize(QtCore.QSize(150, 67))
@@ -2077,9 +2142,9 @@ class Ui_Form(object):
self.ObjRot_button_select_angle.setMaximumSize(QtCore.QSize(80, 16777215))
self.ObjRot_button_select_angle.setObjectName(_fromUtf8("ObjRot_button_select_angle"))
self.gridLayout_109.addWidget(self.ObjRot_button_select_angle, 0, 0, 1, 1)
- icon87 = QtGui.QIcon()
- icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_11.addTab(self.tab_21, icon87, _fromUtf8(""))
+ icon90 = QtGui.QIcon()
+ icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_11.addTab(self.tab_21, icon90, _fromUtf8(""))
self.gridLayout_107.addWidget(self.tabWidget_11, 0, 0, 1, 1)
self.horizontalLayout_81 = QtGui.QHBoxLayout()
self.horizontalLayout_81.setObjectName(_fromUtf8("horizontalLayout_81"))
@@ -2107,8 +2172,8 @@ class Ui_Form(object):
self.ObjRot_button_reset.setMaximumSize(QtCore.QSize(60, 16777215))
self.ObjRot_button_reset.setObjectName(_fromUtf8("ObjRot_button_reset"))
self.horizontalLayout_82.addWidget(self.ObjRot_button_reset)
- spacerItem20 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout_82.addItem(spacerItem20)
+ spacerItem22 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.horizontalLayout_82.addItem(spacerItem22)
self.ObjRot_button_apply = QtGui.QPushButton(self.frame_11)
self.ObjRot_button_apply.setMinimumSize(QtCore.QSize(40, 0))
self.ObjRot_button_apply.setMaximumSize(QtCore.QSize(60, 16777215))
@@ -2116,8 +2181,8 @@ class Ui_Form(object):
self.horizontalLayout_82.addWidget(self.ObjRot_button_apply)
self.gridLayout_104.addLayout(self.horizontalLayout_82, 3, 0, 1, 1)
self.gridLayout_103.addWidget(self.frame_11, 0, 0, 1, 1)
- spacerItem21 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_103.addItem(spacerItem21, 1, 0, 1, 1)
+ spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_103.addItem(spacerItem23, 1, 0, 1, 1)
self.tabWidget_9.addTab(self.rotate_tab_2, _fromUtf8(""))
self.translate_tab_2 = QtGui.QWidget()
self.translate_tab_2.setObjectName(_fromUtf8("translate_tab_2"))
@@ -2228,9 +2293,9 @@ class Ui_Form(object):
self.gridLayout_114.addLayout(self.gridLayout_117, 2, 0, 1, 1)
self.gridLayout_113.addLayout(self.gridLayout_114, 2, 0, 1, 1)
self.gridLayout_112.addWidget(self.groupBox_22, 0, 0, 1, 1)
- icon88 = QtGui.QIcon()
- icon88.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_12.addTab(self.tab_22, icon88, _fromUtf8(""))
+ icon91 = QtGui.QIcon()
+ icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_12.addTab(self.tab_22, icon91, _fromUtf8(""))
self.tab_23 = QtGui.QWidget()
self.tab_23.setObjectName(_fromUtf8("tab_23"))
self.gridLayout_118 = QtGui.QGridLayout(self.tab_23)
@@ -2305,9 +2370,9 @@ class Ui_Form(object):
self.gridLayout_120.addLayout(self.gridLayout_123, 0, 0, 1, 1)
self.gridLayout_119.addLayout(self.gridLayout_120, 2, 0, 1, 1)
self.gridLayout_118.addWidget(self.groupBox_23, 0, 0, 1, 1)
- icon89 = QtGui.QIcon()
- icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_12.addTab(self.tab_23, icon89, _fromUtf8(""))
+ icon92 = QtGui.QIcon()
+ icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_12.addTab(self.tab_23, icon92, _fromUtf8(""))
self.gridLayout_111.addWidget(self.tabWidget_12, 2, 0, 1, 1)
self.horizontalLayout_84 = QtGui.QHBoxLayout()
self.horizontalLayout_84.setObjectName(_fromUtf8("horizontalLayout_84"))
@@ -2316,8 +2381,8 @@ class Ui_Form(object):
self.ObjTrans_button_reset.setMaximumSize(QtCore.QSize(60, 16777215))
self.ObjTrans_button_reset.setObjectName(_fromUtf8("ObjTrans_button_reset"))
self.horizontalLayout_84.addWidget(self.ObjTrans_button_reset)
- spacerItem22 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout_84.addItem(spacerItem22)
+ spacerItem24 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.horizontalLayout_84.addItem(spacerItem24)
self.ObjTrans_button_apply = QtGui.QPushButton(self.frame_12)
self.ObjTrans_button_apply.setMinimumSize(QtCore.QSize(40, 0))
self.ObjTrans_button_apply.setMaximumSize(QtCore.QSize(60, 16777215))
@@ -2325,8 +2390,8 @@ class Ui_Form(object):
self.horizontalLayout_84.addWidget(self.ObjTrans_button_apply)
self.gridLayout_111.addLayout(self.horizontalLayout_84, 3, 0, 1, 1)
self.gridLayout_110.addWidget(self.frame_12, 0, 0, 1, 1)
- spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_110.addItem(spacerItem23, 1, 0, 1, 1)
+ spacerItem25 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_110.addItem(spacerItem25, 1, 0, 1, 1)
self.tabWidget_9.addTab(self.translate_tab_2, _fromUtf8(""))
self.gridLayout_94.addWidget(self.tabWidget_9, 0, 0, 1, 1)
self.tabWidget_7.addTab(self.Modif_Tab_2, _fromUtf8(""))
@@ -2341,103 +2406,103 @@ class Ui_Form(object):
sizePolicy.setHeightForWidth(self.button_alignview.sizePolicy().hasHeightForWidth())
self.button_alignview.setSizePolicy(sizePolicy)
self.button_alignview.setMaximumSize(QtCore.QSize(16777215, 16777215))
- icon90 = QtGui.QIcon()
- icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_alignview.setIcon(icon90)
+ icon93 = QtGui.QIcon()
+ icon93.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_alignview.setIcon(icon93)
self.button_alignview.setIconSize(QtCore.QSize(32, 32))
self.button_alignview.setObjectName(_fromUtf8("button_alignview"))
self.gridLayout_124.addWidget(self.button_alignview, 0, 0, 1, 1)
- spacerItem24 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_124.addItem(spacerItem24, 2, 0, 1, 1)
+ spacerItem26 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_124.addItem(spacerItem26, 2, 0, 1, 1)
self.button_trackcamera = QtGui.QPushButton(self.View_Tab_2)
- icon91 = QtGui.QIcon()
- icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_trackcamera.setIcon(icon91)
+ icon94 = QtGui.QIcon()
+ icon94.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_trackcamera.setIcon(icon94)
self.button_trackcamera.setIconSize(QtCore.QSize(32, 32))
self.button_trackcamera.setObjectName(_fromUtf8("button_trackcamera"))
self.gridLayout_124.addWidget(self.button_trackcamera, 1, 0, 1, 1)
- icon92 = QtGui.QIcon()
- icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_7.addTab(self.View_Tab_2, icon92, _fromUtf8(""))
+ icon95 = QtGui.QIcon()
+ icon95.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_7.addTab(self.View_Tab_2, icon95, _fromUtf8(""))
self.tab_24 = QtGui.QWidget()
self.tab_24.setObjectName(_fromUtf8("tab_24"))
self.gridLayout_125 = QtGui.QGridLayout(self.tab_24)
self.gridLayout_125.setObjectName(_fromUtf8("gridLayout_125"))
self.button_isView = QtGui.QPushButton(self.tab_24)
- icon93 = QtGui.QIcon()
- icon93.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isView.setIcon(icon93)
+ icon96 = QtGui.QIcon()
+ icon96.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isView.setIcon(icon96)
self.button_isView.setIconSize(QtCore.QSize(32, 32))
self.button_isView.setObjectName(_fromUtf8("button_isView"))
self.gridLayout_125.addWidget(self.button_isView, 9, 0, 1, 1)
- spacerItem25 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.gridLayout_125.addItem(spacerItem25, 10, 0, 1, 1)
+ spacerItem27 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.gridLayout_125.addItem(spacerItem27, 10, 0, 1, 1)
self.button_isParallel = QtGui.QPushButton(self.tab_24)
- icon94 = QtGui.QIcon()
- icon94.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isParallel.setIcon(icon94)
+ icon97 = QtGui.QIcon()
+ icon97.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isParallel.setIcon(icon97)
self.button_isParallel.setIconSize(QtCore.QSize(32, 32))
self.button_isParallel.setObjectName(_fromUtf8("button_isParallel"))
self.gridLayout_125.addWidget(self.button_isParallel, 0, 0, 1, 1)
self.button_isAngle = QtGui.QPushButton(self.tab_24)
- icon95 = QtGui.QIcon()
- icon95.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isAngle.setIcon(icon95)
+ icon98 = QtGui.QIcon()
+ icon98.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isAngle.setIcon(icon98)
self.button_isAngle.setIconSize(QtCore.QSize(32, 32))
self.button_isAngle.setObjectName(_fromUtf8("button_isAngle"))
self.gridLayout_125.addWidget(self.button_isAngle, 4, 0, 1, 1)
self.button_isLength = QtGui.QPushButton(self.tab_24)
- icon96 = QtGui.QIcon()
- icon96.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isLength.setIcon(icon96)
+ icon99 = QtGui.QIcon()
+ icon99.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isLength.setIcon(icon99)
self.button_isLength.setIconSize(QtCore.QSize(32, 32))
self.button_isLength.setObjectName(_fromUtf8("button_isLength"))
self.gridLayout_125.addWidget(self.button_isLength, 6, 0, 1, 1)
self.button_isDistance = QtGui.QPushButton(self.tab_24)
- icon97 = QtGui.QIcon()
- icon97.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isDistance.setIcon(icon97)
+ icon100 = QtGui.QIcon()
+ icon100.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isDistance.setIcon(icon100)
self.button_isDistance.setIconSize(QtCore.QSize(32, 32))
self.button_isDistance.setObjectName(_fromUtf8("button_isDistance"))
self.gridLayout_125.addWidget(self.button_isDistance, 5, 0, 1, 1)
self.button_isCoplanar = QtGui.QPushButton(self.tab_24)
- icon98 = QtGui.QIcon()
- icon98.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isCoplanar.setIcon(icon98)
+ icon101 = QtGui.QIcon()
+ icon101.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isCoplanar.setIcon(icon101)
self.button_isCoplanar.setIconSize(QtCore.QSize(32, 32))
self.button_isCoplanar.setObjectName(_fromUtf8("button_isCoplanar"))
self.gridLayout_125.addWidget(self.button_isCoplanar, 2, 0, 1, 1)
self.button_isArea = QtGui.QPushButton(self.tab_24)
- icon99 = QtGui.QIcon()
- icon99.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isArea.setIcon(icon99)
+ icon102 = QtGui.QIcon()
+ icon102.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isArea.setIcon(icon102)
self.button_isArea.setIconSize(QtCore.QSize(32, 32))
self.button_isArea.setObjectName(_fromUtf8("button_isArea"))
self.gridLayout_125.addWidget(self.button_isArea, 7, 0, 1, 1)
self.button_isPerpendicular = QtGui.QPushButton(self.tab_24)
- icon100 = QtGui.QIcon()
- icon100.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isPerpendicular.setIcon(icon100)
+ icon103 = QtGui.QIcon()
+ icon103.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isPerpendicular.setIcon(icon103)
self.button_isPerpendicular.setIconSize(QtCore.QSize(32, 32))
self.button_isPerpendicular.setObjectName(_fromUtf8("button_isPerpendicular"))
self.gridLayout_125.addWidget(self.button_isPerpendicular, 1, 0, 1, 1)
self.button_isClearance = QtGui.QPushButton(self.tab_24)
- icon101 = QtGui.QIcon()
- icon101.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isClearance.setIcon(icon101)
+ icon104 = QtGui.QIcon()
+ icon104.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isClearance.setIcon(icon104)
self.button_isClearance.setIconSize(QtCore.QSize(32, 32))
self.button_isClearance.setObjectName(_fromUtf8("button_isClearance"))
self.gridLayout_125.addWidget(self.button_isClearance, 3, 0, 1, 1)
self.button_isRadius = QtGui.QPushButton(self.tab_24)
- icon102 = QtGui.QIcon()
- icon102.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isRadius.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.button_isRadius.setIcon(icon102)
+ icon105 = QtGui.QIcon()
+ icon105.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isRadius.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.button_isRadius.setIcon(icon105)
self.button_isRadius.setIconSize(QtCore.QSize(32, 32))
self.button_isRadius.setObjectName(_fromUtf8("button_isRadius"))
self.gridLayout_125.addWidget(self.button_isRadius, 8, 0, 1, 1)
- icon103 = QtGui.QIcon()
- icon103.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.tabWidget_7.addTab(self.tab_24, icon103, _fromUtf8(""))
+ icon106 = QtGui.QIcon()
+ icon106.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.tabWidget_7.addTab(self.tab_24, icon106, _fromUtf8(""))
self.gridLayout_128.addWidget(self.tabWidget_7, 0, 0, 1, 1)
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.gridLayout_34.addWidget(self.scrollArea, 0, 0, 1, 1)
@@ -2446,21 +2511,22 @@ class Ui_Form(object):
self.button_WF_quit = QtGui.QPushButton(Form)
self.button_WF_quit.setObjectName(_fromUtf8("button_WF_quit"))
self.horizontalLayout_43.addWidget(self.button_WF_quit)
- spacerItem26 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout_43.addItem(spacerItem26)
+ spacerItem28 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.horizontalLayout_43.addItem(spacerItem28)
self.label_release = QtGui.QLabel(Form)
self.label_release.setObjectName(_fromUtf8("label_release"))
self.horizontalLayout_43.addWidget(self.label_release)
self.gridLayout_34.addLayout(self.horizontalLayout_43, 1, 0, 1, 1)
self.retranslateUi(Form)
- self.tabWidget_7.setCurrentIndex(0)
- self.tabWidget.setCurrentIndex(2)
- self.tabWidget_2.setCurrentIndex(2)
+ self.tabWidget_7.setCurrentIndex(6)
+ self.tabWidget.setCurrentIndex(0)
+ self.tabWidget_2.setCurrentIndex(0)
self.point_loc_comboBox.setCurrentIndex(1)
self.tabWidget_8.setCurrentIndex(0)
self.tabWidget_3.setCurrentIndex(1)
self.transition_comboBox.setCurrentIndex(2)
+ self.Image_comboBox_axis_scale.setCurrentIndex(0)
self.tabWidget_9.setCurrentIndex(0)
self.tabWidget_10.setCurrentIndex(0)
self.ObjRot_comboBox_axis.setCurrentIndex(0)
@@ -2473,7 +2539,10 @@ class Ui_Form(object):
def retranslateUi(self, Form):
Form.setWindowTitle(_translate("Form", "WorkFeature", None))
- self.button_origin.setToolTip(_translate("Form", "Create at origin: a point and X,Y and Z axis and XZ,XY and YZ planes", None))
+ self.button_origin.setToolTip(_translate("Form", "Create at origin of the document: \n"
+" a point,\n"
+" X, Y, Z axis, \n"
+" XZ, XY, YZ planes.", None))
self.button_origin.setText(_translate("Form", "Origin", None))
self.groupBox_13.setTitle(_translate("Form", "Preferences :", None))
self.radioButton_verbose.setToolTip(_translate("Form", "Toggle here if you want a lot of information printed into report View.", None))
@@ -2508,14 +2577,17 @@ class Ui_Form(object):
self.tolerance_edit.setText(_translate("Form", "1e-10", None))
self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Origin_Tab_2), _translate("Form", "Ori. Pref.", None))
self.button_object_center.setToolTip(_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"
-" All center of Mass will be created too.\n"
+"if BBox is not toggled :\n"
+" This point is the MEAN location of all center of Mass (if exist) of all objects.\n"
+" All center of Mass of al selected object(s) will be created too.\n"
" \n"
-"if BBox check box is toggled\n"
-" This point is the center of the Global X,Y,Z bounding box of all objects.\n"
-" This bounding box alway exists (especially for draft objects).\n"
-" Be aware this point is not necessary the center of Mass of all Objects!", None))
+"if BBox check box is toggled :\n"
+" This point is the center of the Global X,Y,Z bounding box of all objects.\n"
+" This global bounding box alway exists (especially for draft objects).\n"
+" Be aware this point is not necessary the center of Mass of all Objects!\n"
+"\n"
+"- First select one or several Object(s)\n"
+"- Then push this button", None))
self.button_object_center.setText(_translate("Form", "Object(s) Center", None))
self.checkBox_object_center.setToolTip(_translate("Form", "if BBox check box is toggled\n"
" This point is the center of the Global X,Y,Z bounding box of all objects.\n"
@@ -2523,41 +2595,85 @@ class Ui_Form(object):
" Be aware this point is not necessary the center of Mass of all Objects!", None))
self.checkBox_object_center.setText(_translate("Form", "BBox", None))
self.button_Npoints_center.setToolTip(_translate("Form", "Point=(N Points):\n"
-"Create a Point at mean location of all selected points.\n"
-"- First select several Points\n"
+"Create a Point at MEAN location of all selected points.\n"
+"- First select several Points (at least 2)\n"
"- Then push this button", None))
self.button_Npoints_center.setText(_translate("Form", "Points Center", None))
- self.button_line_center.setToolTip(_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))
+ self.button_line_center.setToolTip(_translate("Form", "Create Point(s) :\n"
+"Cut each selected Line(s) in 2 (n) parts and\n"
+"create a (n-1) Point(s) along selected edge(s) except at extrema.\n"
+"The number indicates how many parts to consider.\n"
+"\n"
+"- First define the number of Parts, then\n"
+"- Select at least 2 Points and/or\n"
+"- Select one or several Line/Edge(s) and/or\n"
+"- Select one Plane/Face to process all (4) Edges and/or\n"
+"- Select one Object to process all Edges at once\n"
+"- Then Click on the button ", None))
self.button_line_center.setText(_translate("Form", "Line(s) Center", None))
self.spin_line_center.setToolTip(_translate("Form", "The number indicates in how many parts each selected Lines(s) will be cut (Max 100).", None))
- self.button_line_extrema.setToolTip(_translate("Form", "Create Points at start and end location of each selected Line(s).", None))
+ self.button_line_extrema.setToolTip(_translate("Form", "Create Points at start and end location of each selected Line(s).\n"
+"\n"
+"- Select one or several Line/Edge(s) and/or\n"
+"- Select one Plane/Face to process all (4) Edges and/or\n"
+"- Select one Object to process all Edges at once\n"
+"- Then Click on the button ", None))
self.button_line_extrema.setText(_translate("Form", "Line(s) Extrema", None))
- self.button_circle_center.setToolTip(_translate("Form", "Create a Point at center location of each selected Circle(s) or Arc(s).", None))
+ self.button_circle_center.setToolTip(_translate("Form", "Create a Point at center location of each selected Circle(s), Arc(s) or Ellipse(s).\n"
+"\n"
+"- Select one or several Circle(s), Arc(s) or Ellipse(s)\n"
+"- Then Click on the button", None))
self.button_circle_center.setText(_translate("Form", "Circle(s) Center", None))
- self.button_face_center.setToolTip(_translate("Form", "Create a Point at center location of each selected Face(s).", None))
+ self.button_face_center.setToolTip(_translate("Form", "Create a Point at center location of each selected Face(s).\n"
+"\n"
+"- Select one or several Plane/Face(s) to process and/or\n"
+"- Select one or several Object(s) to process all Faces at once\n"
+"- Then Click on the button ", None))
self.button_face_center.setText(_translate("Form", "Face(s) Center", None))
- self.button_line_face_point.setToolTip(_translate("Form", "Create a point at the intersection of the Line and Plane selected.", None))
+ self.button_line_face_point.setToolTip(_translate("Form", "Create a point at the intersection of the Line(s) and Plane(s) selected.\n"
+" \n"
+"First\n"
+"- Select at least 2 Points and/or\n"
+"- Select one or several Line/Edge(s) \n"
+"and Second\n"
+"- Select one or several Plane/Face(s) to process and/or\n"
+"- Select one or several Object(s) to process all Faces at once\n"
+"- Then Click on the button\n"
+"\n"
+"Be aware that if the plane is not extended enough the intersection Point is still created (as if). ", None))
self.button_line_face_point.setText(_translate("Form", "Point=(Line,Face) ", None))
self.button_point_face_point.setToolTip(_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"
+"First\n"
+"- Select one (or several) Point(s) and/or\n"
+"- Select one or several Line/Edge(s) \n"
+"and Second\n"
+"- Select one or several Plane/Face(s) to process and/or\n"
+"- Select one or several Object(s) to process all Faces at once\n"
+"- Then Click on the 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))
+"The Vector TC is perpendicular to the plane.\n"
+"\n"
+"Be aware that if the plane is not extended enough the intersection Point is still created (as if). ", None))
self.button_point_face_point.setText(_translate("Form", "Point(s)=(Pt(s),Face(s))", None))
self.button_point_line_point.setToolTip(_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"
+" Create projection(s) of Point(s) onto Line(s).\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))
+" First\n"
+" - Select one (or several) Point(s)\n"
+" and Second\n"
+" - Select one or several Line/Edge(s) and/or\n"
+" - Select one or several Plane/Face(s) to process and/or\n"
+" - Select one or several Object(s) to process all Faces at once\n"
+" - Then Click on the button\n"
+" \n"
+" Plot the intersection point T on a Line given one Linee and One Point C.\n"
+" The Vector TC is perpendicular to the Line.\n"
+" The symetric point Cprime is also created as TC=TCprime.\n"
+" \n"
+" Be aware that if the line is not extended enough the intersection Point is still created (as if).", None))
self.button_point_line_point.setText(_translate("Form", "Point(s)=(Pt(s),Line(s)) ", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Point_Tab1_3), _translate("Form", "Point 1/3", None))
self.tabWidget.setTabToolTip(self.tabWidget.indexOf(self.Point_Tab1_3), _translate("Form", "Create Point(s)", None))
@@ -2618,7 +2734,7 @@ class Ui_Form(object):
"- Then click on this button.", None))
self.button_object_Npoint.setText(_translate("Form", "Object(s) N Point(s)", None))
self.button_point_to_sketch.setToolTip(_translate("Form", "Transform Point(s) in Sketch\'s Point(s) by projection onto the Sketch\'s Plane:\n"
-"- First select an existing Skecth;\n"
+"- First select an existing Sketch;\n"
"- Select as much as Points needed;\n"
"Then click on this button.", None))
self.button_point_to_sketch.setText(_translate("Form", "Point(s) to Sketch", None))
@@ -2854,37 +2970,13 @@ class Ui_Form(object):
self.button_line_to_sketch.setText(_translate("Form", "Axis(es) to Sketch", None))
self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.Axis_Tab31_3), _translate("Form", "Axis 3/3", None))
self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Axis_Tab), _translate("Form", "Axis", None))
- self.button_linecenter_circle.setToolTip(_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))
- self.button_linecenter_circle.setText(_translate("Form", "Circle=(Axis, center)", None))
- self.radius_circle.setToolTip(_translate("Form", "Radius of the Circle.", None))
- self.radius_circle.setText(_translate("Form", "10.0", None))
- self.button_linepoint_circle.setToolTip(_translate("Form", "Select an Axis and a Point to create a Circle\n"
-"centered on the Axis and tangenting the Point.", None))
- self.button_linepoint_circle.setText(_translate("Form", "Circle=(Axis, point)", None))
- self.button_3points_circle.setToolTip(_translate("Form", "Select 3 Points to create a Circle.", None))
- self.button_3points_circle.setText(_translate("Form", "Circle=(3 points)", None))
- self.button_cut_circle.setToolTip(_translate("Form", "Create Arcs:\n"
-"Cut the selected Circle(s) or Arc(s) in 2(n) parts and create 2(n) Arcs.\n"
-"The number indicates in how many parts to cut.\n"
-"- First select as many Circles and Arcs you want\n"
-"- Second set the number of parts\n"
-"- Third push this button\n"
-"\n"
-"NB: You can change the successive lines to be bicolor (red and white) \n"
-"in \"Ori. Pref.\" TAB", None))
- self.button_cut_circle.setText(_translate("Form", "Arcs=Cut(Circle)", None))
- self.spin_circle_cut.setToolTip(_translate("Form", "The number indicates in how many parts the selected Circle will be cut (Max 100).", None))
- self.button_3points_ellipse.setToolTip(_translate("Form", "Select a center and 2 Points to create an Ellipse.", None))
- self.button_3points_ellipse.setText(_translate("Form", "Ellipse=(3 points)", None))
- self.button_circle_to_sketch.setToolTip(_translate("Form", "Transform Circle(s) and Arc(s) in Sketch\'s object(s) by projection onto the Sketch\'s Plane:\n"
-"- First select an existing Skecth;\n"
-"- Select as much as Circles and arcs needed;\n"
-"Then click on this button.", None))
- self.button_circle_to_sketch.setText(_translate("Form", "Circle(s) to Sketch", None))
- self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_16), _translate("Form", "Circle", None))
self.lineEdit.setText(_translate("Form", "Examples from http://www.mathcurve.com/", None))
+ self.button_4points_bezier.setToolTip(_translate("Form", "Bezier Cubic=(4 Points):\n"
+"Create a Wire (Bezier Cubic) from 4 selected points.\n"
+"- First 4 Points\n"
+"- Then push this button", None))
+ self.button_4points_bezier.setText(_translate("Form", "4 Points Bezier Cubic", None))
+ self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.Wire_Tab1_3), _translate("Form", "Wire", None))
self.groupBox_14.setTitle(_translate("Form", "Equation :", None))
self.label_y_3.setText(_translate("Form", "Y (a,b,t) ", None))
self.ParCurve_a_2.setText(_translate("Form", "10 # Radius", None))
@@ -2923,7 +3015,7 @@ class Ui_Form(object):
self.ParCurve_button_store_2.setText(_translate("Form", "Store", None))
self.ParCurve_button_apply_2.setToolTip(_translate("Form", "Click to visualize the curve.", None))
self.ParCurve_button_apply_2.setText(_translate("Form", "Apply", None))
- self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_14), _translate("Form", "Parametric 2D", None))
+ self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.Wire_Tab2_3), _translate("Form", "Parametric 2D", None))
self.ParCurve_comboBox_3.setToolTip(_translate("Form", "Choose another curve from the list.", None))
self.ParCurve_button_edit_3.setToolTip(_translate("Form", "Click to access to a table where you can edit all parameters of all curves and \n"
"save your custom curves.", None))
@@ -2961,8 +3053,44 @@ class Ui_Form(object):
self.checkBox_polyline_3.setText(_translate("Form", "Polyline", None))
self.checkBox_bspline_3.setText(_translate("Form", "Bspline", None))
self.checkBox_bezier_3.setText(_translate("Form", "Bezier", None))
- self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_15), _translate("Form", "Parametric 3D", None))
- self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Wire_Tab_2), _translate("Form", "Wire", None))
+ self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.Wire_Tab3_3), _translate("Form", "Parametric 3D", None))
+ self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Wire_Tab), _translate("Form", "Wire", None))
+ self.button_linecenter_circle.setToolTip(_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))
+ self.button_linecenter_circle.setText(_translate("Form", "Circle=(Axis, center)", None))
+ self.radius_circle.setToolTip(_translate("Form", "Radius of the Circle.", None))
+ self.radius_circle.setText(_translate("Form", "10.0", None))
+ self.button_linepoint_circle.setToolTip(_translate("Form", "Select an Axis and a Point to create a Circle\n"
+"centered on the Axis and tangenting the Point.", None))
+ self.button_linepoint_circle.setText(_translate("Form", "Circle=(Axis, point)", None))
+ self.button_3points_ellipse.setToolTip(_translate("Form", "Select a center and 2 Points to create an Ellipse.", None))
+ self.button_3points_ellipse.setText(_translate("Form", "Ellipse=(3 points)", None))
+ self.button_circle_to_sketch.setToolTip(_translate("Form", "Transform Circle(s) and Arc(s) in Sketch\'s object(s) by projection onto the Sketch\'s Plane:\n"
+"- First select an existing Skecth;\n"
+"- Select as much as Circles and arcs needed;\n"
+"Then click on this button.", None))
+ self.button_circle_to_sketch.setText(_translate("Form", "Circle(s) to Sketch", None))
+ self.button_3points_arc.setToolTip(_translate("Form", "Arc=(3 Points):\n"
+"Create one Arc depending on 3 points.\n"
+"\n"
+"- First select 3 Points\n"
+"- Then Click on the button", None))
+ self.button_3points_arc.setText(_translate("Form", "Arc=(3 points)", None))
+ self.button_3points_circle.setToolTip(_translate("Form", "Select 3 Points to create a Circle.", None))
+ self.button_3points_circle.setText(_translate("Form", "Circle=(3 points)", None))
+ self.button_cut_circle.setToolTip(_translate("Form", "Create Arcs:\n"
+"Cut the selected Circle(s) or Arc(s) in 2(n) parts and create 2(n) Arcs.\n"
+"The number indicates in how many parts to cut.\n"
+"- First select as many Circles and Arcs you want\n"
+"- Second set the number of parts\n"
+"- Third push this button\n"
+"\n"
+"NB: You can change the successive lines to be bicolor (red and white) \n"
+"in \"Ori. Pref.\" TAB", None))
+ self.button_cut_circle.setText(_translate("Form", "Arcs=Cut(Circle)", None))
+ self.spin_circle_cut.setToolTip(_translate("Form", "The number indicates in how many parts the selected Circle will be cut (Max 100).", None))
+ self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Circle_Tab), _translate("Form", "Circle", None))
self.button_threepoints_plane.setToolTip(_translate("Form", "Plane=(3 Points):\n"
"Create a Plane crossing 3 Points.\n"
"- First select 3 different points\n"
@@ -3123,7 +3251,7 @@ class Ui_Form(object):
"- Then push this button\n"
"", None))
self.button_beam.setText(_translate("Form", "Beam", None))
- self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_17), _translate("Form", "Sweep", None))
+ self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Sweep_Tab), _translate("Form", "Sweep", None))
self.button_boundingboxes.setToolTip(_translate("Form", "Create bounding boxes around each of selected object(s).\n"
"6 rectangles at the limits of each bounding boxes will be created.", None))
self.button_boundingboxes.setText(_translate("Form", "Bounding Box(es)", None))
@@ -3238,6 +3366,39 @@ class Ui_Form(object):
" Authors = 2015 Gaël Ecorchard (Galou)", None))
self.button_difference.setText(_translate("Form", "Difference", None))
self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Objects_Tab2_2), _translate("Form", "Object", None))
+ self.button_scale_image.setToolTip(_translate("Form", "Copy and Scale Image(s) :\n"
+"Scale an image along desired direction(s) (make a copy first of the original Image).\n"
+"- First define the direction(s) on the right combo (default is XY):\n"
+" if X is selected then only X direction will be scaled\n"
+" if XY is selected then the scale will be squared in X and Y directions together\n"
+"- Select one or several Images (in combo view)\n"
+"- Select one Line (or 2 Points) (close to the Image) you want to define new dimension.\n"
+"(better to select a Line strictly in X direction if you want to enlarge/squize the Image in X direction)\n"
+"- Then give the target dimension of the Line (on the last right LineEdit).\n"
+"Then push the button\n"
+"", None))
+ self.button_scale_image.setText(_translate("Form", "Scale", None))
+ self.Image_comboBox_axis_scale.setToolTip(_translate("Form", "Axis of Scaling for image.\n"
+"Options :\n"
+" XY\n"
+" XZ\n"
+" YZ\n"
+" X\n"
+" Y\n"
+" Z\n"
+"i.e.: if XY is selected then the X and Y dimensions will be scaled together.\n"
+"if only X is selected the only X dimension will be scaled.\n"
+"\n"
+"Note that some options are invalid regarding the image\'s plane.", None))
+ self.Image_comboBox_axis_scale.setItemText(0, _translate("Form", "XY", None))
+ self.Image_comboBox_axis_scale.setItemText(1, _translate("Form", "XZ", None))
+ self.Image_comboBox_axis_scale.setItemText(2, _translate("Form", "YZ", None))
+ self.Image_comboBox_axis_scale.setItemText(3, _translate("Form", "X", None))
+ self.Image_comboBox_axis_scale.setItemText(4, _translate("Form", "Y", None))
+ self.Image_comboBox_axis_scale.setItemText(5, _translate("Form", "Z", None))
+ self.length_image.setToolTip(_translate("Form", "Desired length(s).", None))
+ self.length_image.setText(_translate("Form", "100.0", None))
+ self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_2), _translate("Form", "Image", None))
self.button_alignface2view.setToolTip(_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"
"These objects will be moved not the point of view.\n"
diff --git a/WorkFeature/WFGui_2015.ui b/WorkFeature/WFGui_2015.ui
index 3577e78..197c35b 100644
--- a/WorkFeature/WFGui_2015.ui
+++ b/WorkFeature/WFGui_2015.ui
@@ -6,8 +6,8 @@
0
0
- 364
- 693
+ 382
+ 845
@@ -15,139 +15,135 @@
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_Axes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_Axes.svg
+ ../Icons/WF_wf.svg../Icons/WF_wf.svg
-
+
+ QFrame::StyledPanel
+
+
+ QFrame::Sunken
+
+
+ 1
+
+
+ 0
+
true
-
+
0
0
- 344
- 638
+ 365
+ 773
-
+
-
-
+
+
+
+ 0
+ 0
+
+
- QTabWidget::South
+ QTabWidget::West
- 0
+ 8
-
-
- W. F.
+
+
+
+ ../Icons/WF_Axes.svg../Icons/WF_Axes.svg
-
+
+ Ori. Pref.
+
+
-
-
-
+
+
+ Create at origin of the document:
+ a point,
+ X, Y, Z axis,
+ XZ, XY, YZ planes.
+
+
+ Origin
+
+
+
+ ../Icons/WF_Axes.svg../Icons/WF_Axes.svg
+
+
- 0
- 0
+ 32
+ 32
-
-
- 300
- 16777215
-
+
+
+ -
+
+
+ QFrame::StyledPanel
-
- QTabWidget::West
+
+ QFrame::Raised
-
- 0
-
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_Axes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_Axes.svg
-
-
- Ori. Pref.
-
-
-
-
-
-
- Create at origin: a point and X,Y and Z axis and XZ,XY and YZ planes
-
-
- Origin
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_Axes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_Axes.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- QFrame::StyledPanel
-
-
- QFrame::Raised
-
-
-
-
-
-
- Preferences :
-
-
-
-
-
-
- Toggle here if you want a lot of information printed into report View.
-
-
- Verbose
-
-
- false
-
-
- false
-
-
-
- -
-
-
- Change the successive lines to be bicolor (red and white) for the following functions:
+
+
-
+
+
+ Preferences :
+
+
+
-
+
+
+ Toggle here if you want a lot of information printed into report View.
+
+
+ Verbose
+
+
+ false
+
+
+ false
+
+
+
+ -
+
+
+ Change the successive lines to be bicolor (red and white) for the following functions:
- in "Axis 1/2" TAB:
Axes=Cut(Wire)
- in "Circle" TAB:
Arcs=Cut(Circle)
-
-
- Bi Color
-
-
- false
-
-
-
- -
-
-
- Force the duplication of the Parent Object for the following functions:
+
+
+ Bi Color
+
+
+ false
+
+
+
+ -
+
+
+ Force the duplication of the Parent Object for the following functions:
- in "Axis 2/2" TAB:
Axes=(Axis,Pt,dist)
If an Edge of a Cube is selected the Cube is duplicate
@@ -155,162 +151,158 @@
Edge at the defined distance from the original.
- in "Plane" TAB:
Plane=(Plane,dist)
-
-
- Object copy
-
-
-
- -
-
-
-
-
-
- Change the tolerance for the following functions:
+
+
+ Object copy
+
+
+
+ -
+
+
-
+
+
+ Change the tolerance for the following functions:
- in "Check" TAB:
are Parallel?
are Perpendicular?
are Coplanar?
-
-
- Tolerance
-
-
-
- -
-
-
-
- 60
- 16777215
-
-
-
- Change the tolerance for the following functions:
+
+
+ Tolerance
+
+
+
+ -
+
+
+
+ 60
+ 16777215
+
+
+
+ Change the tolerance for the following functions:
- in "Check" TAB:
are Parallel?
are Perpendicular?
are Coplanar?
-
-
- 1e-10
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
-
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_point.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_point.svg
-
+
+
+ 1e-10
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+
+ ../Icons/WF_point.svg../Icons/WF_point.svg
+
+
+ Point
+
+
+ Create Point(s)
+
+
+ -
+
+
+ 0
+
+
- Point 1/2
+ Point 1/3
- Point
+ Create Point(s)
-
-
-
-
-
- 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
+
+
-
+
+
-
+
+
+ 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 of al selected object(s) will be created too.
+
+if BBox check box is toggled :
+ This point is the center of the Global X,Y,Z bounding box of all objects.
+ This global bounding box alway exists (especially for draft objects).
+ Be aware this point is not necessary the center of Mass of all Objects!
-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
-
-
-
+- First select one or several Object(s)
+- Then push this button
+
+
+ Object(s) Center
+
+
+
+ ../Icons/WF_centerObjectsPoint.svg../Icons/WF_centerObjectsPoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ if BBox check box 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!
+
+
+ BBox
+
+
+
+
-
- Create a Point at mean location of all selected points.
+ Point=(N Points):
+Create a Point at MEAN location of all selected points.
+- First select several Points (at least 2)
+- Then push this button
Points Center
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_NpointsPoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_NpointsPoint.svg
+ ../Icons/WF_NpointsPoint.svg../Icons/WF_NpointsPoint.svg
@@ -321,7 +313,7 @@ The symetric point Cprime is also created as TC=TCprime.
-
-
+
-
@@ -331,16 +323,24 @@ The symetric point Cprime is also created as TC=TCprime.
- 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.
+ Create Point(s) :
+Cut each selected Line(s) in 2 (n) parts and
+create a (n-1) Point(s) along selected edge(s) except at extrema.
+The number indicates how many parts to consider.
+
+- First define the number of Parts, then
+- Select at least 2 Points and/or
+- Select one or several Line/Edge(s) and/or
+- Select one Plane/Face to process all (4) Edges and/or
+- Select one Object to process all Edges at once
+- Then Click on the button
Line(s) Center
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerLinePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerLinePoint.svg
+ ../Icons/WF_centerLinePoint.svg../Icons/WF_centerLinePoint.svg
@@ -380,17 +380,22 @@ The number indicates how many parts to consider.
- -
-
+
-
+
- Create a point at the intersection of the Line and Plane selected.
+ Create Points at start and end location of each selected Line(s).
+
+- Select one or several Line/Edge(s) and/or
+- Select one Plane/Face to process all (4) Edges and/or
+- Select one Object to process all Edges at once
+- Then Click on the button
- Point=(Line,Face)
+ Line(s) Extrema
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_lineFacePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_lineFacePoint.svg
+ ../Icons/WF_extremaLinePoint.svg../Icons/WF_extremaLinePoint.svg
@@ -400,17 +405,143 @@ The number indicates how many parts to consider.
- -
-
+
-
+
- Create Points at start and end location of each selected Line(s).
+ Create a Point at center location of each selected Circle(s), Arc(s) or Ellipse(s).
+
+- Select one or several Circle(s), Arc(s) or Ellipse(s)
+- Then Click on the button
- Line(s) Extrema
+ Circle(s) Center
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_extremaLinePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_extremaLinePoint.svg
+ ../Icons/WF_centerCirclePoint.svg../Icons/WF_centerCirclePoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Create a Point at center location of each selected Face(s).
+
+- Select one or several Plane/Face(s) to process and/or
+- Select one or several Object(s) to process all Faces at once
+- Then Click on the button
+
+
+ Face(s) Center
+
+
+
+ ../Icons/WF_centerFacePoint.svg../Icons/WF_centerFacePoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Create a point at the intersection of the Line(s) and Plane(s) selected.
+
+First
+- Select at least 2 Points and/or
+- Select one or several Line/Edge(s)
+and Second
+- Select one or several Plane/Face(s) to process and/or
+- Select one or several Object(s) to process all Faces at once
+- Then Click on the button
+
+Be aware that if the plane is not extended enough the intersection Point is still created (as if).
+
+
+ Point=(Line,Face)
+
+
+
+ ../Icons/WF_lineFacePoint.svg../Icons/WF_lineFacePoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Point(s)=(Point(s),Face(s)):
+Create projection(s) of Point(s) onto Face(s).
+
+First
+- Select one (or several) Point(s) and/or
+- Select one or several Line/Edge(s)
+and Second
+- Select one or several Plane/Face(s) to process and/or
+- Select one or several Object(s) to process all Faces at once
+- Then Click on the button
+
+Plot the intersection point T on a Plane given one Plane and One Point C.
+The Vector TC is perpendicular to the plane.
+
+Be aware that if the plane is not extended enough the intersection Point is still created (as if).
+
+
+ Point(s)=(Pt(s),Face(s))
+
+
+
+ ../Icons/WF_pointFacePoint.svg../Icons/WF_pointFacePoint.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Point(s)=(Point(s),Line(s)):
+ Create projection(s) of Point(s) onto Line(s).
+
+ First
+ - Select one (or several) Point(s)
+ and Second
+ - Select one or several Line/Edge(s) and/or
+ - Select one or several Plane/Face(s) to process and/or
+ - Select one or several Object(s) to process all Faces at once
+ - Then Click on the button
+
+ 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.
+
+ Be aware that if the line is not extended enough the intersection Point is still created (as if).
+
+
+ Point(s)=(Pt(s),Line(s))
+
+
+
+ ../Icons/WF_pointLinePoint.svg../Icons/WF_pointLinePoint.svg
@@ -421,109 +552,28 @@ The number indicates how many parts to consider.
-
-
+
Qt::Vertical
20
- 40
+ 252
- -
-
-
- 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 check box 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
-
-
-
-
- -
-
-
- if BBox check box 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!
-
-
- 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
+ Point 2/3
-
+
+ Create Point(s)
+
+
-
@@ -535,7 +585,7 @@ Create a Point at intersection of 2 crossing Lines.
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_lineLinePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_lineLinePoint.svg
+ ../Icons/WF_lineLinePoint.svg../Icons/WF_lineLinePoint.svg
@@ -546,7 +596,7 @@ Create a Point at intersection of 2 crossing Lines.
-
-
+
QLayout::SetFixedSize
@@ -573,7 +623,7 @@ respecting to the choosen reference starting point.
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_alongLinePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_alongLinePoint.svg
+ ../Icons/WF_alongLinePoint.svg../Icons/WF_alongLinePoint.svg
@@ -614,7 +664,7 @@ respecting to the choosen reference starting point.
-
-
+
-
@@ -636,7 +686,7 @@ The second number indicates the number of Points to create.
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_distPointPoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_distPointPoint.svg
+ ../Icons/WF_distPointPoint.svg../Icons/WF_distPointPoint.svg
@@ -715,7 +765,7 @@ Can be negative for the reverse direction!
-
-
+
-
@@ -740,7 +790,7 @@ An object must also be seleted but before any Wire to cut all his edges!
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutWirePoints.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutWirePoints.svg
+ ../Icons/WF_cutWirePoints.svg../Icons/WF_cutWirePoints.svg
@@ -786,6 +836,9 @@ An object must also be seleted but before any Wire to cut all his edges! 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.
+
+Use left mouse button (MB1) to generate Points.
+MB2 and MB3 can still be used for view zoom and view rotation.
@@ -793,7 +846,7 @@ An object must also be seleted but before any Wire to cut all his edges!
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_clickPoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_clickPoint.svg
+ ../Icons/WF_clickPoint.svg../Icons/WF_clickPoint.svg
@@ -816,7 +869,7 @@ An object must also be seleted but before any Wire to cut all his edges!
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_objectBasePoint.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_objectBasePoint.svg
+ ../Icons/WF_objectBasePoint.svg../Icons/WF_objectBasePoint.svg
@@ -827,19 +880,16 @@ An object must also be seleted but before any Wire to cut all his edges!
-
-
+
- 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.
+ Create Center of Mass Point of all selected Object(s).
- Point(s) to Sketch
+ Object(s) Mass Center Point
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_2Sketch.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_2Sketch.svg
+ ../Icons/WF_objectCenterMassPoint.svg../Icons/WF_objectCenterMassPoint.svg
@@ -850,40 +900,91 @@ Then click on this button.
-
-
+
+
+ Create a set of points from selected Objetcs:
+- Select object(s)
+ to create points from these object(s) !
+ If you select an Edge : 2 points will be created;
+ if you select a Plane : 4 points will be created;
+ if you select an Object : many points will be created.
+- Then click on this button.
+
+
+ Object(s) N Point(s)
+
+
+
+ ../Icons/WF_objectNPoints.svg../Icons/WF_objectNPoints.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Transform Point(s) in Sketch's Point(s) by projection onto the Sketch's Plane:
+- First select an existing Sketch;
+- 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
+
+
+
+
+ -
+
Qt::Vertical
20
- 40
+ 255
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_axis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_axis.svg
-
+
- Axis 1/2
+ Point 3/3
-
+
-
-
+
- Create 3 Axes at center location of all selected Object(s).
+ Load a set of points from an ASCII file:
+ ASCII format is 3 values by line seperated by blank as :
+ 15.3f 15.3f 15.3f
+ Values are read as float.
+
+ Lines starting with characeter : # or / are considered as comment lines
+
- Object(s) X, Y, Z Axes
+ Load Points
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerObjectsAxes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerObjectsAxes.svg
+ ../Icons/WF_pointsSetLoad.svg../Icons/WF_pointsSetLoad.svg
@@ -894,7 +995,73 @@ Then click on this button.
-
-
+
+
+ Save a point or a set of points into an ASCII file:
+One (x, y, z) triplet per line seperated by blank.
+
+- Select as much as Points as needed and/or select object(s)
+ to save points from these object(s) !
+ If you select an Edge : 2 points will be saved;
+ if you select a Plane : 4 points will be saved;
+ if you select an Object : many points will be saved.
+- Then click on this button.
+
+
+ Save Points
+
+
+
+ ../Icons/WF_pointsSetSave.svg../Icons/WF_pointsSetSave.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 579
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ../Icons/WF_axis.svg../Icons/WF_axis.svg
+
+
+ Axis
+
+
+ -
+
+
+ 0
+
+
+
+ Axis 1/3
+
+
+
-
+
-
@@ -917,7 +1084,7 @@ Then click on this button.
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_2pointsLine.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_2pointsLine.svg
+ ../Icons/WF_2pointsLine.svg../Icons/WF_2pointsLine.svg
@@ -936,7 +1103,103 @@ Then click on this button.
- Distance for the extensions on extrema
+ Distance for the extensions on extrema.
+Positive values will enlarge the Axis.
+Negative values will start to shrink it (then reverse when middle reached).
+
+
+ 0.0
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 233
+
+
+
+
+ -
+
+
+ Create 3 Axes at center location of all selected Object(s).
+
+
+ Object(s) X, Y, Z Axes
+
+
+
+ ../Icons/WF_centerObjectsAxes.svg../Icons/WF_centerObjectsAxes.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Create an Axis Perpendicular to an Axis and crossing a Point
+-Select one Axis and one (or several) Point(s) NOT on the previous Axis.
+
+
+ Axis=(Axis,Point)
+
+
+
+ ../Icons/WF_linePointAxis.svg../Icons/WF_linePointAxis.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 40
+ 16777215
+
+
+
+ Distance for the extensions on extrema.
+Positive values will enlarge the Axis.
+Negative values will start to shrink it (then reverse when middle reached).
0.0
@@ -946,169 +1209,34 @@ Then click on this button.
-
-
-
-
-
-
-
-
-
-
- 16777215
- 16777215
-
-
-
- Create the Axis of a Cylinder.
-
-
- Cylinder(s) Axis
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cylinderAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cylinderAxis.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 16777215
- 16777215
-
-
-
- Plane(s) Axes:
-Create Perpendicular Axes at the center location of a Plane.
- - First select one (or several) Plane(s);
- - Then press the button
+
+
+ Axis=(N Points):
+Create a "best fit" Line from a set of points using Singular Value Decomposition.
+- First select several Points (at least 2);
+- Then push this 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
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_FaceAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_FaceAxis.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
- Create a normal Axis of a Face.
-To create a Normal at click location on a Face:
-- Click first in the view to select and object,
-- then push the button,
-- then click on a location on the selected Face.
-or
-To create several Normal of the face:
-- Click first in the view to select and object,
-- then select one or several points of the face
-- then push the button.
-(These selections can also be done into the Combined View)
-
-
- Face Normal
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_FaceNormal.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_FaceNormal.svg
-
-
-
- 32
- 32
-
-
-
-
-
-
- -
-
-
-
- 60
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- QFrame::StyledPanel
-
-
- QFrame::Raised
-
-
-
-
-
-
-
- 40
- 0
-
-
-
-
- 40
- 16777215
-
-
-
- Length of external part of the (Normal) Axis.
- If zero In case of cylinder axis the extension will be a percentage of the object length.
- If zero and plane of face Normal, the extension will be 10 units.
-
-
- 0.0
-
-
-
-
-
-
-
+The 3 eigenvectors are generated.
+Orange one is the best fit line.
+
+
+
+ Axis from Point(s)
+
+
+
+ ../Icons/WF_NpointsLine.svg../Icons/WF_NpointsLine.svg
+
+
+
+ 32
+ 32
+
+
+
- -
-
+
-
+
-
@@ -1128,7 +1256,7 @@ A Length of Zero means the length of already selected Axis will be used.
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_pointLineAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_pointLineAxis.svg
+ ../Icons/WF_pointLineAxis.svg../Icons/WF_pointLineAxis.svg
@@ -1191,66 +1319,173 @@ End of the Axis.
- -
-
+
-
+
-
-
-
-
- 0
- 0
-
-
+
+
-
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Create the Axis of a Cylinder.
+
+
+ Cylinder(s) Axis
+
+
+
+ ../Icons/WF_cylinderAxis.svg../Icons/WF_cylinderAxis.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 16777215
+ 16777215
+
+
+
+ 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.svg../Icons/WF_FaceAxis.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Create a normal Axis of a Face.
+To create a Normal at click location on a Face:
+- Click first in the view to select and object,
+- then push the button,
+- then click on a location on the selected Face.
+or
+To create several Normal of the face:
+- Click first in the view to select and object,
+- then select one or several points of the face
+- then push the button.
+(These selections can also be done into the Combined View)
+
+
+ Face Normal
+
+
+
+ ../Icons/WF_FaceNormal.svg../Icons/WF_FaceNormal.svg
+
+
+
+ 32
+ 32
+
+
+
+
+
+
+ -
+
- 0
+ 60
0
- 16777215
+ 50
16777215
-
- Create an Axis Perpendicular to an Axis and crossing a Point
--Select one Axis and one (or several) Point(s) NOT on the previous Axis.
+
+ QFrame::StyledPanel
-
- Axis=(Axis,Point)
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointAxis.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 40
- 16777215
-
-
-
- Distance for the extensions on extrema.
-
-
- 0.0
+
+ QFrame::Raised
+
+
-
+
+
+
+ 40
+ 0
+
+
+
+
+ 40
+ 16777215
+
+
+
+ Length of external part of the (Normal) Axis.
+ If zero In case of cylinder axis the extension will be a percentage (10%) of the object length.
+ If zero and plane of face Normal, the extension will be 10 units.
+
+For "Cylinder Axis", "Planes Axes" and "Face Normal"
+ Positive values will enlarge the Axis toward OUTSIDE of the Face Object;
+ Negative values will enlarge the Axis toward INSIDE of the Face Object.
+
+
+ 0.0
+
+
+
+
- -
+
-
Create an Axis between two Axes.
@@ -1261,7 +1496,7 @@ End of the Axis.
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_twoLinesAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_twoLinesAxis.svg
+ ../Icons/WF_twoLinesAxis.svg../Icons/WF_twoLinesAxis.svg
@@ -1271,7 +1506,14 @@ End of the Axis.
- -
+
+
+
+
+ Axis 2/3
+
+
+ -
Create an Axis Perpendicular to an Axis, crossing a Point and Parallel to a Plane.
@@ -1282,7 +1524,7 @@ End of the Axis.
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_planeLinePointAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_planeLinePointAxis.svg
+ ../Icons/WF_planeLinePointAxis.svg../Icons/WF_planeLinePointAxis.svg
@@ -1292,31 +1534,7 @@ End of the Axis.
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
-
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_axis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_axis.svg
-
-
- Axis 2/2
-
-
- -
+
-
Axes=(Pl(s),Axes):
@@ -1330,27 +1548,7 @@ Create projection(s) of Axes onto Plane(s).
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePlaneAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePlaneAxis.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- 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
+ ../Icons/WF_linePlaneAxis.svg../Icons/WF_linePlaneAxis.svg
@@ -1361,7 +1559,27 @@ Create projection(s) of Axes onto Plane(s).
-
-
+
+
+ Create an Axis by intersect of 2 Planes.
+
+
+ Axis=(Plane,Plane)
+
+
+
+ ../Icons/WF_2PlanesAxis.svg../Icons/WF_2PlanesAxis.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
-
@@ -1387,7 +1605,7 @@ Several Edges of the cube can be selected.
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_distAxisAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_distAxisAxis.svg
+ ../Icons/WF_distAxisAxis.svg../Icons/WF_distAxisAxis.svg
@@ -1465,8 +1683,8 @@ Can be negative for the reverse direction!
- -
-
+
-
+
-
@@ -1497,7 +1715,7 @@ Positive number in one direction and negative in the other one.
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_angleAxisAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_angleAxisAxis.svg
+ ../Icons/WF_angleAxisAxis.svg../Icons/WF_angleAxisAxis.svg
@@ -1576,8 +1794,8 @@ Can be negative for the reverse direction!
- -
-
+
-
+
-
@@ -1605,7 +1823,7 @@ in "Ori. Pref." TAB
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutWireAxes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutWireAxes.svg
+ ../Icons/WF_cutWireAxes.svg../Icons/WF_cutWireAxes.svg
@@ -1645,8 +1863,8 @@ in "Ori. Pref." TAB
- -
-
+
-
+
-
@@ -1668,7 +1886,7 @@ in "Ori. Pref." TAB
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutAxis.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutAxis.svg
+ ../Icons/WF_cutAxis.svg../Icons/WF_cutAxis.svg
@@ -1708,8 +1926,8 @@ in "Ori. Pref." TAB
- -
-
+
-
+
-
@@ -1725,14 +1943,15 @@ Extend an Axis at two extrema.
- Second push this button
NB:
- - The percentage of the extension can be defined first.
+ - The percentage of the extension can be defined first.
+ - Negative percentage will shrink the Axis
Enlarge(Axis)
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_enlargeLine.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_enlargeLine.svg
+ ../Icons/WF_enlargeLine.svg../Icons/WF_enlargeLine.svg
@@ -1763,7 +1982,11 @@ NB:
- Extension of the Line in percentage.
+ Extension of the Line in percentage of original length of the Line.
+If the extension is 50% it means that each side is extended with 25% length.
+
+Positive values will enlarge the Axis.
+Negative values will start to shrink it.
50.0
@@ -1772,39 +1995,23 @@ 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 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.
+
+
+Use left mouse button (MB1) to generate Lines.
+MB2 and MB3 can still be used for view zoom and view rotation.
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
+ ../Icons/WF_clickLine.svg../Icons/WF_clickLine.svg
@@ -1815,6 +2022,98 @@ NB:
-
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 238
+
+
+
+
+
+
+
+
+ Axis 3/3
+
+
+ -
+
+
+ Create 3 Axes at Base location of all selected Object(s).
+
+
+ Object(s) Base Axes
+
+
+
+ ../Icons/WF_baseObjectsAxes.svg../Icons/WF_baseObjectsAxes.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Create a set of axes from selected Objetcs:
+- Select object(s)
+ to create axes from these object(s) !
+ if you select a Plane : 4 axes will be created;
+ if you select an Object : many axes will be created.
+- Then click on this button.
+
+
+ Object(s) N Axes(s)
+
+
+
+ ../Icons/WF_objectNAxes.svg../Icons/WF_objectNAxes.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Create a set of 2 or 3 main axes from selected Objetcs:
+The most representative axes will be selected from all axis.
+The length of main axes will be the cumulative length of all axes with the same direction.
+- Select object(s)
+ to create axes from these object(s) !
+ if you select a Plane : 2 axes will be created;
+ if you select an Object : 3 axes will be created.
+- Then click on this button.
+
+
+ Object(s) 3 Axes(s)
+
+
+
+ ../Icons/WF_object3Axes.svg../Icons/WF_object3Axes.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
Transform Line(s) in Sketch's Line(s) by projection onto the Sketch's Plane:
@@ -1827,7 +2126,7 @@ Then click on this button.
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_2Sketch.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_2Sketch.svg
+ ../Icons/WF_2Sketch.svg../Icons/WF_2Sketch.svg
@@ -1837,45 +2136,1788 @@ Then click on this button.
- -
-
+
-
+
Qt::Vertical
20
- 40
+ 483
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_circle.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_circle.svg
-
+
+
+
+
+
+
+
+ ../Icons/WF_wire.svg../Icons/WF_wire.svg
+
+
+ Wire
+
+
+ -
+
+
+ Examples from http://www.mathcurve.com/
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 0
+
+
- Circle
+ Wire
-
-
-
-
-
-
-
-
- Select an Axis and a Point to create a Circle
+
+
-
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 588
+
+
+
+
+ -
+
+
+ Bezier Cubic=(4 Points):
+Create a Wire (Bezier Cubic) from 4 selected points.
+- First 4 Points
+- Then push this button
+
+
+ 4 Points Bezier Cubic
+
+
+
+ ../Icons/WF_bezierCubic2nodes.svg../Icons/WF_bezierCubic2nodes.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Projects Wires on a Plane:
+
+- First select an existing Face/Plane or 3 Points
+- Second one or several Wires
+- Then push this button
+
+
+ Flatten Wire
+
+
+
+
+
+
+
+ Parametric 2D
+
+
+ -
+
+
+ true
+
+
+
+
+ 0
+ 0
+ 245
+ 648
+
+
+
+
-
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Equation :
+
+
+
-
+
+
+
+ 70
+ 16777215
+
+
+
+ Y (a,b,t)
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ 10 # Radius
+
+
+ 32769
+
+
+
+ -
+
+
+
+ 70
+ 16777215
+
+
+
+ b (a, t)
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ b*sin(t)
+
+
+ 32769
+
+
+
+ -
+
+
+ Toggle for Polar coordinates:
+then x is interpreted as radius
+ and y is interpreted as angle teta.
+
+
+ Polar coord.
+
+
+ true
+
+
+
+ -
+
+
+
+ 70
+ 16777215
+
+
+
+ X (a,b,t)
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ a*cos(t)
+
+
+ 32769
+
+
+
+ -
+
+
+
+ 70
+ 16777215
+
+
+
+ Qt::LeftToRight
+
+
+ a (t)
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ a
+
+
+ 32769
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Choose another curve from the list.
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Click to access to a table where you can edit all parameters of all curves and
+save your custom curves.
+
+
+ Edit
+
+
+
+
+
+ -
+
+
-
+
+
+ true
+
+
+ Closed curve
+
+
+
+ -
+
+
+ false
+
+
+ Create Face
+
+
+
+
+
+ -
+
+
-
+
+
+ QFrame::Box
+
+
+ QFrame::Raised
+
+
+ 3
+
+
+ Name
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Circle
+
+
+
+
+
+ -
+
+
+ Parameter :
+
+
+
-
+
+
+
+ 70
+ 16777215
+
+
+
+ Qt::LeftToRight
+
+
+ t min
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ 0
+
+
+ 32769
+
+
+
+ -
+
+
+
+ 70
+ 16777215
+
+
+
+ Qt::LeftToRight
+
+
+ t max
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ 2*pi
+
+
+ 32769
+
+
+
+ -
+
+
+
+ 70
+ 16777215
+
+
+
+ Qt::LeftToRight
+
+
+ step
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ 0.01
+
+
+ 32769
+
+
+
+
+
+
+ -
+
+
+ Type of 2D Curve :
+
+
+
-
+
+
+ Points
+
+
+ true
+
+
+
+ -
+
+
+ Polyline
+
+
+ true
+
+
+ true
+
+
+
+ -
+
+
+ true
+
+
+ Bezier
+
+
+ false
+
+
+ true
+
+
+
+ -
+
+
+ true
+
+
+ Bspline
+
+
+ false
+
+
+ true
+
+
+
+
+
+
+ -
+
+
-
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Click to store the current edited curve into the table.
+To save your curve you need to go to "Edit".
+
+
+ Store
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Click to visualize the curve.
+
+
+ Apply
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Parametric 3D
+
+
+ -
+
+
+ true
+
+
+
+
+ 0
+ 0
+ 202
+ 692
+
+
+
+
-
+
+
-
+
+
+ Choose another curve from the list.
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Click to access to a table where you can edit all parameters of all curves and
+save your custom curves.
+
+
+ Edit
+
+
+
+
+
+ -
+
+
-
+
+
+ QFrame::Box
+
+
+ QFrame::Raised
+
+
+ 3
+
+
+ Name
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Cylindrical helix
+
+
+
+
+
+ -
+
+
+ Equation :
+
+
+
-
+
+
+
+ 70
+ 16777215
+
+
+
+ Qt::LeftToRight
+
+
+ a (t)
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ 10*0.05 #Vert. step
+
+
+ 32769
+
+
+
+ -
+
+
+
+ 70
+ 16777215
+
+
+
+ b (a, t)
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ 1
+
+
+ 32769
+
+
+
+ -
+
+
+
+ 70
+ 16777215
+
+
+
+ c (a, b, t)
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ 10 # Radius
+
+
+ 32769
+
+
+
+ -
+
+
+
+ 70
+ 16777215
+
+
+
+ X (a,b,c,t)
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ c*sin(t)
+
+
+ 32769
+
+
+
+ -
+
+
+
+ 70
+ 16777215
+
+
+
+ Y (a,b,c,t)
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 70
+ 16777215
+
+
+
+ Z (a,b,c,t)
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ a*t
+
+
+ 32769
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ c*cos(t)
+
+
+ 32769
+
+
+
+
+
+
+ -
+
+
+ Parameter :
+
+
+
-
+
+
+
+ 70
+ 16777215
+
+
+
+ Qt::LeftToRight
+
+
+ t min
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 70
+ 16777215
+
+
+
+ Qt::LeftToRight
+
+
+ t max
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ 5*2*pi #5 circles
+
+
+ 32769
+
+
+
+ -
+
+
+
+ 70
+ 16777215
+
+
+
+ Qt::LeftToRight
+
+
+ step
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ 0.01
+
+
+ 32769
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 150
+ 16777215
+
+
+
+ 0
+
+
+ 32769
+
+
+
+
+
+
+ -
+
+
+ Closed curve
+
+
+
+ -
+
+
-
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Click to store the current edited curve into the table.
+To save your curve you need to go to "Edit".
+
+
+ Store
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Click to visualize the curve.
+
+
+ Apply
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Type of 3D Curve :
+
+
+
-
+
+
+ Points
+
+
+ true
+
+
+
+ -
+
+
+ Polyline
+
+
+ true
+
+
+ true
+
+
+
+ -
+
+
+ Bspline
+
+
+ false
+
+
+ true
+
+
+
+ -
+
+
+ true
+
+
+ Bezier
+
+
+ false
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ../Icons/WF_circle.svg../Icons/WF_circle.svg
+
+
+ Circle
+
+
+ -
+
+
-
+
+
+ Select an Axis and a Point to create a Circle
centered on the Point, perpendicular to the Axis
with the given radius.
+
+
+ Circle=(Axis, center)
+
+
+
+ ../Icons/WF_lineCenterCircle.svg../Icons/WF_lineCenterCircle.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Radius of the Circle.
+
+
+ 10.0
+
+
+
+
+
+ -
+
+
+ Select an Axis and a Point to create a Circle
+centered on the Axis and tangenting the Point.
+
+
+ Circle=(Axis, point)
+
+
+
+ ../Icons/WF_linePointCircle.svg../Icons/WF_linePointCircle.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Select a center and 2 Points to create an Ellipse.
+
+
+ Ellipse=(3 points)
+
+
+
+ ../Icons/WF_3pointsEllipse.svg../Icons/WF_3pointsEllipse.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Transform Circle(s) and Arc(s) in Sketch's object(s) by projection onto the Sketch's Plane:
+- First select an existing Skecth;
+- Select as much as Circles and arcs needed;
+Then click on this button.
+
+
+ Circle(s) to Sketch
+
+
+
+ ../Icons/WF_2Sketch.svg../Icons/WF_2Sketch.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 121
+
+
+
+
+ -
+
+
+ Arc=(3 Points):
+Create one Arc depending on 3 points.
+
+- First select 3 Points
+- Then Click on the button
+
+
+ Arc=(3 points)
+
+
+
+ ../Icons/WF_3pointsArc.svg../Icons/WF_3pointsArc.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Select 3 Points to create a Circle.
+
+
+ Circle=(3 points)
+
+
+
+ ../Icons/WF_3pointsCircle.svg../Icons/WF_3pointsCircle.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
-
+
+
+ Create Arcs:
+Cut the selected Circle(s) or Arc(s) in 2(n) parts and create 2(n) Arcs.
+The number indicates in how many parts to cut.
+- First select as many Circles and Arcs you want
+- Second set the number of parts
+- Third push this button
+
+NB: You can change the successive lines to be bicolor (red and white)
+in "Ori. Pref." TAB
+
+
+ Arcs=Cut(Circle)
+
+
+
+ ../Icons/WF_cutCircle.svg../Icons/WF_cutCircle.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ The number indicates in how many parts the selected Circle will be cut (Max 100).
+
+
+ 2
+
+
+ 100
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+ ../Icons/WF_plane.svg../Icons/WF_plane.svg
+
+
+ Plane
+
+
+ -
+
+
+ 1
+
+
+
+ Plane 1/2
+
+
+
-
+
+
+ Plane=(3 Points):
+Create a Plane crossing 3 Points.
+- First select 3 different points
+- Second push this button
+
+
+ Plane=(3 Points)
+
+
+
+ ../Icons/WF_threePointsPlane.svg../Icons/WF_threePointsPlane.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Plane=(2 Points):
+Create a Plane in the middle of 2 points.
+PLANE is perpendicular to line (P1 P2) and contains the midpoint of P1 and P2.
+The direction of the normal of PLANE is the same as the vector from P1 to P2.
+- First select 2 different points
+- Second push this button
+
+
+ Plane=(2 Points)
+
+
+
+ ../Icons/WF_twoPointsPlane.svg../Icons/WF_twoPointsPlane.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Plane=(N Points):
+Create a "best fit" Plane from a set of points using Singular Value Decomposition.
+- First select several Points (at least 3);
+- Then push this button
+
+
+ Plane=(N Points)
+
+
+
+ ../Icons/WF_NpointsPlane.svg../Icons/WF_NpointsPlane.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Plane=(Point, Axis):
+Create a plane crossing a Line and a Point.
+- First select a line and a point NOT on the previous line
+- Second push this button
+
+
+ Plane=(Point, Axis)
+
+
+
+ ../Icons/WF_linePointPlane.svg../Icons/WF_linePointPlane.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Plane=(Point, _|Axis):
+Create a plane perpendicular to a Line and crossing a Point.
+- First select a line and a point NOT on the previous line
+- Second push this button
+
+
+ Plane=(Point, _|Axis)
+
+
+
+ ../Icons/WF_linePointPlane2.svg../Icons/WF_linePointPlane2.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
-
+
+
+ Plane=(Point, Plane):
+Create a plane crossing a Point and parallel to a Plane.
+- First select a plane and a point NOT on the previous plane
+- Second push this button
+
+NB: you can enlarge the created new plane by setting first an extension length.
- Circle=(Axis, center)
+ Plane=(Point, Plane)
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_lineCenterCircle.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_lineCenterCircle.svg
+ ../Icons/WF_pointPlanePlane.svg../Icons/WF_pointPlanePlane.svg
@@ -1885,8 +3927,8 @@ with the given radius.
- -
-
+
-
+
40
@@ -1900,306 +3942,17 @@ with the given radius.
- Radius of the Circle.
+ Length for the extensions of the new Plane compared to initial one.
- 10.0
+ 0.0
- -
-
-
- Select an Axis and a Point to create a Circle
-centered on the Axis and tangenting the Point.
-
-
- Circle=(Axis, point)
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointCircle.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointCircle.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Select 3 Points to create a Circle.
-
-
- Circle=(3 points)
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_3pointsCircle.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_3pointsCircle.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
-
-
- Create Arcs:
-Cut the selected Circle(s) or Arc(s) in 2(n) parts and create 2(n) Arcs.
-The number indicates in how many parts to cut.
-- First select as many Circles and Arcs you want
-- Second set the number of parts
-- Third push this button
-
-NB: You can change the successive lines to be bicolor (red and white)
-in "Ori. Pref." TAB
-
-
- Arcs=Cut(Circle)
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutCircle.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cutCircle.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 40
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- The number indicates in how many parts the selected Circle will be cut (Max 100).
-
-
- 2
-
-
- 100
-
-
- 1
-
-
-
-
-
- -
-
-
- Select a center and 2 Points to create an Ellipse.
-
-
- Ellipse=(3 points)
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_3pointsEllipse.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_3pointsEllipse.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- Transform Circle(s) and Arc(s) in Sketch's object(s) by projection onto the Sketch's Plane:
-- First select an existing Skecth;
-- Select as much as Circles and arcs needed;
-Then click on this button.
-
-
- Circle(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
- 121
-
-
-
-
-
-
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_plane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_plane.svg
-
-
- Plane 1/2
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
- Click:
-Create a rectangular Plane perpendicular to the view at location of one mouse click.
-Define the width and the length of the Plane if needed.
-- Click first on the Button then click once on the View.
-- Click first on the Button then click once on top of one object of the View
- to attach the plane at this object.
-- You can also select an already existing point first and click the button to attach the plane.
-
-NB: The plane width and length can be defined first.
-
-
-
- Click
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_clickPlane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_clickPlane.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 40
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- Length of the Plane.
-
-
- 10.0
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 40
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- Width of the Plane.
-
-
- 10.0
-
-
-
-
-
- -
-
+
-
+
-
@@ -2221,7 +3974,7 @@ NB: The plane created can be rotated if a none null angle is defined first.
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_planeLinePlane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_planeLinePlane.svg
+ ../Icons/WF_planeLinePlane.svg../Icons/WF_planeLinePlane.svg
@@ -2261,169 +4014,8 @@ NB: The plane created can be rotated if a none null angle is defined first.
- -
-
-
- Plane=(Point, Axis):
-Create a plane crossing a Line and a Point.
-- First select a line and a point NOT on the previous line
-- Second push this button
-
-
- Plane=(Point, Axis)
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointPlane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointPlane.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Plane=(Point, _|Axis):
-Create a plane perpendicular to a Line and crossing a Point.
-- First select a line and a point NOT on the previous line
-- Second push this button
-
-
- Plane=(Point, _|Axis)
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointPlane2.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_linePointPlane2.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
- Face Tangent:
-Create a tanget Plane at click location of a Face.
-- First click in the view to select and object,
-- Second push this button
--Third click on a location on the selected object.
-
-NB: The plane width and length can be defined first.
-
-
- Face Tangent
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_FaceTangent.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_FaceTangent.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 40
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- Length of the Plane.
-
-
- 10.0
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 40
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- Width of the Plane.
-
-
- 10.0
-
-
-
-
-
- -
-
-
- Plane=(3 Points):
-Create a Plane crossing 3 Points.
-- First select 3 different points
-- Second push this button
-
-
- Plane=(3 Points)
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_threePointsPlane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_threePointsPlane.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
+
-
+
-
@@ -2446,7 +4038,7 @@ Several Faces of the cube can be selected.
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_distPlanePlane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_distPlanePlane.svg
+ ../Icons/WF_distPlanePlane.svg../Icons/WF_distPlanePlane.svg
@@ -2524,24 +4116,31 @@ Can be negative for the reverse direction!
- -
-
-
-
-
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
- Plane=(Point, Plane):
-Create a plane crossing a Point and parallel to a Plane.
-- First select a plane and a point NOT on the previous plane
+ Face Tangent:
+Create a tanget Plane at click location of a Face.
+- First click in the view to select and object,
- Second push this button
+-Third click on a location on the selected object.
-NB: you can enlarge the created new plane by setting first an extension length.
+NB: The plane width and length can be defined first.
- Plane=(Point, Plane)
+ Face Tangent
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_pointPlanePlane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_pointPlanePlane.svg
+ ../Icons/WF_FaceTangent.svg../Icons/WF_FaceTangent.svg
@@ -2551,8 +4150,14 @@ NB: you can enlarge the created new plane by setting first an extension length.<
- -
-
+
-
+
+
+
+ 0
+ 0
+
+
40
@@ -2561,69 +4166,168 @@ NB: you can enlarge the created new plane by setting first an extension length.<
- 60
+ 50
16777215
- Length for the extensions of the new Plane compared to initial one.
+ Length of the Plane.
- 0.0
+ 10.0
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ Width of the Plane.
+
+
+ 10.0
-
-
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_plane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_plane.svg
-
-
- Plane 2/2
-
-
- -
-
+
-
+
Qt::Vertical
20
- 40
+ 235
- -
-
-
- Object(s) Center Planes:
-Create 3 Planes (XY, XZ and YZ) at center location of all selected Object(s).
-- First select one or severl objects
-- Second push this button
-
-
- Object(s) Center Planes
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerObjectsPlanes.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_centerObjectsPlanes.svg
-
-
-
- 32
- 32
-
-
-
-
+
+
+
+
+ Plane 1/2
+
+
-
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Click:
+Create a rectangular Plane perpendicular to the view at location of one mouse click.
+Define the width and the length of the Plane if needed.
+- Click first on the Button then click once on the View.
+- Click first on the Button then click once on top of one object of the View
+ to attach the plane at this object.
+- You can also select an already existing point first and click the button to attach the plane.
+
+NB: The plane width and length can be defined first.
+
+Use left mouse button (MB1) to generate Planes.
+MB2 and MB3 can still be used for view zoom and view rotation.
+
+
+
+ Click
+
+
+
+ ../Icons/WF_clickPlane.svg../Icons/WF_clickPlane.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ Length of the Plane.
+
+
+ 10.0
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ Width of the Plane.
+
+
+ 10.0
+
+
+
+
+
+ -
+
-
@@ -2646,7 +4350,7 @@ NB:
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_enlargePlane.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_enlargePlane.svg
+ ../Icons/WF_enlargePlane.svg../Icons/WF_enlargePlane.svg
@@ -2686,698 +4390,168 @@ NB:
-
-
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- ../../../../../../../../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).
-6 rectangles at the limits of each bounding boxes will be created.
-
-
- 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).
-6 rectangles at the limits of the bounding box will be created.
-
-
- Bounding Box
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_boundingBox.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_boundingBox.svg
-
-
-
- 32
- 32
-
-
-
-
-
-
- -
-
-
-
- 60
- 16777215
-
-
-
- if "Vol." is toggled:
- In Addition of rectangles, the Bounding box will be also created as a Volume.
-
-
- Vol.
-
-
-
-
-
- -
-
-
- QFrame::Plain
+
-
+
+
+ Object(s) Center Planes:
+Create 3 Planes (XY, XZ and YZ) at center location of all selected Object(s).
+- First select one or severl objects
+- Second push this button
-
- 4
+
+ Object(s) Center Planes
-
- 0
+
+
+ ../Icons/WF_centerObjectsPlanes.svg../Icons/WF_centerObjectsPlanes.svg
-
- Qt::Horizontal
+
+
+ 32
+ 32
+
- -
-
-
-
-
-
- Create a Cylinder aligned on Axes:
-- First select one or several couple of ( Axis and a Ref. Point).
-- Define Diameter and Length if needed.
-Then Click the button...
-It will create a Cylinder aligned on the selected axis
-with one of the extremities at the Ref. point,
-for all couple selected.
-
-
- Cylinder
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cylinder.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cylinder.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 50
- 0
-
-
-
-
- 60
- 16777215
-
-
-
- Radius of the Cylinder.
-
-
- 2.0
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 50
- 0
-
-
-
-
- 60
- 16777215
-
-
-
- Length of the Cylinder.
-Negative value will reverse the direction from Ref. Point
-
-
- 20.0
-
-
-
-
-
-
-
-
-
-
-
- Create a Cuboid aligned on Axes:
-- First select one or several couple of ( Axis and a Ref. Point).
-- Define Dimensions if needed.
-Then Click the button...
-It will create a Cube aligned on the selected axis
-with one of the extremities at Ref. point,
-for all couple selected.
-
-
- Cube
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cube.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_cube.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 50
- 0
-
-
-
-
- 60
- 16777215
-
-
-
- Section (Length, Width) of the Cube.
-
-
- 2.0,2.0
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 50
- 0
-
-
-
-
- 60
- 16777215
-
-
-
- Heigth of the Cube.
-Negative value will reverse the direction from Ref. Point
-
-
- 20.0
-
-
-
-
-
- -
-
-
-
-
-
- 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
-
-
-
-
-
- -
-
-
-
-
-
- AB:
-Create 3D Text attached to a Point.
-- First select a Plane
-- Then push this button
-in this case the center of the text is attached to center of the Plane;
-or
-- First select a Plane and a Point on the Plane
-- Then push this button
-NB:
- Change the text and his size if needed
-
-
- AB
-
-
-
- ../../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_pointText.svg../../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_pointText.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 70
- 16777215
-
-
-
- Put the desired text here
-
-
- A
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 50
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- Size of the font.
-
-
- 2.0
-
-
-
-
-
- -
-
-
-
-
-
- Revolve:
-Make the revolution of Edge(s) or Wire(s) around an Axis:
-- Select one or several wire(s)
-- Then push this button
-or
-- Select FIRST one Point as center of rotation and one Axis as rotation axis !
-- Select one or several wire(s)
-- Then push this button
-
-NB:
- You can also define the angle of revolution if needed
- If no Axis is selected the Z axis is considered as Axis of rotation !
- If no Point is selected the Origin is considered as Center of rotation !
-
-
- Revolve
-
-
-
- ../Icons/WF_Revolve.svg../Icons/WF_Revolve.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 40
- 0
-
-
-
-
- 40
- 16777215
-
-
-
- Angle of the revolution in degrees.
-
-
- 360
-
-
-
-
-
- -
-
-
- QFrame::StyledPanel
+
+
+ Qt::Vertical
-
- QFrame::Raised
+
+
+ 20
+ 527
+
-
- 3
-
-
-
-
-
-
-
-
-
- if "All" is toggled:
+
+
+
+
+
+
+
+
+
+
+
+ ../Icons/WF_Beam.svg../Icons/WF_Beam.svg
+
+
+ Sweep
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+ 3
+
+
+
-
+
+
-
+
+
+ if "All" is toggled:
All the wires of the Trajectory selected will be considered.
Untoggled if you select a Skecth with several curves and you want to process
only the one subselected.
-
-
- All
-
-
- true
-
-
-
- -
-
-
- For the function :
+
+
+ All
+
+
+ true
+
+
+
+ -
+
+
+ For the function :
makePipeShell(shapeList,[isSolid,isFrenet,transition])
Select a Transition option in case of trajectory with several wires; Transition can be:
# 0 (default), 1 (right corners) or 2 (rounded corners).
-
-
- 2
-
-
-
-
- No Transition
-
-
- -
-
- Right corners
-
-
- -
-
- Rounded corners
-
-
-
-
- -
-
-
-
- 9
- 0
-
-
-
-
- 60
- 16777215
-
-
-
- if "Solid" is toggled:
+
+
+ 2
+
+
-
+
+ No Transition
+
+
+ -
+
+ Right corners
+
+
+ -
+
+ Rounded corners
+
+
+
+
+ -
+
+
+
+ 9
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ if "Solid" is toggled:
The Beam sweep will generate a solid with a closed selected wire as Section.
If this check box is toggle off:
Or if the Section wire is not closed, only a shell will be created.
-
-
- Solid
-
-
- true
-
-
-
- -
-
-
- Force the "isFrenet" parameter to True for the function :
+
+
+ Solid
+
+
+ true
+
+
+
+ -
+
+
+ Force the "isFrenet" parameter to True for the function :
makePipeShell(shapeList,[isSolid,isFrenet,transition])
-
-
- isFrenet
-
-
- true
-
-
- false
-
-
-
-
-
- -
-
-
- Section Sweep:
+
+
+ isFrenet
+
+
+ true
+
+
+ false
+
+
+
+
+
+ -
+
+
+ Section Sweep:
# Make a loft defined by a list of profiles along a wire.
Will extrude/sweep a Section along a Trajectory like sweep from Part Workbench but:
- the Section center (of Mass) is move at the first point of the Trajectory and;
@@ -3395,71 +4569,992 @@ NB: You can change first:
- Transition Option (Select a Transition option in case of trajectory with several wires; Transition can be:
# 0 (default), 1 (right corners) or 2 (rounded corners).)
-
-
- Section Sweep
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_Beam.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_Beam.svg
-
-
-
- 32
- 32
-
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
+
+
+ Section Sweep
+
+
+
+ ../Icons/WF_Sweep.svg../Icons/WF_Sweep.svg
+
+
+
+ 32
+ 32
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Beam:
+Will extrude a Section along a Linear Trajectory.
+- Select first one Section wire (Closed wire will generate volumes by default)
+(This Section can be a compound from sketch to realize "tube")
+- Select one or several wire(s) as Trajectory(ies)
+- Then push this button
+
+
+
+ Beam
+
+
+
+ ../Icons/WF_Beam.svg../Icons/WF_Beam.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Beam Cut Miter
+
+
+
+ ../Icons/WF_BeamMiterCut.svg../Icons/WF_BeamMiterCut.svg
+
+
+
+ 32
+ 32
+
+
+
+
+
+
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+
+ ../Icons/WF_box.svg../Icons/WF_box.svg
+
+
+ Object
+
+
+ -
+
+
-
+
+
-
+
+
- 17
- 8
+ 16777215
+ 16777215
-
+
+ Create bounding boxes around each of selected object(s).
+6 rectangles at the limits of each bounding boxes will be created.
+
+
+ Bounding Box(es)
+
+
+
+ ../Icons/WF_boundingBoxes.svg../Icons/WF_boundingBoxes.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Create one bounding box around all of selected object(s).
+6 rectangles at the limits of the bounding box will be created.
+
+
+ Bounding Box
+
+
+
+ ../Icons/WF_boundingBox.svg../Icons/WF_boundingBox.svg
+
+
+
+ 32
+ 32
+
+
+
-
-
+
+ -
+
+
+
+ 60
+ 16777215
+
+
+
+ if "Vol." is toggled:
+ In Addition of rectangles, the Bounding box will be also created as a Volume.
+
+
+ Vol.
+
+
+
+
+
+ -
+
+
+ QFrame::Plain
+
+
+ 4
+
+
+ 0
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
-
+
+
+ Create a Cylinder aligned on Axes:
+- First select one or several couple of ( Axis and a Ref. Point).
+- Define Diameter and Length if needed.
+Then Click the button...
+It will create a Cylinder aligned on the selected axis
+with one of the extremities at the Ref. point,
+for all couple selected.
+
+
+ Cylinder
+
+
+
+ ../Icons/WF_cylinder.svg../Icons/WF_cylinder.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Radius of the Cylinder.
+
+
+ 2.0
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Length of the Cylinder.
+Negative value will reverse the direction from Ref. Point
+
+
+ 20.0
+
+
+
+
+
+ -
+
+
-
+
+
+ Create a Cuboid aligned on Axes:
+- First select one or several couple of ( Axis and a Ref. Point).
+- Define Dimensions if needed.
+Then Click the button...
+It will create a Cube aligned on the selected axis
+with one of the extremities at Ref. point,
+for all couple selected.
+
+
+ Cube
+
+
+
+ ../Icons/WF_cube.svg../Icons/WF_cube.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Section (Length, Width) of the Cube.
+
+
+ 2.0,2.0
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Heigth of the Cube.
+Negative value will reverse the direction from Ref. Point
+
+
+ 20.0
+
+
+
+
+
+ -
+
+
-
+
+
+ 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
+
+
+
+ ../Icons/WF_sphere.svg../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
+
+
+
+ ../Icons/WF_dome.svg../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
+
+
+
+
+
+ -
+
+
-
+
+
+ AB:
+Create 3D Text attached to a Point.
+- First select a Plane
+- Then push this button
+in this case the center of the text is attached to center of the Plane;
+or
+- First select a Plane and a Point on the Plane
+- Then push this button
+NB:
+ Change the text and his size if needed
+
+
+ AB
+
+
+
+ ../Icons/WF_pointText.svg../Icons/WF_pointText.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 70
+ 16777215
+
+
+
+ Put the desired text here
+
+
+ A
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ Size of the font.
+
+
+ 2.0
+
+
+
+
+
+ -
+
+
-
+
+
+ Revolve:
+Make the revolution of Edge(s) or Wire(s) around an Axis:
+- Select one or several wire(s)
+- Then push this button
+or
+- Select FIRST one Point as center of rotation and one Axis as rotation axis !
+- Select one or several wire(s)
+- Then push this button
+
+NB:
+ You can also define the angle of revolution if needed
+ If no Axis is selected the Z axis is considered as Axis of rotation !
+ If no Point is selected the Origin is considered as Center of rotation !
+
+
+ Revolve
+
+
+
+ ../Icons/WF_Revolve.svg../Icons/WF_Revolve.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 40
+ 16777215
+
+
+
+ Angle of the revolution in degrees.
+
+
+ 360
+
+
+
+
+
+ -
+
+
+ Duplicate:
+Make a copy of an object or a selected subObject part:
+- Select one or several object(s) or subobject(s)
+- Then push this button
+
+
+ Duplicate
+
+
+
+ ../Icons/WF_objectCopy.svg../Icons/WF_objectCopy.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Compute the common parts between selected shapes.
+- Select at least two objects and click.
+
+Highlight common parts by showing the common shape in red and setting half-transparency on original parts (the original objects are not modified).
+Original code from HighlightCommon.FCMacro
+ https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightCommon.FCMacro
+ Authors = 2015 Javier Martinez Garcia
+
+
+
+ Common
+
+
+
+ ../Icons/WF_Common.svg../Icons/WF_Common.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Compute the difference parts between selected shapes.
+- Select two objects and click.
+
+Compute the difference between two shapes. Additions are marked red, removals are marked green. Both original parts will be half transparent. The volume of the additions and removals are printed in the console.
+Original code from HighlightDifference.FCMacro
+ https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightDifference.FCMacro
+ Authors = 2015 Gaël Ecorchard (Galou)
+
+
+ Difference
+
+
+
+ ../Icons/WF_Difference.svg../Icons/WF_Difference.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 17
+ 8
+
+
+
+
+
+
+
+
+ Image
+
+
+ -
+
+
-
+
+
+ Rotate
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Qt::LeftToRight
+
+
+ 0
+
+
-
+
+ X
+
+
+ -
+
+ Y
+
+
+ -
+
+ Z
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Copy and Scale Image(s) :
+Scale an image along desired direction(s) (make a copy first of the original Image).
+- First define the direction(s) on the right combo (default is XY):
+ if X is selected then only X direction will be scaled
+ if XY is selected then the scale will be squared in X and Y directions together
+- Select one or several Images (in combo view)
+- Select one Line (or 2 Points) (close to the Image) you want to define new dimension.
+(better to select a Line strictly in X direction if you want to enlarge/squize the Image in X direction)
+- Then give the target dimension of the Line (on the last right LineEdit).
+Then push the button
+
+
+
+ Scale
+
+
+
+ ../Icons/WF_ImageScale.svg../Icons/WF_ImageScale.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Axis of Scaling for image.
+Options :
+ XY
+ XZ
+ YZ
+ X
+ Y
+ Z
+i.e.: if XY is selected then the X and Y dimensions will be scaled together.
+if only X is selected the only X dimension will be scaled.
+
+Note that some options are invalid regarding the image's plane.
+
+
+ Qt::LeftToRight
+
+
+ 0
+
+
-
+
+ XY
+
+
+ -
+
+ XZ
+
+
+ -
+
+ YZ
+
+
+ -
+
+ X
+
+
+ -
+
+ Y
+
+
+ -
+
+ Z
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 60
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ Desired length(s).
+
+
+ 100.0
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 650
+
+
+
+
+
+
+
+
+ Modif.
+
+
+ -
+
+
+ 0
+
+
- Modif.
+ Align
-
+
-
-
-
- 0
+
+
+
+ 0
+ 0
+
-
-
- Align
-
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 220
- 16777215
-
-
-
- Align the face of selected object(s) to the actual view Plane.
+
+
+ 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.
These objects will be moved not the point of view.
Then Click the button.
@@ -3475,34 +5570,34 @@ NB:
Two clicks will rotate by 180 deg the moving objects.
-
-
- 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.
+
+
+ Align Face to View
+
+
+
+ ../Icons/WF_viewAlignFace.svg../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.
These objects will be moved.
- Click second to select a Face to align to (the last object is fixed and will never move).
@@ -3518,64 +5613,64 @@ NB:
Two clicks will rotate by 180 deg the moving objects.
-
-
- 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.
+
+
+ Align Faces
+
+
+
+ ../Icons/WF_objectAlignFaces.svg../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.
These objects will be moved.
- Click second to select an Edge to align to (the last object is fixed and will never move).
@@ -3591,95 +5686,152 @@ NB:
Two clicks will rotate by 180 deg the moving objects.
-
-
- 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
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- Joint Point(s) from selected object(s) to the last Point selected.
+
+
+ Align Edges
+
+
+
+ ../Icons/WF_objectAlignAxes.svg../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
+
+
+
+
+
+ -
+
+
-
+
+
+ Align the main Axis (first of the 2 axis set) from selected object(s) to the last Edge (or 2 main Axis from an object) selected.
+ - Click first to select at least one object!
+This or These first object(s) will be rotated.
+ - Click last to select an Edge (or an Object) to align to (this last object is fixed and will never move).
+Then Click the button.
+
+NB:
+ The 2 main first axis are calculated using scan and sort from all axis of the object.
+ The center of rotation is at center mass location of each selected object.
+
+ In case of several objects selection :
+ The 2 main Axis of the first object(s) will be aligned on the 2 main Axis of the last one.
+ In case of several objects selection plus one Edge :
+ The first main Axis of the object(s) will be aligned on the Edge.
+
+ - One click will align first main Axes.
+ - Second click will also align the second main Axes if exists on last object or
+ will rotate by 180 deg the moving objects on first main axes.
+ - Third and following clicks will rotate by 180 deg the moving objects on first main axes.
+
+
+ Align Main Axis
+
+
+
+ ../Icons/WF_objectAlignMainAxis.svg../Icons/WF_objectAlignMainAxis.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.
These objects will be moved.
- Click second to select an Point to joint to (the last object is fixed and will never move).
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
-
-
-
-
- -
-
-
- Joint Face(s) from selected object(s) to the last Face selected.
+
+
+ Joint Points
+
+
+
+ ../Icons/WF_objectJointPoints.svg../Icons/WF_objectJointPoints.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Joint 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.
These objects will be moved.
- Click second to select a Face to joint to (the last object is fixed and will never move).
@@ -3687,677 +5839,690 @@ Then Click the button.
Two clicks will rotate by 180 deg the moving objects.
-
-
- Joint Faces
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_objectJointFaces.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_objectJointFaces.svg
-
-
-
- 32
- 32
-
-
-
-
-
-
-
-
- Cut
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 220
- 16777215
-
-
-
- QFrame::StyledPanel
-
-
- QFrame::Raised
-
-
-
-
-
-
- Object
-
-
-
-
-
-
-
-
-
-
- 130
- 31
-
-
-
-
- 250
- 40
-
-
-
- Select the Object to cut:
+
+
+ Joint Faces
+
+
+
+ ../Icons/WF_objectJointFaces.svg../Icons/WF_objectJointFaces.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+ Cut
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 220
+ 16777215
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ Object
+
+
+
-
+
+
-
+
+
+
+ 130
+ 31
+
+
+
+
+ 250
+ 40
+
+
+
+ Select the Object to cut:
First Click on the object in the view
and push this button to accept...
-
-
- Select Object
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
- true
-
-
-
- -
-
-
- false
-
-
-
- 130
- 31
-
-
-
-
- 250
- 40
-
-
-
- Select the Line to cut the Object along:
+
+
+ Select Object
+
+
+
+ -
+
+
+ false
+
+
+
+ 0
+ 0
+
+
+
+ true
+
+
+
+ -
+
+
+ false
+
+
+
+ 130
+ 31
+
+
+
+
+ 250
+ 40
+
+
+
+ Select the Line to cut the Object along:
First Click on the line/edge in the view
and push this button to accept...
-
-
- Select Cut Line
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
- true
-
-
-
- -
-
-
- false
-
-
-
- 130
- 31
-
-
-
-
- 250
- 40
-
-
-
- Select the Reference Plane to cut the Object from:
+
+
+ Select Cut Line
+
+
+
+ -
+
+
+ false
+
+
+
+ 0
+ 0
+
+
+
+ true
+
+
+
+ -
+
+
+ false
+
+
+
+ 130
+ 31
+
+
+
+
+ 250
+ 40
+
+
+
+ Select the Reference Plane to cut the Object from:
First Click on the plane in the view
and push this button to accept...
The Reference Plane is the Plane you pose the object on before to use a saw!
(Note that the Angle is calculated from the Normal at this Plane)
-
-
- Select Ref. Plane
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
- true
-
-
-
-
+
+
+ Select Ref. Plane
+
+
+
+ -
+
+
+ false
+
+
+
+ 0
+ 0
+
+
+
+ true
+
+
+
+
+
+ -
+
+
-
+
+
-
+
+
+
+ 70
+ 16777215
+
+
+
+ Angle of cutting relative to the Normal of the Reference Plane (in degrees).
+
+ 0.0 means that the Plane of cutting is along the Cut Line with
+a 90 deg angle with Reference Plane.
+
+
+ Angle
+
+
- -
-
-
-
-
-
-
-
-
-
- 70
- 16777215
-
-
-
- Angle of cutting relative to the Normal of the Reference Plane (in degrees).
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ Angle of cutting relative to the Normal of the Reference Plane (in degrees).
0.0 means that the Plane of cutting is along the Cut Line with
a 90 deg angle with Reference Plane.
-
-
- Angle
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 0
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- Angle of cutting relative to the Normal of the Reference Plane (in degrees).
-
- 0.0 means that the Plane of cutting is along the Cut Line with
-a 90 deg angle with Reference Plane.
-
-
- 0.0
-
-
-
-
-
- -
-
-
-
-
-
-
- 70
- 16777215
-
-
-
- Thickness of the Cut.
-
-i.e. the thickness of a saw.
-
-
- Thickness
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- Thickness of the Cut.
-
-i.e. the thickness of a saw.
-
-
- 0.0
-
-
-
-
-
- -
-
-
-
-
-
-
- 40
- 0
-
-
-
-
- 60
- 16777215
-
-
-
- Reset
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 18
- 20
-
-
-
-
- -
-
-
- false
-
-
-
- 50
- 16777215
-
-
-
- Cut an object by selecting a Line cut, a Plane and an Angle regarding the Plane.
-
-
- Apply
-
-
-
- 32
- 32
-
-
-
-
-
-
-
+
+
+ 0.0
+
+
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
-
-
-
- Rotate
-
-
- -
-
-
-
- 220
- 16777215
-
-
-
- QFrame::StyledPanel
-
-
- QFrame::Raised
-
-
-
-
-
-
- - Select one or several object(s) in the view and
+
+ -
+
+
-
+
+
+
+ 70
+ 16777215
+
+
+
+ Thickness of the Cut.
+
+i.e. the thickness of a saw.
+
+
+ Thickness
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ Thickness of the Cut.
+
+i.e. the thickness of a saw.
+
+
+ 0.0
+
+
+
+
+
+ -
+
+
-
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Reset
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 18
+ 20
+
+
+
+
+ -
+
+
+ false
+
+
+
+ 50
+ 16777215
+
+
+
+ Cut an object by selecting a Line cut, a Plane and an Angle regarding the Plane.
+
+
+ Apply
+
+
+
+ 32
+ 32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+ Rotate
+
+
+ -
+
+
+
+ 220
+ 16777215
+
+
+
+ QFrame::StyledPanel
+
+
+ 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
+
+
+
+
+ ../Icons/WF_rotationAxis.svg../Icons/WF_rotationAxis.svg
+
+
+ Axis
+
+
+
-
+
+
+
+ 0
+ 0
+
-
- 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
-
-
-
-
-
-
-
- -
-
- 150
- 67
+ 80
+ 0
- 16777215
+ 130
16777215
-
- Angle of rotation :
+
+ 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
+
+
+
+
+
+
+
+ -
+
+
+
+ 150
+ 67
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Angle of rotation :
+
+
+ false
+
+
+
-
+
+
+ 0
+
+
+
+ Define
+
+
-
-
-
- 1
+
+
+
+ 0
+ 39
+
-
-
- 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.
+
+
+ 120
+ 16777215
+
+
+
+ -180
+
+
+ 180
+
+
+ Qt::Horizontal
+
+
+ QSlider::TicksBothSides
+
+
+ 20
+
+
+
+
+
+
+
+
+ ../Icons/WF_click.svg../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
@@ -4370,178 +6535,178 @@ or
NB:
Normals of Planes will be used.
-
-
- Select
-
-
-
-
-
+
+
+ Select
+
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 40
- 0
-
-
-
-
- 60
- 16777215
-
-
-
- 0.0
-
-
- 32769
-
-
-
- -
-
-
-
- 60
- 16777215
-
-
-
- (deg)
-
-
-
-
-
-
- -
-
-
-
-
-
-
- 40
- 0
-
-
-
-
- 60
- 16777215
-
-
-
- Reset
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 20
- 20
-
-
-
-
- -
-
-
-
- 40
- 0
-
-
-
-
- 60
- 16777215
-
-
-
- Apply
-
-
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
-
-
-
- Translate
-
-
- -
-
-
-
- 220
- 16777215
-
-
-
- QFrame::StyledPanel
-
-
- QFrame::Raised
-
-
-
-
-
-
- - Select one or several object(s) in the view and
+
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ 0.0
+
+
+ 32769
+
+
+
+ -
+
+
+
+ 60
+ 16777215
+
+
+
+ (deg)
+
+
+
+
+
+
+
+
+ -
+
+
-
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Reset
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 20
+ 20
+
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Apply
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+ Translate
+
+
+ -
+
+
+
+ 220
+ 16777215
+
+
+
+ QFrame::StyledPanel
+
+
+ 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)
-
-
-
- -
-
-
-
-
-
- Toggle this check box to generate copies the object during the Translation.
+
+
+ Select Object(s)
+
+
+
+ -
+
+
-
+
+
+ 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:
@@ -4561,53 +6726,53 @@ N copies requested :
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!
-
-
- Copy
-
-
-
- -
-
-
-
- 40
- 0
-
-
-
-
- 50
- 16777215
-
-
-
- The number of copies.
-
-
- QAbstractSpinBox::NoButtons
-
-
- false
-
-
- 1
-
-
- 20
-
-
- 1
-
-
- 1
-
-
-
- -
-
-
- Toggle this check box to realize "deep" copies.
+
+
+ Copy
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+ The number of copies.
+
+
+ QAbstractSpinBox::NoButtons
+
+
+ false
+
+
+ 1
+
+
+ 20
+
+
+ 1
+
+
+ 1
+
+
+
+ -
+
+
+ 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
@@ -4630,695 +6795,689 @@ Pad001
|_Sketch
On the last result the same Sketch is both link to Pad001 but also still to Pad.
-
-
- Deep
-
-
-
-
-
- -
-
-
- 1
+
+
+ Deep
+
+
+
+
+
+ -
+
+
+ 0
+
+
+
+
+ ../Icons/WF_startPoint.svg../Icons/WF_startPoint.svg
+
+
+ Start
+
+
+
-
+
+
+
+ 150
+ 0
+
-
-
-
- ../../../../../../../../../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
+
+
+
+ 0
+ 0
+
+
+
+
+ 100
+ 0
+
+
+
+
+ 120
+ 16777215
+
+
+
+ 3
+
+
+ QComboBox::AdjustToContentsOnFirstShow
+
+
-
+
+ Origin
-
- Starting Point :
+
+ -
+
+ Base Obj.
-
- false
+
+ -
+
+ Center Obj.(s)
-
+
+ -
+
+ To select
+
+
+ -
+
+ To define
+
+
+
+
+ -
+
+
+ true
+
+
+
+ 50
+ 0
+
+
+
+
+ 120
+ 16777215
+
+
+
+ Select
+
+
+
+ -
+
+
-
+
-
-
-
- true
+
+
+ X :
-
-
- 0
- 0
-
-
-
-
- 100
- 0
-
-
-
-
- 120
- 16777215
-
-
-
- 3
-
-
- QComboBox::AdjustToContentsOnFirstShow
-
-
-
-
- Origin
-
-
- -
-
- Base Obj.
-
-
- -
-
- Center Obj.(s)
-
-
- -
-
- To select
-
-
- -
-
- To define
-
-
- -
-
+
-
+
- true
+ false
- 50
+ 90
0
- 120
+ 200
16777215
+
+ Please Enter a new coordinate and type RETURN to validate!
+
- Select
+ 0.0
- -
-
-
-
-
-
-
-
-
- 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
+
+
+ Y :
-
-
- 0
- 0
-
-
-
-
- 100
- 0
-
-
-
-
- 120
- 16777215
-
-
-
- 0
-
-
- QComboBox::AdjustToContentsOnFirstShow
-
-
-
-
- Origin
-
-
- -
-
- Base Obj.
-
-
- -
-
- Center Obj.(s)
-
-
- -
-
- To select
-
-
- -
-
- To define
-
-
- -
-
- Relative
-
-
- -
-
+
-
+
- true
+ false
- 100
+ 90
0
- 120
+ 200
16777215
+
+ Please Enter a new coordinate and type RETURN to validate!
+
- Select
+ 0.0
- -
-
-
-
-
-
-
-
-
- Z :
-
-
-
- -
-
-
- false
-
-
-
- 90
- 0
-
-
-
-
- 200
- 16777215
-
-
-
- 0.0
-
-
-
-
-
- -
-
-
-
-
-
- Y :
-
-
-
- -
-
-
- false
-
-
-
- 90
- 0
-
-
-
-
- 200
- 16777215
-
-
-
- 0.0
-
-
-
-
-
- -
-
-
-
-
-
- X :
-
-
-
- -
-
-
- false
-
-
-
- 90
- 0
-
-
-
-
- 200
- 16777215
-
-
-
- 0.0
-
-
-
-
-
-
+
+
+ -
+
+
-
+
+
+ Z :
+
+
+
+ -
+
+
+ false
+
+
+
+ 90
+ 0
+
+
+
+
+ 200
+ 16777215
+
+
+
+ Please Enter a new coordinate and type RETURN to validate!
+
+
+ 0.0
+
+
-
-
-
-
+
+
+
+
- -
-
-
-
-
-
-
- 40
- 0
-
-
-
-
- 60
- 16777215
-
-
-
- Reset
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 20
- 20
-
-
-
-
- -
-
-
-
- 40
- 0
-
-
-
-
- 60
- 16777215
-
-
-
- Apply
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
-
+
+
+
+ ../Icons/WF_endPoint.svg../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
+
+
+
+ Please Enter a new coordinate and type RETURN to validate!
+
+
+ 0.0
+
+
+
+
+
+ -
+
+
-
+
+
+ Y :
+
+
+
+ -
+
+
+ false
+
+
+
+ 90
+ 0
+
+
+
+
+ 200
+ 16777215
+
+
+
+ Please Enter a new coordinate and type RETURN to validate!
+
+
+ 0.0
+
+
+
+
+
+ -
+
+
-
+
+
+ X :
+
+
+
+ -
+
+
+ false
+
+
+
+ 90
+ 0
+
+
+
+
+ 200
+ 16777215
+
+
+
+ Please Enter a new coordinate and type RETURN to validate!
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
-
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Reset
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 20
+ 20
+
+
+
+
+ -
+
+
+
+ 40
+ 0
+
+
+
+
+ 60
+ 16777215
+
+
+
+ Apply
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
-
-
-
- ../../../../../../../../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,
+
+
+
+
+
+
+
+ ../Icons/WF_view.svg../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
-
-
-
-
- -
-
-
- Camera Track
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_trackCamera.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_trackCamera.svg
-
-
-
- 32
- 32
-
-
-
-
-
-
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_check.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_check.svg
-
-
- Check
-
-
- -
-
-
- Detect the position of the camera.
+
+
+ Align View to ...
+
+
+
+ ../Icons/WF_viewAlign.svg../Icons/WF_viewAlign.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Camera Track
+
+
+
+ ../Icons/WF_trackCamera.svg../Icons/WF_trackCamera.svg
+
+
+
+ 32
+ 32
+
+
+
+
+
+
+
+
+
+ ../Icons/WF_check.svg../Icons/WF_check.svg
+
+
+ Check
+
+
+ -
+
+
+ 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
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- Check if two faces or two Edges are Coplanar:
+
+
+ View ?
+
+
+
+ ../Icons/WF_FCCamera_02.svg../Icons/WF_FCCamera_02.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Check if two faces or two Edges are Parallel:
- Select the 2 faces/planes or 2 Edges/Lines and
Click this button
NB: You can change the tolerance in "Ori. Pref." TAB
-
-
- are Coplanar ?
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isCoplanar.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isCoplanar.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Check if two faces or two Edges are Parallel:
-- Select the 2 faces/planes or 2 Edges/Lines and
-Click this button
-
-NB: You can change the tolerance in "Ori. Pref." TAB
-
-
- are Parallel ?
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isParallel.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isParallel.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Check for two Edges/Planes angle:
+
+
+ are Parallel ?
+
+
+
+ ../Icons/WF_isParallel.svg../Icons/WF_isParallel.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Check for two Edges/Planes angle:
Angle measurement between two Edges or two Planes
- Select the 2 Edges and
- Click this button
@@ -5331,142 +7490,185 @@ or
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
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Check for Line Length:
+
+
+ Angle ?
+
+
+
+ ../Icons/WF_angleBetween.svg../Icons/WF_angleBetween.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Check for Line Length:
Length measurement and Delta values (on main Axes) for a Line
- Select the Line and
Click this button
-
-
- Length ?
-
-
-
- ../Icons/WF_isLength.svg../Icons/WF_isLength.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Check for two Points distance:
+
+
+ Length ?
+
+
+
+ ../Icons/WF_isLength.svg../Icons/WF_isLength.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ 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
-
-
-
-
- -
-
-
- Check if two faces or two Edges are Perpendicular:
+
+
+ Distance ?
+
+
+
+ ../Icons/WF_distanceBetween.svg../Icons/WF_distanceBetween.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Check if two faces or two Edges are Coplanar:
- 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
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Check for two Objects Clearance distance:
+
+
+ are Coplanar ?
+
+
+
+ ../Icons/WF_isCoplanar.svg../Icons/WF_isCoplanar.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Check for surface Area:
+Area measurement for a Plane or a set of Planes.
+- Select One or several Planes and
+- Then click this button
+
+
+ Area ?
+
+
+
+ ../Icons/WF_isArea.svg../Icons/WF_isArea.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
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Check for two Objects Clearance distance:
Quick measurements between parallel faces and similarly placed objects
- Select the 2 Objects and
Click this button
-
-
- Distance Clearance ?
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isClearance.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isClearance.svg
-
-
-
- 32
- 32
-
-
-
-
- -
-
-
- Check for surface Area:
-Area measurement for a Plane or a set of Planes.
-- Select One or several Planes and
-Click this button
-
-
- Area ?
-
-
-
- ../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isArea.svg../../../../../../../../home/laurent/Documents/03_Plans/Python/Icons/WF_isArea.svg
-
-
-
- 32
- 32
-
-
-
-
-
-
+
+
+ Distance Clearance ?
+
+
+
+ ../Icons/WF_isClearance.svg../Icons/WF_isClearance.svg
+
+
+
+ 32
+ 32
+
+
+
+
+ -
+
+
+ Check for Radius:
+Radius measurement for a Circle or an Arc.
+- Select One Circle or Arc
+- Then click this button
+
+
+ Radius ?
+
+
+
+ ../Icons/WF_isRadius.svg../Icons/WF_isRadius.svg
+
+
+
+ 32
+ 32
+
+
@@ -5478,7 +7680,7 @@ Click this button
-
-
+
-
@@ -5487,7 +7689,7 @@ Click this button
-
-
+
Qt::Horizontal
diff --git a/WorkFeature/WF_2015.py b/WorkFeature/WF_2015.py
index 9c1d2c8..536062e 100644
--- a/WorkFeature/WF_2015.py
+++ b/WorkFeature/WF_2015.py
@@ -8,7 +8,7 @@
* - Jonathan Wiedemann for Gui ideas and for view codes 2014 *
* and support *
* - NormandC for his support *
-* - Yorick for his support *
+* - Yorick for his support and for FlattenWire3Points Macro *
* - galou_breizh for macro which creates a circle from 3 selected points*
* - Eriossoltero for macro Ellipse-Center+2Points *
* - Ulrich Brammer for Geodesic dome code *
@@ -22,8 +22,8 @@
* Thanks also to those I forget. *
***************************************************************************
***************************************************************************
-* FreeCAD Work Features / version 2015-02 *
-* Copyright (c) 2014, 2015 *
+* FreeCAD Work Features / version 2016-07 *
+* Copyright (c) 2014, 2015, 2016 *
* Code rewrite by *
* Copyright (c) 2014, 2015 Javier Martinez Garcia *
* Copyright (c) 2013, 2014 Jonathan Wiedemann *
@@ -56,17 +56,13 @@
import sys
from WorkFeature import WF_ObjParCurve_2015
-# Change this by your own FreeCAD lib path to import FreeCAD
-if not sys.path.__contains__("/usr/lib/freecad/lib"):
- sys.path.append("/usr/lib/freecad/lib")
-
import WFGui_2015 as WFGui
from WF_ObjRot_2015 import *
from WF_Utils_2015 import *
from WF_ObjParCurve_2015 import *
global myRelease
-myRelease = "2016_03_29"
+myRelease = "2016_09_10"
import os.path
import time
@@ -84,11 +80,11 @@ from FreeCAD import Base
from PySide import QtCore, QtGui
####################################################################################
-
# assume the Icons directory in the same directory as this MACRO file
-ICONS_PATH = os.path.dirname(__file__) + "/Icons"
+WF_ICONS_PATH = os.path.dirname(__file__) + "/Icons"
+
# use "icons" as prefix which we used in the .ui file
-QtCore.QDir.addSearchPath("icons", ICONS_PATH)
+QtCore.QDir.addSearchPath("icons", WF_ICONS_PATH)
# LineColor
#red = 1.0 # 1 = 255
@@ -122,6 +118,8 @@ global sweep_frenet
sweep_frenet = True
global sweep_transition
sweep_transition = 2
+global imageAxisScale
+imageAxisScale = "XY"
global sweep_all
sweep_all = True
global BBox_volum
@@ -147,6 +145,7 @@ m_anglePlaneAxisPlane = 0.0
m_lengthPlane = 10.0
m_distPlane = 10.0
m_distLine = 10.0
+m_lengthImage = 100.0
m_angleLine = 45.0
m_angleAlignFaces = 0.0
m_angleAlignEdges = 0.0
@@ -176,6 +175,7 @@ m_callback = None
m_clickForPoint = True
m_clickForAxis = True
m_stack = []
+m_set = 'Set'
error_msg_not_yet = "Not yet Developped !"
@@ -356,7 +356,8 @@ 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','WorkWires','WorkObjects','Rot_Trans']
+ m_list_dirs = ['Origin','WorkPoints','WorkAxis','WorkPlanes','WorkCircles','WorkArcs','WorkBoxes',\
+ 'WorkWires','WorkImages','WorkObjects','Rot_Trans']
for m_dir in m_list_dirs:
if folder == m_dir:
if not(App.ActiveDocument.getObject(str(m_dir))):
@@ -1123,7 +1124,7 @@ def meanVectorsPoint(vertx,info=0):
print_point(mean,"Mean of all vectors selected is : ")
return mean
-
+
def centerBBVectorsPoint(vertx,info=0):
""" Return the center point of the bounding box of all selected Vectors.
"""
@@ -1376,11 +1377,17 @@ def getClickedPoint(info):
pos = info["Position"]
global m_stack
global m_callback
+ global m_set
if msg !=0:
print_msg("down is " + str(down))
if (down) :
- point = view.getPoint(pos[0],pos[1])
+ point = view.getPoint(pos[0],pos[1])
obj = view.getObjectInfo(pos)
+
+# if msg !=0:
+# print_msg("point is " + str(point))
+# print_msg("obj is " + str(obj))
+
if obj == None:
m_stack.append(point)
else:
@@ -1388,7 +1395,7 @@ def getClickedPoint(info):
if len(m_stack) >= 1:
name = "Point"
part = "Part::Feature"
- plot_point(m_stack[-1], part, name)
+ plot_point(m_stack[-1], part, name, str(m_set))
print_point(m_stack[-1],"Click point at :")
#view.removeEventCallback("SoMouseButtonEvent",m_callback)
#del m_stack[:]
@@ -1794,7 +1801,7 @@ def intersecLinePlane(A, B, Plane_Normal, Plane_Point, info=0):
return T
-def attachPoint(*argc):
+def sel_attachPoint(*argc):
""" Attach point location by combo box.
Options :
Start
@@ -2033,7 +2040,19 @@ def plot_arc2(Radius, Placem, Face, Startangle, Endangle, Support, part= "Part::
arc_User_Name = arc.Label
Gui.ActiveDocument.getObject(arc_User_Name).LineColor = (1.00,0.67,0.00)
return arc_User_Name, arc
-
+
+
+def plot_arc3(point0, point1, point2, part= "Part::Feature", name= "Arc", grp="WorkArcs"):
+ if not(App.ActiveDocument.getObject( grp )):
+ App.ActiveDocument.addObject("App::DocumentObjectGroup", grp)
+ arc = App.ActiveDocument.addObject(part, name)
+ Arc = Part.Arc(point0,point1,point2)
+ arc.Shape = Part.Shape([Arc])
+ App.ActiveDocument.getObject( grp ).addObject(arc)
+ arc_User_Name = arc.Label
+ Gui.ActiveDocument.getObject(arc_User_Name).LineColor = (1.00,0.67,0.00)
+ return arc_User_Name, arc
+
def plot_ellipse(S1, S2, Center, part= "Part::Feature", name= "Ellipse", grp="Circles"):
"""Creates an ellipse centered on the point Center, where
@@ -2358,9 +2377,38 @@ def bounding_box(grp,ori_X,ori_Y,ori_Z,length_X,length_Y,length_Z,createVol=Fals
printError_msg("Bounding Box Volume not created !")
#==============================================================================
+def bBox_toggled(flag):
+ """ Respond to the change of bounding box flag.
+ """
+ global centerOfMass
+ centerOfMass = True
+ if flag == True:
+ centerOfMass = False
-
+
+def setTolerance(value):
+ """ Respond to the change in tolerance value from the text box.
+ """
+ try:
+ # First we check if a valid number have been entered
+ global tolerance
+ if str(value) == '-':
+ return
+ tolerance = float(value)
+ print_msg("New tolerance is :" + str(tolerance))
+ #plot_alongLinePoint()
+ except ValueError:
+ printError_msg("Tolerance must be valid number !")
+
+
+#==============================================================================
def plot_originObject():
+ """
+ Create at origin of the document:
+ a point,
+ X, Y, Z axis,
+ XZ, XY, YZ planes.
+ """
global verbose
msg=verbose
m_actDoc = get_ActiveDocument(info=msg)
@@ -2482,41 +2530,21 @@ def plot_originObject():
printError_msg("Could not Create Origin objects !")
-def bBox_toggled(flag):
- """ Respond to the change of bounding box flag.
- """
- global centerOfMass
- centerOfMass = True
- if flag == True:
- centerOfMass = False
-
-
-def setTolerance(value):
- """ Respond to the change in tolerance value from the text box.
- """
- try:
- # First we check if a valid number have been entered
- global tolerance
- if str(value) == '-':
- return
- tolerance = float(value)
- print_msg("New tolerance is :" + str(tolerance))
- #plot_alongLinePoint()
- except ValueError:
- printError_msg("Tolerance must be valid number !")
-
-
def plot_centerObjectPoint():
""" Create a Point at center location of all selected Object(s).
- if flag centerOfMass=True
- This point is the MEAN location of all center of Mass (if exist) of all objects.
- if flag centerOfMass=False
- 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!
+ 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 of al selected object(s) will be created too.
+
+ if BBox check box is toggled :
+ This point is the center of the Global X,Y,Z bounding box of all objects.
+ This global bounding box alway exists (especially for draft objects).
+ Be aware this point is not necessary the center of Mass of all Objects!
+
+ - First select one or several Object(s)
+ - Then push this button
"""
global centerOfMass
- global verbose
msg=verbose
m_actDoc = get_ActiveDocument(info=msg)
@@ -2577,7 +2605,7 @@ def plot_centerObjectPoint():
def plot_NpointsPoint():
- """Create a Point at mean location of all selected points.
+ """ Create a Point at MEAN location of all selected points.
"""
msg=verbose
@@ -2611,54 +2639,9 @@ def plot_NpointsPoint():
printError_msg(error_msg)
-def plot_extremaLinePoint():
- """ Create Points at start and end location of each selected Line(s).
- """
- global verbose
- msg=verbose
-
- m_actDoc = get_ActiveDocument(info=msg)
- if m_actDoc == None:
- return None
- createFolders('WorkPoints')
- error_msg = "Unable to create First and Last Line Point(s) : \nSelect at least one Line !"
- result_msg = " : First and Last Line Point(s) created !"
- name = "extremumPoint"
- part = "Part::Feature"
-
- Selection = get_SelectedObjects(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 >= 1:
- Edge_List = SelectedObjects[4]
- for i in range( Number_of_Edges ):
- edge = Edge_List[i]
- if msg != 0:
- print_msg(str(edge))
-
- Vector_A = edge.Vertexes[0].Point
- Vector_B = edge.Vertexes[-1].Point
- if msg != 0:
- print_point(Vector_A, msg="First Point : ")
- print_point(Vector_B, msg="Last Point : ")
-
- Center_User_Name = plot_point(Vector_A, part, name)
- print_point(Vector_A,str(Center_User_Name) + result_msg + " at :")
- Center_User_Name = plot_point(Vector_B, part, name)
- print_point(Vector_B,str(Center_User_Name) + result_msg + " at :")
- else:
- printError_msg(error_msg)
- except:
- printError_msg(error_msg)
-
-
def numberLinePart(value):
""" Respond to the change in number of part value from the spin box.
"""
- global verbose
msg=verbose
try:
@@ -2674,35 +2657,62 @@ def numberLinePart(value):
def plot_centerLinePoint():
- """ Create Point(s):
- - Create a Point at mid point location of each selected Line(s), or
- - 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.
+ """ Create Point(s) :
+ Cut each selected Line(s) in 2 (n) parts and
+ create a (n-1) Point(s) along selected edge(s) except at extrema.
+ The number indicates how many parts to consider.
+
+ - First define the number of Parts, then
+ - Select at least 2 Points and/or
+ - Select one or several Line/Edge(s) and/or
+ - Select one Plane/Face to process all (4) Edges and/or
+ - Select one Object to process all Edges at once
+ - Then Click on the button
"""
- global verbose
msg=verbose
-
+
+ error_msg = """Unable to create Mid Line Point(s) :
+ Select at least 2 Points and/or
+ Select one or several Line/Edge(s) and/or
+ Select one Plane/Face to process all (4) Edges and/or
+ Select one Object to process all Edges at once !"""
+ result_msg = " : Mid Line Point(s) created !"
+
+ createFolders('WorkPoints')
+ m_dir = 'Set'
+ name = "MidPoint"
+ part = "Part::Feature"
+
m_actDoc = get_ActiveDocument(info=msg)
if m_actDoc == None:
return None
-
- createFolders('WorkPoints')
- error_msg = "Unable to create Mid Line Point(s) : \nSelect at least one Line !"
- result_msg = " : Mid Line Point(s) created !"
- name = "MidPoint"
- part = "Part::Feature"
+ try:
+ m_r = App.ActiveDocument.getObject("WorkPoints").newObject("App::DocumentObjectGroup", str(m_dir))
+ except:
+ printError_msg("Could not Create '"+ str(m_dir) +"' Objects Group!")
+ return None
+ m_dir = m_r.Name
+
global m_numberLinePart
if not (m_numberLinePart >= 2 and m_numberLinePart <= 100) :
m_numberLinePart = 2
- Selection = get_SelectedObjects(info=msg, printError=False)
+
+ m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
+ if msg != 0:
+ print_msg(str(m_selEx))
+ m_sel = Selection(m_selEx)
+ if not m_sel :
+ print_msg("Unable to create a Selection Object !")
+ return None
+ if msg != 0:
+ print_msg(str(m_sel))
+
try:
- SelectedObjects = Selection
- Number_of_Edges = SelectedObjects[1]
+ Number_of_Edges, Edge_List = m_sel.get_segments(getfrom=["Points","Segments","Curves","Planes","Objects"])
if msg != 0:
print_msg("Number_of_Edges=" + str(Number_of_Edges))
if Number_of_Edges >= 1:
- Edge_List = SelectedObjects[4]
for i in range( Number_of_Edges ):
edge = Edge_List[i]
if m_numberLinePart == 2:
@@ -2712,12 +2722,12 @@ def plot_centerLinePoint():
if msg != 0:
print_point(Vector_Line_Center, msg="MidPoint : ")
- Center_User_Name = plot_point(Vector_Line_Center, part, name)
+ Center_User_Name = plot_point(Vector_Line_Center, part, name, str(m_dir))
print_point(Vector_Line_Center,str(Center_User_Name) + result_msg + " at :")
else:
for j in range( 1, m_numberLinePart ):
Vector_Line_Center = centerLinePoints(edge, j , m_numberLinePart, info=msg)
- Center_User_Name = plot_point(Vector_Line_Center, part, name)
+ Center_User_Name = plot_point(Vector_Line_Center, part, name, str(m_dir))
print_point(Vector_Line_Center,str(Center_User_Name) + result_msg + " at :")
else:
printError_msg(error_msg)
@@ -2725,35 +2735,530 @@ def plot_centerLinePoint():
printError_msg(error_msg)
-def plot_centerLinePoint2():
- """ Create a Point at mid point location of each selected Line(s).
- """
- msg=0
+def plot_extremaLinePoint():
+ """ Create Points at start and end location of each selected Line(s).
+
+ - Select one or several Line/Edge(s) and/or
+ - Select one Plane/Face to process all (4) Edges and/or
+ - Select one Object to process all Edges at once
+ - Then Click on the button
+ """
+ msg=verbose
+
+ error_msg = """Unable to create First and Last Line Point(s) :
+ Select one or several Line/Edge(s) and/or
+ Select one Plane/Face to process all (4) Edges and/or
+ Select one Object to process all Edges at once !"""
+ result_msg = " : First and Last Line Point(s) created !"
+
createFolders('WorkPoints')
- error_msg = "Unable to create Mid Line Point(s) : \nSelect at least one Line !"
- result_msg = " : Mid Line Point(s) created !"
- name = "MidPoint"
+ m_dir = 'Set'
+ name = "ExtremumPoint"
part = "Part::Feature"
- Selection = get_SelectedObjects(info=msg, printError=False)
+
+ m_actDoc = get_ActiveDocument(info=msg)
+ if m_actDoc == None:
+ return None
+
+ try:
+ m_r = App.ActiveDocument.getObject("WorkPoints").newObject("App::DocumentObjectGroup", str(m_dir))
+ except:
+ printError_msg("Could not Create '"+ str(m_dir) +"' Objects Group!")
+ return None
+ m_dir = m_r.Name
+
+
+ m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
+ if msg != 0:
+ print_msg(str(m_selEx))
+ m_sel = Selection(m_selEx)
+ if not m_sel :
+ print_msg("Unable to create a Selection Object !")
+ return None
+ if msg != 0:
+ print_msg(str(m_sel))
+
try:
- SelectedObjects = Selection
- Number_of_Edges = SelectedObjects[1]
- #print_msg("Number_of_Edges=" + str(Number_of_Edges))
- if Number_of_Edges >= 1:
- Edge_List = SelectedObjects[4]
+ Number_of_Edges, Edge_List = m_sel.get_segments(getfrom=["Points","Segments","Curves","Planes","Objects"])
+ if msg != 0:
+ print_msg("Number_of_Edges=" + str(Number_of_Edges))
+ if Number_of_Edges >= 1:
for i in range( Number_of_Edges ):
- #print_msg(str(Edge_List[i]))
- Vector_Line_Center = centerLinePoint(Edge_List[i],info=1)
- #print_point(Vector_Line_Center, msg="MidPoint : ")
+ edge = Edge_List[i]
+ if msg != 0:
+ print_msg(str(edge))
- Center_User_Name = plot_point(Vector_Line_Center, part, name)
- print_point(Vector_Line_Center,str(Center_User_Name) + result_msg + " at :")
+ Vector_A = edge.Vertexes[0].Point
+ Vector_B = edge.Vertexes[-1].Point
+ if msg != 0:
+ print_point(Vector_A, msg="First Point : ")
+ print_point(Vector_B, msg="Last Point : ")
+
+ Center_User_Name = plot_point(Vector_A, part, name, str(m_dir))
+ print_point(Vector_A,str(Center_User_Name) + result_msg + " at :")
+ Center_User_Name = plot_point(Vector_B, part, name, str(m_dir))
+ print_point(Vector_B,str(Center_User_Name) + result_msg + " at :")
+ else:
+ printError_msg(error_msg)
+ except:
+ printError_msg(error_msg)
+
+
+def plot_centerCirclePoint():
+ """ Create a Point at center location of each selected Circle(s), Arc(s) or Ellipse(s).
+
+ - Select one or several Circle(s), Arc(s) or Ellipse(s)
+ - Then Click on the button
+ """
+ msg=verbose
+
+ error_msg = """Unable to create Center Circle Point(s) :
+ Select at least one Edge of Circle !"""
+ result_msg = " : Center Circle Point(s) created !"
+
+ createFolders('WorkPoints')
+ m_dir = 'Set'
+ name = "CenterCircle"
+ part = "Part::Feature"
+
+ m_actDoc = get_ActiveDocument(info=msg)
+ if m_actDoc.Name == None:
+ return None
+
+ try:
+ m_r = App.ActiveDocument.getObject("WorkPoints").newObject("App::DocumentObjectGroup", str(m_dir))
+ except:
+ printError_msg("Could not Create '"+ str(m_dir) +"' Objects Group!")
+ return None
+ m_dir = m_r.Name
+
+ m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
+ if msg != 0:
+ print_msg(str(m_selEx))
+ m_sel = Selection(m_selEx)
+ if not m_sel :
+ print_msg("Unable to create a Selection Object !")
+ return None
+ if msg != 0:
+ print_msg(str(m_sel))
+
+ try:
+ Number_of_Edges, Edge_List = m_sel.get_segments()
+ if msg != 0:
+ print_msg("Number_of_Edges=" + str(Number_of_Edges))
+ if Number_of_Edges >= 1:
+ for i in range( Number_of_Edges ):
+ edge = Edge_List[i]
+ try:
+ edge.Curve.Radius
+ Vector_Circle_Center = centerCirclePoint(edge,info=0)
+ Center_User_Name = plot_point(Vector_Circle_Center, part, name, str(m_dir))
+ print_point(Vector_Circle_Center,str(Center_User_Name) + result_msg + " at :")
+ except:
+ try:
+ m_c = edge.Center
+ Center_User_Name = plot_point(m_c, part, name, str(m_dir))
+ print_point(m_c,str(Center_User_Name) + result_msg + " at :")
+ except:
+ try:
+ m_c = edge.Curve.Center
+ Center_User_Name = plot_point(m_c, part, name, str(m_dir))
+ print_point(m_c,str(Center_User_Name) + result_msg + " at :")
+ except AttributeError:
+ continue
+
+ Number_of_Curves, Curve_List = m_sel.get_curves()
+ if msg != 0:
+ print_msg("Number_of_Curves=" + str(Number_of_Curves))
+ if Number_of_Curves >= 1:
+ for i in range( Number_of_Curves ):
+ curve = Curve_List[i]
+ if msg != 0:
+ print_msg(str(curve))
+ try:
+ m_c = curve.Center
+ Center_User_Name = plot_point(m_c, part, name, str(m_dir))
+ print_point(m_c,str(Center_User_Name) + result_msg + " at :")
+ except AttributeError:
+ try:
+ m_c = curve.Curve.Radius
+ Vector_Circle_Center = centerCirclePoint(curve,info=0)
+ Center_User_Name = plot_point(Vector_Circle_Center, part, name, str(m_dir))
+ print_point(Vector_Circle_Center,str(Center_User_Name) + result_msg + " at :")
+ except AttributeError:
+ continue
+ except:
+ printError_msg(error_msg)
+
+
+def plot_centerFacePoint():
+ """ Create a Point at center location of each selected Face(s).
+
+ - Select one or several Plane/Face(s) to process and/or
+ - Select one or several Object(s) to process all Faces at once
+ - Then Click on the button
+ """
+ msg=verbose
+
+ error_msg = """Unable to create Center Face Point(s) :
+ Select at least one Plane surface !"""
+ result_msg = " : Center Face Point(s) created !"
+
+ createFolders('WorkPoints')
+ m_dir = 'Set'
+ name = "CenterFace"
+ part = "Part::Feature"
+
+ m_actDoc = get_ActiveDocument(info=msg)
+ if m_actDoc == None:
+ return None
+
+ try:
+ m_r = App.ActiveDocument.getObject("WorkPoints").newObject("App::DocumentObjectGroup", str(m_dir))
+ except:
+ printError_msg("Could not Create '"+ str(m_dir) +"' Objects Group!")
+ return None
+ m_dir = m_r.Name
+
+ m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
+ if msg != 0:
+ print_msg(str(m_selEx))
+ m_sel = Selection(m_selEx)
+ if not m_sel :
+ print_msg("Unable to create a Selection Object !")
+ return None
+ if msg != 0:
+ print_msg(str(m_sel))
+
+
+ try:
+ Number_of_Planes, Plane_List = m_sel.get_planes(getfrom=["Planes","Objects"])
+ if msg != 0:
+ print_msg("Number_of_Planes=" + str(Number_of_Planes))
+ if Number_of_Planes >= 1:
+ for i in range( Number_of_Planes ):
+ plane = Plane_List[i]
+ if msg != 0:
+ print_msg(str(plane))
+
+ Vector_Plane_Center = plane.CenterOfMass
+
+ Center_User_Name = plot_point(Vector_Plane_Center, part, name, str(m_dir))
+ print_point(Vector_Plane_Center,str(Center_User_Name) + result_msg + " at :")
+ else:
+ printError_msg(error_msg)
+ except:
+ printError_msg(error_msg)
+
+
+def plot_lineFacePoint():
+ """ Create a point at the intersection of the Line(s) and Plane(s) selected.
+
+ First
+ - Select at least 2 Points and/or
+ - Select one or several Line/Edge(s)
+ and Second
+ - Select one or several Plane/Face(s) to process and/or
+ - Select one or several Object(s) to process all Faces at once
+ - Then Click on the button
+ """
+ msg=verbose
+
+ error_msg = """Unable to create (Line,Face) Intersection(s) :
+ First
+ - Select at least 2 Points and/or
+ - Select one or several Line/Edge(s)
+ and Second
+ - Select one or several Plane/Face(s) to process and/or
+ - Select one or several Object(s) to process all Faces at once
+ Select one Line and one Plane surface ! !"""
+ result_msg = " : (Line,Face) Intersection(s) created !"
+
+ createFolders('WorkPoints')
+ m_dir = 'Set'
+ name = "LineFacePoint"
+ part = "Part::Feature"
+
+ m_actDoc = get_ActiveDocument(info=msg)
+ if m_actDoc == None:
+ return None
+
+ try:
+ m_r = App.ActiveDocument.getObject("WorkPoints").newObject("App::DocumentObjectGroup", str(m_dir))
+ except:
+ printError_msg("Could not Create '"+ str(m_dir) +"' Objects Group!")
+ return None
+ m_dir = m_r.Name
+
+ m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
+ if msg != 0:
+ print_msg(str(m_selEx))
+ m_sel = Selection(m_selEx)
+ if not m_sel :
+ print_msg("Unable to create a Selection Object !")
+ return None
+ if msg != 0:
+ print_msg(str(m_sel))
+
+
+ try:
+ Number_of_Edges, Edge_List = m_sel.get_segments(getfrom=["Points","Segments"])
+ if msg != 0:
+ print_msg("Number_of_Edges=" + str(Number_of_Edges))
+
+ Number_of_Planes, Plane_List = m_sel.get_planes(getfrom=["Planes","Objects"])
+ if msg != 0:
+ print_msg("Number_of_Planes=" + str(Number_of_Planes))
+
+ if Number_of_Edges >= 1 and Number_of_Planes >= 1:
+ for i in range( Number_of_Edges ):
+ edge = Edge_List[i]
+ if msg != 0:
+ print_msg(str(edge))
+ for j in range( Number_of_Planes ):
+ plane = Plane_List[j]
+ if msg != 0:
+ print_msg(str(plane))
+ Vector_A = edge.valueAt( 0.0 )
+ Vector_B = edge.valueAt( edge.Length )
+ if msg != 0:
+ print_point(Vector_A, msg="Point A : ")
+ print_point(Vector_B, msg="Point B : ")
+ Plane_Normal = plane.normalAt(0,0)
+ Plane_Point = plane.CenterOfMass
+ if msg != 0:
+ print_msg("Plane_Normal is : " + str(Plane_Normal))
+ print_point(Plane_Point,"Plane_Point is : ")
+
+ Vector_T = intersecLinePlane(Vector_A, Vector_B, Plane_Normal, Plane_Point, info=0)
+
+ Center_User_Name = plot_point(Vector_T, part, name, str(m_dir))
+ print_point(Vector_T,str(Center_User_Name) + result_msg + " at :")
+ else:
+ printError_msg(error_msg)
+ except:
+ printError_msg(error_msg)
+
+
+def plot_pointFacePoint():
+ """ Point(s)=(Point(s),Face(s)):
+ Create projection(s) of Point(s) onto Face(s).
+
+ First
+ - Select one (or several) Point(s) and/or
+ - Select one or several Line/Edge(s)
+ and Second
+ - Select one or several Plane/Face(s) to process and/or
+ - Select one or several Object(s) to process all Faces at once
+ - Then Click on the button
+
+ Plot the intersection point T on a Plane given one Plane and One Point C.
+ The Vector TC is perpendicular to the plane.
+
+ Be aware that if the plane is not extended enough the intersection Point is still created (as if).
+ """
+ msg=verbose
+
+ error_msg = """Unable to create (Point,Face) Intersection(s) :
+ First
+ - Select one (or several) Point(s) and/or
+ - Select one or several Line/Edge(s)
+ and Second
+ - Select one or several Plane/Face(s) to process and/or
+ - Select one or several Object(s) to process all Faces at once
+ but at least select one Face and one Point not on the Face !"""
+ result_msg = " : (Point,Face) Intersection created !"
+
+ createFolders('WorkPoints')
+ m_dir = 'Set'
+ name = "PointFacePoint"
+ part = "Part::Feature"
+
+ m_actDoc = get_ActiveDocument(info=msg)
+ if m_actDoc == None:
+ return None
+
+ try:
+ m_r = App.ActiveDocument.getObject("WorkPoints").newObject("App::DocumentObjectGroup", str(m_dir))
+ except:
+ printError_msg("Could not Create '"+ str(m_dir) +"' Objects Group!")
+ return None
+ m_dir = m_r.Name
+
+ m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
+ if msg != 0:
+ print_msg(str(m_selEx))
+ m_sel = Selection(m_selEx)
+ if not m_sel :
+ print_msg("Unable to create a Selection Object !")
+ return None
+ if msg != 0:
+ print_msg(str(m_sel))
+
+ try:
+ Number_of_Points, Point_List = m_sel.get_points(getfrom=["Points","Segments","Curves"])
+ if msg != 0:
+ print_msg("Number_of_Points=" + str(Number_of_Points))
+ Number_of_Planes, Plane_List = m_sel.get_planes(getfrom=["Planes","Objects"])
+ if msg != 0:
+ print_msg("Number_of_Planes=" + str(Number_of_Planes))
+
+ if (Number_of_Points >= 1) and (Number_of_Planes >= 1):
+ 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)
+
+ 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, str(m_dir))
+ print_point(Vector_T,str(Center_User_Name) + result_msg + " at :")
+ else:
+ printError_msg(error_msg)
+ except:
+ printError_msg(error_msg)
+
+
+def plot_pointLinePoint():
+ """ Point(s)=(Point(s),Line(s)):
+ Create projection(s) of Point(s) onto Line(s).
+
+ First
+ - Select one (or several) Point(s)
+ and Second
+ - Select one or several Line/Edge(s) and/or
+ - Select one or several Plane/Face(s) to process and/or
+ - Select one or several Object(s) to process all Faces at once
+ - Then Click on the button
+
+ 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.
+
+ Be aware that if the line is not extended enough the intersection Point is still created (as if).
+ """
+ msg=verbose
+ msg=1
+
+ error_msg = """Unable to create (Point,Line) Intersection(s) :
+ First
+ - Select one (or several) Point(s)
+ and Second
+ - Select one or several Line/Edge(s) and/or
+ - Select one or several Plane/Face(s) to process and/or
+ - Select one or several Object(s) to process all Faces at once
+ - Then Click on the button
+ but at least select one Line and one Point not on the Line !"""
+ result_msg = " : (Point,Line) Intersection(s) and symetric(s) are created !"
+
+ createFolders('WorkPoints')
+ m_dir = 'Set'
+ name = "PointLinePoint"
+ part = "Part::Feature"
+
+ m_actDoc = get_ActiveDocument(info=msg)
+ if m_actDoc == None:
+ return None
+
+ try:
+ m_r = App.ActiveDocument.getObject("WorkPoints").newObject("App::DocumentObjectGroup", str(m_dir))
+ except:
+ printError_msg("Could not Create '"+ str(m_dir) +"' Objects Group!")
+ return None
+ m_dir = m_r.Name
+
+ m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
+ if msg != 0:
+ print_msg(str(m_selEx))
+ m_sel = Selection(m_selEx)
+ if not m_sel :
+ print_msg("Unable to create a Selection Object !")
+ return None
+ if msg != 0:
+ print_msg(str(m_sel))
+
+ try:
+ Number_of_Points, Point_List = m_sel.get_points(getfrom=["Points"])
+ if msg != 0:
+ print_msg("Number_of_Points=" + str(Number_of_Points))
+ Number_of_Edges, Edge_List = m_sel.get_segments(getfrom=["Segments","Curves","Planes","Objects"])
+ if msg != 0:
+ print_msg("Number_of_Edges=" + str(Number_of_Edges))
+
+ if (Number_of_Points >= 1) and (Number_of_Edges >= 1):
+ 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)
+
+ Center_User_Name = plot_point(Vector_T, part, name, str(m_dir))
+ print_point(Vector_T,str(Center_User_Name) + result_msg + " at :")
+ Center_User_Name2 = plot_point(Vector_Tprime, part, name +"_PRIM", str(m_dir))
+ 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))
else:
printError_msg(error_msg)
except:
printError_msg(error_msg)
+def plot_pointLinePoint2():
+ """ 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=verbose
+ createFolders('WorkPoints')
+ 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, printError=False)
+ try:
+ SelectedObjects = Selection
+ Number_of_Points = SelectedObjects[0]
+ Number_of_Edges = SelectedObjects[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]
+
+ 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)
+
+ 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))
+ else:
+ printError_msg(error_msg)
+ except:
+ printError_msg(error_msg)
+#==============================================================================
+
def distanceLinePoint(value):
""" Respond to the change in distance value from the text box.
"""
@@ -2766,9 +3271,7 @@ def distanceLinePoint(value):
print_msg("New distance is :" + str(m_distanceLinePoint))
#plot_alongLinePoint()
except ValueError:
- printError_msg("Distance must be valid number !")
-
-
+ printError_msg("Distance must be valid number !")
def plot_alongLinePoint():
""" Plot a point at a certain distance along the line respecting to the choosen
reference starting point.
@@ -2844,222 +3347,6 @@ def plot_alongLinePoint():
printError_msg(error_msg)
-def plot_centerCirclePoint():
- """ Plot the center point of all selected Circles and Ellipses.
- """
- msg=0
- createFolders('WorkPoints')
- error_msg = "Unable to create Center Circle Point(s) : \nSelect at least one Edge of Circle !"
- result_msg = " : Center Circle Point(s) created !"
- name = "CenterCircle"
- part = "Part::Feature"
-
- m_actDoc = get_ActiveDocument(info=msg)
- if m_actDoc.Name == None:
- return None
-
- # Return a list of SelectionObjects for a given document name.
- m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
- m_objs = [selobj.Object for selobj in m_selEx]
- m_objNames = [selobj.ObjectName for selobj in m_selEx]
- m_num = len(m_objs)
- if m_num >= 1:
- if msg != 0:
- print_msg( str(m_num) + " object(s) selected :\n" + str(m_objNames) )
- m_i = 0
- for m_obj in m_objs:
- if msg != 0:
- print_msg( "Processing : " + str(m_objNames[m_i]) )
-
- try:
- m_c = m_obj.Shape.Curve.Center
- Center_User_Name = plot_point(m_c, part, name)
- print_point(m_c,str(Center_User_Name) + result_msg + " at :")
- except AttributeError:
- SelectedObjects = get_SelectedObjects()
- Number_of_Edges = SelectedObjects[1]
- if Number_of_Edges >= 1:
- Edge_List = SelectedObjects[4]
- for i in range( Number_of_Edges ):
- try:
- Edge_List[i].Curve.Radius
- Vector_Circle_Center = centerCirclePoint(Edge_List[i],info=0)
- Center_User_Name = plot_point(Vector_Circle_Center, part, name)
- print_point(Vector_Circle_Center,str(Center_User_Name) + result_msg + " at :")
- except:
- printError_msg("Found One or More Non-Circular Edges")
- else:
- printError_msg(error_msg)
-
- else:
- printError_msg(error_msg)
-
-
-def plot_centerFacePoint():
- """ Plot the center point of all selected Planes.
- """
- msg=0
- createFolders('WorkPoints')
- error_msg = "Unable to create Center Face Point(s) : \nSelect at least one Plane surface !"
- result_msg = " : Center Face Point(s) created !"
- name = "CenterFace"
- part = "Part::Feature"
- Selection = get_SelectedObjects(info=msg, printError=False)
- try:
- SelectedObjects = Selection
- Number_of_Planes = SelectedObjects[2]
- if Number_of_Planes >= 1:
- Plane_List = SelectedObjects[5]
- for i in range( Number_of_Planes ):
- try:
- Selected_Plane = Plane_List[i]
- Vector_Plane_Center = Selected_Plane.CenterOfMass
-
- Center_User_Name = plot_point(Vector_Plane_Center, part, name)
- print_point(Vector_Plane_Center,str(Center_User_Name) + result_msg + " at :")
- except:
- printError_msg("Non Planar Surface !")
- else:
- printError_msg(error_msg)
- except:
- printError_msg(error_msg)
-
-
-def plot_lineFacePoint():
- """ Plot the intersection point between one Line and one plane.
- """
- msg=0
- createFolders('WorkPoints')
- error_msg = "Unable to create (Line,Face) Intersection : \nSelect one Line and one Plane surface !"
- result_msg = " : (Line,Face) Intersection created !"
- name = "LineFacePoint"
- part = "Part::Feature"
- Selection = get_SelectedObjects(info=msg)
- 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_Edges == 1) and (Number_of_Planes) == 1 :
- Edge_List = SelectedObjects[4]
- Plane_List = SelectedObjects[5]
- #print_msg(str(Edge_List))
- #print_msg(str(Plane_List))
- Vector_A = Edge_List[0].valueAt( 0.0 )
- Vector_B = Edge_List[0].valueAt( Edge_List[0].Length )
- print_point(Vector_A, msg="Point A : ")
- print_point(Vector_B, msg="Point B : ")
- Reference_Plane = Plane_List[0]
- Plane_Normal = Reference_Plane.normalAt(0,0)
- print_msg("Plane_Normal is : " + str(Plane_Normal))
- Plane_Point = Reference_Plane.CenterOfMass
- print_point(Plane_Point,"Plane_Point is : ")
-
- Vector_T = intersecLinePlane(Vector_A, 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:
- printError_msg(error_msg)
-
-
-def plot_pointLinePoint():
- """ 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=verbose
- createFolders('WorkPoints')
- 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, printError=False)
- try:
- SelectedObjects = Selection
- Number_of_Points = SelectedObjects[0]
- Number_of_Edges = SelectedObjects[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]
-
- 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)
-
- 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))
- else:
- printError_msg(error_msg)
- except:
- printError_msg(error_msg)
-
-
-def plot_pointFacePoint():
- """ 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=verbose
- createFolders('WorkPoints')
- 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, printError=False)
- try:
- SelectedObjects = Selection
- Number_of_Points = SelectedObjects[0]
- Number_of_Planes = SelectedObjects[2]
- 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]
-
- 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)
-
- 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 :")
- else:
- printError_msg(error_msg)
- except:
- printError_msg(error_msg)
-
-
def plot_2LinesPoint():
""" Plot one or two Point(s) at minimum distance of two Lines.
"""
@@ -3392,9 +3679,11 @@ def plot_cutWirePoint():
def plot_clickForPoint():
""" Plot a Point at location of a mouse click.
"""
- global verbose
msg=verbose
+
createFolders('WorkPoints')
+
+ global m_set
global m_stack
global m_callback
global m_clickForPoint
@@ -3405,10 +3694,19 @@ def plot_clickForPoint():
# Mimic behavior of toggle button
view = get_ActiveView()
if m_clickForPoint:
+ try:
+ m_r = App.ActiveDocument.getObject("WorkPoints").newObject("App::DocumentObjectGroup", str(m_set))
+ except:
+ printError_msg("Could not Create '"+ str(m_set) +"' Objects Group!")
+ return None
+ m_set = m_r.Name
+
m_callback = view.addEventCallback("SoMouseButtonEvent",getClickedPoint)
else:
del m_stack[:]
+ m_set = 'Set'
view.removeEventCallback("SoMouseButtonEvent",m_callback)
+
m_clickForPoint = not m_clickForPoint
@@ -3631,6 +3929,107 @@ def point_toSketch():
printError_msg(error_msg)
return
+
+def point_toSketch_old():
+ """ Transform Point(s) in Sketch's Point(s) by projection onto the Sketch's Plane:
+ - First select an existing Sketch;
+ - Select as much as Points needed;
+ Then click on this button.
+ """
+ msg=verbose
+
+ m_actDoc = get_ActiveDocument(info=msg)
+ if m_actDoc == None:
+ return None
+ error_msg = "Transform Point(s) in Sketch's Point(s) : \n" +\
+ "First select an existing Sketch\n" +\
+ "then select point(s) !"
+ result_msg = " : Point(s) transformed in Sketch's Point(s) done!"
+
+ m_sel = Gui.Selection.getSelection(m_actDoc.Name)
+ m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
+ if msg != 0:
+ print_msg("m_sel : " + str(m_sel))
+ m_num = len(m_sel)
+ m_num_point = 0
+ if m_num > 1:
+ # Get the Sketch from the selection
+ m_obj = m_sel[0]
+ if msg != 0:
+ print_msg("m_obj : " + str(m_obj))
+ if hasattr(m_obj, 'TypeId'):
+ m_type = m_obj.TypeId
+ if msg != 0:
+ print_msg("m_obj.TypeId : " + str(m_type))
+ else:
+ m_type = m_obj.Type
+ if msg != 0:
+ print_msg("m_obj.Type : " + str(m_type))
+
+ if m_type[:6] == "Sketch":
+ if msg != 0:
+ print_msg("Found a Sketch object!")
+ m_sketch = m_obj
+ # Get the Sketch Plane info
+ m_rec1 = Part.makePlane(1,1)
+ m_rec2 = Part.makePlane(1,1)
+ m_rec1.Placement = m_sketch.Placement.inverse()
+ m_rec2.Placement = m_sketch.Placement
+
+ if msg != 0:
+ print_msg("m_sketch.Placement.inverse = " + str(m_rec1.Placement))
+ print_msg("m_sketch.Placement = " + str(m_rec2.Placement))
+
+ m_rec2N = m_rec2.normalAt(0,0)
+
+ # Build a geometry list
+ geoList = []
+ # Get Point(s) from the selection
+ for m_obj in m_selEx[1:]:
+ if len(m_obj.SubObjects) != 0:
+ SubObject = m_obj.SubObjects[0]
+ if SubObject.ShapeType == "Vertex":
+ if msg != 0:
+ print_msg("Found a Points object!")
+ # Get the Point
+ Point = m_obj.SubObjects[0]
+ m_p1 = App.Base.Vector(Point.Point)
+ # App.Base.Placement.multVec
+ # multVector(Vector) -> Vector
+ # Compute the transformed vector using the placement
+ Projection1 = m_rec1.Placement.multVec(m_p1)
+
+ if msg != 0:
+ m_p2 = App.Base.Vector(Point.Point)
+ # Projection of the Point selected onto the Sketch Plane
+ Projection2 = m_p2.projectToPlane(m_sketch.Placement.Base, m_rec2N)
+ createFolders('WorkAxis')
+ plot_axis(Point.Point, Projection1, part="Part::Feature", name="Norml1", grp="WorkAxis")
+ plot_axis(Point.Point, Projection2, part="Part::Feature", name="Norml2", grp="WorkAxis")
+ createFolders('WorkPoints')
+ plot_point(Projection1, part="Part::Feature", name="Proj1", grp="WorkPoints")
+ plot_point(Projection2, part="Part::Feature", name="Proj2", grp="WorkPoints")
+
+ # Append the Projection
+ geoList.append(Part.Point(Projection1))
+
+ # Add the geometry list to the Sketch
+ m_sketch.addGeometry(geoList)
+ m_num_point = m_num_point + 1
+
+ else:
+ continue
+ else:
+ continue
+ # Refresh
+ App.getDocument(str(m_actDoc.Name)).recompute()
+ print_msg(str(m_num_point) + result_msg )
+ else:
+ printError_msg(error_msg)
+ else:
+ printError_msg(error_msg)
+ return
+
def point_toLoad():
"""Load a set of points from an ASCII file:
@@ -3665,7 +4064,10 @@ def point_toLoad():
except:
printError_msg("Unable to import Utils.WF_points_set !")
- fname, _ = QtGui.QFileDialog.getOpenFileName(None, 'Select a file',os.environ['HOME'],"Text Files (*.txt *.asc *.dat)")
+
+ #fname, _ = QtGui.QFileDialog.getOpenFileName(None, 'Select a file',os.environ['HOME'],"Text Files (*.txt *.asc *.dat)")
+ fname, _ = QtGui.QFileDialog.getOpenFileName(None, 'Select a file',os.path.expanduser('~'),"Text Files (*.txt *.asc *.dat)")
+
try:
m_pts = WFps.points_set([],str(fname))
@@ -3682,8 +4084,8 @@ def point_toLoad():
printError_msg(error_msg)
except:
printError_msg(error_msg)
-
-
+
+
def point_toSave():
"""Save a point or a set of points into an ASCII file.
One (x, y, z) triplet per line seperated by blank.
@@ -3696,6 +4098,77 @@ def point_toSave():
"""
msg=verbose
+ error_msg = """Save a point or a set of points into an ASCII file :
+ Select as much as Points as needed and/or select object(s)
+ to save points from these object(s) !
+ If you select an Edge : 2 points will be saved;
+ if you select a Plane : 4 points will be saved;
+ if you select an Object : many points will be saved!"""
+ result_msg = " Point(s) saved into : "
+
+ m_actDoc = get_ActiveDocument(info=msg)
+ if m_actDoc == None:
+ return None
+
+ m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
+ if msg != 0:
+ print_msg(str(m_selEx))
+ m_sel = Selection(m_selEx)
+ if not m_sel :
+ print_msg("Unable to create a Selection Object !")
+ return None
+ if msg != 0:
+ print_msg(str(m_sel))
+
+ try:
+ import Utils.WF_points_set as WFps
+ except:
+ printError_msg("Unable to import Utils.WF_points_set !")
+
+ try:
+ Number_of_Points, Point_List = m_sel.get_points(getfrom=["Points","Segments","Curves","Planes","Objects"])
+ if msg != 0:
+ print_msg("Number_of_Points=" + str(Number_of_Points))
+ m_points = []
+ if Number_of_Points >= 1 :
+ for m_point in Point_List:
+ if msg != 0:
+ print_point(FreeCAD.Vector(m_point.Point))
+ m_x = m_point.Point.x
+ m_y = m_point.Point.y
+ m_z = m_point.Point.z
+ m_points.append((m_x,m_y,m_z))
+
+ if msg != 0:
+ print_msg(str(m_points))
+
+ m_pts = WFps.points_set(m_points)
+
+ #fname, _ = QtGui.QFileDialog.getSaveFileName(None, 'Select a file',os.environ['HOME'])
+ fname, _ = QtGui.QFileDialog.getSaveFileName(None, 'Select a file',os.path.expanduser('~'))
+
+ if m_pts.save(str(fname)):
+ print_msg(str(Number_of_Points) + result_msg + str(fname) )
+ else:
+ printError_msg("Not able to save the requested Point(s)!")
+ else:
+ printError_msg(error_msg)
+ except:
+ printError_msg(error_msg)
+
+
+def point_toSave2():
+ """Save a point or a set of points into an ASCII file.
+ One (x, y, z) triplet per line seperated by blank.
+ - Select as much as Points as needed and/or select object(s)
+ to save points from these object(s) !
+ If you select an Edge : 2 points will be saved;
+ if you select a Plane : 4 points will be saved;
+ if you select an Object : many points will be saved.
+ Then click on this button.
+ """
+ msg=verbose
+
m_actDoc = get_ActiveDocument(info=msg)
if m_actDoc == None:
return None
@@ -3735,7 +4208,9 @@ def point_toSave():
m_pts = WFps.points_set(m_points)
- fname, _ = QtGui.QFileDialog.getSaveFileName(None, 'Select a file',os.environ['HOME'])
+ #fname, _ = QtGui.QFileDialog.getSaveFileName(None, 'Select a file',os.environ['HOME'])
+ fname, _ = QtGui.QFileDialog.getSaveFileName(None, 'Select a file',os.path.expanduser('~'))
+
if m_pts.save(str(fname)):
print_msg(str(Number_of_Points) + result_msg + str(fname) )
@@ -5258,7 +5733,7 @@ def plot_2PlanesAxis():
extension = extension/2
A = C - Axis_dir.normalize().multiply(extension*1.3)
B = C + Axis_dir
- Axis_User_Name, axis = plot_axis(A, B, part, name)
+ Axis_User_Name, _ = plot_axis(A, B, part, name)
print_msg(str(Axis_User_Name) + result_msg )
else:
printError_msg(error_msg)
@@ -5280,7 +5755,7 @@ def numberLine(value):
return
m_numberLine = int(value)
if m_numberLine == 0:
- m_numberLine = 1
+ m_numberLine = 1
if msg != 0:
print_msg("New number is :" + str(m_numberLine))
except ValueError:
@@ -5693,6 +6168,14 @@ def vertexToSketch(points,sketch):
m_sketch.addGeometry(geoList)
return num_point, return_points
+# P = BRep_Tool.Pnt(TopoDS.Vertex(refSubShape))
+# GeomAPI_ProjectPointOnSurf proj(P,gPlane)
+# P = proj.NearestPoint()
+# Base.Vector3d p(P.X(),P.Y(),P.Z())
+# invPlm.multVec(p,p)
+# point = Part.GeomPoint(p)
+# point.Construction = True
+# ExternalGeo.push_back(point)
def edgeToSketch(edges, sketch):
"""
@@ -5732,7 +6215,7 @@ def edgeToSketch(edges, sketch):
m_p3 = App.Base.Vector(m_Vertex2.Point)
m_p4 = App.Base.Vector(m_Vertex2.Point)
- # Compute the transformed vector using the placement
+ # Compute the transformed vector using the placement
Projection1 = m_rec1.Placement.multVec(m_p1)
Projection2 = m_p2.projectToPlane(m_sketch.Placement.Base, m_rec2N)
Projection3 = m_rec1.Placement.multVec(m_p3)
@@ -6119,6 +6602,93 @@ def line_toSketch():
return
+def line_toSketch_old():
+ """ 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.
+ """
+ global verbose
+ msg=verbose
+ m_tolerance=1e-12
+
+ m_actDoc = get_ActiveDocument(info=msg)
+ if m_actDoc == None:
+ return None
+ error_msg = "Transform Line(s) in Sketch's Line(s) : \nFirst select an existing Skecth\nthen select line(s) !"
+ result_msg = " : Line(s) transformed in Sketch's Line(s) done!"
+
+ m_sel = Gui.Selection.getSelection(m_actDoc.Name)
+ m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
+ if msg != 0:
+ print_msg("m_sel : " + str(m_sel))
+ m_num = len(m_sel)
+ m_num_line = 0
+ if m_num > 1:
+ # Get the Sketch from the selection
+ m_obj = m_sel[0]
+ if msg != 0:
+ print_msg("m_obj : " + str(m_obj))
+ if hasattr(m_obj, 'TypeId'):
+ m_type = m_obj.TypeId
+ if msg != 0:
+ print_msg("m_obj.TypeId : " + str(m_type))
+ else:
+ m_type = m_obj.Type
+ if msg != 0:
+ print_msg("m_obj.Type : " + str(m_type))
+
+ if m_type[:6] == "Sketch":
+ if msg != 0:
+ print_msg("Found a Sketch object!")
+ m_sketch = m_obj
+ # Get the Sketch Plane info
+ m_rec = Part.makePlane(1,1)
+ m_rec.Placement = m_sketch.Placement
+ m_recN = m_rec.normalAt(0,0)
+ # Build a geometry list
+ geoList = []
+ # Get Point(s) from the selection
+ for m_i in range(1,m_num):
+ m_obj = m_selEx[m_i]
+ #SubObject = m_obj.SubObjects[0]
+ for SubObject in m_obj.SubObjects:
+ if SubObject.ShapeType == "Edge":
+ if msg != 0:
+ print_msg("Found a Edge object!")
+ if len(SubObject.Vertexes) ==2:
+ m_Vertex1 = SubObject.Vertexes[0]
+ m_Vertex2 = SubObject.Vertexes[1]
+ else:
+ printError_msg(error_msg)
+ return
+ # Get the Point
+ m_p1 = m_Vertex1.Point
+ m_p2 = m_Vertex2.Point
+ # Projection of the Point selected onto the Sketch Plane
+ Projection1 = m_p1.projectToPlane(m_sketch.Placement.Base, m_recN)
+ Projection2 = m_p2.projectToPlane(m_sketch.Placement.Base, m_recN)
+ if distanceBetween(Projection1, Projection2) < m_tolerance:
+ # Append the Projection
+ geoList.append(Part.Point(Projection1))
+ else:
+ # Append the Projection
+ geoList.append(Part.Line(Projection1,Projection2))
+ # Add the geometry list to the Sketch
+ m_sketch.addGeometry(geoList)
+ m_num_line = m_num_line + 1
+ else:
+ continue
+ # Refresh
+ App.getDocument(str(m_actDoc.Name)).recompute()
+ print_msg(str(m_num_line) + result_msg )
+ else:
+ printError_msg(error_msg)
+ else:
+ printError_msg(error_msg)
+ return
+
+
def radiusCircle(value):
""" Respond to the change in radius value from the text box.
"""
@@ -6215,8 +6785,50 @@ def plot_linepointCircle():
printError_msg(error_msg)
+def plot_3pointsArc():
+ """Select 3 Points to create an Arc.
+ """
+ msg=0
+ createFolders('WorkArcs')
+ error_msg = "Unable to create an Arc: \nSelect 3 Points only!"
+ result_msg = " : Arc from 3 points created !"
+ name = "Arc"
+ part = "Part::Feature"
+ grp = "WorkArcs"
+ Selection = get_SelectedObjects(info=msg, printError=False)
+ try:
+ SelectedObjects = Selection
+ Number_of_Points = SelectedObjects[0]
+ if Number_of_Points == 3:
+ Point_List = SelectedObjects[3]
+
+ P1 = Point_List[0].Point
+ P2 = Point_List[1].Point
+ P3 = Point_List[2].Point
+
+ l = ((P1 - P2).cross(P2 - P3)).Length
+
+ P1P2 = (P2 - P1).Length
+ P2P3 = (P3 - P2).Length
+ P3P1 = (P1 - P3).Length
+ r=0.0
+ try:
+ # Circle radius.
+ r = P1P2 * P2P3 * P3P1 / 2 / l
+ except:
+ printError_msg("The three points are aligned !")
+ else:
+ # Normal
+ Arc_User_Name, arc = plot_arc3(P1, P2, P3, part, name, grp )
+ print_msg(str(Arc_User_Name) + result_msg )
+ else:
+ printError_msg(error_msg)
+ except:
+ printError_msg(error_msg)
+
+
def plot_3pointsCircle():
- """Select 3 Points to create a Circle.
+ """Select 3 Points to create a Circle.
"""
msg=0
createFolders('WorkCircles')
@@ -7086,8 +7698,8 @@ def plot_clickForPlane():
But you can also select an already existing point first and click the button
to attach the plane.
"""
- global verbose
msg=verbose
+
createFolders('WorkPlanes')
m_actDoc = get_ActiveDocument(info=msg)
@@ -7360,6 +7972,117 @@ def plot_centerObjectPlanes():
else:
printError_msg(error_msg)
+def plot_wire_on_plane():
+ """Projects Wires on a Plane:
+
+ - First select an existing Face/Plane or 3 Points
+ - Second one or several Wires
+ - Then push this button
+ from original Macro : FlattenWire3Points
+ Author : Yorik
+ """
+ msg=verbose
+
+ error_msg = """Unable to projection of Wires :
+ Select an existing Face/Plane or 3 Points and then
+ Select one or several Wires!"""
+ result_msg = " : Projection of Wire(s) created !"
+
+ createFolders('WorkWires')
+ m_dir = 'Set'
+ name = "ProjectedWire"
+ part = "Part::Feature"
+
+ m_actDoc = get_ActiveDocument(info=msg)
+ if m_actDoc == None:
+ return None
+
+ try:
+ m_r = App.ActiveDocument.getObject("WorkWires").newObject("App::DocumentObjectGroup", str(m_dir))
+ except:
+ printError_msg("Could not Create '"+ str(m_dir) +"' Objects Group!")
+ return None
+ m_dir = m_r.Name
+
+ m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
+ if msg != 0:
+ print_msg(str(m_selEx))
+ m_sel = Selection(m_selEx)
+ if not m_sel :
+ print_msg("Unable to create a Selection Object !")
+ return None
+ if msg != 0:
+ print_msg(str(m_sel))
+
+ try:
+ Number_of_Planes, Plane_List = m_sel.get_planes()
+ if msg != 0:
+ print_msg("Number_of_Planes=" + str(Number_of_Planes))
+ if Number_of_Planes >= 1:
+ plane = Plane_List[0]
+ if msg != 0:
+ print_msg(str(plane))
+
+ except:
+ printError_msg(error_msg)
+ # define a plane
+# p1 = getattr(sel.Object.Shape,sel.SubElementNames[0]).Point
+# p2 = getattr(sel.Object.Shape,sel.SubElementNames[1]).Point
+# p3 = getattr(sel.Object.Shape,sel.SubElementNames[2]).Point
+# p4 = p2.sub(p1).cross(p3.sub(p1))
+#
+# # project wire points
+# points = []
+# for p in sel.Object.Points:
+# points.append(p.projectToPlane(p1,p4))
+# sel.Object.Points = points
+
+def plot_4points_bezier():
+ msg=1
+
+ def Bezier_Cubic_curve(poles):
+ #draws a degree 3 rational bspline from first to last point,
+ # second and third act as tangents
+ # poles is a list: [[[x,y,z],w],[[x,y,z],w],[[x,y,z],w],[[x,y,z],w]]
+ ## nKnot = 4 + 3 +1 = 8
+ ## Order = 3 + 1 = 4
+ degree=3
+ nPoles=4
+ knot=[0,0,0,0,1,1,1,1]
+ bs=Part.BSplineCurve()
+ bs.increaseDegree(degree)
+ id=1
+ for i in range(0,len(knot)): #-1):
+ bs.insertKnot(knot[i],id,0.0000001)
+ i=0
+ for ii in range(0,nPoles):
+ bs.setPole(ii+1,poles[i][0],poles[i][1])
+ i=i+1;
+ return bs
+
+ createFolders('WorkWires')
+
+ Selection = get_SelectedObjects(info=msg, printError=False)
+
+ try:
+ SelectedObjects = Selection
+ Number_of_Points = SelectedObjects[0]
+ if (Number_of_Points >= 4):
+ Point_List = SelectedObjects[3]
+ pole0=[Point_List[0].Point,1]
+ pole1=[Point_List[1].Point,1]
+ pole2=[Point_List[2].Point,1]
+ pole3=[Point_List[3].Point,1]
+
+ poles = [pole0, pole1, pole2, pole3]
+
+ curve = Bezier_Cubic_curve(poles)
+
+ Part.show(curve.toShape())
+ else:
+ printError_msg(error_msg)
+ except:
+ printError_msg(error_msg)
def get_all_from_bounding_box(ori_X,ori_Y,ori_Z,length_X,length_Y,length_Z,info=0,plot=0):
""" Returns 8 points ,12 edges and 6 planes from the bounding box
@@ -8344,44 +9067,6 @@ def plot_revolution():
If no Point is selected the Origin is considered as Center of rotation !
"""
-
- # revolve around Y axis by number of degrees
- # rev=shape.revolve(App.Vector(0,0,0),App.Vector(0,1,0),Dg)Revolve the shape around an Axis to a given degree.
-#==============================================================================
-# Part.revolve(Vector(0,0,0),Vector(0,0,1),360) - revolves the shape around the Z Axis 360 degree.
-#
-# Hints: Sometimes you want to create a rotation body out of a closed edge or wire.
-# Example:
-# from FreeCAD import Base
-# import Part
-# V=Base.Vector
-#
-# e=Part.Ellipse()
-# s=e.toShape()
-# r=s.revolve(V(0,0,0),V(0,1,0), 360)
-# Part.show(r)
-#
-# However, you may possibly realize some rendering artifacts or that the mesh
-# creation seems to hang. This is because this way the surface is created twice.
-# Since the curve is a full ellipse it is sufficient to do a rotation of 180 degree
-# only, i.e. r=s.revolve(V(0,0,0),V(0,1,0), 180)
-#
-# Now when rendering this object you may still see some artifacts at the poles. Now the
-# problem seems to be that the meshing algorithm doesn't like to rotate around a point
-# where there is no vertex.
-#
-# The idea to fix this issue is that you create only half of the ellipse so that its shape
-# representation has vertexes at its start and end point.
-#
-# from FreeCAD import Base
-# import Part
-# V=Base.Vector
-#
-# e=Part.Ellipse()
-# s=e.toShape(e.LastParameter/4,3*e.LastParameter/4)
-# r=s.revolve(V(0,0,0),V(0,1,0), 360)
-# Part.show(r)
-#==============================================================================
msg=verbose
createFolders('WorkObjects')
@@ -8475,7 +9160,7 @@ def subselect_toggled(flag):
sweep_all = flag
-def transition(*argc):
+def sel_transition(*argc):
""" Transition between profiles choice by combo box.
Options :
No Transition (or 0) (default)
@@ -8942,7 +9627,214 @@ def plot_sectionSweep2():
except:
printError_msg(error_msg)
+
+def rotate_image():
+ print_not_yet()
+ pass
+
+def sel_imageAxisScale(*argc):
+ """ Axis or Plane of Scaling for image choice by combo box.
+ Options :
+ XY
+ XZ
+ YZ
+ X
+ Y
+ Z
+ """
+ global imageAxisScale
+ msg=verbose
+ if msg != 0:
+ print_msg("Axis or Plane of Scaling for image choice by combo box !")
+ #imageAxisScale = "XY"
+ imageAxisScale = str(*argc)
+ if msg != 0:
+ print_msg("Axis selection is :" + str(imageAxisScale))
+
+
+def lengthImage(value):
+ """ Respond to the change in Image length value from the text box.
+ """
+ try:
+ # First we check if a valid number have been entered
+ global m_lengthImage
+ if str(value) == '-':
+ return
+ m_lengthImage = float(value)
+ print_msg("New Image length is :" + str(m_lengthImage))
+ except ValueError:
+ printError_msg("Image length must be valid number !")
+ pass
+
+
+def scale_image():
+ msg=verbose
+ msg=1
+ error_msg = "Unable to scale Image : \n"\
+ "Select at least \n"\
+ "One Image and One line or \n"\
+ "One Image and Two points!"
+
+ result_msg = " : Image Scaled !"
+
+ createFolders('WorkImages')
+ m_dir = 'WorkImages'
+ name = "ImageScaled"
+ part = "Part::Feature"
+
+ m_actDoc = get_ActiveDocument(info=msg)
+ if m_actDoc == None:
+ return None
+
+ try:
+ m_r = App.ActiveDocument.getObject("WorkImages").newObject("App::DocumentObjectGroup", str(m_dir))
+ except:
+ printError_msg("Could not Create '"+ str(m_dir) +"' Objects Group!")
+ return None
+ m_dir = m_r.Name
+
+ m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
+ if msg != 0:
+ print_msg(str(m_selEx))
+ m_sel = Selection(m_selEx)
+ if not m_sel :
+ print_msg("Unable to create Selection Object !")
+ return None
+ if msg != 0:
+ print_msg(str(m_sel))
+
+ # Recover the desired length
+ m_new_length = m_lengthImage
+ Number_of_Images = 0
+ Number_of_Points = 0
+ Number_of_Lines = 0
+ Image_List = []
+ Point_List = []
+ Line_List = []
+
+ # One Image selected but need 2 more points
+ # One Image and one point selected but need one more point
+ # One Image and two points selected
+ try:
+ Number_of_Images, Image_List = m_sel.get_primerImages()
+ Number_of_Points, Point_List = m_sel.get_points()
+ Number_of_Lines, Line_List = m_sel.get_segments()
+ if msg != 0:
+ print_msg("Number_of_Images=" + str(Number_of_Images))
+ print_msg("Image_List=" + str(Image_List))
+ print_msg("Number_of_Points=" + str(Number_of_Points))
+ print_msg("Point_List=" + str(Point_List))
+ print_msg("Number_of_Lines=" + str(Number_of_Lines))
+ print_msg("Line_List=" + str(Line_List))
+
+ # Recover the 2 points
+ m_points = []
+ if Number_of_Lines >= 1 :
+ m_points.append(Line_List[0].Vertexes[-1].Point)
+ m_points.append(Line_List[0].Vertexes[0].Point)
+ if Number_of_Points >= 2 :
+ m_points.append(Point_List[-1].Point)
+ m_points.append(Point_List[0].Point)
+
+ if Number_of_Images == 1 :
+ # Make a copy of the image
+ #m_img = Image_List[0]
+ m_img = App.activeDocument().copyObject(Image_List[0])
+ App.ActiveDocument.getObject( m_dir ).addObject(m_img)
+ # Get angle(plane) of image
+ m_img_angle = math.degrees(m_img.Placement.Rotation.Angle)
+ if msg != 0:
+ print_msg("Angle of Image selected = " + str(m_img_angle) )
+ print_msg("Scale Axis user choice = " + str(imageAxisScale) )
+
+ if m_img_angle == 0.0: # XY plane
+ m_length_x = m_points[0].x - m_points[-1].x
+ m_length_y = m_points[0].y - m_points[-1].y
+
+ if str(imageAxisScale) == "XY":
+ if m_length_x == 0 :
+ return
+ m_s = m_new_length/m_length_x
+ m_img.XSize.Value = m_img.XSize.Value * m_s
+ m_img.YSize.Value = m_img.YSize.Value * m_s
+ elif str(imageAxisScale) == "X":
+ if m_length_x == 0 :
+ return
+ m_s = m_new_length/m_length_x
+ m_img.XSize.Value = m_img.XSize.Value * m_s
+ elif str(imageAxisScale) == "Y":
+ if m_length_y == 0 :
+ return
+ m_s = m_new_length/m_length_y
+ m_img.YSize.Value = m_img.YSize.Value * m_s
+ else:
+ m_local_error_msg = "Unable to scale Image : \n"\
+ "The selected Axis must be either : XY, X or Y !"
+ printError_msg(m_local_error_msg)
+ return
+
+ elif m_img_angle == 120.0: # YZ plane
+ m_length_y = m_points[0].y - m_points[-1].y
+ m_length_z = m_points[0].z - m_points[-1].z
+
+ if str(imageAxisScale) == "YZ":
+ if m_length_y == 0 :
+ return
+ m_s = m_new_length/m_length_y
+ m_img.XSize.Value = m_img.XSize.Value * m_s
+ m_img.YSize.Value = m_img.YSize.Value * m_s
+ elif str(imageAxisScale) == "Y":
+ if m_length_y == 0 :
+ return
+ m_s = m_new_length/m_length_y
+ m_img.XSize.Value = m_img.XSize.Value * m_s
+ elif str(imageAxisScale) == "Z":
+ if m_length_z == 0 :
+ return
+ m_s = m_new_length/m_length_z
+ m_img.YSize.Value = m_img.YSize.Value * m_s
+ else:
+ m_local_error_msg = "Unable to scale Image : \n"\
+ "The selected Axis must be either : YZ, Y or Z !"
+ printError_msg(m_local_error_msg)
+ return
+
+ elif m_img_angle == 270.0: # XZ plane
+ m_length_x = m_points[0].x - m_points[-1].x
+ m_length_z = m_points[0].z - m_points[-1].z
+
+ if str(imageAxisScale) == "XZ":
+ if m_length_x == 0 :
+ return
+ m_s = m_new_length/m_length_x
+ m_img.XSize.Value = m_img.XSize.Value * m_s
+ m_img.YSize.Value = m_img.YSize.Value * m_s
+ elif str(imageAxisScale) == "X":
+ if m_length_x == 0 :
+ return
+ m_s = m_new_length/m_length_x
+ m_img.XSize.Value = m_img.XSize.Value * m_s
+ elif str(imageAxisScale) == "Z":
+ if m_length_z == 0 :
+ return
+ m_s = m_new_length/m_length_z
+ m_img.YSize.Value = m_img.YSize.Value * m_s
+ else:
+ m_local_error_msg = "Unable to scale Image : \n"\
+ "The selected Axis must be either : XZ, X or Z !"
+ printError_msg(m_local_error_msg)
+ return
+ else:
+ pass
+
+ print_msg(result_msg)
+ else:
+ printError_msg(error_msg)
+ except:
+ printError_msg(error_msg)
+
+
def view_align():
""" Set the current view perpendicular to the selected Face, Edge
or 2 points selected
@@ -9346,7 +10238,7 @@ def plot_cutObject():
# Looking for the min distance between center of line and center
# of faces of the bounding box. And selection of this Plane if quite
# Parallel to Ref. Plane
- min_val, max_val = init_min_max()
+ _, max_val = init_min_max()
m_min_distance = max_val
Plane_Point1 = None
Plane_Normal1 = None
@@ -9567,7 +10459,7 @@ def plot_cutObject():
Distx = []
Vertx_names = []
- min_val, max_val = init_min_max()
+ _ , max_val = init_min_max()
dist_to_center_min = max_val
# For the first plane look after all edges and look at
# intersections of the edges with the second plane
@@ -9658,7 +10550,7 @@ def plot_cutObject():
for m_i in range(len(BB_Edges)):
#( 2, 6, (Points[2], Points[6]), edge, mid_point, length )
if msg == 1:
- Axis_User_Name, Axis = plot_axis(BB_Edges[m_i][2][0], BB_Edges[m_i][2][1], part, "bb_edge", grp=str(m_dir))
+ Axis_User_Name, _ = plot_axis(BB_Edges[m_i][2][0], BB_Edges[m_i][2][1], part, "bb_edge", grp=str(m_dir))
BB_edges_names.append(str(Axis_User_Name))
if colinearVectors(BB_Edges[m_i][2][0], Point_A2, BB_Edges[m_i][2][1], info=0, tolerance=1e-10):
# Plot them
@@ -9675,7 +10567,7 @@ def plot_cutObject():
for m_i in range(len(BB_Edges)):
#( 2, 6, (Points[2], Points[6]), edge, mid_point, length )
if msg == 1:
- Axis_User_Name, Axis = plot_axis(BB_Edges[m_i][2][0], BB_Edges[m_i][2][1], part, "bb_edge", grp=str(m_dir))
+ Axis_User_Name, _ = plot_axis(BB_Edges[m_i][2][0], BB_Edges[m_i][2][1], part, "bb_edge", grp=str(m_dir))
BB_edges_names.append(str(Axis_User_Name))
if colinearVectors(BB_Edges[m_i][2][0], Point_B2, BB_Edges[m_i][2][1], info=0, tolerance=1e-10):
# Plot them
@@ -9806,7 +10698,7 @@ def plot_cutObject():
Gui.ActiveDocument.getObject(str(Point_A2_User_Name)).Visibility=False
Gui.ActiveDocument.getObject(str(Point_B2_User_Name)).Visibility=False
for k in range(len(BB_edges_names)):
- Gui.ActiveDocument.getObject(str(BB_edges_names[k])).Visibility=False
+ Gui.ActiveDocument.getObject(str(BB_edges_names[k])).Visibility=False
Gui.ActiveDocument.getObject(str(Point_A2_prime_User_Name)).Visibility=False
Gui.ActiveDocument.getObject(str(Point_A2_second_User_Name)).Visibility=False
@@ -9856,11 +10748,270 @@ def plot_cutObject():
cut_reset()
+
+def plot_cutObject2():
+ """ Cut an object in 2 pieces, based on a cut line, a plane,
+ an angle regarding this plane and a thickness.
+ """
+ msg=verbose
+
+ createFolders('WorkObjects')
+ error_msg = "Select in order one Line first, and finaly one Object to cut !"
+ result_msg = "Cut object done !"
+ name = "Cut"
+ part = "Part::Feature"
+ m_actDoc = get_ActiveDocument(info=0)
+ if m_actDoc == None:
+ return
+
+ m_num, m_selEx, m_objs, m_objNames = get_InfoObjects(info=0)
+ if m_num == 2:
+ SelectedObjects = get_SelectedObjects(info=msg, printError=False)
+ #Number_of_Points = SelectedObjects[0]
+ Number_of_Edges = SelectedObjects[1]
+ #Number_of_Planes = SelectedObjects[2]
+ #print_msg("Number_of_Points=" + str(Number_of_Points) +
+ # " Number_of_Edges=" + str(Number_of_Edges) +
+ # " Number_of_Planes=" + str(Number_of_Planes))
+ if (Number_of_Edges == 1):
+ # Get the Line
+ m_line = m_objs[0]
+ # print_msg( "Processing : " + str(m_objNames[0]) )
+ SubObjects_Inside = m_selEx[0].SubObjects
+ SubObject = SubObjects_Inside[0]
+ # print_msg( "SubObject = " + str(SubObject) )
+ if SubObject.ShapeType != "Edge":
+ printError_msg(error_msg)
+ return
+ Edge_List = SelectedObjects[4]
+ 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 : ")
+ Point_C = centerLinePoint(Edge_List[0])
+ #print_point(Point_C, msg="Center of AB : ")
+ #print_msg( "Distance : " + str(distanceBetween(Point_A, Point_B) ))
+
+ # Get the object
+ m_obj = m_objs[1]
+ try:
+ #m_s = m_obj.Shape
+ m_obj.Shape
+ except:
+ printError_msg( "This object has no attribute 'Shape' ! Select another one !\n")
+ return
+
+ try:
+ m_dir=str(m_objNames[1])+"_Cut"
+ App.ActiveDocument.getObject("WorkObjects").newObject("App::DocumentObjectGroup", str(m_dir))
+ except:
+ printError_msg("Could not Create '"+ str(m_dir) +"' Objects Group!")
+ return
+ #m_grp=m_actDoc.getObject( str(m_dir) )
+ print_msg( "Processing : " + str(m_objNames[1]))
+ print_msg( "m_grp : " + str(m_dir))
+
+ # Get object's limits
+ m_xmax, m_xmin, m_ymax, m_ymin, m_zmax, m_zmin = minMaxObjectsLimits(m_objs[1:],info=1)
+
+ # Length of BoundBox in X, Y and Z dimensions
+ m_length_X = m_xmax - m_xmin
+ m_length_Y = m_ymax - m_ymin
+ m_length_Z = m_zmax - m_zmin
+ m_length_list = [m_length_X, m_length_Y, m_length_Z]
+ m_length_max = max(m_length_list)
+ m_ori_X = m_xmin
+ m_ori_Y = m_ymin
+ m_ori_Z = m_zmin
+
+ # Get Points, Edges, Faces from the bounding box Object dimensions
+ Points, Edges, Faces = get_all_from_bounding_box(m_ori_X,m_ori_Y,m_ori_Z,m_length_X,m_length_Y,m_length_Z,info=0, plot=0)
+
+
+ # Looking for the min distance between center of line and center
+ # of faces of the bounding box.
+ min_val, max_val = init_min_max()
+ m_min_distance = max_val
+ Selected_Plane = Faces[0][5]
+ for m_i in range(len(Faces)):
+ #( 3, 0, 1, 2, (Edges[3][3],Edges[0][3],Edges[1][3],Edges[2][3]), face, mid_point, length )
+ m_distance = distanceBetween(Point_C, Faces[m_i][6])
+ if m_distance < m_min_distance:
+ m_min_distance = m_distance
+ Selected_Plane = Faces[m_i][5]
+ Plane_Point = Faces[m_i][6]
+ Plane_Normal = Selected_Plane.normalAt(0,0)
+ #print_msg( "MIN Distance : " + str(m_min_distance) )
+ #plot_point(Plane_Point, part, "point")
+
+ # Projection of the Line onto the closest Plane.
+ # Projection of A and B onto the Plane in Aprime and B0
+ Vector_A = Point_A + Plane_Normal
+ Vector_B = Point_B + Plane_Normal
+ 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 if needed
+ #plot_point(Point_Aprime, part, "PointFacePoint", grp=str(m_dir))
+ #plot_point(Point_Bprime, part, "PointFacePoint", grp=str(m_dir))
+ Axis_User_Name, Axis = plot_axis(Point_Aprime, Point_Bprime, part, "Line from 2 Points", grp=str(m_dir))
+ Gui.ActiveDocument.getObject(Axis_User_Name).Visibility=False
+
+ # Get intersections of this line with the Edges of the Face
+ Number_of_Intersec, Intersec_Points = intersecPoints(Axis.Shape, Selected_Plane, info=0)
+ #print_msg("Number_of_Intersec = " + str(Number_of_Intersec))
+
+ if Number_of_Intersec == 0:
+ printError_msg("No intersection point between projection of the Line and Object !")
+ return
+ if Number_of_Intersec == 1:
+ printError_msg("Only one intersection point between projection of the Line and Object ! No cut possible !")
+ return
+ if Number_of_Intersec == 2:
+ for m_i in range(Number_of_Intersec):
+ Point_User_Name = plot_point(Intersec_Points[m_i], part, "PointFacePoint", grp=str(m_dir))
+ Gui.ActiveDocument.getObject(Point_User_Name).Visibility=False
+ Point_A1 = Intersec_Points[0]
+ Point_B1 = Intersec_Points[1]
+ #print_point(Point_A1, msg="Point_A1 : ")
+ #print_point(Point_B1, msg="Point_B1 : ")
+
+ Plane_Point = Selected_Plane.CenterOfMass
+ Plane_Normal = Selected_Plane.normalAt(0,0)
+ #print_point(Plane_Point, msg="Plane_Point : ")
+
+ Edge_Vector = Point_B1 - Point_A1
+ Edge_Length = m_length_max * 1.2
+ Point_MidPoint = Point_B1 + Point_A1
+ Point_MidPoint = Point_MidPoint.multiply(0.5)
+
+ Vector_Normal = Edge_Vector.cross(Plane_Normal)
+ # Generate cutting Plane
+ Plane_User_Name, plane = plot_plane(Edge_Length, Edge_Length, Point_MidPoint, Vector_Normal, part, "Cut_Plane", grp=str(m_dir))
+ Gui.ActiveDocument.getObject(Plane_User_Name).Visibility=False
+ # Get the 2 of them closest to center of the Face
+ if Number_of_Intersec > 2:
+ printError_msg("Number_of_Intersec > 2:Not yet developped !")
+ return
+
+ # Adapt the angle of cutting
+ if m_angleCutObject != 0.0:
+ rot_angle = m_angleCutObject
+ rot_axis = Edge_Vector
+ m_center = Point_MidPoint
+ m_rot = App.Rotation(rot_axis,rot_angle)
+ print_msg("rotation = " + str(m_rot))
+ print_msg("rotation axis = " + str(rot_axis))
+ m_place = App.Placement(plane.Placement)
+ m_base1 = m_place.Base
+ print_msg("base1 = " + str(m_base1))
+ m_rot1 = m_place.Rotation
+ print_msg("rot1 = " + str(m_rot1))
+ m_rot = m_rot.multiply(m_rot1)
+ m_newplace = App.Placement(m_base1,m_rot,m_center-m_base1)
+ plane.Placement = m_newplace
+
+ # Now we need to extrude the cutting Plane
+ # First get 2 Vectors in which direction to extrude from Point_A1
+ Vector_extrude1 = App.Vector(0.0,0.0,0.0)
+ Vector_extrude2 = App.Vector(0.0,0.0,0.0)
+ for m_i in range(len(Edges)):
+ #( 2, 6, (Points[2], Points[6]), edge, mid_point, length )
+ #plot_axis(Edges[m_i][2][0], Edges[m_i][2][1], part, "axis")
+ if colinearVectors(Edges[m_i][2][0], Point_A1, Edges[m_i][2][1], info=0):
+ # Plot them
+ #plot_point(Edges[m_i][2][0], part, "PointFacePoint")
+ #plot_point(Edges[m_i][2][1], part, "PointFacePoint")
+ Vector_extrude1 = Edges[m_i][2][0] - Point_A1
+ Vector_extrude2 = Point_A1 - Edges[m_i][2][1]
+ Vector_extrude1 = Vector_extrude1.multiply(1.5)
+ Vector_extrude2 = Vector_extrude2.multiply(-1.5)
+ # Second we extrude in the first direction
+ #print_msg("Vector_extrude1 = " + str(Vector_extrude1))
+ #print_msg("Vector_extrude2 = " + str(Vector_extrude2))
+ #print_msg("plane = " + str(plane))
+ plane_shape = plane.Shape
+ print_msg("plane_shape = " + str( plane_shape))
+ extrude1 = plane_shape.extrude(Vector_extrude1)
+ #print_msg("extrude1 = " + str(extrude1))
+ Extrude1 = App.ActiveDocument.addObject("Part::Feature","extrude001")
+ App.ActiveDocument.getObject(str(m_dir)).addObject(Extrude1)
+ Extrude1.Shape = extrude1
+ Gui.ActiveDocument.getObject("extrude001").Visibility=False
+ #Part.show(extrude1)
+ extrude2 = plane_shape.extrude(Vector_extrude2)
+ #print_msg("extrude2 = " + str(extrude2))
+ Extrude2 = App.ActiveDocument.addObject("Part::Feature","extrude002")
+ App.ActiveDocument.getObject(str(m_dir)).addObject(Extrude2)
+ Extrude2.Shape = extrude2
+ Gui.ActiveDocument.getObject("extrude002").Visibility=False
+ #Part.show(extrude2)
+
+ # Let's duplicate the Object
+ m_obj2 = m_actDoc.copyObject(m_obj)
+ m_obj3 = m_actDoc.copyObject(m_obj)
+ #m_obj4 = m_actDoc.copyObject(m_line)
+
+ App.ActiveDocument.getObject(str(m_dir)).addObject(m_obj2)
+ App.ActiveDocument.getObject(str(m_dir)).addObject(m_obj3)
+ #App.ActiveDocument.getObject(str(m_dir)).addObject(m_obj4)
+ Obj2_User_Name = m_obj2.Label
+ Gui.ActiveDocument.getObject(Obj2_User_Name).Visibility=False
+ Obj3_User_Name = m_obj3.Label
+ Gui.ActiveDocument.getObject(Obj3_User_Name).Visibility=False
+
+ m_diff1_name = str(m_objNames[1]) + "_" + str(name) + "01"
+ m_diff1 = App.ActiveDocument.addObject( part, m_diff1_name )
+ m_diff1.Shape = m_obj2.Shape.cut(extrude1)
+ App.ActiveDocument.getObject(str(m_dir)).addObject(m_diff1)
+
+ m_diff2_name = str(m_objNames[1]) + "_" + str(name) + "02"
+ m_diff2 = App.ActiveDocument.addObject( part, m_diff2_name )
+ m_diff2.Shape = m_obj3.Shape.cut(extrude2)
+ App.ActiveDocument.getObject(str(m_dir)).addObject(m_diff2)
+
+ #App.ActiveDocument.getObject(str(m_dir)).addObject(m_obj)
+ Gui.ActiveDocument.getObject(str(m_objNames[1])).Visibility=False
+
+ App.getDocument(str(m_actDoc.Name)).removeObject("extrude001")
+ App.getDocument(str(m_actDoc.Name)).removeObject("extrude002")
+ App.getDocument(str(m_actDoc.Name)).removeObject(Obj2_User_Name)
+ App.getDocument(str(m_actDoc.Name)).removeObject(Obj3_User_Name)
+
+ print_msg(result_msg )
+
+ else:
+ printError_msg(error_msg)
+
def two_objects_are(case):
"""
- # Javier Martinez Garcia 2015
- # Adapted by Rentlau_64 2015
+ Edge : E
+ Plane : P
+ if E not included into P :
+ E, P intersection is empty : E Parallel to P
+ E, P intersection is one Point : E intersects P
+
+ Edge1 : E1
+ Edge2 : E2
+ if E1 coplanar with E2:
+ E1, E2 intersection is empty : E1 Parallel to E2
+ if E1prime Parallel to E1 and E2prime Parallel to E2:
+ if E1prime coplanar with E2prime and E1prime perpendicular to E2prime:
+ E1 perpendicular to E2
+
+ Edge : E
+ Plane : P
+ if E1 included into P and E2 included into P and E1, E2 intersection is one Point:
+ if E perpendicular to E1 and E perpendicular to E2:
+ E perpendicular to P (E Normal to P)
+
+ Plane1 : P1
+ Plane2 : P2
+ if P1 != P2:
+ P1, P2 intersection is empty : P1 Parallel to P2 means E1 and E2 Normals are Parallel
+
+ Original code from : Javier Martinez Garcia 02/2015
+ Adapted to WF by : Rentlau_64 03/2015
"""
global verbose
msg=verbose
@@ -9998,6 +11149,76 @@ def object_highlightCommon():
Adapted to WF by : Rentlau_64 10/2015
"""
+ msg=verbose
+ pass
+#==============================================================================
+# # -*- coding: utf-8 -*-
+#
+# from __future__ import unicode_literals
+#
+# __Name__ = 'Highlight Common parts'
+# __Comment__ = 'Compute the common parts between selected shapes'
+# __Web__ = 'http://freecadweb.org/wiki/index.php?title=Macro_HighlightCommon'
+# __Wiki__ = 'http://freecadweb.org/wiki/index.php?title=Macro_HighlightCommon'
+# __Icon__ = ""
+# __Help__ = 'Select at least two objects and run'
+# __Author__ = 'JMG, galou and other contributors'
+# __Version__ = 1.0
+# __Status__ = 'Production'
+# __Requires__ = ''
+#
+# from PySide import QtCore
+# from PySide import QtGui
+#
+# import FreeCAD
+#
+#
+# def error_dialog(msg):
+# """Create a simple dialog QMessageBox with an error message"""
+# FreeCAD.Console.PrintError(msg + '\n')
+# diag = QtGui.QMessageBox(QtGui.QMessageBox.Icon.Critical,
+# 'Error in macro highlight_difference',
+# msg)
+# diag.setWindowModality(QtCore.Qt.ApplicationModal)
+# diag.exec_()
+#
+# if len(FreeCAD.Gui.Selection.getSelectionEx()) < 2:
+# error_dialog('Select at least two objects')
+#
+# object_list = []
+# for obj in FreeCAD.Gui.Selection.getSelectionEx():
+# object_list.append(obj.Object)
+#
+# for i, object_a in enumerate(object_list):
+# for object_b in object_list[(i + 1):]:
+# shape_a = object_a.Shape
+# shape_b = object_b.Shape
+# label_a = object_a.Label
+# label_b = object_b.Label
+# common = shape_a.common(shape_b)
+# if common.Volume > 1e-6:
+# FreeCAD.Console.PrintMessage(
+# 'Volume of the intersection between {} and {}: {}\n'.format(
+# label_a,
+# label_b,
+# common.Volume))
+#
+# intersection_object = FreeCAD.ActiveDocument.addObject(
+# 'Part::Feature')
+# intersection_object.Label = 'Common ({} - {})'.format(
+# label_a, label_b)
+# intersection_object.Shape = common
+# intersection_object.ViewObject.ShapeColor = (1.0, 0.0, 0.0, 1.0)
+# object_a.ViewObject.Transparency = 80
+# object_b.ViewObject.Transparency = 80
+# else:
+# FreeCAD.Console.PrintMessage(
+#
+# 'No intersection between {} and {}\n'.format(
+# label_a,
+# label_b))
+#==============================================================================
+
def object_clearance():
"""
Check for two Objects Clearance distance:
@@ -10742,6 +11963,63 @@ def object_copy():
except:
printError_msg(error_msg)
+# # -*- coding: utf-8 -*-
+# from __future__ import unicode_literals
+# import codecs #https://docs.python.org/2/howto/unicode.html
+# import Part,Draft
+# #
+# #__title__="Macro_ReproWire"
+# #__author__ = "Mario52"
+# #__url__ = "http://www.freecadweb.org/index-fr.html"
+# #__version__ = "00.01"
+# #__date__ = "24/10/2015"
+# #
+#
+# sel = Gui.Selection.getSelection()
+# s = Gui.Selection.getSelectionEx()
+#
+# try:
+# if len(sel) != 0:
+# print "Object(s) : ", len(sel), " , SubObject(s) : ", len(s)
+# i2 = ii2 = -1
+# for i in s:
+# i2 += 1
+# ii2 = -1
+# try:
+# FreeCADGui.Selection.getSelectionEx()[i2].SubObjects[ii2]
+# for ii in i.SubElementNames:
+# # print "SubObject"
+# ii2 += 1
+# Part.show(FreeCADGui.Selection.getSelectionEx()[i2].SubObjects[ii2].copy()) # create repro shape subObject
+# print i2+1 ,"/", ii2+1 ,"/", len(s) ," ", i.ObjectName ," ", ii # display the info SubObject
+# a = App.ActiveDocument.ActiveObject
+# # object Name / original object Name / SubObject Name
+# a.Label = a.Name + " " + i.ObjectName + " " + ii # Label for the repro shape
+# try:
+# FreeCADGui.activeDocument().activeObject().LineColor = (1.0,0.0,0.0) # give LineColor
+# FreeCADGui.activeDocument().activeObject().PointColor = (1.0,0.0,0.0) # give PointColor
+# FreeCADGui.activeDocument().activeObject().ShapeColor = (1.0,0.0,0.0) # give ShapeColor
+# except Exception:
+# None
+# except Exception:
+# # print "Not SubObject"
+# Part.show(sel[i2].Shape) # create repro shape object
+# print i2+1 ,"/", ii2+1 ,"/", len(s) ," ", sel[i2].Name # display the info SubObject
+# a = App.ActiveDocument.ActiveObject
+# # object Name / original object Name
+# a.Label =a.Name + " " + sel[i2].Name # Label for the repro shape
+# try:
+# FreeCADGui.activeDocument().activeObject().LineColor = (1.0,0.0,0.0) # give LineColor
+# FreeCADGui.activeDocument().activeObject().PointColor = (1.0,0.0,0.0) # give PointColor
+# FreeCADGui.activeDocument().activeObject().ShapeColor = (1.0,0.0,0.0) # give ShapeColor
+# except Exception:
+# None
+# else :
+# print "Select one object"
+# except Exception:
+# print "Unexpected error"
+
+
def object_alignFaces():
"""
Align the Face(s) from selected object(s) to the last Face selected.
@@ -11365,6 +12643,64 @@ try:
except AttributeError:
_fromUtf8 = lambda s: s
+####################################################################################
+#==============================================================================
+# App.newDocument()
+# v=Gui.activeDocument().activeView()
+#
+# #This class logs any mouse button events. As the registered callback function fires twice for 'down' and
+# #'up' events we need a boolean flag to handle this.
+# class ViewObserver:
+# def logPosition(self, info):
+# down = (info["State"] == "DOWN")
+# pos = info["Position"]
+# if (down):
+# App.Console.PrintMessage("Clicked on position: ("+str(pos[0])+", "+str(pos[1])+")\n")
+#
+# o = ViewObserver()
+# c = v.addEventCallback("SoMouseButtonEvent",o.logPosition)
+
+# Quit Observer
+# v.removeEventCallback("SoMouseButtonEvent",c)
+#==============================================================================
+
+
+class ViewObserver:
+ """ This class logs any mouse button events.
+ """
+ def __init__(self, view):
+ """view=Gui.activeDocument().activeView()
+ """
+ self.view = view
+
+
+ def logPosition(self, info):
+ # As the registered callback function fires twice for 'down' and
+ #'up' events we need a test to handle this
+ down = (info["State"] == "DOWN")
+ #if info["State"] == "DOWN":
+ if (down):
+ # 2D position X,Y
+ # 0,0 = bottom left of the FreeCAD work window
+ # Xmax,Ymax = top rigth of the FreeCAD work window
+ pos = info["Position"]
+ print_msg("Clicked on position: ("+str(pos[0])+", "+str(pos[1])+")\n")
+ # 3D position X,Y,Z anywhere in the work window and on top of an object
+ pnt = self.view.getPoint(pos)
+ print_msg("World coordinates: " + str(pnt) + "\n")
+ # Object info or None
+ Object_info = self.view.getObjectInfo(pos)
+ print_msg("Object info: " + str(Object_info) + "\n")
+
+
+ def getObjectInfo(self, info):
+ global myObject
+ myObject = None
+ down = (info["State"] == "DOWN")
+ pos = info["Position"]
+ if (down):
+ myObject = self.view.getObjectInfo(pos)
+
####################################################################################
class WorkFeatureTab():
def __init__(self, movable=True):
@@ -11490,8 +12826,9 @@ class WorkFeatureTab():
"button_linecenter_circle" : "plot_linecenterCircle",
"button_linepoint_circle" : "plot_linepointCircle",
"button_3points_circle" : "plot_3pointsCircle",
- "button_cut_circle" : "plot_cutCircle",
"button_3points_ellipse" : "plot_3pointsEllipse",
+ "button_3points_arc" : "plot_3pointsArc",
+ "button_cut_circle" : "plot_cutCircle",
"button_circle_to_sketch" : "circle_toSketch",
"button_threepoints_plane" : "plot_3PointsPlane",
@@ -11506,8 +12843,12 @@ class WorkFeatureTab():
"button_click_for_plane" : "plot_clickForPlane",
"button_extension_plane" : "plot_extensionPlane",
+ #"button_click_for_plane2" : "plot_clickForPlane2",
"button_object_center_planes" : "plot_centerObjectPlanes",
+ #"button_wire_on_plane" : "plot_wire_on_plane",
+ "button_4points_bezier" : "plot_4points_bezier",
+
"button_boundingboxes" : "plot_boundingBoxes",
"button_boundingbox" : "plot_boundingBox",
"button_cylinder_create" : "plot_axisPointCylinder",
@@ -11522,6 +12863,9 @@ class WorkFeatureTab():
"button_sweep" : "plot_sectionSweep",
"button_beam" : "plot_sectionBeam",
+ #"button_rotate_image" : "rotate_image",
+ "button_scale_image" : "scale_image",
+
"button_alignview" : "view_align",
"button_trackcamera" : "view_trackCamera",
@@ -11530,7 +12874,7 @@ class WorkFeatureTab():
"button_cut_select_plane" : "cut_selectPlane",
"button_cut_reset" : "cut_reset",
"button_cut_apply" : "plot_cutObject",
-
+
"button_isParallel" : "object_parallel",
"button_isPerpendicular" : "object_perpendicular",
"button_isCoplanar" : "object_coplanar",
@@ -11542,7 +12886,6 @@ class WorkFeatureTab():
"button_isArea" : "plane_area",
"button_isView" : "camera_orientation",
-
"button_alignface2view" : "object_align2view",
"button_align_faces" : "object_alignFaces",
"button_align_edges" : "object_alignEdges",
@@ -11584,6 +12927,7 @@ class WorkFeatureTab():
"dist_plane" : "distPlane",
"dist_line" : "distLine",
"dist_point" : "distPoint",
+ "length_image" : "lengthImage",
"angle_align_faces" : "angleAlignFaces",
"angle_align_edges" : "angleAlignEdges",
"angle_align_main_axis" : "angleAlignMainAxis",
@@ -11613,8 +12957,9 @@ class WorkFeatureTab():
}
self.connections_for_combobox_changed = {
- "point_loc_comboBox" : "attachPoint",
- "transition_comboBox" : "transition",
+ "point_loc_comboBox" : "sel_attachPoint",
+ "transition_comboBox" : "sel_transition",
+ "Image_comboBox_axis_scale" : "sel_imageAxisScale",
}
@@ -11634,7 +12979,7 @@ class WorkFeatureTab():
#print_msg( "Connecting : " + str(m_key) + " and " + str(m_val) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL(_fromUtf8("textChanged(QString)")),globals()[str(m_val)])
- #QtCore.SIGNAL(QtCore.QString.fromUtf8("textChanged(QString)")),globals()[str(m_val)])
+ #QtCore.SIGNAL(QtCore.QString.fromUtf8("textChanged(QString)")),globals()[str(m_val)])
for m_key, m_val in self.connections_for_spin_changed.items():
@@ -11676,7 +13021,9 @@ class WorkFeatureTab():
t.tabifyDockWidget(cv,wf)
print_msg( "Tabified done !")
wf.activateWindow()
- wf.raise_()
+ wf.raise_()
+
+ print_msg( "icons path = " + str(WF_ICONS_PATH))
def quit_clicked(self): # quit
if self.movable:
diff --git a/WorkFeature/WF_Utils_2015.py b/WorkFeature/WF_Utils_2015.py
index 8051033..bb3de67 100644
--- a/WorkFeature/WF_Utils_2015.py
+++ b/WorkFeature/WF_Utils_2015.py
@@ -2,6 +2,7 @@
"""
"""
import os.path
+#import FreeCAD as App
from PySide import QtCore
try:
@@ -157,6 +158,359 @@ def read_text(filename):
###############################################################################
# Classes
+class Selection():
+ """
+ Create a Selection Object
+
+ *Gui_Selection* : selected object from GUI.
+
+ m_activeDoc = App.activeDocument()
+ if m_activeDoc == None:
+ message = "No Active document selected !"
+ return (None, message)
+
+ if m_activeDoc.Name:
+ m_selEx = Gui.Selection.getSelectionEx(m_activeDoc.Name)
+ m_sel = Selection(m_selEx)
+ """
+ def __init__(self, Gui_Selection):
+ self.__numberOfEntities = 0
+ self.__numberOfVertexes = 0
+ self.__numberOfEdges = 0
+ self.__numberOfWires = 0
+ self.__numberOfFaces = 0
+ self.__numberOfObjects = 0
+ self.__numberOfImages = 0
+ self.__selectedVertices = []
+ self.__selectedEdges = []
+ self.__selectedWires = []
+ self.__selectedFaces = []
+ self.__selectedObjects = []
+ self.__selectedImages = []
+ self.__selEx = None
+ if Gui_Selection == None:
+ message = "No Selection from Active document passed !"
+ return (None, message)
+ self.__selEx = Gui_Selection
+
+ self.initialize()
+
+ def storeShapeType(self, Object):
+ if Object.ShapeType == "Vertex":
+ self.__selectedVertices.append(Object)
+ return True
+ if Object.ShapeType == "Edge":
+ self.__selectedEdges.append(Object)
+ return True
+ if Object.ShapeType == "Wire":
+ self.__selectedWires.append(Object)
+ return True
+ if Object.ShapeType == "Face":
+ self.__selectedFaces.append(Object)
+ return True
+ return False
+
+ def initialize(self):
+ self.__numberOfEntities = len (self.__selEx)
+
+ if self.__numberOfEntities >= 1:
+ for m_Sel_i_Object in self.__selEx:
+ if not m_Sel_i_Object.HasSubObjects:
+ if hasattr(m_Sel_i_Object, 'Object'):
+ m_Object = m_Sel_i_Object.Object
+ if hasattr(m_Object, 'ShapeType'):
+ self.storeShapeType(m_Object)
+ if hasattr(m_Object, 'Shape'):
+ self.__selectedObjects.append(m_Object)
+ if hasattr(m_Object, 'ImageFile'):
+ self.__selectedImages.append(m_Object)
+
+# if hasattr(m_Sel_i_Object.Object, 'Shape'):
+# # if hasattr(m_Sel_i_Object.Object.Shape, 'ShapeType'):
+# # if not self.storeShapeType(m_Sel_i_Object.Object.Shape):
+# # self.__selectedObjects.append(m_Sel_i_Object.Object)
+ else:
+ for m_Object in m_Sel_i_Object.SubObjects:
+ if hasattr(m_Object, 'ShapeType'):
+ self.storeShapeType(m_Object)
+ if hasattr(m_Object, 'Shape'):
+ self.__selectedObjects.append(m_Object)
+ if hasattr(m_Object, 'ImageFile'):
+ self.__selectedImages.append(m_Object)
+
+ self.__numberOfVertexes = len(self.__selectedVertices)
+ self.__numberOfEdges = len(self.__selectedEdges)
+ self.__numberOfWires = len(self.__selectedWires)
+ self.__numberOfFaces = len(self.__selectedFaces)
+ self.__numberOfObjects = len(self.__selectedObjects)
+ self.__numberOfImages = len(self.__selectedImages)
+ message = "Initialization done !"
+ return message
+ else:
+ message = "No Object selected !"
+ return (None, message)
+
+ message = ""
+ return (None, message)
+
+
+ def __getNumberOfEntities(self):
+ return self.__numberOfEntities
+
+ def __setNumberOfEntities(self, val):
+ self.__numberOfEntities = val
+
+ numberOfEntities = property(__getNumberOfEntities, __setNumberOfEntities)
+
+ def __getNumberOfPoints(self):
+ return self.__numberOfVertexes
+
+ def __setNumberOfPoints(self, val):
+ self.__numberOfVertexes = val
+
+ numberOfPoints = property(__getNumberOfPoints, __setNumberOfPoints)
+
+ def __getNumberOfSegments(self):
+ return self.__numberOfEdges
+
+ def __setNumberOfSegments(self, val):
+ self.__numberOfEdges = val
+
+ numberOfSegments = property(__getNumberOfSegments, __setNumberOfSegments)
+
+ def __getNumberOfCurves(self):
+ return self.__numberOfWires
+
+ def __setNumberOfCurves(self, val):
+ self.__numberOfWires = val
+
+ numberOfCurves = property(__getNumberOfCurves, __setNumberOfCurves)
+
+ def __getNumberOfPlanes(self):
+ return self.__numberOfFaces
+
+ def __setNumberOfPlanes(self, val):
+ self.__numberOfFaces = val
+
+ numberOfPlanes = property(__getNumberOfPlanes, __setNumberOfPlanes)
+
+ def __getNumberOfObjects(self):
+ return self.__numberOfObjects
+
+ def __setNumberOfObjects(self, val):
+ self.__numberOfObjects = val
+
+ numberOfObjects = property(__getNumberOfObjects, __setNumberOfObjects)
+
+
+ def __getNumberOfImages(self):
+ return self.__numberOfImages
+
+ def __setNumberOfImages(self, val):
+ self.__numberOfImages = val
+
+ numberOfImages = property(__getNumberOfImages, __setNumberOfImages)
+
+ def __str__(self):
+ message = "Gui_Selection : " + str(self.__selEx)
+ message += "\nNumberOfImages : " + str(self.__numberOfImages)
+ message += "\nNumberOfObjects : " + str(self.__numberOfObjects)
+ message += "\nNumberOfPlanes : " + str(self.__numberOfFaces)
+ message += "\nNumberOfCurves : " + str(self.__numberOfWires)
+ message += "\nNumberOfSegments : " + str(self.__numberOfEdges)
+ message += "\nNumberOfPoints : " + str(self.__numberOfVertexes)
+ message += "\nNumberOfEntities : " + str(self.__numberOfEntities)
+ return (message)
+
+
+ def get_points(self, getfrom=["Points","Segments","Curves","Planes","Objects"]):
+ """ Return all Points found in selection including the Points from objects as
+ (Number of Points, list of Vertexes)
+ Return None if no Point detected
+ """
+ Selected_Entities = []
+
+ if self.numberOfEntities == 0 :
+ return None
+
+ if self.numberOfPoints > 0 and "Points" in getfrom :
+ for m_point in self.__selectedVertices:
+ Selected_Entities.append(m_point)
+
+ if self.numberOfSegments > 0 and "Segments" in getfrom :
+ for m_edge in self.__selectedEdges:
+ Selected_Entities.append(m_edge.Vertexes[0])
+ Selected_Entities.append(m_edge.Vertexes[-1])
+ # TOCOMPLETE
+ if self.numberOfCurves > 0 and "Curves" in getfrom :
+ pass
+
+ if self.numberOfPlanes > 0 and "Planes" in getfrom :
+ for m_face in self.__selectedFaces:
+ m_edges_list = m_face.Edges
+ for m_edge in m_edges_list:
+ Selected_Entities.append(m_edge.Vertexes[0])
+ Selected_Entities.append(m_edge.Vertexes[-1])
+
+ if self.numberOfObjects > 0 and "Objects" in getfrom :
+ for m_object in self.__selectedObjects:
+ for m_vertex in m_object.Shape.Vertexes:
+ Selected_Entities.append(m_vertex)
+
+ if len(Selected_Entities) != 0:
+ return (len(Selected_Entities), Selected_Entities)
+ else:
+ return (0, None)
+
+
+ def get_segments(self, getfrom=["Points","Segments","Curves","Planes","Objects"]):
+ """ Return all Segments found in selection including the Segments from objects as
+ (Number of Segments, list of Edges)
+ In case of at least 2 points selected it will create a line from these 2 points
+ Return None if no Segment detected
+ """
+ Selected_Entities = []
+
+ if self.numberOfEntities == 0 :
+ return None
+
+ if self.numberOfPoints >= 2 and "Points" in getfrom :
+ import Part
+ for m_p1,m_p2 in zip(self.__selectedVertices, self.__selectedVertices[1:]):
+ m_diff = m_p2.Point.sub(m_p1.Point)
+ tolerance = 1e-10
+ if abs(m_diff.x) <= tolerance and abs(m_diff.y) <= tolerance and abs(m_diff.z) <= tolerance:
+ continue
+ Selected_Entities.append(Part.makeLine(m_p2.Point, m_p1.Point))
+
+ if self.numberOfSegments > 0 and "Segments" in getfrom :
+ for m_edge in self.__selectedEdges:
+ Selected_Entities.append(m_edge)
+ # TOCOMPLETE
+ if self.numberOfCurves > 0 and "Curves" in getfrom :
+ for m_wire in self.__selectedWires:
+ Selected_Entities.append(m_wire)
+
+ if self.numberOfPlanes > 0 and "Planes" in getfrom :
+ for m_face in self.__selectedFaces:
+ m_edges_list = m_face.Edges
+ for m_edge in m_edges_list:
+ Selected_Entities.append(m_edge)
+
+ if self.numberOfObjects > 0 and "Objects" in getfrom :
+ for m_object in self.__selectedObjects:
+ for m_edge in m_object.Shape.Edges:
+ Selected_Entities.append(m_edge)
+
+ if len(Selected_Entities) != 0:
+ return (len(Selected_Entities), Selected_Entities)
+ else:
+ return (0, None)
+
+
+ def get_curves(self, getfrom=["Points","Segments","Curves","Planes","Objects"]):
+ Selected_Entities = []
+
+ if self.numberOfEntities == 0 :
+ return None
+
+ if self.numberOfCurves > 0 and "Curves" in getfrom :
+ for m_wire in self.__selectedWires:
+ Selected_Entities.append(m_wire)
+
+ if self.numberOfPlanes > 0 and "Planes" in getfrom :
+ for m_face in self.__selectedFaces:
+ m_wires_list = m_face.Wires
+ for m_wire in m_wires_list:
+ Selected_Entities.append(m_wire)
+
+ if self.numberOfObjects > 0 and "Objects" in getfrom :
+ for m_object in self.__selectedObjects:
+ for m_wire in m_object.Shape.Wires:
+ Selected_Entities.append(m_wire)
+
+ if len(Selected_Entities) != 0:
+ return (len(Selected_Entities), Selected_Entities)
+ else:
+ return (0, None)
+
+
+ def get_planes(self, getfrom=["Points","Segments","Curves","Planes","Objects"]):
+ Selected_Entities = []
+
+ if self.numberOfEntities == 0 :
+ return None
+
+ # TOCOMPLETE
+# if self.numberOfPoints >= 3 and "Points" in getfrom :
+# import Part
+# for m_p1,m_p2 in zip(self.__selectedVertices, self.__selectedVertices[1:]):
+# m_diff = m_p2.Point.sub(m_p1.Point)
+# tolerance = 1e-10
+# if abs(m_diff.x) <= tolerance and abs(m_diff.y) <= tolerance and abs(m_diff.z) <= tolerance:
+# continue
+# Selected_Entities.append(Part.makeLine(m_p2.Point, m_p1.Point))
+#
+# # TOCOMPLETE
+# if self.numberOfSegments >= 2 and "Segments" in getfrom :
+# import Part
+# for m_l1,m_l2 in zip(self.__selectedEdges, self.__selectedEdges[1:]):
+# for m_edge in self.__selectedEdges
+# Selected_Entities.append(m_edge)
+
+
+ if self.numberOfPlanes > 0 and "Planes" in getfrom :
+ for m_face in self.__selectedFaces:
+ Selected_Entities.append(m_face)
+
+ if self.numberOfObjects > 0 and "Objects" in getfrom :
+ for m_object in self.__selectedObjects:
+ for m_face in m_object.Shape.Faces:
+ Selected_Entities.append(m_face)
+
+ if len(Selected_Entities) != 0:
+ return (len(Selected_Entities), Selected_Entities)
+ else:
+ return (0, None)
+
+
+ def get_objects(self):
+ Selected_Entities = []
+ pass
+
+
+ def get_primer_selected_entities(self, selection_type):
+ Selected_Entities = selection_type
+ if len(Selected_Entities) != 0:
+ return (len(Selected_Entities), Selected_Entities)
+ else:
+ return (0, None)
+
+
+ def get_primerPoints(self):
+ return self.get_primer_selected_entities(self.__selectedVertices)
+
+
+ def get_primerSegments(self):
+ return self.get_primer_selected_entities(self.__selectedEdges)
+
+
+ def get_primerCurves(self):
+ return self.get_primer_selected_entities(self.__selectedWires)
+
+
+ def get_primerPlanes(self):
+ return self.get_primer_selected_entities(self.__selectedFaces)
+
+
+ def get_primerObjects(self):
+ return self.get_primer_selected_entities(self.__selectedObjects)
+
+
+ def get_primerImages(self):
+ return self.get_primer_selected_entities(self.__selectedImages)
+
+
class DefineAndConnectEvents():
def __init__(self, ui, obj):
"""
diff --git a/start_WF.py b/start_WF.py
index 59ab6c7..ecfee49 100644
--- a/start_WF.py
+++ b/start_WF.py
@@ -2,17 +2,40 @@
import sys
import os.path
+# Change this by your own FreeCAD lib path to import FreeCAD
+if not sys.path.__contains__("/usr/lib/freecad/lib"):
+ sys.path.append("/usr/lib/freecad/lib")
+
try:
# try import
import WorkFeature.WF_2015 as WF
except:
- # get the path of the current python script
- m_current_path = os.path.realpath(__file__)
- m_current_path = os.path.dirname(m_current_path)
- # check if this path belongs to the PYTHONPATH variable and if not add it
- if not sys.path.__contains__(str(m_current_path)):
- sys.path.append(str(m_current_path))
- # retry import now
- import WorkFeature.WF_2015 as WF
-
+ try:
+ import FreeCAD
+ # first check if the path to WorkFeature was set in the preferences
+ param = FreeCAD.ParamGet('User parameter:Plugins/workfeature')
+ m_current_path = param.GetString('destination','')
+ if not m_current_path:
+ # get the path of the current python script
+ m_current_path = os.path.realpath(__file__)
+ m_current_path = os.path.dirname(m_current_path)
+ # check if this path belongs to the PYTHONPATH variable and if not add it
+ if not sys.path.__contains__(str(m_current_path)):
+ sys.path.append(str(m_current_path))
+ # retry import now
+ try:
+ import WorkFeature.WF_2015 as WF
+ except:
+ # we still cannot find WorkFeature. Ask the user
+ from PySide import QtGui
+ folderDialog = QtGui.QFileDialog.getExistingDirectory(None,QtGui.QApplication.translate("WorkFeature", "Location of your WorkFeature folder", None, QtGui.QApplication.UnicodeUTF8))
+ param.SetString('destination',folderDialog)
+ m_current_path = param.GetString('destination')
+ sys.path.append(str(m_current_path))
+ # retry import
+ import WorkFeature.WF_2015 as WF
+ except:
+ print "ERROR:cannot load FreeCAD module...modify line 6 and 7 of this script !!"
+ sys.exit(1)
+
WF.myDialog = WF.WorkFeatureTab()