diff --git a/WorkFeature/Doc/WF_documentation.pdf b/WorkFeature/Doc/WF_documentation.pdf index 880f006..fe97626 100644 Binary files a/WorkFeature/Doc/WF_documentation.pdf and b/WorkFeature/Doc/WF_documentation.pdf differ diff --git a/WorkFeature/Doc/WF_releasesDocumentation.pdf b/WorkFeature/Doc/WF_releasesDocumentation.pdf index 7f67a41..16aeb7d 100644 Binary files a/WorkFeature/Doc/WF_releasesDocumentation.pdf and b/WorkFeature/Doc/WF_releasesDocumentation.pdf differ diff --git a/WorkFeature/Icons/WF_makePolygon.svg b/WorkFeature/Icons/WF_makePolygon.svg new file mode 100644 index 0000000..7f8eea6 --- /dev/null +++ b/WorkFeature/Icons/WF_makePolygon.svg @@ -0,0 +1,446 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_pointsRandom.svg b/WorkFeature/Icons/WF_pointsRandom.svg new file mode 100644 index 0000000..b9442cd --- /dev/null +++ b/WorkFeature/Icons/WF_pointsRandom.svg @@ -0,0 +1,1247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/ParCurve/Ressources/2DPoints.txt b/WorkFeature/ParCurve/Ressources/2DPoints.txt new file mode 100644 index 0000000..f16da3c --- /dev/null +++ b/WorkFeature/ParCurve/Ressources/2DPoints.txt @@ -0,0 +1,9 @@ +# ASCII : 2D points + +1.05 -1.50 0.000 + +0.55 +3.14 0.000 + +1.05 +2.60 0.000 + +2.70 +5.08 0.000 + +4.00 +4.50 0.000 + +5.00 +10.00 0.000 + +10.60 +5.00 0.000 + +19.90 +14.00 0.000 diff --git a/WorkFeature/ParCurve/Ressources/Parametric2D.dat b/WorkFeature/ParCurve/Ressources/Parametric2D.dat new file mode 100644 index 0000000..14c5338 --- /dev/null +++ b/WorkFeature/ParCurve/Ressources/Parametric2D.dat @@ -0,0 +1,25 @@ +Name, a (t), b (a,t), X (a,b,t), Y(a,b,t), Polar, tmin, tmax, tstep +['Circle', '10 # Radius', 'a', 'a*cos(t)', 'a*sin(t)', '0', '2*pi', '0.01', '0'] +['Ellipse', '10 # X Radius 1', '20 # Y Radius 2', 'a*cos(t)', 'b*sin(t)', '0', '2*pi', '0.01', '0'] +['Parabola', '10 # Parabola parameter >0', 'a', 't', 'sqrt(2*a*t)', '0.01', '10', '0.01', '0'] +['Hyperbola', '10 # Radius', 'a', 'a*1/cos(t)', 'b*tan(t)', '-pi+0.1', 'pi-0.1', '0.01', '0'] +['Double egg', '10 # Radius', '0', 'a*cos(t)*cos(t)', 't', '-pi', 'pi', '0.01', '1'] +['Catenary or funicular', '10', '0', 'a*log((1+sin(t))/(cos(t)))', 'a/cos(t)', '-pi/2 + 0.01', 'pi/2 - 0.01', '0.01', '0'] +['Sinusoid', '5 ', '1', 't', 'a*sin(t/b)', '0', '10', '0.01', '0'] +['Dipole part1', '5 ', '1', '-pow(a*a*cos(t),0.5)', 't', '-pi/2', 'pi/2', '0.01', '1'] +['Dipole part2', '5 ', '1', 'pow(a*a*cos(t),0.5)', 't', '-pi/2', 'pi/2', '0.01', '1'] +['Tear drop', '10', '2', 'a*cos(t)', 'a*sin(t)*pow(sin(t/2),b)', '0', '2*pi', '0.01', '0'] +['Kulp quartic', '10', '2*a', 'a*tan(t)', 'b*cos(t)', '-pi', 'pi', '0.01', '0'] +['Lemniscate of Bernoulli', '10', '1+pow(cos(t),2)', 'a*sin(t)/b', 'a*sin(t)*cos(t)/b', '-pi', 'pi', '0.01', '0'] +["Pascal's snail", '10', '2', 'a*(1+b*cos(t))', 't', '0', '2*pi', '0.01', '1'] +['Archimedian spiral', '2.5 # Radius', 'a', 'a*t', 't', '0', '5*2*pi # 5 circles', '0.01', '1'] +['Simple folium', '10 # Radius', '0', 'a*(cos(t)**3)', 't', '0', 'pi', '0.01', '1'] +['Regular bifolium', '2.5 # Radius', 'a', '4*a*sin(t)*(cos(t)**2)', 't', '0', 'pi', '0.01', '1'] +['Equilateral trefoil', '10 ', 'a', 'a*cos(3*t)', 't', '0', 'pi', '0.01', '1'] +['Circle with Teeth', '37 # Number of Teeth', '(a+cos(a*t)*2)*1 # 1 is diameter', 'b*cos(t)', 'b*sin(t)', '0.0', '2*pi', '0.01', '0'] +['Spiral', '0.5 ', '-0.75', 'a*t', 'b*t', '0', '10*2*pi', '0.01', '1'] +['transcendental butterfly curve ', '4', '24', 'exp(sin(t))-2*cos(a*t)+pow(sin((2*t-pi)/b),5)', 't', '-8*pi', '8*pi', '0.01', '1'] +['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/ParCurve/Ressources/Parametric3D.dat b/WorkFeature/ParCurve/Ressources/Parametric3D.dat new file mode 100644 index 0000000..e31ad7f --- /dev/null +++ b/WorkFeature/ParCurve/Ressources/Parametric3D.dat @@ -0,0 +1,28 @@ +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, tmax, tstep, Cartesian +['Cylindrical helix', '10 # Radius', '10*0.05 #Vert. step', '1 # +-1 direction of rotation ', 'a*cos(t)', 'c*a*sin(t)', 'b*t', '0.0', '5*2*pi #5 circles', '0.01', '0'] +['Conical helix', '25', '20', 'sin(a)*cos(b)/sin(b)', 'a*exp(c*t)*cos(t)', 'a*exp(c*t)*sin(t)', '-1*exp(c*t)*cos(a)/sin(a)', '0.0', '10*2*pi', '0.01', '0'] +['Skew circle helix', '10', '0', '0', '-a*cos(t)*( 1-(pow(cos(t),2)/3) )', '-a*sin(t) *( 1+(sin(2*t)/3) ) ', 'a*(t/2 +(pow(sin(t),2))/4)', '0.01', '10*pi', '0.01', '0'] +['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', '0'] +['Circle with Teeth', '37', '1', '(a+cos(a*t)*2)*b', 'c*cos(t)', 'c*sin(t)', '0', '0.0', '2*pi', '0.01', '0'] +['Seam of a tennis ball', '5', '5', '2*(sqrt(a*b))', 'a*(cos(t))+b*(cos(3*t))', 'a*(sin(t))-b*(sin(3*t))', 'c*(sin(2*t))', '0.0', '2*pi', '0.05*pi', '0'] +['Archytas curve part1', '10', '0', '0', 'a*(cos(t)*cos(t))', 'a*(cos(t)*sin(t))', 'a*(sqrt((1-cos(t))*cos(t)))', '-1*pi/2', '+1*pi/2', '0.005*pi', '0'] +['Archytas curve part2', '10', '0', '0', 'a*(cos(t)*cos(t))', 'a*(cos(t)*sin(t))', '-a*(sqrt((1-cos(t))*cos(t)))', '-1*pi/2', '+1*pi/2', '0.005*pi', '0'] +['Tangentoidal crown', '37', '1', '1 ', 'a*cos(t)', 'a*sin(t)', 'b*tan(c*t/2)', '0.0', '2*pi', '0.01', '0'] +['Clelia', '10', '0', '20', 'a*cos(c*t)*cos(t)', 'a*cos(c*t)*sin(t)', 'a*sin(c*t)', '0.0', '2*pi', '0.01', '0'] +['Cylindric sine wave', '25', '10', '5 #c>0', 'a*cos(t)', 'a*sin(t)', 'b*cos(c*t)', '0.0', '10*pi', '0.01', '0'] +['Egg with Teeth', '1', '1', '(a+cos(a*t)*2)*b', 'c*cos(t)*c', 'c*sin(t)', '0', '0.0', '2*pi', '0.01', '0'] +['Flower', '6.2', '3.1*t', '2', 'a*sin(t)-c*sin(b)', 'a*cos(t)-c*cos(b)', '0', '0.0', '10*2*pi', '0.1', '0'] +['Bicylindrical', '5 # Radius of Cyl 1', '5 # Radius of Cyl 2', '0 # Axis distance', 'a*cos(t)', 'sqrt(b*b-pow(2*c+a*sin(t),2))', 'c+a*sin(t)', '0', '2*pi', '0.01', '0'] +['Bicylindrical eight curved', '5 # Radius of Cyl 1', '10 # Radius of Cyl 2', '2.5 # Axis distance', 'a*cos(t)', '-sqrt(b*b-pow(2*c+a*sin(t),2))', 'c+a*sin(t)', '-pi', 'pi', '0.01', '0'] +['Bicylindrical C small', '5 # Radius of Cyl 1', '5 # Radius of Cyl 2', '1.5 # Axis distance', 'a*cos(t)', '-sqrt(abs(b*b-pow(2*c+a*sin(t),2)))', 'c+a*sin(t)', '-pi', 'pi', '0.01', '0'] +['Horopter', '20 # Radius', '10', 'tan(t/2)', '(2*a)/(1+c*c)', 'b*c', 'c*(2*a)/(1+c*c)', '-pi+0.01', 'pi-0.01', '0.01', '0'] +['3D Lissajous', '10 ', '10', '0', 'a*cos(3*t)', 'a*sin(2*t)', 'b*sin(7*t)', '0.0', '2*pi', '0.01', '0'] +['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', '0'] +['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', '0'] +['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', '0'] +['Cylindrical billiard knot 01', '10', '32', '0', 'cos(a*t)', 'sin(a*t)', 'sin(b*t)', '0.0', 'pi', '0.001', '0'] +['Cylindrical billiard knot 02', '10', '32', '0', 'cos(a*t)', 'sin(a*t)', 'asin(sin(b*t))', '0.0', 'pi', '0.001', '0'] +['Reciprocal spiral', '10', '32', '2 + asin(sin(b*t))', 'cos(a*t)/c', 'sin(a*t)/c', '1', '0.0', 'pi', '0.001', '0'] +['3 Borromean rings', '10', '5', '0', 'a*cos(t) + a/2 ## a/2, -a/2,0', 'a*sin(t) + (a*sqrt(3)/2) ##(a*sqrt(3)/2), (a*sqrt(3)/2), (a*sqrt(3)) ', 'b*cos(3*t)', '0.0', '2*pi', '0.1', '0'] +['Trefoil knot O1', '2', '1', '1 #-1 for senester', 'cos(t) + 2*cos(a*t)', 'sin(t) - 2*sin(a*t)', 'a*c*sin(3*t)', '0', '2*pi', '0.01', '0'] +['Trefoil knot O2', '2', '1', '1 #-1 for senester', '(4 + cos(3*t))*cos(a*t)', '(4 + cos(3*t))*sin(a*t)', 'c*sin(3*t)', '0', '2*pi', '0.01', '0'] \ No newline at end of file diff --git a/WorkFeature/ParCurve/Ressources/ParametricSurf.dat b/WorkFeature/ParCurve/Ressources/ParametricSurf.dat new file mode 100644 index 0000000..6b92c1d --- /dev/null +++ b/WorkFeature/ParCurve/Ressources/ParametricSurf.dat @@ -0,0 +1,28 @@ +Name, a , b (a),c (a,b), X (a,b,c,U,V), Y (a,b,c,U,V), Z (a,b,c,U,V), U min, U max, U step, V min, V max, V step, Comment +['Astroid', '4', '3', '2', 'a*pow(cos(v),3)*pow(cos(u),3)','b*pow(cos(v),3)*pow(sin(u),3)','c*pow(sin(v),3)', '0.0', '2*pi', '0.01', '-2.0', '2.0', '0.01', ''] +['Spheroid', '5', '5', '5', 'a*cos(u)*sin(v)','b*sin(u)*sin(v)','c*cos(v)', '-0.01', '2*pi+0.01', '0.01', '-0.01', 'pi+0.01', '0.01', ''] +['Spheroid_2', '5', '8', '6', 'a*cos(u)*sin(v)','b*sin(u)*sin(v)','c*cos(v)*sin(v)', '-0.01', '2*pi+0.01', '0.01', '-0.01', 'pi+0.01', '0.01', ''] +['Spheroid_3', '5', '8', '6', 'a*cos(u)*sin(v)','b*sin(u)*sin(v)','c*cos(v)*cos(v)', '-0.01', '2*pi+0.01', '0.01', '-0.01', 'pi+0.01', '0.01', ''] +['Ellipsoid', '5', '3', '5', 'a*cos(v)*cos(u)', 'b*cos(v)*sin(u)', 'c*sin(v)', '-5.0', '5.0', '0.01', '-5.0', '5.0', '0.01', ''] +['Cone', '0.1', '5', '2', 'b*v*cos(u)*tan(a)', 'b*v*sin(u)*tan(a)', 'c*v', '-0.01', '2*pi+0.01', '0.01', '2', '10.0', '0.01', ''] +['Dini \'s surface-1', '10', '2', '1', 'a*cos(u)*sin(v)', 'a*sin(u)*sin(v)', 'a*(cos(v) + log10(tan(v/2)))+b*u', '-0.01', '2*pi+0.01', '0.01', '0.01', '1.0', '0.01', ''] +['Dini \'surface-2', '10', '2', '1', 'a*cos(u)*sin(v)', 'a*sin(u)*sin(v)', 'a*(cos(v) + log10(tan(v/2)))+b*u', '-0.01', '2*pi+0.01', '0.01', '0.01', 'pi', '0.01', ''] +['Egg box', '4', '4', '1', 'u', 'v', 'a*(sin(u)/b+sin(v)/b)', '-10.0', '10.0', '0.01', '-10.0', '10.0', '0.01', ''] +['Gaudi roof', '1', '1', '0.25', 'u', '2*v', 'c*u*sin(v/a)', '-10.0', '10.0', '0.1', '-10.0', '10.0', '0.1', ''] +['Hector Guimard Surface', '5', '1.5', '0.5', '((1-u)*a+u*b)*cos(v)', 'b*u*sin(v)', 'c*u*sin(v)*sin(v)', '0.0', '10.0', '0.1', '0.0', '10.0', '0.1', ''] +['Monkey saddle', '5', '5', '0.02', 'a*u', 'b*v', 'c*(pow(u,3)-3*u*v*v)', '-10.0', '10.0', '0.1', '-10.0', '10.0', '0.1', ''] +['Catenoid', '5', '5', '10', 'a*cosh(v)*cos(u)', 'b*cosh(v)*sin(u)', 'c*v', '-pi-0.01', 'pi+0.01', '0.01', '-pi', 'pi', '0.01', ''] +['Wave', '10', '10', '10', 'a*u', 'b*v', 'c*sin(u*u+v*v)', '-5', '5', '0.5', '-5', '5', '0.5', ''] +['Enneper Surface', '3', '3', '3', 'u*(1-pow(u,2)/3+pow(v,2))/a', '-v*(1-pow(v,2)/3+pow(u,2))/b', '(u*u-v*v)/c', '-5', '5', '0.01', '-5', '5', '0.01', ''] +['Cartan \'s umbrella', '10', '10', '10', 'a*u*cos(v)', 'b*u*sin(v)', 'c*u*pow(cos(v),3)', '-pi-0.01', 'pi+0.01', '0.01', '-2', '2', '0.01', ''] +['Sinusoidal cone', '10', '10', '2 #From 1 to 10', 'a*u*cos(v)', 'b*u*sin(v)', 'b*u*cos(c*v)', '-pi-0.01', 'pi+0.01', '0.01', '-pi-0.01', 'pi+0.01', '0.01', ''] +['Bohemian dome', '10', '10', '10', 'a*cos(u)', 'b*cos(v)', 'a*sin(u)+ b*sin(v)', '-pi-0.01', 'pi+0.01', '0.01', '-pi-0.01', 'pi+0.01', '0.01', ''] +['Torus', '10', '5', '5', '(a +b*cos(v))*cos(u)', '(a +b*cos(v))*sin(u)', 'c*sin(v)', '-pi-0.01', 'pi+0.01', '0.01', '-pi-0.01', 'pi+0.01', '0.01', ''] +['Sea-shell', '2', '.4926839011', '10', 'exp(u/c)*cos(u)*(1+b*cos(v)) ', 'exp(u/c)*sin(u)*(1+b*cos(v)) ', 'exp(u/c)*(1+b*sin(v))', '-30', '4', '0.01', '-pi-0.01', 'pi+0.01', '0.01', ''] +['One-surface Hyperboloid', '10', '10', '10', 'a*cos(u)*cosh(v)', 'b*sin(u)*cosh(v)', 'c*sinh(v)', '-pi-0.01', 'pi+0.01', '0.01', '-1', '1', '0.01', ''] +['Two-surface Hyperboloid', '10', '10', '10', 'a*cos(u)*sinh(v)', 'b*sin(u)*sinh(v)', 'c*cosh(v)', '-pi-0.01', 'pi+0.01', '0.01', '0', '1', '0.01', ''] +['Glass', '10', '10', '10', 'a*cos(u)*sin(v)*cos(v)', 'b*sin(u)*sin(v)*cos(v)', 'c*sinh(v)', '-pi-0.01', 'pi+0.01', '0.01', '-0.30', '1', '0.01', ''] +['Roman Surface', '10', '10', '10', 'a*a*cos(u)*sin(v)*cos(v)', 'b*a*sin(u)*sin(v)*cos(v)', 'c*c*cos(u)*sin(u)*cos(v)*cos(v)', '-pi-0.01', 'pi+0.01', '0.01', '-1', '1', '0.01', ''] +['Helix', '4', '3', '2', 'cos(u)/a+cos(v)', 'sin(u)/a+sin(v)', 'v', '0.0', '2*pi', '0.01', '0', '4*pi', '0.01', ''] +['Plane', '4', '3', '2', 'c+10*a*u+b*v', '2*c+a*u+5*b*v', '3*c+a*u+10*b*v', '-10', '10', '0.1', '-10', '10', '0.1', ''] +["Bouligand 's cushion", '4', '3', '2', 'a*sin(u)', 'b*sin(v)', 'c*cos(u)*cos(v)', '0.0', '2*pi+0.02', '0.01', '0', '2*pi+0.02', '0.01', ''] \ No newline at end of file diff --git a/WorkFeature/ParCurve/Ressources/__init__.py b/WorkFeature/ParCurve/Ressources/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/WorkFeature/Ui/WF_ObjParCurve2DEditGui_2015.ui b/WorkFeature/ParCurve/Ui/WF_ObjParCurve2DEditGui_2016.ui similarity index 100% rename from WorkFeature/Ui/WF_ObjParCurve2DEditGui_2015.ui rename to WorkFeature/ParCurve/Ui/WF_ObjParCurve2DEditGui_2016.ui diff --git a/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2015.ui b/WorkFeature/ParCurve/Ui/WF_ObjParCurve3DEditGui_2016.ui similarity index 98% rename from WorkFeature/Ui/WF_ObjParCurve3DEditGui_2015.ui rename to WorkFeature/ParCurve/Ui/WF_ObjParCurve3DEditGui_2016.ui index 707d536..3971c9e 100644 --- a/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2015.ui +++ b/WorkFeature/ParCurve/Ui/WF_ObjParCurve3DEditGui_2016.ui @@ -6,7 +6,7 @@ 0 0 - 1039 + 1247 460 @@ -127,6 +127,11 @@ t step + + + Cartesian + + Comments diff --git a/WorkFeature/ParCurve/Ui/WF_ObjSurfaceEditGui_2016.ui b/WorkFeature/ParCurve/Ui/WF_ObjSurfaceEditGui_2016.ui new file mode 100644 index 0000000..1f1907b --- /dev/null +++ b/WorkFeature/ParCurve/Ui/WF_ObjSurfaceEditGui_2016.ui @@ -0,0 +1,379 @@ + + + Form + + + + 0 + 0 + 1247 + 460 + + + + Form + + + + + + 3D Database + + + + + + + + Click to load common and customs curves. + + + Load + + + + + + + This will save customs curves only in your HOME directory under "Parametric3D.dat". + + + Save + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + 1 + + + + + 2 + + + + + 3 + + + + + Name + + + + + a + + + + + b (a) + + + + + c (a, b) + + + + + X (a,b,c,u,v) + + + + + Y (a,b,c,u,v) + + + + + Z (a,b,c,u,v) + + + + + u min + + + + + u max + + + + + u step + + + + + v min + + + + + v max + + + + + v step + + + + + comments + + + + + Astroid + + + + + 4 + + + + + 3 + + + + + 2 + + + + + a*pow(cos(v),3)*pow(cos(u),3) + + + + + b*pow(cos(v),3)*pow(sin(u),3) + + + + + c*pow(sin(v),3) + + + + + 0.0 + + + + + 2*pi + + + + + 0.01 + + + + + -2.0 + + + + + 2.0 + + + + + 0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Row + + + + + + + + Add a row into the table. + + + add + + + + + + + Remove a row from the table. + + + remove + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + false + + + + 0 + 0 + + + + 1 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Quit + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/WorkFeature/ParCurve/Ui/WF_ParCurveGui_2016.ui b/WorkFeature/ParCurve/Ui/WF_ParCurveGui_2016.ui new file mode 100644 index 0000000..1f515af --- /dev/null +++ b/WorkFeature/ParCurve/Ui/WF_ParCurveGui_2016.ui @@ -0,0 +1,3351 @@ + + + Form + + + + 0 + 0 + 400 + 803 + + + + + 0 + 0 + + + + Form + + + + + + 0 + + + + Curves and Surfaces + + + + + + true + + + + + 0 + 0 + 358 + 654 + + + + + + + + 0 + 0 + + + + 0 + + + + Regression 2D + + + + + + + 0 + 0 + + + + 0 + + + + Input Data + + + + + + <html><head/><body><p>Select point(s) used for 2D regression.</p><p>- Select as much as Points as needed ;</p><p>- Then click on this button.</p></body></html> + + + Select 2D Points + + + + + + + + 0 + 0 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + + + + + + + Estimation by + + + + + + + Least squares Polynomial Regression + + + + + + + + + + Degree + + + + + + + 1 + + + 2 + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Type of 2D Curve : + + + + + + Points + + + true + + + + + + + Polyline + + + true + + + true + + + + + + + true + + + Bezier + + + false + + + true + + + + + + + true + + + Bspline + + + false + + + true + + + + + + + + + + + Function + + + + + + true + + + + + 0 + 0 + 294 + 485 + + + + + + + + 0 + 0 + + + + + + + + + + + + + 70 + 16777215 + + + + Minimum value of the Abscissa to plot + + + Qt::LeftToRight + + + absc. min + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + + + + 32769 + + + + + + + + + + + + 70 + 16777215 + + + + Maximum value of the Abscissa to plot + + + Qt::LeftToRight + + + absc. max + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + + + + 32769 + + + + + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + step + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + + + + 32769 + + + + + + + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + Z cst. + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + The constant coordinate value of the 2D curve + + + 0.0 + + + 32769 + + + + + + + + + + + + + + + + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Click to visualize the curve. + + + Apply + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + Parametric 2D + + + + + + + 0 + 0 + + + + true + + + + + 0 + 0 + 303 + 652 + + + + + + + + + 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 + + + + + + + Circle + + + + + + + + + + + Select 2 axis + + + + + + + false + + + + XY + + + + + YX + + + + + XZ + + + + + ZX + + + + + YZ + + + + + ZY + + + + + + + + + + Type of 2D Curve : + + + + + + Points + + + true + + + + + + + Polyline + + + true + + + true + + + + + + + true + + + Bezier + + + false + + + true + + + + + + + true + + + Bspline + + + false + + + true + + + + + + + + + + + + true + + + Closed curve + + + + + + + false + + + Create Face + + + + + + + + + + + + 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 + + + + + + + + + 0 + + + + Equation + + + + + + + + + + + + + + + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + a (t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + <html><head/><body><p>The function 'range' from Python and 'np.arange' from numpy module can be used here:</p><p>range([start,] stop[, step])</p><p> start : Starting number of the sequence. <span style=" vertical-align:top;">The interval includes this value. The default value is 0</span></p><p> stop : Generate numbers up to, but not including this number.</p><p> step : Difference between each number in the sequence. <span style=" vertical-align:top;">The default value is 1.</span></p><p><br/></p><p>np.arange([start,] stop[, step,]dtype=None)</p><p>Return evenly spaced values within a given interval.</p><p> start : Starting number of the sequence. <span style=" vertical-align:top;">The interval includes this value. The default value is 0</span></p><p> stop : <span style=" vertical-align:top;">End of interval. The interval does not include this value, except in some cases where </span><span style=" font-style:italic; vertical-align:top;">step</span><span style=" vertical-align:top;"> is not an integer and floating point round-off affects the length of </span><span style=" font-style:italic; vertical-align:top;">out</span><span style=" vertical-align:top;">.</span></p><p> step : Difference between each number in the sequence. <span style=" vertical-align:top;">For any output </span><span style=" font-style:italic; vertical-align:top;">out</span><span style=" vertical-align:top;">, this is the distance between two adjacent values. The default value is 1.</span></p><p><span style=" vertical-align:top;">If </span><span style=" font-style:italic; vertical-align:top;">step</span><span style=" vertical-align:top;"> is specified, </span><span style=" font-style:italic; vertical-align:top;">start</span><span style=" vertical-align:top;"> must also be given.</span></p><p> dtype : The type of the output array. if dtype <span style=" vertical-align:top;">is not given, infer the data type from the other input arguments.</span><br/></p></body></html> + + + 10 # Radius + + + 32769 + + + + + + + + + + + + 70 + 16777215 + + + + b (a, t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + <html><head/><body><p>The function 'range' from Python and 'np.arange' from numpy module can be used here:</p><p>range([start,] stop[, step])</p><p>start : Starting number of the sequence. <span style=" vertical-align:top;">The interval includes this value. The default value is 0</span></p><p>stop : Generate numbers up to, but not including this number.</p><p>step : Difference between each number in the sequence. <span style=" vertical-align:top;">The default value is 1.</span></p><p><br/></p><p>np.arange([start,] stop[, step,]dtype=None)</p><p>Return evenly spaced values within a given interval.</p><p>start : Starting number of the sequence. <span style=" vertical-align:top;">The interval includes this value. The default value is 0</span></p><p>stop : <span style=" vertical-align:top;">End of interval. The interval does not include this value, except in some cases where </span><span style=" font-style:italic; vertical-align:top;">step</span><span style=" vertical-align:top;"> is not an integer and floating point round-off affects the length of </span><span style=" font-style:italic; vertical-align:top;">out</span><span style=" vertical-align:top;">.</span></p><p>step : Difference between each number in the sequence. <span style=" vertical-align:top;">For any output </span><span style=" font-style:italic; vertical-align:top;">out</span><span style=" vertical-align:top;">, this is the distance between two adjacent values. The default value is 1.</span></p><p><span style=" vertical-align:top;">If </span><span style=" font-style:italic; vertical-align:top;">step</span><span style=" vertical-align:top;"> is specified, </span><span style=" font-style:italic; vertical-align:top;">start</span><span style=" vertical-align:top;"> must also be given.</span></p><p>dtype : The type of the output array. if dtype <span style=" vertical-align:top;">is not given, infer the data type from the other input arguments.</span></p></body></html> + + + a + + + 32769 + + + + + + + + + + + + + Toggle for Polar coordinates: +then FIRST input field is interpreted as radius + and SECOND input field is interpreted as angle phi + +Polar coordinates (r, phi) as commonly used in physics: + If P(x, y) is the considered point in 3D space; + Radial distance r ( > 0.0 ), is the Euclidean distance from + the origin O (0, 0) to P(x, y).The symbol rho is often used instead of r. + The azimuthal angle phi (or azimuth) is the signed angle measured from the + azimuth reference direction to the segment OP on the reference plane XY ( 0 <= phi <= pi radians (0 deg and 180 deg)). + + + Polar coord. + + + true + + + + + + + + + + + + 70 + 16777215 + + + + X (a,b,t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + The function from Python math module can be used here: +safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', + 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', + 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', + 'tanh'] + + + a*cos(t) + + + 32769 + + + + + + + + + + + + + + 70 + 16777215 + + + + Y (a,b,t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + The function from Python math module can be used here: +safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', + 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', + 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', + 'tanh'] + + + b*sin(t) + + + 32769 + + + + + + + + + + + + + Variables + + + + + + + + + + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + t min + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + Minimun value of the t parameter + + + 0 + + + 32769 + + + + + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + t max + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + Maximun value of the t parameter + + + 2*pi + + + 32769 + + + + + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + step + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + Step between two consecutive values of the t parameter + + + 0.01 + + + 32769 + + + + + + + + + + + Qt::Horizontal + + + + 131 + 20 + + + + + + + + Qt::Vertical + + + + 17 + 125 + + + + + + + + + + + + + + + + + + + + Parametric 3D + + + + + + true + + + + + 0 + 0 + 316 + 579 + + + + + + + + + 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 + + + + + + + + + Type of 3D Curve : + + + + + + Points + + + true + + + + + + + Polyline + + + true + + + true + + + + + + + Bspline + + + false + + + true + + + + + + + true + + + Bezier + + + false + + + true + + + + + + + + + + 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 + + + + + + + + + 0 + + + + Equation + + + + + + true + + + + + 0 + 0 + 305 + 383 + + + + + + + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + a (t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + <html><head/><body><p>The function 'range' from Python and 'np.arange' from numpy module can be used here:</p><p>range([start,] stop[, step])</p><p>start : Starting number of the sequence. <span style=" vertical-align:top;">The interval includes this value. The default value is 0</span></p><p>stop : Generate numbers up to, but not including this number.</p><p>step : Difference between each number in the sequence. <span style=" vertical-align:top;">The default value is 1.</span></p><p><br/></p><p>np.arange([start,] stop[, step,]dtype=None)</p><p>Return evenly spaced values within a given interval.</p><p>start : Starting number of the sequence. <span style=" vertical-align:top;">The interval includes this value. The default value is 0</span></p><p>stop : <span style=" vertical-align:top;">End of interval. The interval does not include this value, except in some cases where </span><span style=" font-style:italic; vertical-align:top;">step</span><span style=" vertical-align:top;"> is not an integer and floating point round-off affects the length of </span><span style=" font-style:italic; vertical-align:top;">out</span><span style=" vertical-align:top;">.</span></p><p>step : Difference between each number in the sequence. <span style=" vertical-align:top;">For any output </span><span style=" font-style:italic; vertical-align:top;">out</span><span style=" vertical-align:top;">, this is the distance between two adjacent values. The default value is 1.</span></p><p><span style=" vertical-align:top;">If </span><span style=" font-style:italic; vertical-align:top;">step</span><span style=" vertical-align:top;"> is specified, </span><span style=" font-style:italic; vertical-align:top;">start</span><span style=" vertical-align:top;"> must also be given.</span></p><p>dtype : The type of the output array. if dtype <span style=" vertical-align:top;">is not given, infer the data type from the other input arguments.</span></p></body></html> + + + 10*0.05 #Vert. step + + + 32769 + + + + + + + + + + + + 70 + 16777215 + + + + b (a, t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + <html><head/><body><p>The function 'range' from Python and 'np.arange' from numpy module can be used here:</p><p>range([start,] stop[, step])</p><p>start : Starting number of the sequence. <span style=" vertical-align:top;">The interval includes this value. The default value is 0</span></p><p>stop : Generate numbers up to, but not including this number.</p><p>step : Difference between each number in the sequence. <span style=" vertical-align:top;">The default value is 1.</span></p><p><br/></p><p>np.arange([start,] stop[, step,]dtype=None)</p><p>Return evenly spaced values within a given interval.</p><p>start : Starting number of the sequence. <span style=" vertical-align:top;">The interval includes this value. The default value is 0</span></p><p>stop : <span style=" vertical-align:top;">End of interval. The interval does not include this value, except in some cases where </span><span style=" font-style:italic; vertical-align:top;">step</span><span style=" vertical-align:top;"> is not an integer and floating point round-off affects the length of </span><span style=" font-style:italic; vertical-align:top;">out</span><span style=" vertical-align:top;">.</span></p><p>step : Difference between each number in the sequence. <span style=" vertical-align:top;">For any output </span><span style=" font-style:italic; vertical-align:top;">out</span><span style=" vertical-align:top;">, this is the distance between two adjacent values. The default value is 1.</span></p><p><span style=" vertical-align:top;">If </span><span style=" font-style:italic; vertical-align:top;">step</span><span style=" vertical-align:top;"> is specified, </span><span style=" font-style:italic; vertical-align:top;">start</span><span style=" vertical-align:top;"> must also be given.</span></p><p>dtype : The type of the output array. if dtype <span style=" vertical-align:top;">is not given, infer the data type from the other input arguments.</span></p></body></html> + + + 1 + + + 32769 + + + + + + + + + + + + 70 + 16777215 + + + + c (a, b, t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + <html><head/><body><p>The function 'range' from Python and 'np.arange' from numpy module can be used here:</p><p>range([start,] stop[, step])</p><p>start : Starting number of the sequence. <span style=" vertical-align:top;">The interval includes this value. The default value is 0</span></p><p>stop : Generate numbers up to, but not including this number.</p><p>step : Difference between each number in the sequence. <span style=" vertical-align:top;">The default value is 1.</span></p><p><br/></p><p>np.arange([start,] stop[, step,]dtype=None)</p><p>Return evenly spaced values within a given interval.</p><p>start : Starting number of the sequence. <span style=" vertical-align:top;">The interval includes this value. The default value is 0</span></p><p>stop : <span style=" vertical-align:top;">End of interval. The interval does not include this value, except in some cases where </span><span style=" font-style:italic; vertical-align:top;">step</span><span style=" vertical-align:top;"> is not an integer and floating point round-off affects the length of </span><span style=" font-style:italic; vertical-align:top;">out</span><span style=" vertical-align:top;">.</span></p><p>step : Difference between each number in the sequence. <span style=" vertical-align:top;">For any output </span><span style=" font-style:italic; vertical-align:top;">out</span><span style=" vertical-align:top;">, this is the distance between two adjacent values. The default value is 1.</span></p><p><span style=" vertical-align:top;">If </span><span style=" font-style:italic; vertical-align:top;">step</span><span style=" vertical-align:top;"> is specified, </span><span style=" font-style:italic; vertical-align:top;">start</span><span style=" vertical-align:top;"> must also be given.</span></p><p>dtype : The type of the output array. if dtype <span style=" vertical-align:top;">is not given, infer the data type from the other input arguments.</span></p></body></html> + + + 10 # Radius + + + 32769 + + + + + + + + + + + + + + + Toggle for Cylindrical coordinates: + + + Cylindrical coord. + + + false + + + + + + + Toggle for Sperical coordinates: + + + Spherical coord. + + + false + + + + + + + + + + + + + + 100 + 16777215 + + + + X (a,b,c,t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 16777215 + 16777215 + + + + The function from Python math module can be used here: +safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', + 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', + 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', + 'tanh'] + + + c*sin(t) + + + 32769 + + + + + + + + + + + + + + 100 + 16777215 + + + + Y (a,b,c,t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 16777215 + 16777215 + + + + The function from Python math module can be used here: +safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', + 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', + 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', + 'tanh'] + + + c*cos(t) + + + 32769 + + + + + + + + + + + + + + 100 + 16777215 + + + + Z (a,b,c,t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 16777215 + 16777215 + + + + The function from Python math module can be used here: +safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', + 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', + 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', + 'tanh'] + + + a*t + + + 32769 + + + + + + + + + + + + + + Variables + + + + + + + + + 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 + + + + 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 + + + + + + + + + Qt::Horizontal + + + + 29 + 20 + + + + + + + + Qt::Vertical + + + + 20 + 162 + + + + + + + + + + + + + + + + + Surface + + + + + + true + + + + + 0 + 0 + 316 + 579 + + + + + + + + + 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 + + + + + + + Astroid + + + + + + + + + 0 + + + + Equation + + + + + + true + + + + + 0 + 0 + 261 + 343 + + + + + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + a + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 4 + + + 32769 + + + + + + + + + + + + 70 + 16777215 + + + + b (a) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 3 + + + 32769 + + + + + + + + + + + + 70 + 16777215 + + + + c (a, b) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 2 + + + 32769 + + + + + + + + + + + + + + + + 80 + 16777215 + + + + X (a,b,c,u,v) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + <html><head/><body><p>The function from Python math module can be used here:</p><p>safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh',</p><p> 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp',</p><p> 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan',</p><p> 'tanh']</p></body></html> + + + a*pow(cos(v),3)*pow(cos(u),3) + + + 32769 + + + + + + + + + + 80 + 16777215 + + + + Y (a,b,c,u,v) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + <html><head/><body><p>The function from Python math module can be used here:</p><p>safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh',</p><p> 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp',</p><p> 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan',</p><p> 'tanh']</p></body></html> + + + b*pow(cos(v),3)*pow(sin(u),3) + + + 32769 + + + + + + + + + + 80 + 16777215 + + + + Z (a,b,c,u,v) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + <html><head/><body><p>The function from Python math module can be used here:</p><p>safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh',</p><p> 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp',</p><p> 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan',</p><p> 'tanh']</p></body></html> + + + c*pow(sin(v),3) + + + 32769 + + + + + + + + + + + + + + Variables + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + u min + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 0.0 + + + 32769 + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + u max + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 2*pi + + + 32769 + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + u step + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 0.01 + + + 32769 + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + v min + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + -2 + + + 32769 + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + v max + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 2 + + + 32769 + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + v step + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 0.01 + + + 32769 + + + + + + + + + + + Type of Surface + + + + + + + + Points + + + false + + + true + + + + + + + Polyline + + + false + + + true + + + + + + + Bspline + + + false + + + true + + + + + + + Surf Bspline (Nurbs) + + + true + + + true + + + + + + + false + + + Meshes + + + 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 + + + + + + + + + + + + + + + + + + + + + + Origin + + + + + + + + <html><head/><body><p>Select point(s) to define reference locations for parametric curves and surfaces.</p><p>- Select as much as Points as needed ;</p><p>- Then click on this button.<br/></p></body></html> + + + Select Point(s) + + + + + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + X cst. + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + <html><head/><body><p>Reference point (X value) where to attach the 2D curve.</p></body></html> + + + 0.0 + + + 32769 + + + + + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + Y cst. + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + <html><head/><body><p>Reference point (Y value) where to attach the 2D curve.</p></body></html> + + + 0.0 + + + 32769 + + + + + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + Z cst. + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + <html><head/><body><p>Reference point (Z value) where to attach the 2D curve.</p></body></html> + + + 0.0 + + + 32769 + + + + + + + + + + + + + Qt::Horizontal + + + + 208 + 20 + + + + + + + + Qt::Vertical + + + + 20 + 156 + + + + + + + + <html><head/><body><p>Examples </p><p>from http://www.mathcurve.com/ </p><p>and </p><p>https://en.wikipedia.org/wiki/List_of_curves</p></body></html> + + + Examples from http://www.mathcurve.com/ and https://en.wikipedia.org/wiki/List_of_curves + + + true + + + + + lineEdit + verticalSpacer_5 + + horizontalSpacer_16 + + + + + + + 24 + + + + + + + + + Close + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 2016 + + + + + + + + + + diff --git a/WorkFeature/ParCurve/Ui/__init__.py b/WorkFeature/ParCurve/Ui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/WorkFeature/ParCurve/Ui/sh_ui2pySide b/WorkFeature/ParCurve/Ui/sh_ui2pySide new file mode 100644 index 0000000..ddf9c5f --- /dev/null +++ b/WorkFeature/ParCurve/Ui/sh_ui2pySide @@ -0,0 +1,10 @@ +#!/bin/sh + +m_ui_file=$1 +m_ui_base=`basename ${m_ui_file} .ui` +pyuic4 ${m_ui_base}.ui > ${m_ui_base}.py +cat ${m_ui_base}.py | sed 's#Icons/#icons:#g ' | sed 's#PyQt4#PySide#g ' | sed 's#QtCore.QString.fromUtf8(#_fromUtf8(#g ' | sed 's#../icons:#icons:#g '>tmp.py +mv tmp.py ${m_ui_base}.py +#cp ${m_ui_base}.py ../${m_ui_base}.py + + diff --git a/WorkFeature/ParCurve/WF_ObjParCurveEdit_2016.py b/WorkFeature/ParCurve/WF_ObjParCurveEdit_2016.py new file mode 100644 index 0000000..9b2cb86 --- /dev/null +++ b/WorkFeature/ParCurve/WF_ObjParCurveEdit_2016.py @@ -0,0 +1,405 @@ +# -*- coding: utf-8 -*- +""" +Created on Sat May 30 18:53:08 2015 + +@author: laurent +""" +import sys +import os.path +sys.path.append(os.path.dirname(__file__)) +#from ParCurve2DEditGui_2015 import Ui_Form +import Ui.WF_ObjParCurve2DEditGui_2016 as EDIT_2D +import Ui.WF_ObjParCurve3DEditGui_2016 as EDIT_3D +import Ui.WF_ObjSurfaceEditGui_2016 as EDIT_SURF +from Utils.Text import read_text_into_list, write_text, append_text + +from PySide import QtCore, QtGui +import FreeCAD as App + +global myDatabase2DName +myDatabase2DName = "Parametric2D.dat" +global myDatabase3DName +myDatabase3DName = "Parametric3D.dat" +global myDatabaseSurfName +myDatabaseSurfName = "ParametricSurf.dat" +#################################################################################### +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + _fromUtf8 = lambda s: s + + +index = ['Name', 'a' , 'b' , 'c' , 'X' , 'Y', 'Z', 'tmin', 'tmax', 'tstep'] +d1 = ["default",37, 1, '(a+cos(a*t)*2)*b', 'cos(t)*c', 'sin(t)*c', 0, 0., '2*pi', 0.01] +d2 = ["spiral", 5, 0, 10, 'c*sin(t)', 'c*cos(t)', 'a*0.05*t', .0, '20*pi', '0.05*pi'] +d3 = ["Seam of a tennis ball", '5', '5', '2*(sqrt(a*b))', 'a*(cos(t))+b*(cos(3*t))', + 'a*(sin(t))-b*(sin(3*t))', 'c*(sin(2*t))', 0., '2*pi', '0.05*pi'] + + +class Model(QtCore.QAbstractTableModel): + def __init__(self,tableWidget): + super(Model, self).__init__() + self.table = [] + #print "Initialize table " + str(self.table) + for i_row in range(tableWidget.rowCount()): + m_line = [] + for i_column in range(tableWidget.columnCount()): + #print str(i_column) + m_item = tableWidget.item(i_row, i_column) + if m_item is None: + break + else: + #print str(tableWidget.item(i_row, i_column).text()) + m_line.append(str(tableWidget.item(i_row, i_column).text())) + + if len(m_line) != 0: + self.table.append(m_line) + #print str(self.table) + self.columnNumber = 0 + self.rowNumber = 0 + self.rowNumber = len(self.table) + if self.rowNumber != 0: + self.columnNumber = len(self.table[0]) + + + #print "self.rowNumber=" + str(self.rowNumber) + #print "self.columnNumber=" + str(self.columnNumber) + + def rowCount(self, index=QtCore.QModelIndex()): + return self.rowNumber + def columnCount(self, index=QtCore.QModelIndex()): + return self.columnNumber + def flags(self, index): + return QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable + + def data(self, index, role): + if role == QtCore.Qt.DisplayRole: + return self.table[index.row()][index.column()] + def setData(self, index, role, value): + if role == QtCore.Qt.DisplayRole: + self.table[index.row()][index.column()] = value + + +class tableWidget(): + def __init__(self, database): + """ + parameter database : the name of database file without path. + """ + # Flag for common database + self.database_exists = False + self.database_name = None + self.curves_number = 0 + self.curves_loaded = False + # Flag for user database + self.database_user_exists = False + self.database_user_name = None + self.curves_user_number = 0 + self.curves_user_loaded = False + if database : + # Check if database file exists in current script directory + m_current = os.path.dirname(__file__) + m_dirs_to_look = [str(m_current), str(m_current) + "/Ressources",] + for m_dir in m_dirs_to_look: + self.database_path = m_dir + "/" + #print self.database_path + self.database_name = str(self.database_path) + str(database) + if os.path.exists(self.database_name): + self.database_exists = True + + # Check if database file exists in home directory + m_home = os.path.expanduser("~") + self.database_path = m_home + "/" + self.database_user_name = str(self.database_path) + str(database) + if os.path.exists(self.database_user_name): + self.database_user_exists = True + + self.header = None + + # This Object ill be created with the setupUi + #self.tableWidget = QtGui.QTableWidget(Form) + self.tableWidget = None +#=============================================================================== +# class tableWidget2D(EDIT_2D.Ui_Form, tableWidget): +# def __init__(self, database="Parametric2D.dat"): +# EDIT_2D.Ui_Form.__init__(self) +# tableWidget.__init__(self, database) +# self.header = "Name, a (t), b (a,t), X (a,b,t), Y(a,b,t), Polar, tmin, tmax, tstep" +# +# def setupUi(self, Form, combox): +# EDIT_2D.Ui_Form.setupUi(self,Form) +# tableWidget.setupUi(self, Form, combox) +#=============================================================================== + self.dialog = None + self.comboBox = None + self.connections_for_button_pressed = None + self.connections_for_combobox_changed = None + self.model = None + + def setupUi(self, Form, combox): + self.dialog = Form + self.comboBox = combox + self.updateModel() + + # Connect to functions + self.connections_for_button_pressed = { + "button_addRow" : "insertRowAfter", + "button_removeRow" : "removeSelectedRow", + "button_load" : "loadDatabase", + "button_save" : "saveDatabase", + "button_quit" : "widgetQuit", + } + self.connections_for_combobox_changed = { + "comboBox_select" : "selectCurve", + } + + for m_key, m_val in self.connections_for_button_pressed.items(): + #print_msg( "Connecting : " + str(getattr(self, str(m_key))) + " and " + str(getattr(self, str(m_val))) ) + QtCore.QObject.connect(getattr(self, str(m_key)), + QtCore.SIGNAL("pressed()"),getattr(self, str(m_val))) + + for m_key, m_val in self.connections_for_combobox_changed.items(): + #print_msg( "Connecting : " + str(getattr(self, str(m_key))) + " and " + str(getattr(self, str(m_val))) ) + QtCore.QObject.connect(getattr(self, str(m_key)), + QtCore.SIGNAL("currentIndexChanged(QString)"),getattr(self, str(m_val))) + self.curves_number = 0 + self.curves_user_number = 0 + if self.database_exists: + self.curves_number = self.loadDatabase(self.database_name) + print "Database : " + str(self.database_name) + print "Loaded from common database : " + str(self.curves_number) + " curves !" + if self.curves_number != 0: + self.curves_loaded = True + + if self.database_user_exists: + self.curves_user_number = self.loadDatabase(self.database_user_name) + print "Database : " + str(self.database_user_name) + print "Loaded from user database : " + str(self.curves_user_number) + " curves !" + if self.curves_user_number != 0: + self.curves_user_loaded = True + + + def updateModel(self): + self.model = Model(self.tableWidget) + self.comboBox.setModel(self.model) + self.comboBox.setModelColumn(0) + + + def insertRow(self,row): + self.tableWidget.insertRow(row) + + + def insertRowAfter(self): + self.insertRow(self.tableWidget.rowCount()) + + + def setRowCount(self,row): + self.tableWidget.setRowCount(row) + + + def removeSelectedRow(self): + m_index = self.tableWidget.currentRow() + self.removeRow(m_index) + + + def removeRow(self,row): + self.tableWidget.removeRow(row) + self.updateModel() + + + def removeLastRow(self): + self.removeRow(self.tableWidget.rowCount()-1) + + + def insertDataAfter(self, data, rowCount): + if isinstance(data,list) !=True: + print "Type of input data must be a 'list'" + return + m_rowNumber = len(data) + m_columnNumber = len(data[0]) + m_widget = self.tableWidget + for i in range(m_rowNumber): + self.insertRowAfter() + for j in range(m_columnNumber): + item = QtGui.QTableWidgetItem(str(data[i][j])) + m_widget.setItem(rowCount + i, j, item) + self.updateModel() + + + def insertData(self, data): + if isinstance(data,list) !=True: + print "Type of input data must be a 'list'" + return + #print str(data) + m_rowNumber = len(data) + m_columnNumber = len(data[0]) + m_widget = self.tableWidget + m_widget.setRowCount(m_rowNumber) + #m_widget.setColumnCount(columns) + #m_widget.setHorizontalHeaderLabels(['name', 'num','x','y','z']) + for i in range(m_rowNumber): + for j in range(m_columnNumber): + item = QtGui.QTableWidgetItem(str(data[i][j])) + m_widget.setItem(i, j, item) + self.updateModel() + + + def addCurveData(self,data): + m_curveList = self.selectAllCurves() + m_curveList.append(data) + self.insertData(m_curveList) + + + def loadDatabase(self, my_database_name): + m_line = 0 + try: + m_lines = read_text_into_list(my_database_name) + del m_lines[0] + m_data = [] + for m_line in m_lines: + d = eval(m_line) + #print str(d) + m_data.append(d) + + #print str(self.curves_number + self.curves_user_number) + if (self.curves_number + self.curves_user_number) == 0: + self.insertData(m_data) + else: + self.insertDataAfter(m_data,(self.curves_number + self.curves_user_number)) + + return len(m_data) + except: + message = "Unable to load the database file \n" + str(my_database_name) + message += "\nAt line \n" + str(m_line) + print message + App.Console.PrintError("\nERROR : " + message) + + + def saveDatabase(self, my_database_name = None): + if my_database_name in [None]: + my_database_name = self.database_user_name + + if (self.curves_number) != 0: + m_curves = self.selectAllCurvesFrom(self.curves_number) + else: + m_curves = self.selectAllCurves() + + #print str(m_curves) + write_text(filename=my_database_name, text=str(self.header)) + append_text(filename=my_database_name, text="") + for m_curve in m_curves: + append_text(filename=my_database_name, text=str(m_curve)) + + + def selectCurve(self, *argc): + #print str(*argc) + m_curveRow = self.tableWidget.row(self.tableWidget.findItems(str(*argc), QtCore.Qt.MatchExactly)[0]) + print str(m_curveRow) + m_line = [] + for i_column in range(self.tableWidget.columnCount()): + #print str(i_column) + m_item = self.tableWidget.item(m_curveRow, i_column) + if m_item is None: + break + else: + #print str(tableWidget.item(i_row, i_column).text()) + m_line.append(str(self.tableWidget.item(m_curveRow, i_column).text())) + #print str(m_line) + return m_line + + def selectAllCurvesFrom(self,row): + m_lineList = [] + m_total_rows = self.tableWidget.rowCount() + m_total_cols = self.tableWidget.columnCount() + for i_row in range(row, m_total_rows): + m_line = [] + for i_column in range(m_total_cols): + m_item = self.tableWidget.item(i_row, i_column) + if m_item is None: + break + else: + m_line.append(str(self.tableWidget.item(i_row, i_column).text())) + m_lineList.append(m_line) + #print str(m_lineList) + return m_lineList + + + def selectAllCurves(self): + m_lineList = [] + m_total_rows = self.tableWidget.rowCount() + m_total_cols = self.tableWidget.columnCount() + for i_row in range(m_total_rows): + m_line = [] + for i_column in range(m_total_cols): + m_item = self.tableWidget.item(i_row, i_column) + if m_item is None: + break + else: + m_line.append(str(self.tableWidget.item(i_row, i_column).text())) + m_lineList.append(m_line) + #print str(m_lineList) + return m_lineList + + def widgetQuit(self): + self.dialog.hide() + + +class tableWidget2D(EDIT_2D.Ui_Form, tableWidget): + def __init__(self, database="Parametric2D.dat"): + EDIT_2D.Ui_Form.__init__(self) + tableWidget.__init__(self, database) + self.header = "Name, a (t), b (a,t), X (a,b,t), Y(a,b,t), Polar, tmin, tmax, tstep" + + def setupUi(self, Form, combox): + EDIT_2D.Ui_Form.setupUi(self,Form) + tableWidget.setupUi(self, Form, combox) + + +class tableWidget3D(EDIT_3D.Ui_Form, tableWidget): + def __init__(self, database="Parametric3D.dat"): + EDIT_3D.Ui_Form.__init__(self) + tableWidget.__init__(self, database) + self.header = "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, tmax, tstep, Cartesian" + + def setupUi(self, Form, combox): + EDIT_3D.Ui_Form.setupUi(self,Form) + tableWidget.setupUi(self, Form, combox) + + +class tableWidgetSurf(EDIT_SURF.Ui_Form, tableWidget): + def __init__(self, database="ParametricSurf.dat"): + EDIT_SURF.Ui_Form.__init__(self) + tableWidget.__init__(self, database) + self.header = "Name, a , b (a),c (a,b), X (a,b,c,U,V), Y (a,b,c,U,V), Z (a,b,c,U,V), U min, U max, U step, V min, V max, V step, Comment" + + def setupUi(self, Form, combox): + EDIT_SURF.Ui_Form.setupUi(self,Form) + tableWidget.setupUi(self, Form, combox) + + +if __name__ == '__main__': + app = QtGui.QApplication(sys.argv) + #app = QtGui.qApp + #app.exec_() + myNewWidget = QtGui.QDockWidget() + myNewWidget = QtGui.QWidget() + #myNewWidget.ui = Ui_Form() + myNewWidget.ui = tableWidget() + myNewWidget.ui.setupUi(myNewWidget) + #myNewWidget.ui.insertRow(1) + #myNewWidget.ui.insertRow(3) + #myNewWidget.ui.removeRow(3) + myNewWidget.ui.insertRowAfter() + myNewWidget.ui.insertRowAfter() + myNewWidget.ui.insertRowAfter() + myNewWidget.ui.removeLastRow() + #myNewWidget.ui.setRowCount(20) + mydata = [] + mydata.append(d1) + mydata.append(d2) + mydata.append(d3) + myNewWidget.ui.insertData(mydata) + myNewWidget.show() + + #mw = app.activeWindow() + #mw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewWidget) + app.exec_() \ No newline at end of file diff --git a/WorkFeature/ParCurve/WF_ObjParCurve_2016.py b/WorkFeature/ParCurve/WF_ObjParCurve_2016.py new file mode 100644 index 0000000..ae1819b --- /dev/null +++ b/WorkFeature/ParCurve/WF_ObjParCurve_2016.py @@ -0,0 +1,2190 @@ +# -*- coding: utf-8 -*- +""" +To execute the MACRO in FreeCAD python console: + execfile("/home/laurent/Develop/Workspaces/Python/WF_test/WorkFeature/ParCurve/WF_ObjParCurve_2016.py") +""" +import sys +import os.path +from wx.lib.pubsub.utils.exchandling import ExcPublisher + +# get the path of the current python script +#m_current_path = os.path.realpath(__file__) +m_current_path = "/home/laurent/Develop/Workspaces/Python/WF_test/WorkFeature/ParCurve/" +# Change this by your own FreeCAD lib path to import FreeCAD +if not sys.path.__contains__(m_current_path): + sys.path.append(m_current_path) + +import WF_ObjParCurveEdit_2016 as ParCurveEdit +import Ui.WF_ParCurveGui_2016 as ParCurveGui + +from Utils.Gui import DefineAndConnectEvents +from Utils.Gui import print_msg + + +import FreeCAD +App=FreeCAD +#import FreeCAD.Gui +import FreeCADGui +#import FreeCADGui.Selection +#import FreeCADGui.getMainWindow +import Draft +import Part +#import Part.BSplineSurface +#import Part.OCCError +#import Part.makePolygon + +from PySide import QtCore, QtGui +#import QtCore.QString +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + _fromUtf8 = lambda s: s + +from math import * + +global myTabName +myTabName = "Parametric Curves" +global myObjName +myObjName = "ParametricCurves" +global myRelease +myRelease = "2016_11" +global f2 +def f2(fa,fb,fx,fy,t,i): + pass + +global f3 +def f3(fa,fb,fc,fx,fy,fz,t): + pass + +#Create a simple QMessageBox dialog for info messages. +def gui_infoDialog(msg): + """ Create a simple QMessageBox dialog for info messages. + """ + # The first argument indicates the icon used: + # one of QtGui.QMessageBox.{NoIcon,Information,Warning Critical,Question} + diag = QtGui.QMessageBox(QtGui.QMessageBox.Information,'Info :', msg) + diag.setWindowModality(QtCore.Qt.ApplicationModal) + diag.exec_() + +#Create a simple QMessageBox dialog for error messages. +def gui_errorDialog(msg): + """ Create a simple QMessageBox dialog for error messages. + """ + m_script = os.path.basename(os.path.realpath(__file__)) + # The first argument indicates the icon used: + # one of QtGui.QMessageBox.{NoIcon,Information,Warning Critical,Question} + diag = QtGui.QMessageBox(QtGui.QMessageBox.Warning,'Error in ' + + str(m_script), msg) + diag.setWindowModality(QtCore.Qt.ApplicationModal) + diag.exec_() + +#Print a message on console. +def print_msg(message): + """ Print a message on console. + """ + print message + FreeCAD.Console.PrintMessage( message + "\n") + +#Print a ERROR message on console. +def printError_msg(message): + """ Print a ERROR message on console. + """ + print message + FreeCAD.Console.PrintError("\nERROR : " + message) + try : + gui_errorDialog(message) + except: + FreeCAD.Console.PrintError("\nERROR : Not able to launch a QT dialog !" ) + raise(Exception(message)) + +def get_ActiveDocument(info=0): + """ Return the active document + """ + m_actDoc=FreeCAD.activeDocument() + if m_actDoc == None: + printError_msg("No Active document selected !") + return None + if info != 0: + message = "Active Document is : " + str(m_actDoc.Name) + print_msg(message) + return m_actDoc + +def get_SelectedObjects(info=0, printError=True): + """ Return selected objects as + Selection = (Number_of_Points, Number_of_Edges, Number_of_Planes, + Selected_Points, Selected_Edges, Selected_Planes) + """ + def storeShapeType(Object, Selected_Points, Selected_Edges, Selected_Planes): + if Object.ShapeType == "Vertex": + Selected_Points.append(Object) + return True + if Object.ShapeType == "Edge": + Selected_Edges.append(Object) + return True + if Object.ShapeType == "Face": + Selected_Planes.append(Object) + return True + return False + + m_actDoc=get_ActiveDocument(info=0) + + if m_actDoc.Name: + # Return a list of SelectionObjects for a given document name. + # "getSelectionEx" Used for selecting subobjects + m_selEx = FreeCADGui.Selection.getSelectionEx(m_actDoc.Name) + + m_num = len(m_selEx) + if info != 0: + print_msg("m_selEx : " + str(m_selEx)) + print_msg("m_num : " + str(m_num)) + + if m_num >= 1: + Selected_Points = [] + Selected_Edges = [] + Selected_Planes = [] + Selected_Objects = [] + for Sel_i_Object in m_selEx: + if info != 0: + print_msg("Processing : " + str(Sel_i_Object.ObjectName)) + + if Sel_i_Object.HasSubObjects: + for Object in Sel_i_Object.SubObjects: + if info != 0: + print_msg("SubObject : " + str(Object)) + if hasattr(Object, 'ShapeType'): + storeShapeType(Object, Selected_Points, Selected_Edges, Selected_Planes) + if hasattr(Object, 'Shape'): + Selected_Objects.append(Object) + else: + if info != 0: + print_msg("Object : " + str(Sel_i_Object)) + if hasattr(Sel_i_Object, 'Object'): + if hasattr(Sel_i_Object.Object, 'ShapeType'): + storeShapeType(Sel_i_Object.Object, Selected_Points, Selected_Edges, Selected_Planes) + if hasattr(Sel_i_Object.Object, 'Shape'): + if hasattr(Sel_i_Object.Object.Shape, 'ShapeType'): + if not storeShapeType(Sel_i_Object.Object.Shape, Selected_Points, Selected_Edges, Selected_Planes): + Selected_Objects.append(Sel_i_Object.Object) + + + Number_of_Points = len(Selected_Points) + Number_of_Edges = len(Selected_Edges) + Number_of_Planes = len(Selected_Planes) + Selection = (Number_of_Points, Number_of_Edges, Number_of_Planes, + Selected_Points, Selected_Edges, Selected_Planes, Selected_Objects) + if info != 0: + print_msg("Number_of_Points, Number_of_Edges, Number_of_Planes," + + "Selected_Points, Selected_Edges, Selected_Planes , Selected_Objects = " + str(Selection)) + return Selection + else: + if info != 0: + print_msg("No Object selected !") + if printError: + printError_msg("Select at least one object !") + return None + else: + printError_msg("No active document !") + return + +#################################################################################### +# Classes : Regression, Parametric + +class Regression(): + def __init__(self, gui): + """ A Regression object + """ + self.debug = 1 + self.degree = 2 + self.gui = gui + self.data = [] + self.x = [] + self.y = [] + + def updateOptions(self): + pass + + + def setDegree(self, value): + """ Respond to a change in Degree + """ + try: + self.degree = int(value) + if self.debug != 0: + print_msg("New degree is :" + str(self.degree)) + except ValueError: + print_msg("Degree must be valid !") + + +class Parametric(): + def __init__(self, gui): + """ A Parametric object + """ + self.debug = 1 + + self.close = False + self.face = False + + self.points = False + self.poly = True + self.bspline = False + self.bezier = False + self.nurbs = False + self.meshes = False + + self.polar = False + self.cylind = False + self.spheri = False + + self.dialog = None + self.combox = None + + self.gui = gui + self.msgBox = QtGui.QMessageBox() + self.pbar = None + + self.pbar = self.gui.progressBar + self.pbar.setValue(0) + + self.x_ref = self.gui.Par_x_ref + self.y_ref = self.gui.Par_y_ref + self.z_ref = self.gui.Par_z_ref + + self.ox, self.oy, self.oz = 0.0, 0.0, 0.0 + + try: + import numpy as np + except: + print_msg("Impossible to load Module numpy !") + return + + + def updateOptions(self): + pass + + def resetOrigin(self): + self.x_ref.setText("0.0") + self.y_ref.setText("0.0") + self.z_ref.setText("0.0") + + def getOrigin(self): + msg=self.debug + + error_msg = """Select at one points !""" + Selection = get_SelectedObjects(info=msg, printError=False) + + try: + SelectedObjects = Selection + Number_of_Points = SelectedObjects[0] + if msg != 0: + print_msg("Number_of_Points=" + str(Number_of_Points)) + if Number_of_Points == 1: + m_x = 0.0 + m_y = 0.0 + m_z = 0.0 + Point_List = SelectedObjects[3] + for Selected_Point in Point_List: + m_point = Selected_Point.Point + m_x = m_point.x + m_y = m_point.y + m_z = m_point.z + if Number_of_Points > 1: + m_x = "" + m_y = "" + m_z = "" + Point_List = SelectedObjects[3] + for Selected_Point in Point_List: + m_point = Selected_Point.Point + m_x += str(m_point.x) + ", " + m_y += str(m_point.y) + ", " + m_z += str(m_point.z) + ", " + self.x_ref.setText(str(m_x)) + self.y_ref.setText(str(m_y)) + self.z_ref.setText(str(m_z)) + except: + printError_msg(error_msg) + + + def ccloseState(self, flag): + if self.debug != 0: + print self.ccloseState.__name__ + self.close = flag + self.updateOptions() + + + def cfaceState(self, flag): + if self.debug != 0: + print self.cfaceState.__name__ + self.face = flag + self.updateOptions() + + + def cpointsState(self, flag): + if self.debug != 0: + print self.cpointsState.__name__ + self.points = flag + self.updateOptions() + + + def cpolyState(self, flag): + if self.debug != 0: + print self.cpolyState.__name__ + self.poly = flag + self.updateOptions() + + + def cbsplineState(self, flag): + if self.debug != 0: + print self.cbsplineState.__name__ + self.bspline = flag + self.updateOptions() + + + def cbezierState(self, flag): + if self.debug != 0: + print self.cbezierState.__name__ + self.bezier = flag + self.updateOptions() + + + def cnurbsState(self, flag): + if self.debug != 0: + print self.cnurbsState.__name__ + self.nurbs = flag + self.updateOptions() + + + def cmeshesState (self, flag): + if self.debug != 0: + print self.cmeshesState.__name__ + self.meshes = flag + self.updateOptions() + + + def cpolarState(self, flag): + if self.debug != 0: + print self.cpolarState.__name__ + self.polar = flag + self.updateOptions() + + + def ccylindState(self, flag): + if self.debug != 0: + print self.ccylindState.__name__ + self.cylind = flag + self.updateOptions() + + + def csphericState(self, flag): + if self.debug != 0: + print self.csphericState.__name__ + self.spheri = flag + self.updateOptions() + + + def plot_matriz_old(self, matriz): + """ Plot the dataset with different options. + """ + if self.debug != 0: + print self.plot_matriz.__name__ + + if self.points == True: + for point in matriz: + Draft.makePoint(point) + else: + curva = Part.makePolygon(matriz) + if self.bspline == True: + Draft.makeBSpline(curva,closed=self.close,face=False) + #Draft.makeBSpline(Draft.makeWire(curva,closed=self.close,face=False),closed=self.close,face=False) + if self.bezier == True: + Draft.makeBezCurve(curva,closed=self.close,face=False) + if self.poly == True: + Draft.makeWire(curva,closed=self.close,face=False) + if self.close == True and self.face == True: + Draft.upgrade(FreeCADGui.Selection.getSelection(),delete=True) + FreeCAD.ActiveDocument.recompute() + + + def plot_matriz(self, matriz, text="matriz"): + """ Plot the dataset with different options. + """ + if self.debug != 0: + print self.plot_matriz.__name__ + + doc = FreeCAD.ActiveDocument + if doc == None: + doc = FreeCAD.newDocument() + + if len(matriz) == 0 : + self.msgBox.setText("Error : No point to show !") + self.msgBox.exec_() + return + if len(matriz) == 1 : + for point in matriz: + a = Draft.makePoint(point) + FreeCAD.ActiveDocument.ActiveObject.Label = str(a.Name)+"_Point_"+str(text) + + else: + if self.points == True: + #self.onShowQuestion(self.gui) + i = 0 + self.pbar.setValue(i) + number =len (matriz) + for point in matriz: + i += 1 + if not i % 20 : + step = int((i * 100)/number) + self.pbar.setValue(step) + #FreeCAD.ActiveDocument.recompute() + a = Draft.makePoint(point) + FreeCAD.ActiveDocument.ActiveObject.Label = str(a.Name)+"_Point_"+str(text) + else: + try : + curva = Part.makePolygon(matriz) + except Part.OCCError: + self.msgBox.setText("Error : Not able to make a polygon...check your parameters !") + self.msgBox.exec_() + return + if self.bspline == True: + a = Draft.makeBSpline(curva,closed=self.close,face=False) + FreeCAD.ActiveDocument.ActiveObject.Label = str(a.Name)+"_BSpline_"+str(text) + if self.bezier == True: + a = Draft.makeBezCurve(curva,closed=self.close,face=False) + FreeCAD.ActiveDocument.ActiveObject.Label = str(a.Name)+"_BezCurve_"+str(text) + if self.poly == True: + a = Draft.makeWire(curva,closed=self.close,face=False) + FreeCAD.ActiveDocument.ActiveObject.Label = str(a.Name)+"_Wire_"+str(text) +# if self.arcs == True: +# s=Part.BSplineCurve() +# s.interpolate(matriz, True) +# s.buildFromPoles(matriz) +# #Part.show(s.toShape()) +# arcs=s.toBiArcs(0.1) +# wire=Part.Wire([Part.Edge(i) for i in arcs]) +# Part.show(wire) + if self.close == True and self.face == True: + Draft.upgrade(FreeCADGui.Selection.getSelection(),delete=True) + FreeCAD.ActiveDocument.recompute() + + #FreeCADGui.ActiveDocument.ActiveView.fitAll() + + + def edit(self): + """ Launch the edit panel curve. + """ + if self.debug != 0: + print self.edit.__name__ + + self.dialog.show() +# self.dialog.exec_() + + def onShowQuestion(self, gui, question = "Do you really want to continue ?"): + """ Show the question message + """ + flags = QtGui.QMessageBox.StandardButton.Yes + flags |= QtGui.QMessageBox.StandardButton.No + response = QtGui.QMessageBox.question(gui, "Question", + question, + flags) + if response == QtGui.QMessageBox.Yes: + return True + else: + return False + + +########################################## +class RegressionCurve2D(Regression, Parametric): + """ A RegressionCurve2D object + """ + def __init__(self, gui): + # Parent1 + Regression.__init__(self, gui) + # Parent2 + Parametric.__init__(self, gui) + + self.input_textEdit = self.gui.Reg2DCurve_input_textEdit + #Reg2DCurve_button_select_points + self.function_textEdit = self.gui.Reg2DCurve_function_textEdit + self.degree_select = self.gui.Reg2DCurve_degree_select + + self.lmin = self.gui.Reg2DCurve_min + self.lmax = self.gui.Reg2DCurve_max + self.lstep = self.gui.Reg2DCurve_step + self.lz = self.gui.Reg2DCurve_z + + infinity = float("inf") + self.maxx = self.maxy = -1 * infinity + self.minx = self.miny = infinity + self.stepx = 0.1 + self.constz = 0.0 + + self.coef_poly = None + self.name = "RegressionCurve2D" + + def get_points(self): + msg=self.debug + + error_msg = """Select at least two points !""" + Selection = get_SelectedObjects(info=msg, printError=False) + + try: + SelectedObjects = Selection + Number_of_Points = SelectedObjects[0] + if msg != 0: + print_msg("Number_of_Points=" + str(Number_of_Points)) + if Number_of_Points > 1: + m_x = 0.0 + m_y = 0.0 + m_z = 0.0 + text = "" + Point_List = SelectedObjects[3] + for Selected_Point in Point_List: + m_point = Selected_Point.Point + m_x = m_point.x + m_y = m_point.y + m_z = m_point.z + text += str(m_x) + " " + str(m_y) + " " + str(m_z) + str('\n') + self.input_textEdit.setText(text) + except: + printError_msg(error_msg) + + def get_input_data(self): + """ Recover the data from the input Qtextedit and + feed the self.data and self.x and self.y arrays + """ + if self.debug != 0: + print str(self.input_textEdit.toPlainText()) + self.data = [] + self.x = [] + self.y = [] + self.data = self.input_textEdit.toPlainText().splitlines() + if self.data in [None]: + return + for item in self.data: + if self.debug != 0: + print "item = " + str(item) + values = item.split() + + try: + self.x.append(float(values[0].strip())) + self.y.append(float(values[1].strip())) + except ValueError: + print_msg("Value " + str(values[0].strip()) + " must be a valid Float!") + print_msg("Value " + str(values[1].strip()) + " must be a valid Float!") + continue + + if self.debug != 0: + print "X = " + str(self.x) + print "Y = " + str(self.y) + + + def poly_estimate(self): + """ Estimate a 2D polynom by Least squares polynomial fit. + """ + if len(self.x) != len(self.y): + print_msg("Length of the 2 arrays X and Y are not the same !") + return + + import numpy as np + + datasize = len(self.x) + xdata = np.array(self.x) + ydata = np.array(self.y) + + # Get min max limits + self.minx,self.maxx = min(self.x),max(self.x) + self.miny,self.maxy = min(self.y),max(self.y) + + # Adjust the max degree + max_degree = datasize -1 + if self.degree < 0 : + self.degree = 0 + if self.degree > max_degree : + self.degree = max_degree + # Need to update the Reg2DCurve_degree_select + self.degree_select.setValue(self.degree) + + # Least squares polynomial fit. + # Fit a polynomial p(x) = p[0] * x**deg + ... + p[deg] of degree deg to points (x, y). + # Returns a vector of coefficients p that minimises the squared error. + self.coef_poly = np.polyfit(xdata, ydata, self.degree) + + + def print_function(self): + + import numpy as np + + datasize = len(self.x) + xdata = np.array(self.x) + ydata = np.array(self.y) + + # Evaluate a polynomial at specific values. + ya = np.polyval(self.coef_poly, xdata) + yb = sum(ydata)/datasize + sr = sum([ (yi - yb)**2 for yi in ya]) + st = sum([ (yi - yb)**2 for yi in ydata]) + corr_coeff = sr / st + stderr = 0 + if(datasize > 2): + a = 0 + for i,x in enumerate(xdata): + a += (ya[i] - ydata[i])**2 + stderr = np.sqrt(a / (datasize-2)) + + text = "Degree %d, %d x,y pairs" % (self.degree,datasize) + text += "\nCorr. coeff. (r^2) = %+.16e" % corr_coeff + text += "\nStandard Error = %+.16e" % stderr + text += "\n\nf(x) = " + a = [] + for n,v in enumerate(self.coef_poly[::-1]): + s = "%+.16e" % v + a.append("%s * x^%02d" % (s,n)) + text += "\n ".join(a) + "\n" + self.function_textEdit.setText(text) + + + def draw(self): + if self.debug != 0: + print self.draw.__name__ + + import numpy as np + + self.get_input_data() + self.poly_estimate() + + matriz = [] + + try: + minx = float(eval(str(self.lmin.text()))) + except: + minx = self.minx + try: + maxx = float(eval(str(self.lmax.text()))) + except: + maxx = self.maxx + try: + step = float(eval(str(self.lstep.text()))) + except: + step = self.stepx + try: + z = float(eval(str(self.lz.text()))) + except: + z = self.constz + + for x in np.arange(minx, maxx, step): + y = np.polyval(self.coef_poly, x) + matriz.append(FreeCAD.Vector(x,y,z)) + + self.plot_matriz(matriz, self.name) + + self.print_function() + + +class ParametricCurve2D(Parametric): + """ A ParametricCurve2D object + """ + def __init__(self, gui): + Parametric.__init__(self, gui) + + self.name = self.gui.ParCurve_name_2 + self.la = self.gui.ParCurve_a_2 + self.lb = self.gui.ParCurve_b_2 + self.label_x = self.gui.label_x_2 + self.lx = self.gui.ParCurve_x_2 + self.label_y = self.gui.label_y_2 + self.ly = self.gui.ParCurve_y_2 + self.ltmin = self.gui.ParCurve_tmin_2 + self.ltmax = self.gui.ParCurve_tmax_2 + self.ltstep = self.gui.ParCurve_tstep_2 + #self.label_z = self.gui.label_z_5 + #self.lz = self.gui.ParCurve_z_2 + + self.lpolar = self.gui.checkBox_polar_2 + self.cb_points = self.gui.checkBox_points_2 + self.cb_polyline = self.gui.checkBox_polyline_2 + self.cb_bspline = self.gui.checkBox_bspline_2 + self.cb_bezier = self.gui.checkBox_bezier_2 + + self.cb_close = self.gui.checkBox_close_2 + self.cb_face = self.gui.checkBox_face_2 + + self.cb_face.setEnabled(False) + self.close = False + self.face = False + + self.combox = self.gui.ParCurve_comboBox_2 + + self.dialog = QtGui.QDialog() + self.dialog.resize(280,110) + self.dialog.setWindowTitle("2D Parametric Curve Editor") + self.dialog.ui = ParCurveEdit.tableWidget2D(database="Parametric2D.dat") + self.dialog.ui.setupUi(self.dialog, self.combox) + + + def updateOptions(self): + if self.lpolar.isChecked() : + self.label_x.setText("Rho (a,b,t)") + self.label_y.setText("Phi (a,b,t)") + else: + self.label_x.setText("X (a,b,t)") + self.label_y.setText("Y (a,b,t)") + + if self.points: + self.cb_close.setEnabled(False) + self.cb_face.setEnabled(False) + self.cb_close.setChecked(False) + self.cb_face.setChecked(False) + self.close = False + self.face = False + else: + self.cb_close.setEnabled(True) + if self.poly and self.close: + self.cb_face.setEnabled(True) + else: + self.cb_face.setEnabled(False) + self.cb_face.setChecked(False) + self.face = False + + + def select_curve(self, *argc): + """ Selection of Curve by combo box. + """ + if self.debug != 0: + print self.select_curve.__name__ + + m_line = self.dialog.ui.selectCurve(*argc) + if self.debug != 0: + print str(m_line) + self.name.setText(str(m_line[0])) + self.la.setText(str(m_line[1])) + self.lb.setText(str(m_line[2])) + self.lx.setText(str(m_line[3])) + self.ly.setText(str(m_line[4])) + #self.lz.setText("0.0") + self.resetOrigin() + self.ltmin.setText(str(m_line[5])) + self.ltmax.setText(str(m_line[6])) + self.ltstep.setText(str(m_line[7])) + m_polar = int(str(m_line[8])) + if self.debug != 0: + print str(m_polar) + print str(self.lpolar) + self.polar = False + if m_polar == 1: + print str(m_polar) + self.polar = True + if self.polar : + self.label_x.setText("Rho (a,b,t)") + self.label_y.setText("Phi (a,b,t)") + else: + self.label_x.setText("X (a,b,t)") + self.label_y.setText("Y (a,b,t)") + self.lpolar.setChecked(self.polar) + + + def draw(self): + if self.debug != 0: + print self.draw.__name__ + + #msgBox = QtGui.QMessageBox() + import numpy as np + fa = str(self.la.text()) + fb = str(self.lb.text()) + + t=0. + a=eval(fa) + b=eval(fb) + + if hasattr(a, '__iter__') and hasattr(b, '__iter__'): + for m_a in a: + for m_b in b: + if self.debug != 0: + print "a=" + str(m_a) + print "b=" + str(m_b) + self.draw_par_function(m_a, m_b) + elif hasattr(a, '__iter__') and not hasattr(b, '__iter__'): + for m_a in a: + if self.debug != 0: + print "a=" + str(m_a) + print "b=" + str(b) + self.draw_par_function(m_a, b) + elif not hasattr(a, '__iter__') and hasattr(b, '__iter__'): + for m_b in b: + if self.debug != 0: + print "a=" + str(a) + print "b=" + str(m_b) + self.draw_par_function(a, m_b) + else: + if self.debug != 0: + print "a=" + str(a) + print "b=" + str(b) + self.draw_par_function(a, b) + + + def draw_par_function(self,fa ,fb): + if self.debug != 0: + print self.draw_par_function.__name__ + + fx = str(self.lx.text()) + fy = str(self.ly.text()) + t = float(eval(str(self.ltmin.text()))) + tf = float(eval(str(self.ltmax.text()))) + intt = float(eval(str(self.ltstep.text()))) + #fz = float(eval(str(self.lz.text()))) + + ox = float(eval(str(self.x_ref.text()))) + oy = float(eval(str(self.y_ref.text()))) + oz = float(eval(str(self.z_ref.text()))) + + d = (tf + intt -t)/intt + dmax = int(d) + matriz = [] + + if self.debug != 0: + print "t=" + str(t) +" to " + str(tf) + " with step of " + str(intt) + print "d=" + str(d) + print "a=" + str(fa) + print "b=" + str(fb) + print "x=" + str(fx) + print "y=" + str(fy) + print "Ref Point :" + print "ox=" + str(ox) + print "oy=" + str(oy) + print "oz=" + str(oz) + + code = """ +def f2(fa,fb,fx,fy,t,i,msgBox): + value="" + #msgBox = QtGui.QMessageBox() + try: + value="a() = """+str(fa)+"""" + a="""+str(fa)+""" + value="b() = """+str(fb)+"""" + b="""+str(fb)+""" + value="X() = """+str(fx)+"""" + fxx="""+str(fx)+""" + value="Y() = """+str(fy)+"""" + fyy="""+str(fy)+""" + except ZeroDivisionError: + msgBox.setText("Error division by zero in calculus of "+value+" for (t) = "+str(t)+" at "+ str(i) +"!") + msgBox.exec_() + return + except: + msgBox.setText("Error in the formula of "+value+" for (t) = "+str(t)+" at "+ str(i) +"!") + msgBox.exec_() + return + + return fxx, fyy + """ + + if self.debug != 0: + print code + try : + exec code + except : + import traceback + var = traceback.format_exc() + self.msgBox.setText("Error in the code :\n"+ + str(var) + ) + self.msgBox.exec_() + return + + NbPoles = len(range(dmax)) + + x, y, z = 0.0, 0.0, 0.0 + + for i in range(dmax): + step = int((i * 100)/NbPoles) + self.pbar.setValue(step) + + fxx, fyy = f2(fa,fb,fx,fy,t,i,self.msgBox) + + if self.polar == True: + x, y, z = ox + (fxx*cos(fyy)), oy + (fxx*sin(fyy)), oz + #matriz.append(FreeCAD.Vector(fxx*cos(fyy),fxx*sin(fyy),fz)) + else: + x, y, z = ox + fxx, oy + fyy, oz + #matriz.append(FreeCAD.Vector(fxx,fxx,fz)) + + matriz.append(FreeCAD.Vector(x, y, z)) + t+=intt + + self.plot_matriz(matriz, self.name.text()) + + + def draw_old(self): + if self.debug != 0: + print self.draw_old.__name__ + + #msgBox = QtGui.QMessageBox() + + fa = str(self.la.text()) + fb = str(self.lb.text()) + fx = str(self.lx.text()) + fy = str(self.ly.text()) + t = float(eval(str(self.ltmin.text()))) + tf = float(eval(str(self.ltmax.text()))) + intt = float(eval(str(self.ltstep.text()))) + + d = (tf + intt -t)/intt + dmax = int(d) + matriz = [] + + if self.debug != 0: + print "t=" + str(t) +" to " + str(tf) + " with step of " + str(intt) + print "d=" + str(d) + print "a=" + str(fa) + print "b=" + str(fb) + print "x=" + str(fx) + print "y=" + str(fy) + + code = """ +def f2(fa,fb,fx,fy,t,i): + value="" + msgBox = QtGui.QMessageBox() + try: + value="a() = """+str(fa)+"""" + a="""+str(fa)+""" + value="b() = """+str(fb)+"""" + b="""+str(fb)+""" + value="X() = """+str(fx)+"""" + fxx="""+str(fx)+""" + value="Y() = """+str(fy)+"""" + fyy="""+str(fy)+""" + except ZeroDivisionError: + msgBox.setText("Error division by zero in calculus of "+value+" for (t) = "+str(t)+" at "+ str(i) +"!") + msgBox.exec_() + return + except: + msgBox.setText("Error in the formula of "+value+" for (t) = "+str(t)+" at "+ str(i) +"!") + msgBox.exec_() + return + + return fxx, fyy + """ + + if self.debug != 0: + print code + + exec code + + for i in range(dmax): + fxx, fyy = f2(fa,fb,fx,fy,t,i) + if self.polar == True: + matriz.append(FreeCAD.Vector(fxx*cos(fyy),fxx*sin(fyy),0.0)) + else: + matriz.append(FreeCAD.Vector(fxx,fyy,0.0)) + t+=intt + + self.plot_matriz(matriz, self.name.text()) + +#============================================================================== +# for i in range(int(d)): +# try: +# value="a" +# a=eval(fa) +# value="b" +# b=eval(fb) +# value="X" +# fxx=eval(fx) +# value="Y" +# fyy=eval(fy) +# #print fxx,fyy +# except ZeroDivisionError: +# msgBox.setText("Error division by zero in calculus of "+value+"() for t="+str(t)+" !") +# msgBox.exec_() +# except: +# msgBox.setText("Error in the formula of "+value+"() !") +# msgBox.exec_() +# +# if self.polar == True: +# matriz.append(FreeCAD.Vector(fxx*cos(fyy),fxx*sin(fyy),0.0)) +# else: +# matriz.append(FreeCAD.Vector(fxx,fyy,0.0)) +# t+=intt +#============================================================================== + + def store(self): + """ Store the parametric curve. + """ + if self.debug != 0: + print self.store.__name__ + m_line = [] + m_items = [self.name, self.la, self.lb,self.lx, self.ly, + self.ltmin, self.ltmax, self.ltstep,] + + for m_item in m_items: + m_val = "" + m_val = m_item.text() + m_line.append(str(m_val)) + if self.polar: + m_line.append("1") + else: + m_line.append("0") + # append comment + m_line.append("") + print str(m_line) + self.dialog.ui.addCurveData(m_line) + + +class ParametricCurve3D(Parametric): + """ A ParametricCurve3D object + """ + def __init__(self, gui): + Parametric.__init__(self, gui) + + self.name = self.gui.ParCurve_name_3 + self.la = self.gui.ParCurve_a_3 + self.lb = self.gui.ParCurve_b_3 + self.lc = self.gui.ParCurve_c_3 + self.label_x = self.gui.label_x_3 + self.lx = self.gui.ParCurve_x_3 + self.label_y = self.gui.label_y_3 + self.ly = self.gui.ParCurve_y_3 + self.label_z = self.gui.label_z_3 + self.lz = self.gui.ParCurve_z_3 + self.ltmin = self.gui.ParCurve_tmin_3 + self.ltmax = self.gui.ParCurve_tmax_3 + self.ltstep = self.gui.ParCurve_tstep_3 + + self.lcylind = self.gui.checkBox_cylind_3 + self.lspheri = self.gui.checkBox_spheric_3 + + self.combox = self.gui.ParCurve_comboBox_3 + + self.dialog = QtGui.QDialog() + self.dialog.resize(280,110) + self.dialog.setWindowTitle("3D Parametric Curve Editor") + self.dialog.ui = ParCurveEdit.tableWidget3D(database="Parametric3D.dat") + self.dialog.ui.setupUi(self.dialog, self.combox) + + + def updateOptions(self): + if self.cylind : + self.spheri = False + + self.label_x.setText("Rho (a,b,c,t)") + self.label_y.setText("Phi (a,b,c,t)") + self.label_z.setText("Z (a,b,c,t)") + elif self.spheri: + self.cylind = False + + self.label_x.setText("Rho (a,b,c,t)") + self.label_y.setText("Theta (a,b,c,t)") + self.label_z.setText("Phi (a,b,c,t)") + else: + self.cylind = False + self.spheri = False + self.label_x.setText("X (a,b,c,t)") + self.label_y.setText("Y (a,b,c,t)") + self.label_z.setText("Z (a,b,c,t)") + + self.lcylind.setChecked(self.cylind) + self.lspheri.setChecked(self.spheri) + + + def select_curve(self, *argc): + """ Selection of Curve by combo box. + """ + if self.debug != 0: + print self.select_curve.__name__ + + m_line = self.dialog.ui.selectCurve(*argc) + if self.debug != 0: + print str(m_line) + self.name.setText(str(m_line[0])) + self.la.setText(str(m_line[1])) + self.lb.setText(str(m_line[2])) + self.lc.setText(str(m_line[3])) + self.lx.setText(str(m_line[4])) + self.ly.setText(str(m_line[5])) + self.lz.setText(str(m_line[6])) + self.ltmin.setText(str(m_line[7])) + self.ltmax.setText(str(m_line[8])) + self.ltstep.setText(str(m_line[9])) + self.resetOrigin() + m_cartcylindspheric= int(str(m_line[10])) + + self.cylind = False + self.spheri = False + if m_cartcylindspheric == 1: + print str(m_cartcylindspheric) + self.cylind = True + self.spheri = False + if m_cartcylindspheric == 2: + print str(m_cartcylindspheric) + self.cylind = False + self.spheri = True + + if self.cylind : + self.label_x.setText("Rho (a,b,c,t)") + self.label_y.setText("Phi (a,b,c,t)") + self.label_z.setText("Z (a,b,c,t)") + else: + self.label_x.setText("X (a,b,c,t)") + self.label_y.setText("Y (a,b,c,t)") + self.label_z.setText("Z (a,b,c,t)") + + if self.spheri : + self.label_x.setText("Rho (a,b,c,t)") + self.label_y.setText("Theta (a,b,c,t)") + self.label_z.setText("Phi (a,b,c,t)") + else: + self.label_x.setText("X (a,b,c,t)") + self.label_y.setText("Y (a,b,c,t)") + self.label_z.setText("Z (a,b,c,t)") + + self.lcylind.setChecked(self.cylind) + self.lspheri.setChecked(self.spheri) + + + def draw(self): + if self.debug != 0: + print self.draw.__name__ + + #msgBox = QtGui.QMessageBox() + import numpy as np + t=0. + + fa = str(self.la.text()) + fb = str(self.lb.text()) + fc = str(self.lc.text()) + + a=eval(fa) + b=eval(fb) + c=eval(fc) + + def iterate(): + if hasattr(a, '__iter__') and hasattr(b, '__iter__') and hasattr(c, '__iter__'): + for m_a in a: + for m_b in b: + for m_c in c: + if self.debug != 0: + print "a=" + str(m_a) + print "b=" + str(m_b) + print "c=" + str(m_c) + self.draw_par_function(m_a, m_b, m_c) + elif hasattr(a, '__iter__') and hasattr(b, '__iter__') and not hasattr(c, '__iter__'): + for m_a in a: + for m_b in b: + if self.debug != 0: + print "a=" + str(m_a) + print "b=" + str(m_b) + print "c=" + str(c) + self.draw_par_function(m_a, m_b, c) + elif hasattr(a, '__iter__') and not hasattr(b, '__iter__') and hasattr(c, '__iter__'): + for m_a in a: + for m_c in c: + if self.debug != 0: + print "a=" + str(m_a) + print "b=" + str(b) + print "c=" + str(m_c) + self.draw_par_function(m_a, b, m_c) + elif not hasattr(a, '__iter__') and hasattr(b, '__iter__') and hasattr(c, '__iter__'): + for m_b in b: + for m_c in c: + if self.debug != 0: + print "a=" + str(a) + print "b=" + str(m_b) + print "c=" + str(m_c) + self.draw_par_function(a, m_b, m_c) + + elif not hasattr(a, '__iter__') and not hasattr(b, '__iter__') and hasattr(c, '__iter__'): + for m_c in c: + if self.debug != 0: + print "a=" + str(a) + print "b=" + str(b) + print "c=" + str(m_c) + self.draw_par_function(a, b, m_c) + elif hasattr(a, '__iter__') and not hasattr(b, '__iter__') and not hasattr(c, '__iter__'): + for m_a in a: + if self.debug != 0: + print "a=" + str(m_a) + print "b=" + str(b) + print "c=" + str(c) + self.draw_par_function(m_a, b, c) + elif not hasattr(a, '__iter__') and hasattr(b, '__iter__') and not hasattr(c, '__iter__'): + for m_b in b: + if self.debug != 0: + print "a=" + str(a) + print "b=" + str(m_b) + print "c=" + str(c) + self.draw_par_function(a, m_b, c) + else: + if self.debug != 0: + print "a=" + str(a) + print "b=" + str(b) + print "c=" + str(c) + self.draw_par_function(a, b, c) + + oxs = eval(str(self.x_ref.text())) + oys = eval(str(self.y_ref.text())) + ozs = eval(str(self.z_ref.text())) + if hasattr(oxs, '__iter__'): + for m_ox, m_oy, m_oz in zip(oxs, oys, ozs): + self.ox = float(m_ox) + self.oy = float(m_oy) + self.oz = float(m_oz) + iterate() + else: + self.ox = float(eval(str(self.x_ref.text()))) + self.oy = float(eval(str(self.y_ref.text()))) + self.oz = float(eval(str(self.z_ref.text()))) + iterate() + + + def draw_par_function(self,fa ,fb, fc): + if self.debug != 0: + print self.draw.__name__ + #msgBox = QtGui.QMessageBox() + + fx = str(self.lx.text()) + fy = str(self.ly.text()) + fz = str(self.lz.text()) + t = float(eval(str(self.ltmin.text()))) + tf = float(eval(str(self.ltmax.text()))) + intt = float(eval(str(self.ltstep.text()))) + + ox, oy, oz = self.ox, self.oy, self.oz + + d = (tf + intt -t)/intt + dmax = int(d) + matriz = [] + + if self.debug != 0: + print "t=" + str(t) +" to " + str(tf) + " with step of " + str(intt) + print "d=" + str(d) + print "a=" + str(fa) + print "b=" + str(fb) + print "c=" + str(fc) + print "x=" + str(fx) + print "y=" + str(fy) + print "z=" + str(fz) + print "x_ref=" + str(ox) + print "y_ref=" + str(oy) + print "z_ref=" + str(oz) + + + code = """ +def f3(fa,fb,fc,fx,fy,fz,t,i,msgBox): + value="" + #msgBox = QtGui.QMessageBox() + try: + value="a() = """+str(fa)+"""" + a="""+str(fa)+""" + value="b() = """+str(fb)+"""" + b="""+str(fb)+""" + value="c() = """+str(fc)+"""" + c="""+str(fc)+""" + value="X() = """+str(fx)+"""" + fxx="""+str(fx)+""" + value="Y() = """+str(fy)+"""" + fyy="""+str(fy)+""" + value="Z() = """+str(fz)+"""" + fzz="""+str(fz)+""" + except ZeroDivisionError: + msgBox.setText("Error division by zero in calculus of "+value+" for (t) = "+str(t)+" !") + msgBox.exec_() + return + except: + msgBox.setText("Error in the formula of "+value+" for (t) = "+str(t)+" !") + msgBox.exec_() + return + return fxx, fyy, fzz + """ + if self.debug != 0: + print code + try : + exec code + except : + import traceback + var = traceback.format_exc() + self.msgBox.setText("Error in the code :\n"+ + str(var) + ) + self.msgBox.exec_() + return + + NbPoles = len(range(dmax)) + + x, y, z = 0.0, 0.0, 0.0 + + for i in range(dmax): + step = int((i * 100)/NbPoles) + self.pbar.setValue(step) + + fxx, fyy, fzz = f3(fa,fb,fc,fx,fy,fz,t,i,self.msgBox) + + if self.cylind == True: + x, y, z = ox + (fxx*cos(fyy)), oy + (fxx*sin(fyy)), oz + fzz + #matriz.append(FreeCAD.Vector(fxx*cos(fyy),fxx*sin(fyy),fzz)) + if self.spheri == True: + x, y, z = ox + (fxx*sin(fyy)*cos(fzz)), oy + (fxx*sin(fyy)*sin(fzz)), oz + (fxx*cos(fyy)) + #matriz.append(FreeCAD.Vector(fxx*sin(fyy)*cos(fzz),fxx*sin(fyy)*sin(fzz),fxx*cos(fyy))) + else: + x, y, z = ox + fxx, oy + fyy, oz + fzz + #matriz.append(FreeCAD.Vector(fxx,fyy,fzz)) + + + matriz.append(FreeCAD.Vector(x, y, z)) + + t+=intt + self.plot_matriz(matriz, self.name.text()) + + + def draw_old(self): + if self.debug != 0: + print self.draw.__name__ + msgBox = QtGui.QMessageBox() + fa = str(self.la.text()) + fb = str(self.lb.text()) + fc = str(self.lc.text()) + fx = str(self.lx.text()) + fy = str(self.ly.text()) + fz = str(self.lz.text()) + t = float(eval(str(self.ltmin.text()))) + tf = float(eval(str(self.ltmax.text()))) + intt = float(eval(str(self.ltstep.text()))) + + d = (tf + intt -t)/intt + dmax = int(d) + matriz = [] + + if self.debug != 0: + print "t=" + str(t) +" to " + str(tf) + " with step of " + str(intt) + print "d=" + str(d) + print "a=" + str(fa) + print "b=" + str(fb) + print "c=" + str(fc) + print "x=" + str(fx) + print "y=" + str(fy) + print "z=" + str(fz) + + code = """ +def f3(fa,fb,fc,fx,fy,fz,t,i): + value="" + msgBox = QtGui.QMessageBox() + try: + value="a() = """+str(fa)+"""" + a="""+str(fa)+""" + value="b() = """+str(fb)+"""" + b="""+str(fb)+""" + value="c() = """+str(fc)+"""" + c="""+str(fc)+""" + value="X() = """+str(fx)+"""" + fxx="""+str(fx)+""" + value="Y() = """+str(fy)+"""" + fyy="""+str(fy)+""" + value="Z() = """+str(fz)+"""" + fzz="""+str(fz)+""" + except ZeroDivisionError: + msgBox.setText("Error division by zero in calculus of "+value+" for (t) = "+str(t)+" !") + msgBox.exec_() + return + except: + msgBox.setText("Error in the formula of "+value+" for (t) = "+str(t)+" !") + msgBox.exec_() + return + return fxx, fyy, fzz + """ +#============================================================================== +# for i in range(int(d)): +# try: +# value="a" +# a=eval(fa) +# value="b" +# b=eval(fb) +# value="c" +# c=eval(fc) +# value="X" +# fxx=eval(fx) +# value="Y" +# fyy=eval(fy) +# value="Z" +# fzz=eval(fz) +# except ZeroDivisionError: +# msgBox.setText("Error division by zero in calculus of "+value+"() for t="+str(t)+" !") +# msgBox.exec_() +# except: +# msgBox.setText("Error in the formula of "+value+"() !") +# msgBox.exec_() +# matriz.append(FreeCAD.Vector(fxx,fyy,fzz)) +# t+=intv +#============================================================================== + + if self.debug != 0: + print code + exec code + for i in range(dmax): + fxx, fyy, fzz = f3(fa,fb,fc,fx,fy,fz,t,i) + + if self.cylind == True: + matriz.append(FreeCAD.Vector(fxx*cos(fyy),fxx*sin(fyy),fzz)) + if self.spheri == True: + matriz.append(FreeCAD.Vector(fxx*sin(fyy)*cos(fzz),fxx*sin(fyy)*sin(fzz),fxx*cos(fyy))) + else: + matriz.append(FreeCAD.Vector(fxx,fyy,fzz)) + t+=intt + self.plot_matriz(matriz, self.name.text()) + + + def store(self): + """ Store the parametric curve. + """ + if self.debug != 0: + print self.store.__name__ + m_line = [] + m_cartesian = 0 + if self.cylind == True: + m_cartesian = 1 + if self.spheri == True: + m_cartesian = 2 + + m_items = [self.name, self.la, self.lb, self.lc, self.lx, self.ly, self.lz, + self.ltmin, self.ltmax, self.ltstep] + for m_item in m_items: + m_val = "" + m_val = m_item.text() + m_line.append(str(m_val)) + # cartesian append + m_line.append(str(m_cartesian)) + # append comment + m_line.append("") + print str(m_line) + self.dialog.ui.addCurveData(m_line) + + +class Surface(Parametric): + """ A Surface object + """ + def __init__(self, gui): + # Parent + Parametric.__init__(self, gui) + + self.debug = 1 + + self.nurbs = True + + self.name = "Surface" + self.name = self.gui.Surf_name + self.la = self.gui.Surf_a + self.lb = self.gui.Surf_b + self.lc = self.gui.Surf_c + self.lx = self.gui.Surf_x + self.ly = self.gui.Surf_y + self.lz = self.gui.Surf_z + + self.lumin = self.gui.Surf_umin + self.lumax = self.gui.Surf_umax + self.lustep = self.gui.Surf_ustep + self.lvmin = self.gui.Surf_vmin + self.lvmax = self.gui.Surf_vmax + self.lvstep = self.gui.Surf_vstep + + self.cb_points = self.gui.Surf_points + self.cb_polyline = self.gui.Surf_polyline + self.cb_bspline = self.gui.Surf_bspline + self.cb_bspline_surf = self.gui.Surf_bspline_surf + self.cb_meshes = self.gui.Surf_meshes +# +# self.cb_close = self.gui.checkBox_close_2 +# self.cb_face = self.gui.checkBox_face_2 +# +# self.cb_face.setEnabled(False) +# self.close = False +# self.face = False +# + self.combox = self.gui.Surf_comboBox + + self.dialog = QtGui.QDialog() + self.dialog.resize(280,110) + self.dialog.setWindowTitle("Parametric Surface Editor") + self.dialog.ui = ParCurveEdit.tableWidgetSurf(database="ParametricSurf.dat") + self.dialog.ui.setupUi(self.dialog, self.combox) + + + def select_surface(self, *argc): + """ Selection of Surface by combo box. + """ + if self.debug != 0: + print self.select_surface.__name__ + # Name, a , b (a),c (a,b), X (a,b,c,U,V), Y (a,b,c,U,V), Z (a,b,c,U,V), U min, U max, U step, V min, V max, V step, Comment + m_line = self.dialog.ui.selectCurve(*argc) + if self.debug != 0: + print str(m_line) + self.name.setText(str(m_line[0])) + self.la.setText(str(m_line[1])) + self.lb.setText(str(m_line[2])) + self.lc.setText(str(m_line[3])) + self.lx.setText(str(m_line[4])) + self.ly.setText(str(m_line[5])) + self.lz.setText(str(m_line[6])) + self.resetOrigin() + self.lumin.setText(str(m_line[7])) + self.lumax.setText(str(m_line[8])) + self.lustep.setText(str(m_line[9])) + self.lvmin.setText(str(m_line[10])) + self.lvmax.setText(str(m_line[11])) + self.lvstep.setText(str(m_line[12])) + + + def draw(self): + if self.debug != 0: + print self.draw.__name__ + + #msgBox = QtGui.QMessageBox() + import numpy as np + u=0. + v=0. + + fa = str(self.la.text()) + fb = str(self.lb.text()) + fc = str(self.lc.text()) + + a=eval(fa) + b=eval(fb) + c=eval(fc) + + def iterate(): + if hasattr(a, '__iter__') and hasattr(b, '__iter__') and hasattr(c, '__iter__'): + for m_a in a: + for m_b in b: + for m_c in c: + if self.debug != 0: + print "a=" + str(m_a) + print "b=" + str(m_b) + print "c=" + str(m_c) + self.draw_par_function(m_a, m_b, m_c) + elif hasattr(a, '__iter__') and hasattr(b, '__iter__') and not hasattr(c, '__iter__'): + for m_a in a: + for m_b in b: + if self.debug != 0: + print "a=" + str(m_a) + print "b=" + str(m_b) + print "c=" + str(c) + self.draw_par_function(m_a, m_b, c) + elif hasattr(a, '__iter__') and not hasattr(b, '__iter__') and hasattr(c, '__iter__'): + for m_a in a: + for m_c in c: + if self.debug != 0: + print "a=" + str(m_a) + print "b=" + str(b) + print "c=" + str(m_c) + self.draw_par_function(m_a, b, m_c) + elif not hasattr(a, '__iter__') and hasattr(b, '__iter__') and hasattr(c, '__iter__'): + for m_b in b: + for m_c in c: + if self.debug != 0: + print "a=" + str(a) + print "b=" + str(m_b) + print "c=" + str(m_c) + self.draw_par_function(a, m_b, m_c) + + elif not hasattr(a, '__iter__') and not hasattr(b, '__iter__') and hasattr(c, '__iter__'): + for m_c in c: + if self.debug != 0: + print "a=" + str(a) + print "b=" + str(b) + print "c=" + str(m_c) + self.draw_par_function(a, b, m_c) + elif hasattr(a, '__iter__') and not hasattr(b, '__iter__') and not hasattr(c, '__iter__'): + for m_a in a: + if self.debug != 0: + print "a=" + str(m_a) + print "b=" + str(b) + print "c=" + str(c) + self.draw_par_function(m_a, b, c) + elif not hasattr(a, '__iter__') and hasattr(b, '__iter__') and not hasattr(c, '__iter__'): + for m_b in b: + if self.debug != 0: + print "a=" + str(a) + print "b=" + str(m_b) + print "c=" + str(c) + self.draw_par_function(a, m_b, c) + else: + if self.debug != 0: + print "a=" + str(a) + print "b=" + str(b) + print "c=" + str(c) + self.draw_par_function(a, b, c) + + oxs = eval(self.x_ref.text()) + oys = eval(self.y_ref.text()) + ozs = eval(self.z_ref.text()) + if self.debug != 0: + print oxs + print "oxs=" + str(oxs) + print "oys=" + str(oys) + print "ozs=" + str(ozs) + + import collections + if isinstance(oxs, collections.Iterable): + #if hasattr(oxs, '__iter__'): + for m_ox, m_oy, m_oz in zip(oxs, oys, ozs): + self.ox = float(m_ox) + self.oy = float(m_oy) + self.oz = float(m_oz) + iterate() + else: + self.ox = float(eval(str(self.x_ref.text()))) + self.oy = float(eval(str(self.y_ref.text()))) + self.oz = float(eval(str(self.z_ref.text()))) + iterate() + + + def draw_par_function(self, fa ,fb, fc): + if self.debug != 0: + print self.draw_par_function.__name__ + + import numpy as np + + fx = str(self.lx.text()) + fy = str(self.ly.text()) + fz = str(self.lz.text()) + + umin = float(eval(str(self.lumin.text()))) + umax = float(eval(str(self.lumax.text()))) + ustep = float(eval(str(self.lustep.text()))) + + vmin = float(eval(str(self.lvmin.text()))) + vmax = float(eval(str(self.lvmax.text()))) + vstep = float(eval(str(self.lvstep.text()))) + + ox, oy, oz = self.ox, self.oy, self.oz + + matriz = [] + + if self.debug != 0: + print "umin=" + str(umin) +" to " + str(umax) + " with step of " + str(ustep) + print "vmin=" + str(vmin) +" to " + str(vmax) + " with step of " + str(vstep) + print "a=" + str(fa) + print "b=" + str(fb) + print "c=" + str(fc) + print "x=" + str(fx) + print "y=" + str(fy) + print "z=" + str(fz) + + code = """ +def f3(fa,fb,fc,fx,fy,fz,u,v,msgBox): + value="" + try: + value="a() = """+str(fa)+"""" + a="""+str(fa)+""" + value="b() = """+str(fb)+"""" + b="""+str(fb)+""" + value="c() = """+str(fc)+"""" + c="""+str(fc)+""" + value="X() = """+str(fx)+"""" + fxx="""+str(fx)+""" + value="Y() = """+str(fy)+"""" + fyy="""+str(fy)+""" + value="Z() = """+str(fz)+"""" + fzz="""+str(fz)+""" + except ZeroDivisionError: + msgBox.setText("Error division by zero in calculus of "+value+" for (u,v) = "+str(u)+","+str(v)+" !") + msgBox.exec_() + return + except: + msgBox.setText("Error in the formula of "+value+" for (u,v) = "+str(u)+","+str(v)+" !") + msgBox.exec_() + return + return fxx, fyy, fzz + """ + + if self.debug != 0: + print code + try : + exec code + except : + import traceback + var = traceback.format_exc() + self.msgBox.setText("Error in the code :\n"+ + str(var) + ) + self.msgBox.exec_() + return + + x, y, z = 0.0, 0.0, 0.0 + + NbUPoles = len(np.arange(umin,umax,ustep)) + NbVPoles = len(np.arange(vmin,vmax,vstep)) + step = 0 + i = 0 + + if self.debug != 0: + print "Step = " + str(step) + print "NbVPoles = " + str(NbUPoles) + print "NbVPoles = " + str(NbVPoles) + + ps=[] + #for u in np.arange(umin,umax,ustep): + for v in np.arange(vmin,vmax,vstep): + i += 1 + step = int((i * 100)/NbVPoles) + #print str(step) + self.pbar.setValue(step) + psl=[] + for u in np.arange(umin,umax,ustep): + #for v in np.arange(vmin,vmax,vstep): + fxx, fyy, fzz = f3(fa,fb,fc,fx,fy,fz,u,v, self.msgBox) + x, y, z = ox + fxx, oy + fyy, oz + fzz + matriz.append(FreeCAD.Vector(x,y,z)) + psl.append(FreeCAD.Vector(x,y,z)) + ps.append(psl) + + if not (self.nurbs or self.meshes) : + self.plot_matriz(matriz, self.name.text()) + + else : + bs=Part.BSplineSurface() + + kv=[1.0/(NbVPoles-1)*i for i in range(NbVPoles)] + ku=[1.0/(NbUPoles-1)*i for i in range(NbUPoles)] + + bs.buildFromPolesMultsKnots(ps, + [3] +[1]*(NbVPoles-2) +[3], + [3]+[1]*(NbUPoles-2)+[3], + kv, + ku, + False,False + ,3,3) + + sha=bs.toShape() + label=str(self.name.text())+"_Nurbs" + sp=App.ActiveDocument.addObject("Part::Spline",label) + sp.Shape=sha + sp.ViewObject.ControlPoints = False + sp.ViewObject.ShapeColor = (1.00,0.67,0.00) + + + def draw_old(self): + if self.debug != 0: + print self.draw.__name__ + + import numpy as np + u=0. + v=0. + + fa = str(self.la.text()) + fb = str(self.lb.text()) + fc = str(self.lc.text()) + + fx = str(self.lx.text()) + fy = str(self.ly.text()) + fz = str(self.lz.text()) + + a=eval(fa) + b=eval(fb) + c=eval(fc) + + umin = float(eval(str(self.lumin.text()))) + umax = float(eval(str(self.lumax.text()))) + ustep = float(eval(str(self.lustep.text()))) + + vmin = float(eval(str(self.lvmin.text()))) + vmax = float(eval(str(self.lvmax.text()))) + vstep = float(eval(str(self.lvstep.text()))) + + ox = float(eval(str(self.x_ref.text()))) + oy = float(eval(str(self.y_ref.text()))) + oz = float(eval(str(self.z_ref.text()))) + + matriz = [] + + if self.debug != 0: + print "umin=" + str(umin) +" to " + str(umax) + " with step of " + str(ustep) + print "vmin=" + str(vmin) +" to " + str(vmax) + " with step of " + str(vstep) + print "a=" + str(fa) + print "b=" + str(fb) + print "c=" + str(fc) + print "x=" + str(fx) + print "y=" + str(fy) + print "z=" + str(fz) + + code = """ +def f3(fa,fb,fc,fx,fy,fz,u,v,msgBox): + value="" + try: + value="a() = """+str(fa)+"""" + a="""+str(fa)+""" + value="b() = """+str(fb)+"""" + b="""+str(fb)+""" + value="c() = """+str(fc)+"""" + c="""+str(fc)+""" + value="X() = """+str(fx)+"""" + fxx="""+str(fx)+""" + value="Y() = """+str(fy)+"""" + fyy="""+str(fy)+""" + value="Z() = """+str(fz)+"""" + fzz="""+str(fz)+""" + except ZeroDivisionError: + msgBox.setText("Error division by zero in calculus of "+value+" for (u,v) = "+str(u)+","+str(v)+" !") + msgBox.exec_() + return + except: + msgBox.setText("Error in the formula of "+value+" for (u,v) = "+str(u)+","+str(v)+" !") + msgBox.exec_() + return + return fxx, fyy, fzz + """ + + if self.debug != 0: + print code + try : + exec code + except : + import traceback + var = traceback.format_exc() + self.msgBox.setText("Error in the code :\n"+ + str(var) + ) + self.msgBox.exec_() + return + + x, y, z = 0.0, 0.0, 0.0 + + NbUPoles = len(np.arange(umin,umax,ustep)) + NbVPoles = len(np.arange(vmin,vmax,vstep)) + step = 0 + i = 0 + + if self.debug != 0: + print "Step = " + str(step) + print "NbVPoles = " + str(NbUPoles) + print "NbVPoles = " + str(NbVPoles) + + ps=[] + #for u in np.arange(umin,umax,ustep): + for v in np.arange(vmin,vmax,vstep): + i += 1 + step = int((i * 100)/NbVPoles) + #print str(step) + self.pbar.setValue(step) + psl=[] + for u in np.arange(umin,umax,ustep): + #for v in np.arange(vmin,vmax,vstep): + fxx, fyy, fzz = f3(fa,fb,fc,fx,fy,fz,u,v, self.msgBox) + x, y, z = ox + fxx, oy + fyy, oz + fzz + matriz.append(FreeCAD.Vector(x,y,z)) + psl.append(FreeCAD.Vector(x,y,z)) + ps.append(psl) + + if not (self.nurbs or self.meshes) : + self.plot_matriz(matriz, self.name.text()) + + else : + bs=Part.BSplineSurface() + + kv=[1.0/(NbVPoles-1)*i for i in range(NbVPoles)] + ku=[1.0/(NbUPoles-1)*i for i in range(NbUPoles)] + + bs.buildFromPolesMultsKnots(ps, + [3] +[1]*(NbVPoles-2) +[3], + [3]+[1]*(NbUPoles-2)+[3], + kv, + ku, + False,False + ,3,3) + + sha=bs.toShape() + label=str(self.name.text())+"_Nurbs" + sp=App.ActiveDocument.addObject("Part::Spline",label) + sp.Shape=sha + sp.ViewObject.ControlPoints = False + sp.ViewObject.ShapeColor = (1.00,0.67,0.00) + +# >>> import nurbswb.spreadsheet_lib as ns +# >>> import numpy as np +# >>> x = np.arange(-5.00, 5.00, 0.5) +# >>> y = np.arange(-5.00, 5.00, 0.5) +# >>> xx, yy = np.meshgrid(x, y) +# >>> z = np.sin(xx**2+yy**2) +# >>> ss1=ns.createSpreadsheet(label='MySpreadsheet') +# >>> ns.setSpreadsheet(ss1,x,y,z) +# >>> ns.table2Nurbs(ss1,"waves") + + def store(self): + """ Store the parametric surface. + """ + if self.debug != 0: + print self.store.__name__ + m_line = [] + + + # Name, a , b (a),c (a,b), X (a,b,c,U,V), Y (a,b,c,U,V), Z (a,b,c,U,V), U min, U max, U step, V min, V max, V step, Comment + m_items = [self.name, self.la, self.lb, self.lc, self.lx, self.ly, self.lz, + self.lumin, self.lumax, self.lustep, self.lvmin, self.lvmax, self.lvstep] + for m_item in m_items: + m_val = "" + m_val = m_item.text() + m_line.append(str(m_val)) + + # append comment + m_line.append("") + print str(m_line) + self.dialog.ui.addCurveData(m_line) + + +########################################## +class SurfaceEvents(DefineAndConnectEvents): + def __init__(self,ui): + self.ui = ui + # Create Surface object + self.surface = Surface(self.ui) + DefineAndConnectEvents.__init__(self, self.ui, self.surface) + + def defineEvents(self): + #====================================================================== + # Connect to 2D functions + #====================================================================== + self.connections_for_slider_changed = {} + self.connections_for_button_pressed = { + "Surf_button_edit" : "edit", + "Surf_button_apply" : "draw", + "Surf_button_store" : "store", + "button_select_point" : "getOrigin", + } + self.connections_for_combobox_changed = { + "Surf_comboBox" : "select_surface", + } + self.connections_for_checkbox_toggled = { + "Surf_points" : "cpointsState", + "Surf_polyline" : "cpolyState", + "Surf_bspline" : "cbsplineState", + "Surf_bspline_surf" : "cnurbsState", + "Surf_meshes" : "cmeshesState", + } + self.connections_for_spin_changed = { + #"Reg2DCurve_degree_select" : "setDegree" + } + self.connections_for_return_pressed = {} + +########################################## +class RegressionCurve2DEvents(DefineAndConnectEvents): + def __init__(self,ui): + self.ui = ui + # Create Regression Curve 2D object + self.regcurv2D = RegressionCurve2D(self.ui) + DefineAndConnectEvents.__init__(self, self.ui, self.regcurv2D) + + def defineEvents(self): + #====================================================================== + # Connect to 2D functions + #====================================================================== + self.connections_for_slider_changed = {} + self.connections_for_button_pressed = { + "Reg2DCurve_button_apply" : "draw", + "Reg2DCurve_button_select_points" : "get_points", + } + self.connections_for_combobox_changed = { + #"ParCurve_comboBox_2" : "select_curve", + } + self.connections_for_checkbox_toggled = { + "checkBox_points_reg1" : "cpointsState", + "checkBox_polyline_reg1" : "cpolyState", + "checkBox_bspline_reg1" : "cbsplineState", + "checkBox_bezier_reg1" : "cbezierState", + } + self.connections_for_spin_changed = { + "Reg2DCurve_degree_select" : "setDegree"} + self.connections_for_return_pressed = {} + +########################################## +class ParametricCurve2DEvents(DefineAndConnectEvents): + def __init__(self,ui): + self.ui = ui + # Create Parametric Curve 2D object + self.parcurv2D = ParametricCurve2D(self.ui) + DefineAndConnectEvents.__init__(self, self.ui, self.parcurv2D) + + def defineEvents(self): + #====================================================================== + # Connect to 2D functions + #====================================================================== + self.connections_for_slider_changed = {} + self.connections_for_button_pressed = { + "ParCurve_button_edit_2" : "edit", + "ParCurve_button_apply_2" : "draw", + "ParCurve_button_store_2" : "store", + "button_select_point" : "getOrigin", + } + self.connections_for_combobox_changed = { + "ParCurve_comboBox_2" : "select_curve", + } + self.connections_for_checkbox_toggled = { + "checkBox_close_2" : "ccloseState", + "checkBox_face_2" : "cfaceState", + "checkBox_points_2" : "cpointsState", + "checkBox_polyline_2" : "cpolyState", + "checkBox_bspline_2" : "cbsplineState", + "checkBox_bezier_2" : "cbezierState", + "checkBox_polar_2" : "cpolarState", + } + self.connections_for_spin_changed = {} + self.connections_for_return_pressed = {} + +########################################## +class ParametricCurve3DEvents(DefineAndConnectEvents): + def __init__(self,ui): + self.ui = ui + # Create Parametric Curve 3D object + self.parcurv3D = ParametricCurve3D(self.ui) + DefineAndConnectEvents.__init__(self, self.ui, self.parcurv3D) + + def defineEvents(self): + #====================================================================== + # Connect to 3D functions + #====================================================================== + self.connections_for_slider_changed = {} + self.connections_for_button_pressed = { + "ParCurve_button_edit_3" : "edit", + "ParCurve_button_apply_3" : "draw", + "ParCurve_button_store_3" : "store", + "button_select_point" : "getOrigin", + } + self.connections_for_combobox_changed = { + "ParCurve_comboBox_3" : "select_curve", + } + self.connections_for_checkbox_toggled = { + "checkBox_close_3" : "ccloseState", + "checkBox_points_3" : "cpointsState", + "checkBox_polyline_3" : "cpolyState", + "checkBox_bspline_3" : "cbsplineState", + "checkBox_bezier_3" : "cbezierState", + "checkBox_cylind_3" : "ccylindState", + "checkBox_spheric_3" : "csphericState", + } + self.connections_for_spin_changed = {} + self.connections_for_return_pressed = {} + +########################################## +class ParametricTab(): + def __init__(self, gui, movable=True): + self.gui= gui + self.title = myTabName + self.objname = myObjName + + self.movable = movable + if self.movable: + # Look if WF movable tab already exists + m_mvtab=FreeCADGui.getMainWindow().findChild(QtGui.QDockWidget, str(self.title)) + if m_mvtab: + m_mvtab.show() + m_mvtab.raise_() + return + + # Get main window + self.m_main = self.getMainWindow() + + # Get Tab panel + if self.movable: + self.m_tab = self.getComboViewMv(self.m_main) + + self.m_dialog = QtGui.QWidget() + self.m_tab.addWidget(self.m_dialog) + self.ui = self.gui.Ui_Form() + self.ui.setupUi(self.m_dialog) + self.m_dialog.setMaximumWidth(400) + else : + self.m_tab = self.getComboView(self.m_main) + + if self.m_tab.count() == 2: + # Create a new fake dialog + self.m_fake_dialog = QtGui.QDialog() + self.m_tab.addTab(self.m_fake_dialog,"") + + # Create a new dialog for ParametricTabTab + self.m_dialog = QtGui.QDialog() + # Add the dialog in a new tab or focus on it if already exists + if self.m_tab.count() >= 2: + for i in range(2,self.m_tab.count()): + #if str(self.title) == str(unicode(self.m_tab.tabText(i), 'utf-8')): + if str(self.title) == str(_fromUtf8(self.m_tab.tabText(i))): + self.m_tab.removeTab(int(i)) + break + + self.m_tab.addTab(self.m_dialog, str(self.title)) + + self.ui = self.gui.Ui_Form() + self.ui.setupUi(self.m_dialog) + self.m_tab.setCurrentIndex(3) + + # Create a Regression 2D Curve object and connect + self.reg_events2D = RegressionCurve2DEvents(self.ui) + # Create a Parametric 2D Curve object and connect + self.events2D = ParametricCurve2DEvents(self.ui) + # Create a Parametric 3D Curve object and connect + self.events3D = ParametricCurve3DEvents(self.ui) + # Create a Surface object and connect + self.surface = SurfaceEvents(self.ui) + + if self.movable: + t=FreeCADGui.getMainWindow() + wf = t.findChild(QtGui.QDockWidget, str(self.objname)) + cv = t.findChild(QtGui.QDockWidget, "Combo View") + cv.setFeatures( QtGui.QDockWidget.DockWidgetMovable | QtGui.QDockWidget.DockWidgetFloatable|QtGui.QDockWidget.DockWidgetClosable ) + wf.setFeatures( QtGui.QDockWidget.DockWidgetMovable | QtGui.QDockWidget.DockWidgetFloatable|QtGui.QDockWidget.DockWidgetClosable ) + if wf and cv: + t.tabifyDockWidget(cv,wf) + print_msg( "Tabified done !") + wf.activateWindow() + wf.raise_() + + + def quit_clicked(self): # quit + if self.movable: + self.dw.close() + print_msg( "Close done !") + return + else: + self.m_dialog.close() + if self.m_tab.count() >= 2: + for i in range(2,self.m_tab.count()): + if str(self.title) == str(_fromUtf8(self.m_tab.tabText(i))): + self.m_tab.removeTab(int(i)) + break + + def getMainWindow(self): + """ Returns the main window + """ + # using QtGui.qApp.activeWindow() isn't very reliable because if another + # widget than the mainwindow is active (e.g. a dialog) the wrong widget + # is returned + toplevel = QtGui.qApp.topLevelWidgets() + for i in toplevel: + if i.metaObject().className() == "Gui::MainWindow": + return i + raise Exception("No main window found") + + def getComboView(self,window): + """ Returns the main Tab. + """ + dw=window.findChildren(QtGui.QDockWidget) + for i in dw: + if str(i.objectName()) == "Combo View": + return i.findChild(QtGui.QTabWidget) + raise Exception("No tab widget found") + + def getComboViewMv(self,window): + """ Returns the main Tab. + """ + mw=FreeCAD.Gui.getMainWindow() + layout = QtGui.QVBoxLayout() + myw=QtGui.QWidget() + myw.setLayout(layout) + + dw1=QtGui.QDockWidget(mw) + dw1.setWindowTitle(str(self.title)) + dw1.setObjectName(str(self.objname)) + dw1.setWidget(myw) + + mw.addDockWidget(QtCore.Qt.RightDockWidgetArea , dw1) + self.myw=myw + self.dw=dw1 + layout.mw=mw + return layout + + +if __name__ == '__main__': + myObject = ParametricTab(ParCurveGui) + \ No newline at end of file diff --git a/WorkFeature/ParCurve/__init__.py b/WorkFeature/ParCurve/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/WorkFeature/Ui/WFGui_2015.py b/WorkFeature/Ui/WFGui_2015.py index a2ed069..9addb83 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_2016_09.ui' +# Form implementation generated from reading ui file 'WFGui_2015.ui' # -# Created: Sat Sep 10 09:18:06 2016 +# Created: Sat Dec 31 14:55:16 2016 # by: PySide UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost! @@ -26,7 +26,7 @@ except AttributeError: class Ui_Form(object): def setupUi(self, Form): Form.setObjectName(_fromUtf8("Form")) - Form.resize(382, 845) + Form.resize(396, 610) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_wf.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) Form.setWindowIcon(icon) @@ -40,12 +40,11 @@ class Ui_Form(object): self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName(_fromUtf8("scrollArea")) self.scrollAreaWidgetContents = QtGui.QWidget() - self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 365, 773)) + self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 365, 593)) self.scrollAreaWidgetContents.setObjectName(_fromUtf8("scrollAreaWidgetContents")) self.gridLayout_128 = QtGui.QGridLayout(self.scrollAreaWidgetContents) self.gridLayout_128.setObjectName(_fromUtf8("gridLayout_128")) self.tabWidget_7 = QtGui.QTabWidget(self.scrollAreaWidgetContents) - self.tabWidget_7.setMinimumSize(QtCore.QSize(0, 0)) self.tabWidget_7.setTabPosition(QtGui.QTabWidget.West) self.tabWidget_7.setObjectName(_fromUtf8("tabWidget_7")) self.Origin_Tab_2 = QtGui.QWidget() @@ -319,29 +318,64 @@ class Ui_Form(object): self.tabWidget.addTab(self.Point_Tab2_3, _fromUtf8("")) self.Point_Tab3_3 = QtGui.QWidget() self.Point_Tab3_3.setObjectName(_fromUtf8("Point_Tab3_3")) - self.gridLayout_12 = QtGui.QGridLayout(self.Point_Tab3_3) - self.gridLayout_12.setObjectName(_fromUtf8("gridLayout_12")) + self.gridLayout_2 = QtGui.QGridLayout(self.Point_Tab3_3) + self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) self.button_points_load = QtGui.QPushButton(self.Point_Tab3_3) icon20 = QtGui.QIcon() icon20.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointsSetLoad.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.button_points_load.setIcon(icon20) self.button_points_load.setIconSize(QtCore.QSize(32, 32)) self.button_points_load.setObjectName(_fromUtf8("button_points_load")) - self.gridLayout_12.addWidget(self.button_points_load, 0, 0, 1, 1) + self.gridLayout_2.addWidget(self.button_points_load, 0, 0, 1, 1) self.button_points_save = QtGui.QPushButton(self.Point_Tab3_3) icon21 = QtGui.QIcon() icon21.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointsSetSave.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.button_points_save.setIcon(icon21) self.button_points_save.setIconSize(QtCore.QSize(32, 32)) self.button_points_save.setObjectName(_fromUtf8("button_points_save")) - self.gridLayout_12.addWidget(self.button_points_save, 1, 0, 1, 1) + self.gridLayout_2.addWidget(self.button_points_save, 1, 0, 1, 1) + self.horizontalLayout_5 = QtGui.QHBoxLayout() + self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5")) + self.button_points_random = QtGui.QPushButton(self.Point_Tab3_3) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_points_random.sizePolicy().hasHeightForWidth()) + self.button_points_random.setSizePolicy(sizePolicy) + self.button_points_random.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon22 = QtGui.QIcon() + icon22.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointsRandom.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_points_random.setIcon(icon22) + self.button_points_random.setIconSize(QtCore.QSize(32, 32)) + self.button_points_random.setObjectName(_fromUtf8("button_points_random")) + self.horizontalLayout_5.addWidget(self.button_points_random) + self.spin_random_points = QtGui.QSpinBox(self.Point_Tab3_3) + self.spin_random_points.setMinimumSize(QtCore.QSize(40, 0)) + self.spin_random_points.setMaximumSize(QtCore.QSize(50, 16777215)) + self.spin_random_points.setMinimum(1) + self.spin_random_points.setMaximum(100) + self.spin_random_points.setSingleStep(1) + self.spin_random_points.setProperty("value", 1) + self.spin_random_points.setObjectName(_fromUtf8("spin_random_points")) + self.horizontalLayout_5.addWidget(self.spin_random_points) + self.distance_random_points = QtGui.QLineEdit(self.Point_Tab3_3) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.distance_random_points.sizePolicy().hasHeightForWidth()) + self.distance_random_points.setSizePolicy(sizePolicy) + self.distance_random_points.setMinimumSize(QtCore.QSize(50, 0)) + self.distance_random_points.setMaximumSize(QtCore.QSize(60, 16777215)) + self.distance_random_points.setObjectName(_fromUtf8("distance_random_points")) + self.horizontalLayout_5.addWidget(self.distance_random_points) + self.gridLayout_2.addLayout(self.horizontalLayout_5, 2, 0, 1, 1) spacerItem3 = QtGui.QSpacerItem(20, 579, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_12.addItem(spacerItem3, 2, 0, 1, 1) + self.gridLayout_2.addItem(spacerItem3, 3, 0, 1, 1) self.tabWidget.addTab(self.Point_Tab3_3, _fromUtf8("")) self.gridLayout_10.addWidget(self.tabWidget, 0, 0, 1, 1) - icon22 = QtGui.QIcon() - icon22.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_point.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_7.addTab(self.Point_Tab, icon22, _fromUtf8("")) + icon23 = QtGui.QIcon() + icon23.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_point.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Point_Tab, icon23, _fromUtf8("")) self.Axis_Tab = QtGui.QWidget() self.Axis_Tab.setObjectName(_fromUtf8("Axis_Tab")) self.gridLayout_14 = QtGui.QGridLayout(self.Axis_Tab) @@ -361,9 +395,9 @@ class Ui_Form(object): sizePolicy.setHeightForWidth(self.button_twopoints_axis.sizePolicy().hasHeightForWidth()) self.button_twopoints_axis.setSizePolicy(sizePolicy) self.button_twopoints_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon23 = QtGui.QIcon() - icon23.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2pointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_twopoints_axis.setIcon(icon23) + icon24 = QtGui.QIcon() + icon24.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2pointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twopoints_axis.setIcon(icon24) self.button_twopoints_axis.setIconSize(QtCore.QSize(32, 32)) self.button_twopoints_axis.setObjectName(_fromUtf8("button_twopoints_axis")) self.horizontalLayout.addWidget(self.button_twopoints_axis) @@ -375,9 +409,9 @@ class Ui_Form(object): spacerItem4 = QtGui.QSpacerItem(20, 233, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.gridLayout_15.addItem(spacerItem4, 7, 0, 1, 1) self.button_object_axis = QtGui.QPushButton(self.Axis_Tab1_3) - icon24 = QtGui.QIcon() - icon24.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_object_axis.setIcon(icon24) + icon25 = QtGui.QIcon() + icon25.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_axis.setIcon(icon25) self.button_object_axis.setIconSize(QtCore.QSize(32, 32)) self.button_object_axis.setObjectName(_fromUtf8("button_object_axis")) self.gridLayout_15.addWidget(self.button_object_axis, 0, 0, 1, 1) @@ -391,9 +425,9 @@ class Ui_Form(object): self.button_line_point_axis.setSizePolicy(sizePolicy) self.button_line_point_axis.setMinimumSize(QtCore.QSize(0, 0)) self.button_line_point_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon25 = QtGui.QIcon() - icon25.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_line_point_axis.setIcon(icon25) + icon26 = QtGui.QIcon() + icon26.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_point_axis.setIcon(icon26) self.button_line_point_axis.setIconSize(QtCore.QSize(32, 32)) self.button_line_point_axis.setObjectName(_fromUtf8("button_line_point_axis")) self.horizontalLayout_53.addWidget(self.button_line_point_axis) @@ -403,9 +437,9 @@ class Ui_Form(object): self.horizontalLayout_53.addWidget(self.extension_line_point_axis) self.gridLayout_15.addLayout(self.horizontalLayout_53, 5, 0, 1, 1) self.button_Npoints_axis = QtGui.QPushButton(self.Axis_Tab1_3) - icon26 = QtGui.QIcon() - icon26.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_Npoints_axis.setIcon(icon26) + icon27 = QtGui.QIcon() + icon27.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_Npoints_axis.setIcon(icon27) self.button_Npoints_axis.setIconSize(QtCore.QSize(32, 32)) self.button_Npoints_axis.setObjectName(_fromUtf8("button_Npoints_axis")) self.gridLayout_15.addWidget(self.button_Npoints_axis, 2, 0, 1, 1) @@ -413,9 +447,9 @@ class Ui_Form(object): self.horizontalLayout_52.setObjectName(_fromUtf8("horizontalLayout_52")) self.button_point_line_axis = QtGui.QPushButton(self.Axis_Tab1_3) self.button_point_line_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon27 = QtGui.QIcon() - icon27.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLineAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_point_line_axis.setIcon(icon27) + icon28 = QtGui.QIcon() + icon28.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLineAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_line_axis.setIcon(icon28) self.button_point_line_axis.setIconSize(QtCore.QSize(32, 32)) self.button_point_line_axis.setObjectName(_fromUtf8("button_point_line_axis")) self.horizontalLayout_52.addWidget(self.button_point_line_axis) @@ -437,17 +471,17 @@ class Ui_Form(object): self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3")) self.button_cylinder_axis = QtGui.QPushButton(self.Axis_Tab1_3) self.button_cylinder_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon28 = QtGui.QIcon() - icon28.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinderAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cylinder_axis.setIcon(icon28) + icon29 = QtGui.QIcon() + icon29.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinderAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cylinder_axis.setIcon(icon29) self.button_cylinder_axis.setIconSize(QtCore.QSize(32, 32)) self.button_cylinder_axis.setObjectName(_fromUtf8("button_cylinder_axis")) self.verticalLayout_3.addWidget(self.button_cylinder_axis) self.button_plane_axis = QtGui.QPushButton(self.Axis_Tab1_3) self.button_plane_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon29 = QtGui.QIcon() - icon29.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_plane_axis.setIcon(icon29) + icon30 = QtGui.QIcon() + icon30.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_plane_axis.setIcon(icon30) self.button_plane_axis.setIconSize(QtCore.QSize(32, 32)) self.button_plane_axis.setObjectName(_fromUtf8("button_plane_axis")) self.verticalLayout_3.addWidget(self.button_plane_axis) @@ -458,9 +492,9 @@ class Ui_Form(object): sizePolicy.setHeightForWidth(self.button_face_normal.sizePolicy().hasHeightForWidth()) self.button_face_normal.setSizePolicy(sizePolicy) self.button_face_normal.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon30 = QtGui.QIcon() - icon30.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceNormal.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_face_normal.setIcon(icon30) + icon31 = QtGui.QIcon() + icon31.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceNormal.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_normal.setIcon(icon31) self.button_face_normal.setIconSize(QtCore.QSize(32, 32)) self.button_face_normal.setObjectName(_fromUtf8("button_face_normal")) self.verticalLayout_3.addWidget(self.button_face_normal) @@ -481,44 +515,77 @@ class Ui_Form(object): self.horizontalLayout_51.addWidget(self.frame_8) self.gridLayout_15.addLayout(self.horizontalLayout_51, 3, 0, 1, 1) self.button_twolines_axis = QtGui.QPushButton(self.Axis_Tab1_3) - icon31 = QtGui.QIcon() - icon31.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoLinesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_twolines_axis.setIcon(icon31) + icon32 = QtGui.QIcon() + icon32.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoLinesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twolines_axis.setIcon(icon32) self.button_twolines_axis.setIconSize(QtCore.QSize(32, 32)) self.button_twolines_axis.setObjectName(_fromUtf8("button_twolines_axis")) self.gridLayout_15.addWidget(self.button_twolines_axis, 6, 0, 1, 1) self.tabWidget_2.addTab(self.Axis_Tab1_3, _fromUtf8("")) + self.Axis_Tab31_3 = QtGui.QWidget() + self.Axis_Tab31_3.setObjectName(_fromUtf8("Axis_Tab31_3")) + self.gridLayout_16 = QtGui.QGridLayout(self.Axis_Tab31_3) + self.gridLayout_16.setObjectName(_fromUtf8("gridLayout_16")) + self.button_object_base_axes = QtGui.QPushButton(self.Axis_Tab31_3) + icon33 = QtGui.QIcon() + icon33.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_baseObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_base_axes.setIcon(icon33) + self.button_object_base_axes.setIconSize(QtCore.QSize(32, 32)) + self.button_object_base_axes.setObjectName(_fromUtf8("button_object_base_axes")) + self.gridLayout_16.addWidget(self.button_object_base_axes, 0, 0, 1, 1) + self.button_object_Naxes = QtGui.QPushButton(self.Axis_Tab31_3) + icon34 = QtGui.QIcon() + icon34.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectNAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_Naxes.setIcon(icon34) + self.button_object_Naxes.setIconSize(QtCore.QSize(32, 32)) + self.button_object_Naxes.setObjectName(_fromUtf8("button_object_Naxes")) + self.gridLayout_16.addWidget(self.button_object_Naxes, 1, 0, 1, 1) + spacerItem5 = QtGui.QSpacerItem(20, 483, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_16.addItem(spacerItem5, 4, 0, 1, 1) + self.button_line_to_sketch = QtGui.QPushButton(self.Axis_Tab31_3) + self.button_line_to_sketch.setIcon(icon19) + self.button_line_to_sketch.setIconSize(QtCore.QSize(32, 32)) + self.button_line_to_sketch.setObjectName(_fromUtf8("button_line_to_sketch")) + self.gridLayout_16.addWidget(self.button_line_to_sketch, 3, 0, 1, 1) + self.button_object_3axes = QtGui.QPushButton(self.Axis_Tab31_3) + icon35 = QtGui.QIcon() + icon35.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_object3Axes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_3axes.setIcon(icon35) + self.button_object_3axes.setIconSize(QtCore.QSize(32, 32)) + self.button_object_3axes.setObjectName(_fromUtf8("button_object_3axes")) + self.gridLayout_16.addWidget(self.button_object_3axes, 2, 0, 1, 1) + self.tabWidget_2.addTab(self.Axis_Tab31_3, _fromUtf8("")) self.Axis_Tab2_3 = QtGui.QWidget() self.Axis_Tab2_3.setObjectName(_fromUtf8("Axis_Tab2_3")) self.gridLayout_4 = QtGui.QGridLayout(self.Axis_Tab2_3) self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4")) self.button_plane_point_line_axis = QtGui.QPushButton(self.Axis_Tab2_3) - icon32 = QtGui.QIcon() - icon32.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_plane_point_line_axis.setIcon(icon32) + icon36 = QtGui.QIcon() + icon36.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_plane_point_line_axis.setIcon(icon36) self.button_plane_point_line_axis.setIconSize(QtCore.QSize(32, 32)) self.button_plane_point_line_axis.setObjectName(_fromUtf8("button_plane_point_line_axis")) self.gridLayout_4.addWidget(self.button_plane_point_line_axis, 0, 0, 1, 1) self.button_line_plane_axis = QtGui.QPushButton(self.Axis_Tab2_3) - icon33 = QtGui.QIcon() - icon33.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePlaneAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_line_plane_axis.setIcon(icon33) + icon37 = QtGui.QIcon() + icon37.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePlaneAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_plane_axis.setIcon(icon37) self.button_line_plane_axis.setIconSize(QtCore.QSize(32, 32)) self.button_line_plane_axis.setObjectName(_fromUtf8("button_line_plane_axis")) self.gridLayout_4.addWidget(self.button_line_plane_axis, 1, 0, 1, 1) self.button_twoplanes_axis = QtGui.QPushButton(self.Axis_Tab2_3) - icon34 = QtGui.QIcon() - icon34.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2PlanesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_twoplanes_axis.setIcon(icon34) + icon38 = QtGui.QIcon() + icon38.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2PlanesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twoplanes_axis.setIcon(icon38) self.button_twoplanes_axis.setIconSize(QtCore.QSize(32, 32)) self.button_twoplanes_axis.setObjectName(_fromUtf8("button_twoplanes_axis")) self.gridLayout_4.addWidget(self.button_twoplanes_axis, 2, 0, 1, 1) self.horizontalLayout_54 = QtGui.QHBoxLayout() self.horizontalLayout_54.setObjectName(_fromUtf8("horizontalLayout_54")) self.button_distLine = QtGui.QPushButton(self.Axis_Tab2_3) - icon35 = QtGui.QIcon() - icon35.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_distLine.setIcon(icon35) + icon39 = QtGui.QIcon() + icon39.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distLine.setIcon(icon39) self.button_distLine.setIconSize(QtCore.QSize(32, 32)) self.button_distLine.setObjectName(_fromUtf8("button_distLine")) self.horizontalLayout_54.addWidget(self.button_distLine) @@ -547,9 +614,9 @@ class Ui_Form(object): self.horizontalLayout_55 = QtGui.QHBoxLayout() self.horizontalLayout_55.setObjectName(_fromUtf8("horizontalLayout_55")) self.button_angleLine = QtGui.QPushButton(self.Axis_Tab2_3) - icon36 = QtGui.QIcon() - icon36.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_angleLine.setIcon(icon36) + icon40 = QtGui.QIcon() + icon40.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_angleLine.setIcon(icon40) self.button_angleLine.setIconSize(QtCore.QSize(32, 32)) self.button_angleLine.setObjectName(_fromUtf8("button_angleLine")) self.horizontalLayout_55.addWidget(self.button_angleLine) @@ -579,9 +646,9 @@ class Ui_Form(object): self.horizontalLayout_56.setObjectName(_fromUtf8("horizontalLayout_56")) self.button_cut_wire_axis = QtGui.QPushButton(self.Axis_Tab2_3) self.button_cut_wire_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon37 = QtGui.QIcon() - icon37.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWireAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cut_wire_axis.setIcon(icon37) + icon41 = QtGui.QIcon() + icon41.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWireAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_wire_axis.setIcon(icon41) self.button_cut_wire_axis.setIconSize(QtCore.QSize(32, 32)) self.button_cut_wire_axis.setObjectName(_fromUtf8("button_cut_wire_axis")) self.horizontalLayout_56.addWidget(self.button_cut_wire_axis) @@ -598,9 +665,9 @@ class Ui_Form(object): self.horizontalLayout_57.setObjectName(_fromUtf8("horizontalLayout_57")) self.button_cut_axis = QtGui.QPushButton(self.Axis_Tab2_3) self.button_cut_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon38 = QtGui.QIcon() - icon38.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cut_axis.setIcon(icon38) + icon42 = QtGui.QIcon() + icon42.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_axis.setIcon(icon42) self.button_cut_axis.setIconSize(QtCore.QSize(32, 32)) self.button_cut_axis.setObjectName(_fromUtf8("button_cut_axis")) self.horizontalLayout_57.addWidget(self.button_cut_axis) @@ -621,9 +688,9 @@ class Ui_Form(object): sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_extension_axis.sizePolicy().hasHeightForWidth()) self.button_extension_axis.setSizePolicy(sizePolicy) - icon39 = QtGui.QIcon() - icon39.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargeLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_extension_axis.setIcon(icon39) + icon43 = QtGui.QIcon() + icon43.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargeLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_extension_axis.setIcon(icon43) self.button_extension_axis.setIconSize(QtCore.QSize(32, 32)) self.button_extension_axis.setObjectName(_fromUtf8("button_extension_axis")) self.horizontalLayout_58.addWidget(self.button_extension_axis) @@ -639,62 +706,25 @@ class Ui_Form(object): self.horizontalLayout_58.addWidget(self.extension_axis) self.gridLayout_4.addLayout(self.horizontalLayout_58, 7, 0, 1, 1) self.button_click_for_axis = QtGui.QRadioButton(self.Axis_Tab2_3) - icon40 = QtGui.QIcon() - icon40.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_click_for_axis.setIcon(icon40) + icon44 = QtGui.QIcon() + icon44.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_click_for_axis.setIcon(icon44) self.button_click_for_axis.setIconSize(QtCore.QSize(32, 32)) self.button_click_for_axis.setObjectName(_fromUtf8("button_click_for_axis")) self.gridLayout_4.addWidget(self.button_click_for_axis, 8, 0, 1, 1) - spacerItem5 = QtGui.QSpacerItem(20, 238, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_4.addItem(spacerItem5, 9, 0, 1, 1) + spacerItem6 = QtGui.QSpacerItem(20, 238, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_4.addItem(spacerItem6, 9, 0, 1, 1) self.tabWidget_2.addTab(self.Axis_Tab2_3, _fromUtf8("")) - self.Axis_Tab31_3 = QtGui.QWidget() - self.Axis_Tab31_3.setObjectName(_fromUtf8("Axis_Tab31_3")) - self.gridLayout_16 = QtGui.QGridLayout(self.Axis_Tab31_3) - self.gridLayout_16.setObjectName(_fromUtf8("gridLayout_16")) - self.button_object_base_axes = QtGui.QPushButton(self.Axis_Tab31_3) - icon41 = QtGui.QIcon() - icon41.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_baseObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_object_base_axes.setIcon(icon41) - self.button_object_base_axes.setIconSize(QtCore.QSize(32, 32)) - self.button_object_base_axes.setObjectName(_fromUtf8("button_object_base_axes")) - self.gridLayout_16.addWidget(self.button_object_base_axes, 0, 0, 1, 1) - self.button_object_Naxes = QtGui.QPushButton(self.Axis_Tab31_3) - icon42 = QtGui.QIcon() - icon42.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectNAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_object_Naxes.setIcon(icon42) - self.button_object_Naxes.setIconSize(QtCore.QSize(32, 32)) - self.button_object_Naxes.setObjectName(_fromUtf8("button_object_Naxes")) - self.gridLayout_16.addWidget(self.button_object_Naxes, 1, 0, 1, 1) - self.button_object_3axes = QtGui.QPushButton(self.Axis_Tab31_3) - icon43 = QtGui.QIcon() - icon43.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_object3Axes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_object_3axes.setIcon(icon43) - self.button_object_3axes.setIconSize(QtCore.QSize(32, 32)) - self.button_object_3axes.setObjectName(_fromUtf8("button_object_3axes")) - self.gridLayout_16.addWidget(self.button_object_3axes, 2, 0, 1, 1) - self.button_line_to_sketch = QtGui.QPushButton(self.Axis_Tab31_3) - self.button_line_to_sketch.setIcon(icon19) - self.button_line_to_sketch.setIconSize(QtCore.QSize(32, 32)) - self.button_line_to_sketch.setObjectName(_fromUtf8("button_line_to_sketch")) - self.gridLayout_16.addWidget(self.button_line_to_sketch, 3, 0, 1, 1) - spacerItem6 = QtGui.QSpacerItem(20, 483, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_16.addItem(spacerItem6, 4, 0, 1, 1) - self.tabWidget_2.addTab(self.Axis_Tab31_3, _fromUtf8("")) self.gridLayout_14.addWidget(self.tabWidget_2, 0, 0, 1, 1) - 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("")) + icon45 = QtGui.QIcon() + icon45.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_axis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Axis_Tab, icon45, _fromUtf8("")) 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) - 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) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.tabWidget_8.sizePolicy().hasHeightForWidth()) @@ -705,484 +735,41 @@ class Ui_Form(object): 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.gridLayout_7.addItem(spacerItem7, 2, 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) + icon46 = QtGui.QIcon() + icon46.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_bezierCubic2nodes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_4points_bezier.setIcon(icon46) 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.gridLayout_7.addWidget(self.button_4points_bezier, 1, 0, 1, 1) + self.button_points_to_polygon = QtGui.QPushButton(self.Wire_Tab1_3) + icon47 = QtGui.QIcon() + icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_makePolygon.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_points_to_polygon.setIcon(icon47) + self.button_points_to_polygon.setIconSize(QtCore.QSize(32, 32)) + self.button_points_to_polygon.setObjectName(_fromUtf8("button_points_to_polygon")) + self.gridLayout_7.addWidget(self.button_points_to_polygon, 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.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, 245, 648)) - self.scrollAreaWidgetContents_5.setObjectName(_fromUtf8("scrollAreaWidgetContents_5")) - self.gridLayout_76 = QtGui.QGridLayout(self.scrollAreaWidgetContents_5) - self.gridLayout_76.setObjectName(_fromUtf8("gridLayout_76")) - 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) - self.gridLayout_77.setObjectName(_fromUtf8("gridLayout_77")) - self.label_y_3 = QtGui.QLabel(self.groupBox_14) - self.label_y_3.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_y_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_y_3.setObjectName(_fromUtf8("label_y_3")) - self.gridLayout_77.addWidget(self.label_y_3, 3, 0, 1, 1) - self.ParCurve_a_2 = QtGui.QLineEdit(self.groupBox_14) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_a_2.sizePolicy().hasHeightForWidth()) - self.ParCurve_a_2.setSizePolicy(sizePolicy) - self.ParCurve_a_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_a_2.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_a_2.setMaxLength(32769) - self.ParCurve_a_2.setObjectName(_fromUtf8("ParCurve_a_2")) - self.gridLayout_77.addWidget(self.ParCurve_a_2, 0, 1, 1, 1) - self.label_b_3 = QtGui.QLabel(self.groupBox_14) - self.label_b_3.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_b_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_b_3.setObjectName(_fromUtf8("label_b_3")) - self.gridLayout_77.addWidget(self.label_b_3, 1, 0, 1, 1) - self.ParCurve_y_2 = QtGui.QLineEdit(self.groupBox_14) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_y_2.sizePolicy().hasHeightForWidth()) - self.ParCurve_y_2.setSizePolicy(sizePolicy) - self.ParCurve_y_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_y_2.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_y_2.setMaxLength(32769) - self.ParCurve_y_2.setObjectName(_fromUtf8("ParCurve_y_2")) - self.gridLayout_77.addWidget(self.ParCurve_y_2, 3, 1, 1, 1) - self.checkBox_polar_2 = QtGui.QCheckBox(self.groupBox_14) - self.checkBox_polar_2.setAutoExclusive(True) - self.checkBox_polar_2.setObjectName(_fromUtf8("checkBox_polar_2")) - self.gridLayout_77.addWidget(self.checkBox_polar_2, 4, 1, 1, 1) - self.label_x_3 = QtGui.QLabel(self.groupBox_14) - self.label_x_3.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_x_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_x_3.setObjectName(_fromUtf8("label_x_3")) - self.gridLayout_77.addWidget(self.label_x_3, 2, 0, 1, 1) - self.ParCurve_x_2 = QtGui.QLineEdit(self.groupBox_14) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_x_2.sizePolicy().hasHeightForWidth()) - self.ParCurve_x_2.setSizePolicy(sizePolicy) - self.ParCurve_x_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_x_2.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_x_2.setMaxLength(32769) - self.ParCurve_x_2.setObjectName(_fromUtf8("ParCurve_x_2")) - self.gridLayout_77.addWidget(self.ParCurve_x_2, 2, 1, 1, 1) - self.label_a_3 = QtGui.QLabel(self.groupBox_14) - self.label_a_3.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_a_3.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_a_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_a_3.setObjectName(_fromUtf8("label_a_3")) - self.gridLayout_77.addWidget(self.label_a_3, 0, 0, 1, 1) - self.ParCurve_b_2 = QtGui.QLineEdit(self.groupBox_14) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_b_2.sizePolicy().hasHeightForWidth()) - self.ParCurve_b_2.setSizePolicy(sizePolicy) - self.ParCurve_b_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_b_2.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_b_2.setMaxLength(32769) - self.ParCurve_b_2.setObjectName(_fromUtf8("ParCurve_b_2")) - self.gridLayout_77.addWidget(self.ParCurve_b_2, 1, 1, 1, 1) - self.gridLayout_76.addWidget(self.groupBox_14, 2, 0, 1, 1) - self.horizontalLayout_59 = QtGui.QHBoxLayout() - self.horizontalLayout_59.setObjectName(_fromUtf8("horizontalLayout_59")) - self.ParCurve_comboBox_2 = QtGui.QComboBox(self.scrollAreaWidgetContents_5) - self.ParCurve_comboBox_2.setObjectName(_fromUtf8("ParCurve_comboBox_2")) - self.horizontalLayout_59.addWidget(self.ParCurve_comboBox_2) - self.ParCurve_button_edit_2 = QtGui.QPushButton(self.scrollAreaWidgetContents_5) - self.ParCurve_button_edit_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_button_edit_2.setMaximumSize(QtCore.QSize(60, 16777215)) - self.ParCurve_button_edit_2.setObjectName(_fromUtf8("ParCurve_button_edit_2")) - self.horizontalLayout_59.addWidget(self.ParCurve_button_edit_2) - self.gridLayout_76.addLayout(self.horizontalLayout_59, 0, 0, 1, 1) - self.horizontalLayout_61 = QtGui.QHBoxLayout() - self.horizontalLayout_61.setObjectName(_fromUtf8("horizontalLayout_61")) - self.checkBox_close_2 = QtGui.QCheckBox(self.scrollAreaWidgetContents_5) - self.checkBox_close_2.setEnabled(True) - self.checkBox_close_2.setObjectName(_fromUtf8("checkBox_close_2")) - self.horizontalLayout_61.addWidget(self.checkBox_close_2) - self.checkBox_face_2 = QtGui.QCheckBox(self.scrollAreaWidgetContents_5) - self.checkBox_face_2.setEnabled(False) - self.checkBox_face_2.setObjectName(_fromUtf8("checkBox_face_2")) - self.horizontalLayout_61.addWidget(self.checkBox_face_2) - self.gridLayout_76.addLayout(self.horizontalLayout_61, 5, 0, 1, 1) - self.horizontalLayout_60 = QtGui.QHBoxLayout() - self.horizontalLayout_60.setObjectName(_fromUtf8("horizontalLayout_60")) - self.label_name_2 = QtGui.QLabel(self.scrollAreaWidgetContents_5) - self.label_name_2.setFrameShape(QtGui.QFrame.Box) - self.label_name_2.setFrameShadow(QtGui.QFrame.Raised) - self.label_name_2.setLineWidth(3) - self.label_name_2.setAlignment(QtCore.Qt.AlignCenter) - self.label_name_2.setObjectName(_fromUtf8("label_name_2")) - self.horizontalLayout_60.addWidget(self.label_name_2) - self.ParCurve_name_2 = QtGui.QLineEdit(self.scrollAreaWidgetContents_5) - self.ParCurve_name_2.setObjectName(_fromUtf8("ParCurve_name_2")) - self.horizontalLayout_60.addWidget(self.ParCurve_name_2) - self.gridLayout_76.addLayout(self.horizontalLayout_60, 1, 0, 1, 1) - self.groupBox_15 = QtGui.QGroupBox(self.scrollAreaWidgetContents_5) - self.groupBox_15.setObjectName(_fromUtf8("groupBox_15")) - self.gridLayout_78 = QtGui.QGridLayout(self.groupBox_15) - self.gridLayout_78.setObjectName(_fromUtf8("gridLayout_78")) - self.label_tmin_3 = QtGui.QLabel(self.groupBox_15) - self.label_tmin_3.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_tmin_3.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_tmin_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_tmin_3.setObjectName(_fromUtf8("label_tmin_3")) - self.gridLayout_78.addWidget(self.label_tmin_3, 0, 0, 1, 1) - self.ParCurve_tmin_2 = QtGui.QLineEdit(self.groupBox_15) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_tmin_2.sizePolicy().hasHeightForWidth()) - self.ParCurve_tmin_2.setSizePolicy(sizePolicy) - self.ParCurve_tmin_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_tmin_2.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_tmin_2.setMaxLength(32769) - self.ParCurve_tmin_2.setObjectName(_fromUtf8("ParCurve_tmin_2")) - self.gridLayout_78.addWidget(self.ParCurve_tmin_2, 0, 1, 1, 1) - self.label_tmax_3 = QtGui.QLabel(self.groupBox_15) - self.label_tmax_3.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_tmax_3.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_tmax_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_tmax_3.setObjectName(_fromUtf8("label_tmax_3")) - self.gridLayout_78.addWidget(self.label_tmax_3, 1, 0, 1, 1) - self.ParCurve_tmax_2 = QtGui.QLineEdit(self.groupBox_15) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_tmax_2.sizePolicy().hasHeightForWidth()) - self.ParCurve_tmax_2.setSizePolicy(sizePolicy) - self.ParCurve_tmax_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_tmax_2.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_tmax_2.setMaxLength(32769) - self.ParCurve_tmax_2.setObjectName(_fromUtf8("ParCurve_tmax_2")) - self.gridLayout_78.addWidget(self.ParCurve_tmax_2, 1, 1, 1, 1) - self.label_tstep_3 = QtGui.QLabel(self.groupBox_15) - self.label_tstep_3.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_tstep_3.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_tstep_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_tstep_3.setObjectName(_fromUtf8("label_tstep_3")) - self.gridLayout_78.addWidget(self.label_tstep_3, 2, 0, 1, 1) - self.ParCurve_tstep_2 = QtGui.QLineEdit(self.groupBox_15) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_tstep_2.sizePolicy().hasHeightForWidth()) - self.ParCurve_tstep_2.setSizePolicy(sizePolicy) - self.ParCurve_tstep_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_tstep_2.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_tstep_2.setMaxLength(32769) - self.ParCurve_tstep_2.setObjectName(_fromUtf8("ParCurve_tstep_2")) - self.gridLayout_78.addWidget(self.ParCurve_tstep_2, 2, 1, 1, 1) - self.gridLayout_76.addWidget(self.groupBox_15, 3, 0, 1, 1) - self.groupBox_16 = QtGui.QGroupBox(self.scrollAreaWidgetContents_5) - self.groupBox_16.setObjectName(_fromUtf8("groupBox_16")) - self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_16) - self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) - self.checkBox_points_2 = QtGui.QCheckBox(self.groupBox_16) - self.checkBox_points_2.setAutoExclusive(True) - self.checkBox_points_2.setObjectName(_fromUtf8("checkBox_points_2")) - self.gridLayout_2.addWidget(self.checkBox_points_2, 0, 0, 1, 1) - self.checkBox_polyline_2 = QtGui.QCheckBox(self.groupBox_16) - self.checkBox_polyline_2.setChecked(True) - self.checkBox_polyline_2.setAutoExclusive(True) - self.checkBox_polyline_2.setObjectName(_fromUtf8("checkBox_polyline_2")) - self.gridLayout_2.addWidget(self.checkBox_polyline_2, 0, 1, 1, 1) - self.checkBox_bezier_2 = QtGui.QCheckBox(self.groupBox_16) - self.checkBox_bezier_2.setEnabled(True) - self.checkBox_bezier_2.setChecked(False) - self.checkBox_bezier_2.setAutoExclusive(True) - self.checkBox_bezier_2.setObjectName(_fromUtf8("checkBox_bezier_2")) - self.gridLayout_2.addWidget(self.checkBox_bezier_2, 1, 0, 1, 1) - self.checkBox_bspline_2 = QtGui.QCheckBox(self.groupBox_16) - self.checkBox_bspline_2.setEnabled(True) - self.checkBox_bspline_2.setChecked(False) - self.checkBox_bspline_2.setAutoExclusive(True) - self.checkBox_bspline_2.setObjectName(_fromUtf8("checkBox_bspline_2")) - self.gridLayout_2.addWidget(self.checkBox_bspline_2, 1, 1, 1, 1) - self.gridLayout_76.addWidget(self.groupBox_16, 4, 0, 1, 1) - self.horizontalLayout_62 = QtGui.QHBoxLayout() - self.horizontalLayout_62.setObjectName(_fromUtf8("horizontalLayout_62")) - self.ParCurve_button_store_2 = QtGui.QPushButton(self.scrollAreaWidgetContents_5) - self.ParCurve_button_store_2.setMinimumSize(QtCore.QSize(40, 0)) - 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) - 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)) - self.ParCurve_button_apply_2.setObjectName(_fromUtf8("ParCurve_button_apply_2")) - self.horizontalLayout_62.addWidget(self.ParCurve_button_apply_2) - 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.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.Wire_Tab3_3) - self.scrollArea_5.setWidgetResizable(True) - self.scrollArea_5.setObjectName(_fromUtf8("scrollArea_5")) - self.scrollAreaWidgetContents_6 = QtGui.QWidget() - self.scrollAreaWidgetContents_6.setGeometry(QtCore.QRect(0, 0, 202, 692)) - self.scrollAreaWidgetContents_6.setObjectName(_fromUtf8("scrollAreaWidgetContents_6")) - self.gridLayout_81 = QtGui.QGridLayout(self.scrollAreaWidgetContents_6) - self.gridLayout_81.setObjectName(_fromUtf8("gridLayout_81")) - self.horizontalLayout_63 = QtGui.QHBoxLayout() - self.horizontalLayout_63.setObjectName(_fromUtf8("horizontalLayout_63")) - self.ParCurve_comboBox_3 = QtGui.QComboBox(self.scrollAreaWidgetContents_6) - self.ParCurve_comboBox_3.setObjectName(_fromUtf8("ParCurve_comboBox_3")) - self.horizontalLayout_63.addWidget(self.ParCurve_comboBox_3) - self.ParCurve_button_edit_3 = QtGui.QPushButton(self.scrollAreaWidgetContents_6) - self.ParCurve_button_edit_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_button_edit_3.setMaximumSize(QtCore.QSize(60, 16777215)) - self.ParCurve_button_edit_3.setObjectName(_fromUtf8("ParCurve_button_edit_3")) - self.horizontalLayout_63.addWidget(self.ParCurve_button_edit_3) - self.gridLayout_81.addLayout(self.horizontalLayout_63, 0, 0, 1, 1) - self.horizontalLayout_64 = QtGui.QHBoxLayout() - self.horizontalLayout_64.setObjectName(_fromUtf8("horizontalLayout_64")) - self.label_name_3 = QtGui.QLabel(self.scrollAreaWidgetContents_6) - self.label_name_3.setFrameShape(QtGui.QFrame.Box) - self.label_name_3.setFrameShadow(QtGui.QFrame.Raised) - self.label_name_3.setLineWidth(3) - self.label_name_3.setAlignment(QtCore.Qt.AlignCenter) - self.label_name_3.setObjectName(_fromUtf8("label_name_3")) - self.horizontalLayout_64.addWidget(self.label_name_3) - self.ParCurve_name_3 = QtGui.QLineEdit(self.scrollAreaWidgetContents_6) - self.ParCurve_name_3.setObjectName(_fromUtf8("ParCurve_name_3")) - self.horizontalLayout_64.addWidget(self.ParCurve_name_3) - self.gridLayout_81.addLayout(self.horizontalLayout_64, 1, 0, 1, 1) - self.groupBox_17 = QtGui.QGroupBox(self.scrollAreaWidgetContents_6) - self.groupBox_17.setObjectName(_fromUtf8("groupBox_17")) - self.formLayout_3 = QtGui.QFormLayout(self.groupBox_17) - self.formLayout_3.setObjectName(_fromUtf8("formLayout_3")) - self.label_a_4 = QtGui.QLabel(self.groupBox_17) - self.label_a_4.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_a_4.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_a_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_a_4.setObjectName(_fromUtf8("label_a_4")) - self.formLayout_3.setWidget(0, QtGui.QFormLayout.LabelRole, self.label_a_4) - self.ParCurve_a_3 = QtGui.QLineEdit(self.groupBox_17) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_a_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_a_3.setSizePolicy(sizePolicy) - self.ParCurve_a_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_a_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_a_3.setMaxLength(32769) - self.ParCurve_a_3.setObjectName(_fromUtf8("ParCurve_a_3")) - self.formLayout_3.setWidget(0, QtGui.QFormLayout.FieldRole, self.ParCurve_a_3) - self.label_b_4 = QtGui.QLabel(self.groupBox_17) - self.label_b_4.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_b_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_b_4.setObjectName(_fromUtf8("label_b_4")) - self.formLayout_3.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_b_4) - self.ParCurve_b_3 = QtGui.QLineEdit(self.groupBox_17) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_b_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_b_3.setSizePolicy(sizePolicy) - self.ParCurve_b_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_b_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_b_3.setMaxLength(32769) - self.ParCurve_b_3.setObjectName(_fromUtf8("ParCurve_b_3")) - self.formLayout_3.setWidget(1, QtGui.QFormLayout.FieldRole, self.ParCurve_b_3) - self.label_c_2 = QtGui.QLabel(self.groupBox_17) - self.label_c_2.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_c_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_c_2.setObjectName(_fromUtf8("label_c_2")) - self.formLayout_3.setWidget(2, QtGui.QFormLayout.LabelRole, self.label_c_2) - self.ParCurve_c_3 = QtGui.QLineEdit(self.groupBox_17) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_c_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_c_3.setSizePolicy(sizePolicy) - self.ParCurve_c_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_c_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_c_3.setMaxLength(32769) - self.ParCurve_c_3.setObjectName(_fromUtf8("ParCurve_c_3")) - self.formLayout_3.setWidget(2, QtGui.QFormLayout.FieldRole, self.ParCurve_c_3) - self.label_x_4 = QtGui.QLabel(self.groupBox_17) - self.label_x_4.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_x_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_x_4.setObjectName(_fromUtf8("label_x_4")) - self.formLayout_3.setWidget(3, QtGui.QFormLayout.LabelRole, self.label_x_4) - self.ParCurve_x_3 = QtGui.QLineEdit(self.groupBox_17) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_x_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_x_3.setSizePolicy(sizePolicy) - self.ParCurve_x_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_x_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_x_3.setMaxLength(32769) - self.ParCurve_x_3.setObjectName(_fromUtf8("ParCurve_x_3")) - self.formLayout_3.setWidget(3, QtGui.QFormLayout.FieldRole, self.ParCurve_x_3) - self.label_y_4 = QtGui.QLabel(self.groupBox_17) - self.label_y_4.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_y_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_y_4.setObjectName(_fromUtf8("label_y_4")) - self.formLayout_3.setWidget(4, QtGui.QFormLayout.LabelRole, self.label_y_4) - self.label_z_2 = QtGui.QLabel(self.groupBox_17) - self.label_z_2.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_z_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_z_2.setObjectName(_fromUtf8("label_z_2")) - self.formLayout_3.setWidget(5, QtGui.QFormLayout.LabelRole, self.label_z_2) - self.ParCurve_z_3 = QtGui.QLineEdit(self.groupBox_17) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_z_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_z_3.setSizePolicy(sizePolicy) - self.ParCurve_z_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_z_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_z_3.setMaxLength(32769) - self.ParCurve_z_3.setObjectName(_fromUtf8("ParCurve_z_3")) - self.formLayout_3.setWidget(5, QtGui.QFormLayout.FieldRole, self.ParCurve_z_3) - self.ParCurve_y_3 = QtGui.QLineEdit(self.groupBox_17) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_y_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_y_3.setSizePolicy(sizePolicy) - self.ParCurve_y_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_y_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_y_3.setMaxLength(32769) - self.ParCurve_y_3.setObjectName(_fromUtf8("ParCurve_y_3")) - self.formLayout_3.setWidget(4, QtGui.QFormLayout.FieldRole, self.ParCurve_y_3) - self.gridLayout_81.addWidget(self.groupBox_17, 2, 0, 1, 1) - self.groupBox_18 = QtGui.QGroupBox(self.scrollAreaWidgetContents_6) - self.groupBox_18.setObjectName(_fromUtf8("groupBox_18")) - self.gridLayout_82 = QtGui.QGridLayout(self.groupBox_18) - self.gridLayout_82.setObjectName(_fromUtf8("gridLayout_82")) - self.label_tmin_4 = QtGui.QLabel(self.groupBox_18) - self.label_tmin_4.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_tmin_4.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_tmin_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_tmin_4.setObjectName(_fromUtf8("label_tmin_4")) - self.gridLayout_82.addWidget(self.label_tmin_4, 0, 0, 1, 1) - self.label_tmax_4 = QtGui.QLabel(self.groupBox_18) - self.label_tmax_4.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_tmax_4.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_tmax_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_tmax_4.setObjectName(_fromUtf8("label_tmax_4")) - self.gridLayout_82.addWidget(self.label_tmax_4, 1, 0, 1, 1) - self.ParCurve_tmax_3 = QtGui.QLineEdit(self.groupBox_18) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_tmax_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_tmax_3.setSizePolicy(sizePolicy) - self.ParCurve_tmax_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_tmax_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_tmax_3.setMaxLength(32769) - self.ParCurve_tmax_3.setObjectName(_fromUtf8("ParCurve_tmax_3")) - self.gridLayout_82.addWidget(self.ParCurve_tmax_3, 1, 1, 1, 1) - self.label_tstep_4 = QtGui.QLabel(self.groupBox_18) - self.label_tstep_4.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_tstep_4.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_tstep_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_tstep_4.setObjectName(_fromUtf8("label_tstep_4")) - self.gridLayout_82.addWidget(self.label_tstep_4, 2, 0, 1, 1) - self.ParCurve_tstep_3 = QtGui.QLineEdit(self.groupBox_18) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_tstep_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_tstep_3.setSizePolicy(sizePolicy) - self.ParCurve_tstep_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_tstep_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_tstep_3.setMaxLength(32769) - self.ParCurve_tstep_3.setObjectName(_fromUtf8("ParCurve_tstep_3")) - self.gridLayout_82.addWidget(self.ParCurve_tstep_3, 2, 1, 1, 1) - self.ParCurve_tmin_3 = QtGui.QLineEdit(self.groupBox_18) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_tmin_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_tmin_3.setSizePolicy(sizePolicy) - self.ParCurve_tmin_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_tmin_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_tmin_3.setMaxLength(32769) - self.ParCurve_tmin_3.setObjectName(_fromUtf8("ParCurve_tmin_3")) - self.gridLayout_82.addWidget(self.ParCurve_tmin_3, 0, 1, 1, 1) - self.gridLayout_81.addWidget(self.groupBox_18, 3, 0, 1, 1) - self.checkBox_close_3 = QtGui.QCheckBox(self.scrollAreaWidgetContents_6) - self.checkBox_close_3.setObjectName(_fromUtf8("checkBox_close_3")) - self.gridLayout_81.addWidget(self.checkBox_close_3, 5, 0, 1, 1) - self.horizontalLayout_65 = QtGui.QHBoxLayout() - self.horizontalLayout_65.setObjectName(_fromUtf8("horizontalLayout_65")) - self.ParCurve_button_store_3 = QtGui.QPushButton(self.scrollAreaWidgetContents_6) - self.ParCurve_button_store_3.setMinimumSize(QtCore.QSize(40, 0)) - 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) - 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) - 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) + self.Wire_Tab1_4 = QtGui.QWidget() + self.Wire_Tab1_4.setObjectName(_fromUtf8("Wire_Tab1_4")) + self.gridLayout_3 = QtGui.QGridLayout(self.Wire_Tab1_4) self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) - self.checkBox_points_3 = QtGui.QCheckBox(self.groupBox_19) - self.checkBox_points_3.setAutoExclusive(True) - self.checkBox_points_3.setObjectName(_fromUtf8("checkBox_points_3")) - self.gridLayout_3.addWidget(self.checkBox_points_3, 0, 1, 1, 1) - self.checkBox_polyline_3 = QtGui.QCheckBox(self.groupBox_19) - self.checkBox_polyline_3.setChecked(True) - self.checkBox_polyline_3.setAutoExclusive(True) - self.checkBox_polyline_3.setObjectName(_fromUtf8("checkBox_polyline_3")) - self.gridLayout_3.addWidget(self.checkBox_polyline_3, 0, 2, 1, 1) - self.checkBox_bspline_3 = QtGui.QCheckBox(self.groupBox_19) - self.checkBox_bspline_3.setChecked(False) - self.checkBox_bspline_3.setAutoExclusive(True) - self.checkBox_bspline_3.setObjectName(_fromUtf8("checkBox_bspline_3")) - self.gridLayout_3.addWidget(self.checkBox_bspline_3, 1, 2, 1, 1) - self.checkBox_bezier_3 = QtGui.QCheckBox(self.groupBox_19) - self.checkBox_bezier_3.setEnabled(True) - self.checkBox_bezier_3.setChecked(False) - self.checkBox_bezier_3.setAutoExclusive(True) - self.checkBox_bezier_3.setObjectName(_fromUtf8("checkBox_bezier_3")) - self.gridLayout_3.addWidget(self.checkBox_bezier_3, 1, 1, 1, 1) - 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.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.button_curves_and_surfaces = QtGui.QToolButton(self.Wire_Tab1_4) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_curves_and_surfaces.sizePolicy().hasHeightForWidth()) + self.button_curves_and_surfaces.setSizePolicy(sizePolicy) + self.button_curves_and_surfaces.setObjectName(_fromUtf8("button_curves_and_surfaces")) + self.gridLayout_3.addWidget(self.button_curves_and_surfaces, 0, 0, 1, 1) + spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_3.addItem(spacerItem8, 1, 0, 1, 1) + self.tabWidget_8.addTab(self.Wire_Tab1_4, _fromUtf8("")) + self.gridLayout_74.addWidget(self.tabWidget_8, 0, 0, 1, 1) + icon48 = QtGui.QIcon() + icon48.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_wire.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Wire_Tab, icon48, _fromUtf8("")) self.Circle_Tab = QtGui.QWidget() self.Circle_Tab.setObjectName(_fromUtf8("Circle_Tab")) self.gridLayout = QtGui.QGridLayout(self.Circle_Tab) @@ -1190,9 +777,9 @@ class Ui_Form(object): 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) + icon49 = QtGui.QIcon() + icon49.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineCenterCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_linecenter_circle.setIcon(icon49) 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) @@ -1203,18 +790,18 @@ class Ui_Form(object): 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) + icon50 = QtGui.QIcon() + icon50.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_linepoint_circle.setIcon(icon50) 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) + spacerItem9 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem9, 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) + icon51 = QtGui.QIcon() + icon51.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsEllipse.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_3points_ellipse.setIcon(icon51) 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) @@ -1223,28 +810,28 @@ class Ui_Form(object): 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) + spacerItem10 = QtGui.QSpacerItem(20, 121, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem10, 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) + icon52 = QtGui.QIcon() + icon52.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsArc.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_3points_arc.setIcon(icon52) 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_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_3points_circle.setIcon(icon51) + icon53 = QtGui.QIcon() + icon53.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_3points_circle.setIcon(icon53) 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) + icon54 = QtGui.QIcon() + icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_circle.setIcon(icon54) 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) @@ -1257,9 +844,9 @@ class Ui_Form(object): 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("")) + icon55 = QtGui.QIcon() + icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_circle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Circle_Tab, icon55, _fromUtf8("")) self.Plane_Tab = QtGui.QWidget() self.Plane_Tab.setObjectName(_fromUtf8("Plane_Tab")) self.gridLayout_17 = QtGui.QGridLayout(self.Plane_Tab) @@ -1271,46 +858,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) - icon54 = QtGui.QIcon() - icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_threepoints_plane.setIcon(icon54) + icon56 = QtGui.QIcon() + icon56.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_threepoints_plane.setIcon(icon56) 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) - icon55 = QtGui.QIcon() - icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoPointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_twopoints_plane.setIcon(icon55) + icon57 = QtGui.QIcon() + icon57.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoPointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twopoints_plane.setIcon(icon57) 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) - icon56 = QtGui.QIcon() - icon56.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_Npoints_plane.setIcon(icon56) + icon58 = QtGui.QIcon() + icon58.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_Npoints_plane.setIcon(icon58) 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) - icon57 = QtGui.QIcon() - icon57.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_axisandpoint_plane.setIcon(icon57) + icon59 = QtGui.QIcon() + icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_axisandpoint_plane.setIcon(icon59) 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) - 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) + icon60 = QtGui.QIcon() + icon60.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane2.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_axis_point_plane.setIcon(icon60) 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) - icon59 = QtGui.QIcon() - icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_planeandpoint_plane.setIcon(icon59) + icon61 = QtGui.QIcon() + icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_planeandpoint_plane.setIcon(icon61) 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) @@ -1328,9 +915,9 @@ class Ui_Form(object): sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_planeandaxis_plane.sizePolicy().hasHeightForWidth()) self.button_planeandaxis_plane.setSizePolicy(sizePolicy) - icon60 = QtGui.QIcon() - icon60.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_planeandaxis_plane.setIcon(icon60) + icon62 = QtGui.QIcon() + icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_planeandaxis_plane.setIcon(icon62) 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) @@ -1348,9 +935,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) - icon61 = QtGui.QIcon() - icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_distPlane.setIcon(icon61) + icon63 = QtGui.QIcon() + icon63.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distPlane.setIcon(icon63) self.button_distPlane.setIconSize(QtCore.QSize(32, 32)) self.button_distPlane.setObjectName(_fromUtf8("button_distPlane")) self.horizontalLayout_70.addWidget(self.button_distPlane) @@ -1384,9 +971,9 @@ class Ui_Form(object): sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_face_tangent.sizePolicy().hasHeightForWidth()) self.button_face_tangent.setSizePolicy(sizePolicy) - icon62 = QtGui.QIcon() - icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_face_tangent.setIcon(icon62) + icon64 = QtGui.QIcon() + icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_tangent.setIcon(icon64) 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) @@ -1411,8 +998,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) - spacerItem14 = QtGui.QSpacerItem(20, 235, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_18.addItem(spacerItem14, 9, 0, 1, 1) + spacerItem11 = QtGui.QSpacerItem(20, 235, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_18.addItem(spacerItem11, 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")) @@ -1426,9 +1013,9 @@ class Ui_Form(object): sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_click_for_plane.sizePolicy().hasHeightForWidth()) self.button_click_for_plane.setSizePolicy(sizePolicy) - 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) + icon65 = QtGui.QIcon() + icon65.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_click_for_plane.setIcon(icon65) 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) @@ -1461,9 +1048,9 @@ class Ui_Form(object): sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_extension_plane.sizePolicy().hasHeightForWidth()) self.button_extension_plane.setSizePolicy(sizePolicy) - icon64 = QtGui.QIcon() - icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_extension_plane.setIcon(icon64) + icon66 = QtGui.QIcon() + icon66.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_extension_plane.setIcon(icon66) 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) @@ -1479,19 +1066,19 @@ 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) - 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) + icon67 = QtGui.QIcon() + icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPlanes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_center_planes.setIcon(icon67) 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) - spacerItem15 = QtGui.QSpacerItem(20, 527, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_36.addItem(spacerItem15, 3, 0, 1, 1) + spacerItem12 = QtGui.QSpacerItem(20, 527, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_36.addItem(spacerItem12, 3, 0, 1, 1) self.tabWidget_3.addTab(self.Plane_Tab2_2, _fromUtf8("")) self.gridLayout_17.addWidget(self.tabWidget_3, 0, 0, 1, 1) - 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("")) + icon68 = QtGui.QIcon() + icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_plane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Plane_Tab, icon68, _fromUtf8("")) self.Sweep_Tab = QtGui.QWidget() self.Sweep_Tab.setObjectName(_fromUtf8("Sweep_Tab")) self.gridLayout_6 = QtGui.QGridLayout(self.Sweep_Tab) @@ -1528,23 +1115,30 @@ 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) - icon67 = QtGui.QIcon() - icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Sweep.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_sweep.setIcon(icon67) + icon69 = QtGui.QIcon() + icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Sweep.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_sweep.setIcon(icon69) 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) - spacerItem16 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_6.addItem(spacerItem16, 2, 0, 1, 1) + spacerItem13 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_6.addItem(spacerItem13, 3, 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) + icon70 = QtGui.QIcon() + icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_beam.setIcon(icon70) 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.Sweep_Tab, icon68, _fromUtf8("")) + self.button_beam_cut_miter = QtGui.QPushButton(self.Sweep_Tab) + icon71 = QtGui.QIcon() + icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_BeamMiterCut.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_beam_cut_miter.setIcon(icon71) + self.button_beam_cut_miter.setIconSize(QtCore.QSize(32, 32)) + self.button_beam_cut_miter.setObjectName(_fromUtf8("button_beam_cut_miter")) + self.gridLayout_6.addWidget(self.button_beam_cut_miter, 2, 0, 1, 1) + self.tabWidget_7.addTab(self.Sweep_Tab, icon70, _fromUtf8("")) self.Objects_Tab2_2 = QtGui.QWidget() self.Objects_Tab2_2.setEnabled(True) self.Objects_Tab2_2.setMinimumSize(QtCore.QSize(0, 0)) @@ -1557,17 +1151,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)) - icon69 = QtGui.QIcon() - icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_boundingboxes.setIcon(icon69) + icon72 = QtGui.QIcon() + icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_boundingboxes.setIcon(icon72) 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)) - icon70 = QtGui.QIcon() - icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_boundingbox.setIcon(icon70) + icon73 = QtGui.QIcon() + icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_boundingbox.setIcon(icon73) self.button_boundingbox.setIconSize(QtCore.QSize(32, 32)) self.button_boundingbox.setObjectName(_fromUtf8("button_boundingbox")) self.verticalLayout_4.addWidget(self.button_boundingbox) @@ -1588,9 +1182,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) - icon71 = QtGui.QIcon() - icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinder.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cylinder_create.setIcon(icon71) + icon74 = QtGui.QIcon() + icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinder.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cylinder_create.setIcon(icon74) 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) @@ -1618,9 +1212,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) - icon72 = QtGui.QIcon() - icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cube.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cube_create.setIcon(icon72) + icon75 = QtGui.QIcon() + icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cube.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cube_create.setIcon(icon75) 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) @@ -1648,9 +1242,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) - icon73 = QtGui.QIcon() - icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_sphere.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_sphere_create.setIcon(icon73) + icon76 = QtGui.QIcon() + icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_sphere.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_sphere_create.setIcon(icon76) 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) @@ -1668,9 +1262,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) - icon74 = QtGui.QIcon() - icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_dome.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_dome_create.setIcon(icon74) + icon77 = QtGui.QIcon() + icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_dome.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_dome_create.setIcon(icon77) 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) @@ -1697,9 +1291,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) - icon75 = QtGui.QIcon() - icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointText.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_letter.setIcon(icon75) + icon78 = QtGui.QIcon() + icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointText.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_letter.setIcon(icon78) self.button_letter.setIconSize(QtCore.QSize(32, 32)) self.button_letter.setObjectName(_fromUtf8("button_letter")) self.horizontalLayout_75.addWidget(self.button_letter) @@ -1721,9 +1315,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) - icon76 = QtGui.QIcon() - icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Revolve.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_revolve.setIcon(icon76) + icon79 = QtGui.QIcon() + icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Revolve.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_revolve.setIcon(icon79) self.button_revolve.setIconSize(QtCore.QSize(32, 32)) self.button_revolve.setObjectName(_fromUtf8("button_revolve")) self.horizontalLayout_76.addWidget(self.button_revolve) @@ -1739,41 +1333,61 @@ 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) - icon77 = QtGui.QIcon() - icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCopy.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_copy_objects.setIcon(icon77) + icon80 = QtGui.QIcon() + icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCopy.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_copy_objects.setIcon(icon80) 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) - icon78 = QtGui.QIcon() - icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_common.setIcon(icon78) + icon81 = QtGui.QIcon() + icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_common.setIcon(icon81) 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) - icon79 = QtGui.QIcon() - icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_difference.setIcon(icon79) + icon82 = QtGui.QIcon() + icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_difference.setIcon(icon82) 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) - 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("")) + spacerItem14 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_5.addItem(spacerItem14, 11, 0, 1, 1) + icon83 = QtGui.QIcon() + icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Objects_Tab2_2, icon83, _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_3 = QtGui.QHBoxLayout() + self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) + self.button_rotate_image = QtGui.QPushButton(self.tab_2) + self.button_rotate_image.setObjectName(_fromUtf8("button_rotate_image")) + self.horizontalLayout_3.addWidget(self.button_rotate_image) + self.Image_comboBox_axis_rotate = 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_rotate.sizePolicy().hasHeightForWidth()) + self.Image_comboBox_axis_rotate.setSizePolicy(sizePolicy) + self.Image_comboBox_axis_rotate.setMinimumSize(QtCore.QSize(40, 0)) + self.Image_comboBox_axis_rotate.setMaximumSize(QtCore.QSize(60, 16777215)) + self.Image_comboBox_axis_rotate.setLayoutDirection(QtCore.Qt.LeftToRight) + self.Image_comboBox_axis_rotate.setObjectName(_fromUtf8("Image_comboBox_axis_rotate")) + self.Image_comboBox_axis_rotate.addItem(_fromUtf8("")) + self.Image_comboBox_axis_rotate.addItem(_fromUtf8("")) + self.Image_comboBox_axis_rotate.addItem(_fromUtf8("")) + self.horizontalLayout_3.addWidget(self.Image_comboBox_axis_rotate) + self.gridLayout_8.addLayout(self.horizontalLayout_3, 0, 0, 1, 1) 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) + icon84 = QtGui.QIcon() + icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_ImageScale.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_scale_image.setIcon(icon84) 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) @@ -1804,9 +1418,9 @@ class Ui_Form(object): 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.gridLayout_8.addLayout(self.horizontalLayout_4, 1, 0, 1, 1) + spacerItem15 = QtGui.QSpacerItem(20, 650, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_8.addItem(spacerItem15, 2, 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")) @@ -1825,9 +1439,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)) - icon82 = QtGui.QIcon() - icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_alignface2view.setIcon(icon82) + icon85 = QtGui.QIcon() + icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignface2view.setIcon(icon85) 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) @@ -1835,9 +1449,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)) - icon83 = QtGui.QIcon() - icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_align_faces.setIcon(icon83) + icon86 = QtGui.QIcon() + icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_faces.setIcon(icon86) 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) @@ -1856,9 +1470,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)) - icon84 = QtGui.QIcon() - icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_align_edges.setIcon(icon84) + icon87 = QtGui.QIcon() + icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_edges.setIcon(icon87) 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) @@ -1876,9 +1490,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) - 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) + icon88 = QtGui.QIcon() + icon88.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignMainAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_main_axis.setIcon(icon88) 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) @@ -1894,21 +1508,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) - icon86 = QtGui.QIcon() - icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_joint_points.setIcon(icon86) + icon89 = QtGui.QIcon() + icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_points.setIcon(icon89) 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) - icon87 = QtGui.QIcon() - icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_joint_faces.setIcon(icon87) + icon90 = QtGui.QIcon() + icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_faces.setIcon(icon90) 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) - spacerItem19 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_9.addItem(spacerItem19, 6, 0, 1, 1) + spacerItem16 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_9.addItem(spacerItem16, 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")) @@ -2018,8 +1632,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) - spacerItem20 = QtGui.QSpacerItem(18, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_80.addItem(spacerItem20) + spacerItem17 = QtGui.QSpacerItem(18, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_80.addItem(spacerItem17) self.button_cut_apply = QtGui.QPushButton(self.groupBox_20) self.button_cut_apply.setEnabled(False) self.button_cut_apply.setMaximumSize(QtCore.QSize(50, 16777215)) @@ -2030,8 +1644,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) - spacerItem21 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_96.addItem(spacerItem21, 1, 0, 1, 1) + spacerItem18 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_96.addItem(spacerItem18, 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")) @@ -2075,9 +1689,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) - 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("")) + icon91 = QtGui.QIcon() + icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_18, icon91, _fromUtf8("")) self.tab_19 = QtGui.QWidget() self.tab_19.setObjectName(_fromUtf8("tab_19")) self.gridLayout_106 = QtGui.QGridLayout(self.tab_19) @@ -2104,9 +1718,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) - 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("")) + icon92 = QtGui.QIcon() + icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_19, icon92, _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)) @@ -2142,9 +1756,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) - 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("")) + icon93 = QtGui.QIcon() + icon93.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_11.addTab(self.tab_21, icon93, _fromUtf8("")) self.gridLayout_107.addWidget(self.tabWidget_11, 0, 0, 1, 1) self.horizontalLayout_81 = QtGui.QHBoxLayout() self.horizontalLayout_81.setObjectName(_fromUtf8("horizontalLayout_81")) @@ -2172,8 +1786,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) - spacerItem22 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_82.addItem(spacerItem22) + spacerItem19 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_82.addItem(spacerItem19) 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)) @@ -2181,14 +1795,19 @@ 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) - spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_103.addItem(spacerItem23, 1, 0, 1, 1) + spacerItem20 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_103.addItem(spacerItem20, 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")) - self.gridLayout_110 = QtGui.QGridLayout(self.translate_tab_2) - self.gridLayout_110.setObjectName(_fromUtf8("gridLayout_110")) + self.gridLayout_60 = QtGui.QGridLayout(self.translate_tab_2) + self.gridLayout_60.setObjectName(_fromUtf8("gridLayout_60")) self.frame_12 = QtGui.QFrame(self.translate_tab_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.frame_12.sizePolicy().hasHeightForWidth()) + self.frame_12.setSizePolicy(sizePolicy) self.frame_12.setMaximumSize(QtCore.QSize(220, 16777215)) self.frame_12.setFrameShape(QtGui.QFrame.StyledPanel) self.frame_12.setFrameShadow(QtGui.QFrame.Raised) @@ -2225,6 +1844,11 @@ class Ui_Form(object): self.gridLayout_112 = QtGui.QGridLayout(self.tab_22) self.gridLayout_112.setObjectName(_fromUtf8("gridLayout_112")) self.groupBox_22 = QtGui.QGroupBox(self.tab_22) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.groupBox_22.sizePolicy().hasHeightForWidth()) + self.groupBox_22.setSizePolicy(sizePolicy) self.groupBox_22.setMinimumSize(QtCore.QSize(150, 0)) self.groupBox_22.setFlat(False) self.groupBox_22.setObjectName(_fromUtf8("groupBox_22")) @@ -2293,9 +1917,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) - 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("")) + icon94 = QtGui.QIcon() + icon94.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_22, icon94, _fromUtf8("")) self.tab_23 = QtGui.QWidget() self.tab_23.setObjectName(_fromUtf8("tab_23")) self.gridLayout_118 = QtGui.QGridLayout(self.tab_23) @@ -2370,9 +1994,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) - 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("")) + icon95 = QtGui.QIcon() + icon95.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_23, icon95, _fromUtf8("")) self.gridLayout_111.addWidget(self.tabWidget_12, 2, 0, 1, 1) self.horizontalLayout_84 = QtGui.QHBoxLayout() self.horizontalLayout_84.setObjectName(_fromUtf8("horizontalLayout_84")) @@ -2381,17 +2005,17 @@ 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) - spacerItem24 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_84.addItem(spacerItem24) + spacerItem21 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_84.addItem(spacerItem21) 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)) self.ObjTrans_button_apply.setObjectName(_fromUtf8("ObjTrans_button_apply")) 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) - spacerItem25 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_110.addItem(spacerItem25, 1, 0, 1, 1) + self.gridLayout_60.addWidget(self.frame_12, 0, 0, 1, 1) + spacerItem22 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_60.addItem(spacerItem22, 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("")) @@ -2406,103 +2030,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)) - icon93 = QtGui.QIcon() - icon93.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_alignview.setIcon(icon93) + icon96 = QtGui.QIcon() + icon96.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignview.setIcon(icon96) 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) - spacerItem26 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_124.addItem(spacerItem26, 2, 0, 1, 1) + spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_124.addItem(spacerItem23, 2, 0, 1, 1) self.button_trackcamera = QtGui.QPushButton(self.View_Tab_2) - icon94 = QtGui.QIcon() - icon94.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_trackcamera.setIcon(icon94) + icon97 = QtGui.QIcon() + icon97.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_trackcamera.setIcon(icon97) 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) - 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("")) + icon98 = QtGui.QIcon() + icon98.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.View_Tab_2, icon98, _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) - icon96 = QtGui.QIcon() - icon96.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isView.setIcon(icon96) + icon99 = QtGui.QIcon() + icon99.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isView.setIcon(icon99) 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) - spacerItem27 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_125.addItem(spacerItem27, 10, 0, 1, 1) + spacerItem24 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_125.addItem(spacerItem24, 10, 0, 1, 1) self.button_isParallel = QtGui.QPushButton(self.tab_24) - icon97 = QtGui.QIcon() - icon97.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isParallel.setIcon(icon97) + icon100 = QtGui.QIcon() + icon100.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isParallel.setIcon(icon100) 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) - icon98 = QtGui.QIcon() - icon98.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isAngle.setIcon(icon98) + icon101 = QtGui.QIcon() + icon101.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isAngle.setIcon(icon101) 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) - icon99 = QtGui.QIcon() - icon99.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isLength.setIcon(icon99) + icon102 = QtGui.QIcon() + icon102.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isLength.setIcon(icon102) 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) - icon100 = QtGui.QIcon() - icon100.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isDistance.setIcon(icon100) + icon103 = QtGui.QIcon() + icon103.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isDistance.setIcon(icon103) 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) - icon101 = QtGui.QIcon() - icon101.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isCoplanar.setIcon(icon101) + icon104 = QtGui.QIcon() + icon104.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isCoplanar.setIcon(icon104) 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) - icon102 = QtGui.QIcon() - icon102.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isArea.setIcon(icon102) + icon105 = QtGui.QIcon() + icon105.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isArea.setIcon(icon105) 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) - icon103 = QtGui.QIcon() - icon103.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isPerpendicular.setIcon(icon103) + icon106 = QtGui.QIcon() + icon106.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isPerpendicular.setIcon(icon106) 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) - icon104 = QtGui.QIcon() - icon104.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isClearance.setIcon(icon104) + icon107 = QtGui.QIcon() + icon107.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isClearance.setIcon(icon107) 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) - icon105 = QtGui.QIcon() - icon105.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isRadius.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isRadius.setIcon(icon105) + icon108 = QtGui.QIcon() + icon108.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isRadius.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isRadius.setIcon(icon108) 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) - 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("")) + icon109 = QtGui.QIcon() + icon109.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.tab_24, icon109, _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) @@ -2511,23 +2135,24 @@ 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) - spacerItem28 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_43.addItem(spacerItem28) + spacerItem25 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_43.addItem(spacerItem25) 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(6) - self.tabWidget.setCurrentIndex(0) - self.tabWidget_2.setCurrentIndex(0) + self.tabWidget_7.setCurrentIndex(0) + self.tabWidget.setCurrentIndex(2) + self.tabWidget_2.setCurrentIndex(2) self.point_loc_comboBox.setCurrentIndex(1) self.tabWidget_8.setCurrentIndex(0) - self.tabWidget_3.setCurrentIndex(1) + self.tabWidget_3.setCurrentIndex(0) self.transition_comboBox.setCurrentIndex(2) + self.Image_comboBox_axis_rotate.setCurrentIndex(0) self.Image_comboBox_axis_scale.setCurrentIndex(0) - self.tabWidget_9.setCurrentIndex(0) + self.tabWidget_9.setCurrentIndex(2) self.tabWidget_10.setCurrentIndex(0) self.ObjRot_comboBox_axis.setCurrentIndex(0) self.ObjRot_comboBox_center.setCurrentIndex(2) @@ -2677,8 +2302,17 @@ class Ui_Form(object): 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)) - self.button_twolines_point.setToolTip(_translate("Form", "Plot one or two Point(s) at minimum distance of two Lines\n" -"Create a Point at intersection of 2 crossing Lines.", None)) + self.button_twolines_point.setToolTip(_translate("Form", "Point(s)=(Line(s),Line(s)):\n" +"Plot one or two Point(s) at minimum distance of two Lines\n" +"Create a unique Point at intersection of 2 crossing Lines.\n" +"\n" +"First\n" +" - Select two or more Line/Edge(s) and\n" +" - Then Click on the button\n" +" \n" +"Plot the point A on the first Line given and the point B on the second Line.\n" +"The Vector AB perpendicular to the first and second Line.\n" +" ", None)) self.button_twolines_point.setText(_translate("Form", "Point=(Line,Line) ", None)) self.button_point_on_line.setToolTip(_translate("Form", "Create a Point at a certain distance along the line \n" "respecting to the choosen reference starting point.", None)) @@ -2758,6 +2392,11 @@ class Ui_Form(object): " if you select an Object : many points will be saved.\n" "- Then click on this button.", None)) self.button_points_save.setText(_translate("Form", "Save Points", None)) + self.button_points_random.setToolTip(_translate("Form", "

Create random Point(s).

Define first the number of points to create and the coordinates limits.

- Then push the button,

or

- Select first one point to the center desired location;

- Then push the button.

", None)) + self.button_points_random.setText(_translate("Form", "Random Points", None)) + self.spin_random_points.setToolTip(_translate("Form", "

The number indicates in how many point(s) will be generated (Max 100).

", None)) + self.distance_random_points.setToolTip(_translate("Form", "

If set to 10.0 return random floats coordinates in the half-open interval [-10.0, 10.0).

", None)) + self.distance_random_points.setText(_translate("Form", "10.0", None)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.Point_Tab3_3), _translate("Form", "Point 3/3", None)) self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Point_Tab), _translate("Form", "Point", None)) self.tabWidget_7.setTabToolTip(self.tabWidget_7.indexOf(self.Point_Tab), _translate("Form", "Create Point(s)", None)) @@ -2840,6 +2479,30 @@ class Ui_Form(object): "-Select two Axes.", None)) self.button_twolines_axis.setText(_translate("Form", "Axis=(Line,Line)", None)) self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.Axis_Tab1_3), _translate("Form", "Axis 1/3", None)) + self.button_object_base_axes.setToolTip(_translate("Form", "Create 3 Axes at Base location of all selected Object(s).", None)) + self.button_object_base_axes.setText(_translate("Form", "Object(s) Base Axes", None)) + self.button_object_Naxes.setToolTip(_translate("Form", "Create a set of axes from selected Objetcs:\n" +"- Select object(s)\n" +" to create axes from these object(s) !\n" +" if you select a Plane : 4 axes will be created;\n" +" if you select an Object : many axes will be created.\n" +"- Then click on this button.", None)) + self.button_object_Naxes.setText(_translate("Form", "Object(s) N Axes(s)", None)) + self.button_line_to_sketch.setToolTip(_translate("Form", "Transform Line(s) in Sketch\'s Line(s) by projection onto the Sketch\'s Plane:\n" +"- First select an existing Skecth;\n" +"- Select as much as Lines needed;\n" +"Then click on this button.", None)) + self.button_line_to_sketch.setText(_translate("Form", "Axis(es) to Sketch", None)) + self.button_object_3axes.setToolTip(_translate("Form", "Create a set of 2 or 3 main axes from selected Objetcs:\n" +"The most representative axes will be selected from all axis.\n" +"The length of main axes will be the cumulative length of all axes with the same direction.\n" +"- Select object(s)\n" +" to create axes from these object(s) !\n" +" if you select a Plane : 2 axes will be created;\n" +" if you select an Object : 3 axes will be created.\n" +"- Then click on this button.", None)) + self.button_object_3axes.setText(_translate("Form", "Object(s) 3 Axes(s)", None)) + self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.Axis_Tab31_3), _translate("Form", "Axis 3/3", None)) self.button_plane_point_line_axis.setToolTip(_translate("Form", "Create an Axis Perpendicular to an Axis, crossing a Point and Parallel to a Plane.\n" "-Select one Plane, one Axis and one Point ON the previous Axis.", None)) self.button_plane_point_line_axis.setText(_translate("Form", "Axis=(Plane,Point,Axis)", None)) @@ -2945,115 +2608,17 @@ class Ui_Form(object): "MB2 and MB3 can still be used for view zoom and view rotation.", None)) self.button_click_for_axis.setText(_translate("Form", "Click", None)) self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.Axis_Tab2_3), _translate("Form", "Axis 2/3", None)) - self.button_object_base_axes.setToolTip(_translate("Form", "Create 3 Axes at Base location of all selected Object(s).", None)) - self.button_object_base_axes.setText(_translate("Form", "Object(s) Base Axes", None)) - self.button_object_Naxes.setToolTip(_translate("Form", "Create a set of axes from selected Objetcs:\n" -"- Select object(s)\n" -" to create axes from these object(s) !\n" -" if you select a Plane : 4 axes will be created;\n" -" if you select an Object : many axes will be created.\n" -"- Then click on this button.", None)) - self.button_object_Naxes.setText(_translate("Form", "Object(s) N Axes(s)", None)) - self.button_object_3axes.setToolTip(_translate("Form", "Create a set of 2 or 3 main axes from selected Objetcs:\n" -"The most representative axes will be selected from all axis.\n" -"The length of main axes will be the cumulative length of all axes with the same direction.\n" -"- Select object(s)\n" -" to create axes from these object(s) !\n" -" if you select a Plane : 2 axes will be created;\n" -" if you select an Object : 3 axes will be created.\n" -"- Then click on this button.", None)) - self.button_object_3axes.setText(_translate("Form", "Object(s) 3 Axes(s)", None)) - self.button_line_to_sketch.setToolTip(_translate("Form", "Transform Line(s) in Sketch\'s Line(s) by projection onto the Sketch\'s Plane:\n" -"- First select an existing Skecth;\n" -"- Select as much as Lines needed;\n" -"Then click on this button.", None)) - 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.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.button_points_to_polygon.setToolTip(_translate("Form", "

Wire=(N Points):

Create a Polygon (wire) from a set of points.

- First select several Points (at least 2);

- Then push this button


", None)) + self.button_points_to_polygon.setText(_translate("Form", "Make Wire", 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)) - self.label_b_3.setText(_translate("Form", "b (a, t) ", None)) - self.ParCurve_y_2.setText(_translate("Form", "b*sin(t)", None)) - self.checkBox_polar_2.setToolTip(_translate("Form", "Toggle for Polar coordinates:\n" -"then x is interpreted as radius\n" -" and y is interpreted as angle teta.", None)) - self.checkBox_polar_2.setText(_translate("Form", " Polar coord.", None)) - self.label_x_3.setText(_translate("Form", "X (a,b,t) ", None)) - self.ParCurve_x_2.setText(_translate("Form", "a*cos(t)", None)) - self.label_a_3.setText(_translate("Form", "a (t) ", None)) - self.ParCurve_b_2.setText(_translate("Form", "a", None)) - self.ParCurve_comboBox_2.setToolTip(_translate("Form", "Choose another curve from the list.", None)) - self.ParCurve_button_edit_2.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)) - self.ParCurve_button_edit_2.setText(_translate("Form", "Edit", None)) - self.checkBox_close_2.setText(_translate("Form", "Closed curve", None)) - self.checkBox_face_2.setText(_translate("Form", "Create Face", None)) - self.label_name_2.setText(_translate("Form", "Name", None)) - self.ParCurve_name_2.setText(_translate("Form", "Circle", None)) - self.groupBox_15.setTitle(_translate("Form", "Parameter :", None)) - self.label_tmin_3.setText(_translate("Form", "t min", None)) - self.ParCurve_tmin_2.setText(_translate("Form", "0", None)) - self.label_tmax_3.setText(_translate("Form", "t max", None)) - self.ParCurve_tmax_2.setText(_translate("Form", "2*pi", None)) - self.label_tstep_3.setText(_translate("Form", "step", None)) - self.ParCurve_tstep_2.setText(_translate("Form", "0.01", None)) - self.groupBox_16.setTitle(_translate("Form", "Type of 2D Curve :", None)) - self.checkBox_points_2.setText(_translate("Form", "Points", None)) - self.checkBox_polyline_2.setText(_translate("Form", "Polyline", None)) - self.checkBox_bezier_2.setText(_translate("Form", "Bezier", None)) - self.checkBox_bspline_2.setText(_translate("Form", "Bspline", None)) - self.ParCurve_button_store_2.setToolTip(_translate("Form", "Click to store the current edited curve into the table.\n" -"To save your curve you need to go to \"Edit\".", None)) - 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.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)) - self.ParCurve_button_edit_3.setText(_translate("Form", "Edit", None)) - self.label_name_3.setText(_translate("Form", "Name", None)) - self.ParCurve_name_3.setText(_translate("Form", "Cylindrical helix", None)) - self.groupBox_17.setTitle(_translate("Form", "Equation :", None)) - self.label_a_4.setText(_translate("Form", "a (t) ", None)) - self.ParCurve_a_3.setText(_translate("Form", "10*0.05 #Vert. step", None)) - self.label_b_4.setText(_translate("Form", "b (a, t) ", None)) - self.ParCurve_b_3.setText(_translate("Form", "1", None)) - self.label_c_2.setText(_translate("Form", "c (a, b, t) ", None)) - self.ParCurve_c_3.setText(_translate("Form", "10 # Radius", None)) - self.label_x_4.setText(_translate("Form", "X (a,b,c,t) ", None)) - self.ParCurve_x_3.setText(_translate("Form", "c*sin(t)", None)) - self.label_y_4.setText(_translate("Form", "Y (a,b,c,t) ", None)) - self.label_z_2.setText(_translate("Form", "Z (a,b,c,t) ", None)) - self.ParCurve_z_3.setText(_translate("Form", "a*t", None)) - self.ParCurve_y_3.setText(_translate("Form", "c*cos(t)", None)) - self.groupBox_18.setTitle(_translate("Form", "Parameter :", None)) - self.label_tmin_4.setText(_translate("Form", "t min", None)) - self.label_tmax_4.setText(_translate("Form", "t max", None)) - self.ParCurve_tmax_3.setText(_translate("Form", "5*2*pi #5 circles", None)) - self.label_tstep_4.setText(_translate("Form", "step", None)) - self.ParCurve_tstep_3.setText(_translate("Form", "0.01", None)) - self.ParCurve_tmin_3.setText(_translate("Form", "0", None)) - self.checkBox_close_3.setText(_translate("Form", "Closed curve", None)) - self.ParCurve_button_store_3.setToolTip(_translate("Form", "Click to store the current edited curve into the table.\n" -"To save your curve you need to go to \"Edit\".", None)) - self.ParCurve_button_store_3.setText(_translate("Form", "Store", None)) - self.ParCurve_button_apply_3.setToolTip(_translate("Form", "Click to visualize the curve.", None)) - self.ParCurve_button_apply_3.setText(_translate("Form", "Apply", None)) - self.groupBox_19.setTitle(_translate("Form", "Type of 3D Curve :", None)) - self.checkBox_points_3.setText(_translate("Form", "Points", None)) - 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.Wire_Tab3_3), _translate("Form", "Parametric 3D", None)) + self.button_curves_and_surfaces.setText(_translate("Form", "Launch Curves and Surfaces Menu...", None)) + self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.Wire_Tab1_4), _translate("Form", "Curves And Surfaces", 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" @@ -3251,6 +2816,7 @@ class Ui_Form(object): "- Then push this button\n" "", None)) self.button_beam.setText(_translate("Form", "Beam", None)) + self.button_beam_cut_miter.setText(_translate("Form", "Beam Cut Miter", 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)) @@ -3366,6 +2932,10 @@ 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_rotate_image.setText(_translate("Form", "Rotate", None)) + self.Image_comboBox_axis_rotate.setItemText(0, _translate("Form", "X", None)) + self.Image_comboBox_axis_rotate.setItemText(1, _translate("Form", "Y", None)) + self.Image_comboBox_axis_rotate.setItemText(2, _translate("Form", "Z", 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" diff --git a/WorkFeature/Ui/WFGui_2015.ui b/WorkFeature/Ui/WFGui_2015.ui index 197c35b..33966ed 100644 --- a/WorkFeature/Ui/WFGui_2015.ui +++ b/WorkFeature/Ui/WFGui_2015.ui @@ -6,8 +6,8 @@ 0 0 - 382 - 845 + 396 + 610
@@ -41,23 +41,17 @@ 0 0 365 - 773 + 593 - - - 0 - 0 - - QTabWidget::West - 8 + 0 @@ -231,7 +225,7 @@ - 0 + 2 @@ -577,8 +571,17 @@ Be aware that if the plane is not extended enough the intersection Point is stil - Plot one or two Point(s) at minimum distance of two Lines -Create a Point at intersection of 2 crossing Lines. + Point(s)=(Line(s),Line(s)): +Plot one or two Point(s) at minimum distance of two Lines +Create a unique Point at intersection of 2 crossing Lines. + +First + - Select two or more Line/Edge(s) and + - Then Click on the button + +Plot the point A on the first Line given and the point B on the second Line. +The Vector AB perpendicular to the first and second Line. + Point=(Line,Line) @@ -967,7 +970,7 @@ Then click on this button. Point 3/3 - + @@ -1023,6 +1026,101 @@ One (x, y, z) triplet per line seperated by blank. + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + <html><head/><body><p>Create random Point(s).</p><p>Define first the number of points to create and the coordinates limits.</p><p>- Then push the button, </p><p>or</p><p>- Select first one point to the center desired location;</p><p>- Then push the button.</p></body></html> + + + Random Points + + + + ../Icons/WF_pointsRandom.svg../Icons/WF_pointsRandom.svg + + + + 32 + 32 + + + + + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + <html><head/><body><p>The number indicates in how many point(s) will be generated (Max 100).</p></body></html> + + + 1 + + + 100 + + + 1 + + + 1 + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + + 60 + 16777215 + + + + <html><head/><body><p>If set to 10.0 return random floats coordinates in the half-open interval [-10.0, 10.0).</p></body></html> + + + 10.0 + + + + + + Qt::Vertical @@ -1053,7 +1151,7 @@ One (x, y, z) triplet per line seperated by blank. - 0 + 2 @@ -1508,6 +1606,121 @@ For "Cylinder Axis", "Planes Axes" and "Face Normal&quo + + + 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 + + + + + + + + Qt::Vertical + + + + 20 + 483 + + + + + + + + Transform Line(s) in Sketch's Line(s) by projection onto the Sketch's Plane: +- First select an existing Skecth; +- Select as much as Lines needed; +Then click on this button. + + + Axis(es) to Sketch + + + + ../Icons/WF_2Sketch.svg../Icons/WF_2Sketch.svg + + + + 32 + 32 + + + + + + + + Create 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 + + + + + + Axis 2/3 @@ -2036,121 +2249,6 @@ MB2 and MB3 can still be used for view zoom and view rotation. - - - 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: -- First select an existing Skecth; -- Select as much as Lines needed; -Then click on this button. - - - Axis(es) to Sketch - - - - ../Icons/WF_2Sketch.svg../Icons/WF_2Sketch.svg - - - - 32 - 32 - - - - - - - - Qt::Vertical - - - - 20 - 483 - - - - - - @@ -2165,19 +2263,9 @@ Then click on this button. - - - Examples from http://www.mathcurve.com/ - - - true - - - - - + 0 0 @@ -2227,1283 +2315,57 @@ Create a Wire (Bezier Cubic) from 4 selected points. - + - Projects Wires on a Plane: - -- First select an existing Face/Plane or 3 Points -- Second one or several Wires -- Then push this button + <html><head/><body><p>Wire=(N Points):</p><p>Create a Polygon (wire) from a set of points.</p><p>- First select several Points (at least 2);</p><p>- Then push this button</p><p><br/></p></body></html> - Flatten Wire + Make Wire + + + + ../Icons/WF_makePolygon.svg../Icons/WF_makePolygon.svg + + + + 32 + 32 + - + - Parametric 2D + Curves And Surfaces - + - - - true + + + + 0 + 0 + + + + Launch Curves and Surfaces Menu... - - - - 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 + + + + Qt::Vertical - - - - 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 - - - - - - - - - + + + 20 + 40 + + + @@ -3776,7 +2638,7 @@ in "Ori. Pref." TAB - 1 + 0 @@ -5532,7 +4394,7 @@ Note that some options are invalid regarding the image's plane. - 0 + 2 @@ -6670,9 +5532,15 @@ NB: Translate - + + + + 0 + 0 + + 220 @@ -6819,6 +5687,12 @@ On the last result the same Sketch is both link to Pad001 but also still to Pad. + + + 0 + 0 + + 150 @@ -7689,7 +6563,7 @@ Radius measurement for a Circle or an Arc. - + Qt::Horizontal diff --git a/WorkFeature/Ui/WF_ObjParCurve2DEditGui_2015.py b/WorkFeature/Ui/WF_ObjParCurve2DEditGui_2016.py similarity index 98% rename from WorkFeature/Ui/WF_ObjParCurve2DEditGui_2015.py rename to WorkFeature/Ui/WF_ObjParCurve2DEditGui_2016.py index 75fc49b..732f71c 100644 --- a/WorkFeature/Ui/WF_ObjParCurve2DEditGui_2015.py +++ b/WorkFeature/Ui/WF_ObjParCurve2DEditGui_2016.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'WF_ObjParCurve2DEditGui_2015.ui' +# Form implementation generated from reading ui file 'WF_ObjParCurve2DEditGui_2016.ui' # -# Created: Tue Oct 27 06:56:40 2015 -# by: PySide UI code generator 4.11.2 +# Created: Fri Dec 30 15:42:17 2016 +# by: PySide UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost! diff --git a/WorkFeature/Ui/WF_ObjParCurve2DEditGui_2016.ui b/WorkFeature/Ui/WF_ObjParCurve2DEditGui_2016.ui new file mode 100644 index 0000000..ed4fff4 --- /dev/null +++ b/WorkFeature/Ui/WF_ObjParCurve2DEditGui_2016.ui @@ -0,0 +1,282 @@ + + + Form + + + + 0 + 0 + 1039 + 460 + + + + Form + + + + + + 2D Database + + + + + + + + Click to load common and customs curves. + + + Load + + + + + + + This will save customs curves only in your HOME directory under "Parametric2D.dat". + + + Save + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + 1 + + + + + 2 + + + + + Name + + + + + a (t) + + + + + b (a, t) + + + + + X (a,b,c,t) + + + + + Y (a,b,c,t) + + + + + t min + + + + + t max + + + + + t step + + + + + Polar + + + + + Comments + + + + + Circle + + + + + 10 # Radius + + + + + a + + + + + a*cos(t) + + + + + a*sin(t) + + + + + 0 + + + + + 2*pi + + + + + 0.01 + + + + + 0 + + + + + + + + Row + + + + + + + + Add a row into the table. + + + add + + + + + + + Remove a row from the table. + + + remove + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + false + + + + 0 + 0 + + + + true + + + 1 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Quit + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2015.py b/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2016.py similarity index 96% rename from WorkFeature/Ui/WF_ObjParCurve3DEditGui_2015.py rename to WorkFeature/Ui/WF_ObjParCurve3DEditGui_2016.py index c25afcd..29c0800 100644 --- a/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2015.py +++ b/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2016.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'WF_ObjParCurve3DEditGui_2015.ui' +# Form implementation generated from reading ui file 'WF_ObjParCurve3DEditGui_2016.ui' # -# Created: Tue Oct 27 06:56:50 2015 -# by: PySide UI code generator 4.11.2 +# Created: Fri Dec 30 15:42:28 2016 +# by: PySide UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost! @@ -26,7 +26,7 @@ except AttributeError: class Ui_Form(object): def setupUi(self, Form): Form.setObjectName(_fromUtf8("Form")) - Form.resize(1039, 460) + Form.resize(1247, 460) self.gridLayout_3 = QtGui.QGridLayout(Form) self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) self.groupBox_2 = QtGui.QGroupBox(Form) @@ -47,7 +47,7 @@ class Ui_Form(object): self.gridLayout_3.addWidget(self.groupBox_2, 0, 0, 1, 1) self.tableWidget = QtGui.QTableWidget(Form) self.tableWidget.setObjectName(_fromUtf8("tableWidget")) - self.tableWidget.setColumnCount(11) + self.tableWidget.setColumnCount(12) self.tableWidget.setRowCount(3) item = QtGui.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(0, item) @@ -78,6 +78,8 @@ class Ui_Form(object): item = QtGui.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(10, item) item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(11, item) + item = QtGui.QTableWidgetItem() self.tableWidget.setItem(0, 0, item) item = QtGui.QTableWidgetItem() self.tableWidget.setItem(0, 1, item) @@ -191,6 +193,8 @@ class Ui_Form(object): item = self.tableWidget.horizontalHeaderItem(9) item.setText(_translate("Form", "t step", None)) item = self.tableWidget.horizontalHeaderItem(10) + item.setText(_translate("Form", "Cartesian", None)) + item = self.tableWidget.horizontalHeaderItem(11) item.setText(_translate("Form", "Comments", None)) __sortingEnabled = self.tableWidget.isSortingEnabled() self.tableWidget.setSortingEnabled(False) diff --git a/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2016.ui b/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2016.ui new file mode 100644 index 0000000..3971c9e --- /dev/null +++ b/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2016.ui @@ -0,0 +1,349 @@ + + + Form + + + + 0 + 0 + 1247 + 460 + + + + Form + + + + + + 3D Database + + + + + + + + Click to load common and customs curves. + + + Load + + + + + + + This will save customs curves only in your HOME directory under "Parametric3D.dat". + + + Save + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + 1 + + + + + 2 + + + + + 3 + + + + + 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) + + + + + t min + + + + + t max + + + + + t step + + + + + Cartesian + + + + + Comments + + + + + Cylindrical helix + + + + + 10*0.05 #Vert. step + + + + + 1 + + + + + 10 # Radius + + + + + c*sin(t) + + + + + c*cos(t) + + + + + a*t + + + + + 0 + + + + + 5*2*pi #5 circles + + + + + 0.01 + + + + + Circle with Teeth + + + + + 37 + + + + + 1 + + + + + (a+cos(a*t)*2)*b + + + + + c*cos(t) + + + + + c*sin(t) + + + + + 0 + + + + + 0 + + + + + 2*pi + + + + + 0.01 + + + + + + + + Row + + + + + + + + Add a row into the table. + + + add + + + + + + + Remove a row from the table. + + + remove + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + false + + + + 0 + 0 + + + + 1 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Quit + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/WorkFeature/Ui/WF_ObjSurfaceEditGui_2016.py b/WorkFeature/Ui/WF_ObjSurfaceEditGui_2016.py new file mode 100644 index 0000000..2653875 --- /dev/null +++ b/WorkFeature/Ui/WF_ObjSurfaceEditGui_2016.py @@ -0,0 +1,270 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'WF_ObjSurfaceEditGui_2016.ui' +# +# Created: Fri Dec 30 15:42:38 2016 +# by: PySide UI code generator 4.11.3 +# +# WARNING! All changes made in this file will be lost! + +from PySide import QtCore, QtGui + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + def _fromUtf8(s): + return s + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig) + +class Ui_Form(object): + def setupUi(self, Form): + Form.setObjectName(_fromUtf8("Form")) + Form.resize(1247, 460) + self.gridLayout_3 = QtGui.QGridLayout(Form) + self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) + self.groupBox_2 = QtGui.QGroupBox(Form) + self.groupBox_2.setObjectName(_fromUtf8("groupBox_2")) + self.gridLayout = QtGui.QGridLayout(self.groupBox_2) + self.gridLayout.setObjectName(_fromUtf8("gridLayout")) + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) + self.button_load = QtGui.QPushButton(self.groupBox_2) + self.button_load.setObjectName(_fromUtf8("button_load")) + self.horizontalLayout.addWidget(self.button_load) + self.button_save = QtGui.QPushButton(self.groupBox_2) + self.button_save.setObjectName(_fromUtf8("button_save")) + self.horizontalLayout.addWidget(self.button_save) + spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) + self.gridLayout_3.addWidget(self.groupBox_2, 0, 0, 1, 1) + self.tableWidget = QtGui.QTableWidget(Form) + self.tableWidget.setObjectName(_fromUtf8("tableWidget")) + self.tableWidget.setColumnCount(14) + self.tableWidget.setRowCount(3) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(8, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(9, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(10, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(11, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(12, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(13, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 8, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 9, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 10, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 11, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 12, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 8, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 9, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 10, item) + self.gridLayout_3.addWidget(self.tableWidget, 1, 0, 1, 1) + self.groupBox = QtGui.QGroupBox(Form) + self.groupBox.setObjectName(_fromUtf8("groupBox")) + self.gridLayout_2 = QtGui.QGridLayout(self.groupBox) + self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) + self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) + self.button_addRow = QtGui.QPushButton(self.groupBox) + self.button_addRow.setObjectName(_fromUtf8("button_addRow")) + self.horizontalLayout_2.addWidget(self.button_addRow) + self.button_removeRow = QtGui.QPushButton(self.groupBox) + self.button_removeRow.setObjectName(_fromUtf8("button_removeRow")) + self.horizontalLayout_2.addWidget(self.button_removeRow) + spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_2.addItem(spacerItem1) + self.gridLayout_2.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) + self.gridLayout_3.addWidget(self.groupBox, 2, 0, 1, 1) + self.horizontalLayout_4 = QtGui.QHBoxLayout() + self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4")) + self.comboBox_select = QtGui.QComboBox(Form) + self.comboBox_select.setEnabled(False) + self.comboBox_select.setMaximumSize(QtCore.QSize(0, 0)) + self.comboBox_select.setModelColumn(1) + self.comboBox_select.setObjectName(_fromUtf8("comboBox_select")) + self.horizontalLayout_4.addWidget(self.comboBox_select) + spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_4.addItem(spacerItem2) + self.gridLayout_3.addLayout(self.horizontalLayout_4, 3, 0, 1, 1) + self.horizontalLayout_3 = QtGui.QHBoxLayout() + self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) + self.button_quit = QtGui.QPushButton(Form) + self.button_quit.setObjectName(_fromUtf8("button_quit")) + self.horizontalLayout_3.addWidget(self.button_quit) + spacerItem3 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_3.addItem(spacerItem3) + self.gridLayout_3.addLayout(self.horizontalLayout_3, 4, 0, 1, 1) + + self.retranslateUi(Form) + QtCore.QMetaObject.connectSlotsByName(Form) + + def retranslateUi(self, Form): + Form.setWindowTitle(_translate("Form", "Form", None)) + self.groupBox_2.setTitle(_translate("Form", "3D Database", None)) + self.button_load.setToolTip(_translate("Form", "Click to load common and customs curves.", None)) + self.button_load.setText(_translate("Form", "Load", None)) + self.button_save.setToolTip(_translate("Form", "This will save customs curves only in your HOME directory under \"Parametric3D.dat\".", None)) + self.button_save.setText(_translate("Form", "Save", None)) + item = self.tableWidget.verticalHeaderItem(0) + item.setText(_translate("Form", "1", None)) + item = self.tableWidget.verticalHeaderItem(1) + item.setText(_translate("Form", "2", None)) + item = self.tableWidget.verticalHeaderItem(2) + item.setText(_translate("Form", "3", None)) + item = self.tableWidget.horizontalHeaderItem(0) + item.setText(_translate("Form", "Name", None)) + item = self.tableWidget.horizontalHeaderItem(1) + item.setText(_translate("Form", "a", None)) + item = self.tableWidget.horizontalHeaderItem(2) + item.setText(_translate("Form", "b (a) ", None)) + item = self.tableWidget.horizontalHeaderItem(3) + item.setText(_translate("Form", "c (a, b) ", None)) + item = self.tableWidget.horizontalHeaderItem(4) + item.setText(_translate("Form", "X (a,b,c,u,v)", None)) + item = self.tableWidget.horizontalHeaderItem(5) + item.setText(_translate("Form", "Y (a,b,c,u,v)", None)) + item = self.tableWidget.horizontalHeaderItem(6) + item.setText(_translate("Form", "Z (a,b,c,u,v)", None)) + item = self.tableWidget.horizontalHeaderItem(7) + item.setText(_translate("Form", "u min", None)) + item = self.tableWidget.horizontalHeaderItem(8) + item.setText(_translate("Form", "u max", None)) + item = self.tableWidget.horizontalHeaderItem(9) + item.setText(_translate("Form", "u step", None)) + item = self.tableWidget.horizontalHeaderItem(10) + item.setText(_translate("Form", "v min", None)) + item = self.tableWidget.horizontalHeaderItem(11) + item.setText(_translate("Form", "v max", None)) + item = self.tableWidget.horizontalHeaderItem(12) + item.setText(_translate("Form", "v step", None)) + item = self.tableWidget.horizontalHeaderItem(13) + item.setText(_translate("Form", "comments", None)) + __sortingEnabled = self.tableWidget.isSortingEnabled() + self.tableWidget.setSortingEnabled(False) + item = self.tableWidget.item(0, 0) + item.setText(_translate("Form", "Astroid", None)) + item = self.tableWidget.item(0, 1) + item.setText(_translate("Form", "4", None)) + item = self.tableWidget.item(0, 2) + item.setText(_translate("Form", "3", None)) + item = self.tableWidget.item(0, 3) + item.setText(_translate("Form", "2", None)) + item = self.tableWidget.item(0, 4) + item.setText(_translate("Form", "a*pow(cos(v),3)*pow(cos(u),3)", None)) + item = self.tableWidget.item(0, 5) + item.setText(_translate("Form", "b*pow(cos(v),3)*pow(sin(u),3)", None)) + item = self.tableWidget.item(0, 6) + item.setText(_translate("Form", "c*pow(sin(v),3)", None)) + item = self.tableWidget.item(0, 7) + item.setText(_translate("Form", "0.0", None)) + item = self.tableWidget.item(0, 8) + item.setText(_translate("Form", "2*pi", None)) + item = self.tableWidget.item(0, 9) + item.setText(_translate("Form", "0.01", None)) + item = self.tableWidget.item(0, 10) + item.setText(_translate("Form", "-2.0", None)) + item = self.tableWidget.item(0, 11) + item.setText(_translate("Form", "2.0", None)) + item = self.tableWidget.item(0, 12) + item.setText(_translate("Form", "0.01", None)) + item = self.tableWidget.item(1, 0) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 1) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 2) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 3) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 4) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 5) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 6) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 7) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 8) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 9) + item.setText(_translate("Form", " ", None)) + self.tableWidget.setSortingEnabled(__sortingEnabled) + self.groupBox.setTitle(_translate("Form", "Row", None)) + self.button_addRow.setToolTip(_translate("Form", "Add a row into the table.", None)) + self.button_addRow.setText(_translate("Form", "add", None)) + self.button_removeRow.setToolTip(_translate("Form", "Remove a row from the table.", None)) + self.button_removeRow.setText(_translate("Form", "remove", None)) + self.button_quit.setText(_translate("Form", "Quit", None)) + diff --git a/WorkFeature/Ui/WF_ObjSurfaceEditGui_2016.ui b/WorkFeature/Ui/WF_ObjSurfaceEditGui_2016.ui new file mode 100644 index 0000000..1f1907b --- /dev/null +++ b/WorkFeature/Ui/WF_ObjSurfaceEditGui_2016.ui @@ -0,0 +1,379 @@ + + + Form + + + + 0 + 0 + 1247 + 460 + + + + Form + + + + + + 3D Database + + + + + + + + Click to load common and customs curves. + + + Load + + + + + + + This will save customs curves only in your HOME directory under "Parametric3D.dat". + + + Save + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + 1 + + + + + 2 + + + + + 3 + + + + + Name + + + + + a + + + + + b (a) + + + + + c (a, b) + + + + + X (a,b,c,u,v) + + + + + Y (a,b,c,u,v) + + + + + Z (a,b,c,u,v) + + + + + u min + + + + + u max + + + + + u step + + + + + v min + + + + + v max + + + + + v step + + + + + comments + + + + + Astroid + + + + + 4 + + + + + 3 + + + + + 2 + + + + + a*pow(cos(v),3)*pow(cos(u),3) + + + + + b*pow(cos(v),3)*pow(sin(u),3) + + + + + c*pow(sin(v),3) + + + + + 0.0 + + + + + 2*pi + + + + + 0.01 + + + + + -2.0 + + + + + 2.0 + + + + + 0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Row + + + + + + + + Add a row into the table. + + + add + + + + + + + Remove a row from the table. + + + remove + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + false + + + + 0 + 0 + + + + 1 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Quit + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/WorkFeature/WFGui_2015.py b/WorkFeature/WFGui_2015.py index a2ed069..9addb83 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_2016_09.ui' +# Form implementation generated from reading ui file 'WFGui_2015.ui' # -# Created: Sat Sep 10 09:18:06 2016 +# Created: Sat Dec 31 14:55:16 2016 # by: PySide UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost! @@ -26,7 +26,7 @@ except AttributeError: class Ui_Form(object): def setupUi(self, Form): Form.setObjectName(_fromUtf8("Form")) - Form.resize(382, 845) + Form.resize(396, 610) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_wf.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) Form.setWindowIcon(icon) @@ -40,12 +40,11 @@ class Ui_Form(object): self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName(_fromUtf8("scrollArea")) self.scrollAreaWidgetContents = QtGui.QWidget() - self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 365, 773)) + self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 365, 593)) self.scrollAreaWidgetContents.setObjectName(_fromUtf8("scrollAreaWidgetContents")) self.gridLayout_128 = QtGui.QGridLayout(self.scrollAreaWidgetContents) self.gridLayout_128.setObjectName(_fromUtf8("gridLayout_128")) self.tabWidget_7 = QtGui.QTabWidget(self.scrollAreaWidgetContents) - self.tabWidget_7.setMinimumSize(QtCore.QSize(0, 0)) self.tabWidget_7.setTabPosition(QtGui.QTabWidget.West) self.tabWidget_7.setObjectName(_fromUtf8("tabWidget_7")) self.Origin_Tab_2 = QtGui.QWidget() @@ -319,29 +318,64 @@ class Ui_Form(object): self.tabWidget.addTab(self.Point_Tab2_3, _fromUtf8("")) self.Point_Tab3_3 = QtGui.QWidget() self.Point_Tab3_3.setObjectName(_fromUtf8("Point_Tab3_3")) - self.gridLayout_12 = QtGui.QGridLayout(self.Point_Tab3_3) - self.gridLayout_12.setObjectName(_fromUtf8("gridLayout_12")) + self.gridLayout_2 = QtGui.QGridLayout(self.Point_Tab3_3) + self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) self.button_points_load = QtGui.QPushButton(self.Point_Tab3_3) icon20 = QtGui.QIcon() icon20.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointsSetLoad.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.button_points_load.setIcon(icon20) self.button_points_load.setIconSize(QtCore.QSize(32, 32)) self.button_points_load.setObjectName(_fromUtf8("button_points_load")) - self.gridLayout_12.addWidget(self.button_points_load, 0, 0, 1, 1) + self.gridLayout_2.addWidget(self.button_points_load, 0, 0, 1, 1) self.button_points_save = QtGui.QPushButton(self.Point_Tab3_3) icon21 = QtGui.QIcon() icon21.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointsSetSave.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.button_points_save.setIcon(icon21) self.button_points_save.setIconSize(QtCore.QSize(32, 32)) self.button_points_save.setObjectName(_fromUtf8("button_points_save")) - self.gridLayout_12.addWidget(self.button_points_save, 1, 0, 1, 1) + self.gridLayout_2.addWidget(self.button_points_save, 1, 0, 1, 1) + self.horizontalLayout_5 = QtGui.QHBoxLayout() + self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5")) + self.button_points_random = QtGui.QPushButton(self.Point_Tab3_3) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_points_random.sizePolicy().hasHeightForWidth()) + self.button_points_random.setSizePolicy(sizePolicy) + self.button_points_random.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon22 = QtGui.QIcon() + icon22.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointsRandom.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_points_random.setIcon(icon22) + self.button_points_random.setIconSize(QtCore.QSize(32, 32)) + self.button_points_random.setObjectName(_fromUtf8("button_points_random")) + self.horizontalLayout_5.addWidget(self.button_points_random) + self.spin_random_points = QtGui.QSpinBox(self.Point_Tab3_3) + self.spin_random_points.setMinimumSize(QtCore.QSize(40, 0)) + self.spin_random_points.setMaximumSize(QtCore.QSize(50, 16777215)) + self.spin_random_points.setMinimum(1) + self.spin_random_points.setMaximum(100) + self.spin_random_points.setSingleStep(1) + self.spin_random_points.setProperty("value", 1) + self.spin_random_points.setObjectName(_fromUtf8("spin_random_points")) + self.horizontalLayout_5.addWidget(self.spin_random_points) + self.distance_random_points = QtGui.QLineEdit(self.Point_Tab3_3) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.distance_random_points.sizePolicy().hasHeightForWidth()) + self.distance_random_points.setSizePolicy(sizePolicy) + self.distance_random_points.setMinimumSize(QtCore.QSize(50, 0)) + self.distance_random_points.setMaximumSize(QtCore.QSize(60, 16777215)) + self.distance_random_points.setObjectName(_fromUtf8("distance_random_points")) + self.horizontalLayout_5.addWidget(self.distance_random_points) + self.gridLayout_2.addLayout(self.horizontalLayout_5, 2, 0, 1, 1) spacerItem3 = QtGui.QSpacerItem(20, 579, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_12.addItem(spacerItem3, 2, 0, 1, 1) + self.gridLayout_2.addItem(spacerItem3, 3, 0, 1, 1) self.tabWidget.addTab(self.Point_Tab3_3, _fromUtf8("")) self.gridLayout_10.addWidget(self.tabWidget, 0, 0, 1, 1) - icon22 = QtGui.QIcon() - icon22.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_point.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_7.addTab(self.Point_Tab, icon22, _fromUtf8("")) + icon23 = QtGui.QIcon() + icon23.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_point.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Point_Tab, icon23, _fromUtf8("")) self.Axis_Tab = QtGui.QWidget() self.Axis_Tab.setObjectName(_fromUtf8("Axis_Tab")) self.gridLayout_14 = QtGui.QGridLayout(self.Axis_Tab) @@ -361,9 +395,9 @@ class Ui_Form(object): sizePolicy.setHeightForWidth(self.button_twopoints_axis.sizePolicy().hasHeightForWidth()) self.button_twopoints_axis.setSizePolicy(sizePolicy) self.button_twopoints_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon23 = QtGui.QIcon() - icon23.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2pointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_twopoints_axis.setIcon(icon23) + icon24 = QtGui.QIcon() + icon24.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2pointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twopoints_axis.setIcon(icon24) self.button_twopoints_axis.setIconSize(QtCore.QSize(32, 32)) self.button_twopoints_axis.setObjectName(_fromUtf8("button_twopoints_axis")) self.horizontalLayout.addWidget(self.button_twopoints_axis) @@ -375,9 +409,9 @@ class Ui_Form(object): spacerItem4 = QtGui.QSpacerItem(20, 233, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.gridLayout_15.addItem(spacerItem4, 7, 0, 1, 1) self.button_object_axis = QtGui.QPushButton(self.Axis_Tab1_3) - icon24 = QtGui.QIcon() - icon24.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_object_axis.setIcon(icon24) + icon25 = QtGui.QIcon() + icon25.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_axis.setIcon(icon25) self.button_object_axis.setIconSize(QtCore.QSize(32, 32)) self.button_object_axis.setObjectName(_fromUtf8("button_object_axis")) self.gridLayout_15.addWidget(self.button_object_axis, 0, 0, 1, 1) @@ -391,9 +425,9 @@ class Ui_Form(object): self.button_line_point_axis.setSizePolicy(sizePolicy) self.button_line_point_axis.setMinimumSize(QtCore.QSize(0, 0)) self.button_line_point_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon25 = QtGui.QIcon() - icon25.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_line_point_axis.setIcon(icon25) + icon26 = QtGui.QIcon() + icon26.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_point_axis.setIcon(icon26) self.button_line_point_axis.setIconSize(QtCore.QSize(32, 32)) self.button_line_point_axis.setObjectName(_fromUtf8("button_line_point_axis")) self.horizontalLayout_53.addWidget(self.button_line_point_axis) @@ -403,9 +437,9 @@ class Ui_Form(object): self.horizontalLayout_53.addWidget(self.extension_line_point_axis) self.gridLayout_15.addLayout(self.horizontalLayout_53, 5, 0, 1, 1) self.button_Npoints_axis = QtGui.QPushButton(self.Axis_Tab1_3) - icon26 = QtGui.QIcon() - icon26.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_Npoints_axis.setIcon(icon26) + icon27 = QtGui.QIcon() + icon27.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_Npoints_axis.setIcon(icon27) self.button_Npoints_axis.setIconSize(QtCore.QSize(32, 32)) self.button_Npoints_axis.setObjectName(_fromUtf8("button_Npoints_axis")) self.gridLayout_15.addWidget(self.button_Npoints_axis, 2, 0, 1, 1) @@ -413,9 +447,9 @@ class Ui_Form(object): self.horizontalLayout_52.setObjectName(_fromUtf8("horizontalLayout_52")) self.button_point_line_axis = QtGui.QPushButton(self.Axis_Tab1_3) self.button_point_line_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon27 = QtGui.QIcon() - icon27.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLineAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_point_line_axis.setIcon(icon27) + icon28 = QtGui.QIcon() + icon28.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLineAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_line_axis.setIcon(icon28) self.button_point_line_axis.setIconSize(QtCore.QSize(32, 32)) self.button_point_line_axis.setObjectName(_fromUtf8("button_point_line_axis")) self.horizontalLayout_52.addWidget(self.button_point_line_axis) @@ -437,17 +471,17 @@ class Ui_Form(object): self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3")) self.button_cylinder_axis = QtGui.QPushButton(self.Axis_Tab1_3) self.button_cylinder_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon28 = QtGui.QIcon() - icon28.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinderAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cylinder_axis.setIcon(icon28) + icon29 = QtGui.QIcon() + icon29.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinderAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cylinder_axis.setIcon(icon29) self.button_cylinder_axis.setIconSize(QtCore.QSize(32, 32)) self.button_cylinder_axis.setObjectName(_fromUtf8("button_cylinder_axis")) self.verticalLayout_3.addWidget(self.button_cylinder_axis) self.button_plane_axis = QtGui.QPushButton(self.Axis_Tab1_3) self.button_plane_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon29 = QtGui.QIcon() - icon29.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_plane_axis.setIcon(icon29) + icon30 = QtGui.QIcon() + icon30.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_plane_axis.setIcon(icon30) self.button_plane_axis.setIconSize(QtCore.QSize(32, 32)) self.button_plane_axis.setObjectName(_fromUtf8("button_plane_axis")) self.verticalLayout_3.addWidget(self.button_plane_axis) @@ -458,9 +492,9 @@ class Ui_Form(object): sizePolicy.setHeightForWidth(self.button_face_normal.sizePolicy().hasHeightForWidth()) self.button_face_normal.setSizePolicy(sizePolicy) self.button_face_normal.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon30 = QtGui.QIcon() - icon30.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceNormal.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_face_normal.setIcon(icon30) + icon31 = QtGui.QIcon() + icon31.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceNormal.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_normal.setIcon(icon31) self.button_face_normal.setIconSize(QtCore.QSize(32, 32)) self.button_face_normal.setObjectName(_fromUtf8("button_face_normal")) self.verticalLayout_3.addWidget(self.button_face_normal) @@ -481,44 +515,77 @@ class Ui_Form(object): self.horizontalLayout_51.addWidget(self.frame_8) self.gridLayout_15.addLayout(self.horizontalLayout_51, 3, 0, 1, 1) self.button_twolines_axis = QtGui.QPushButton(self.Axis_Tab1_3) - icon31 = QtGui.QIcon() - icon31.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoLinesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_twolines_axis.setIcon(icon31) + icon32 = QtGui.QIcon() + icon32.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoLinesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twolines_axis.setIcon(icon32) self.button_twolines_axis.setIconSize(QtCore.QSize(32, 32)) self.button_twolines_axis.setObjectName(_fromUtf8("button_twolines_axis")) self.gridLayout_15.addWidget(self.button_twolines_axis, 6, 0, 1, 1) self.tabWidget_2.addTab(self.Axis_Tab1_3, _fromUtf8("")) + self.Axis_Tab31_3 = QtGui.QWidget() + self.Axis_Tab31_3.setObjectName(_fromUtf8("Axis_Tab31_3")) + self.gridLayout_16 = QtGui.QGridLayout(self.Axis_Tab31_3) + self.gridLayout_16.setObjectName(_fromUtf8("gridLayout_16")) + self.button_object_base_axes = QtGui.QPushButton(self.Axis_Tab31_3) + icon33 = QtGui.QIcon() + icon33.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_baseObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_base_axes.setIcon(icon33) + self.button_object_base_axes.setIconSize(QtCore.QSize(32, 32)) + self.button_object_base_axes.setObjectName(_fromUtf8("button_object_base_axes")) + self.gridLayout_16.addWidget(self.button_object_base_axes, 0, 0, 1, 1) + self.button_object_Naxes = QtGui.QPushButton(self.Axis_Tab31_3) + icon34 = QtGui.QIcon() + icon34.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectNAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_Naxes.setIcon(icon34) + self.button_object_Naxes.setIconSize(QtCore.QSize(32, 32)) + self.button_object_Naxes.setObjectName(_fromUtf8("button_object_Naxes")) + self.gridLayout_16.addWidget(self.button_object_Naxes, 1, 0, 1, 1) + spacerItem5 = QtGui.QSpacerItem(20, 483, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_16.addItem(spacerItem5, 4, 0, 1, 1) + self.button_line_to_sketch = QtGui.QPushButton(self.Axis_Tab31_3) + self.button_line_to_sketch.setIcon(icon19) + self.button_line_to_sketch.setIconSize(QtCore.QSize(32, 32)) + self.button_line_to_sketch.setObjectName(_fromUtf8("button_line_to_sketch")) + self.gridLayout_16.addWidget(self.button_line_to_sketch, 3, 0, 1, 1) + self.button_object_3axes = QtGui.QPushButton(self.Axis_Tab31_3) + icon35 = QtGui.QIcon() + icon35.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_object3Axes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_3axes.setIcon(icon35) + self.button_object_3axes.setIconSize(QtCore.QSize(32, 32)) + self.button_object_3axes.setObjectName(_fromUtf8("button_object_3axes")) + self.gridLayout_16.addWidget(self.button_object_3axes, 2, 0, 1, 1) + self.tabWidget_2.addTab(self.Axis_Tab31_3, _fromUtf8("")) self.Axis_Tab2_3 = QtGui.QWidget() self.Axis_Tab2_3.setObjectName(_fromUtf8("Axis_Tab2_3")) self.gridLayout_4 = QtGui.QGridLayout(self.Axis_Tab2_3) self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4")) self.button_plane_point_line_axis = QtGui.QPushButton(self.Axis_Tab2_3) - icon32 = QtGui.QIcon() - icon32.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_plane_point_line_axis.setIcon(icon32) + icon36 = QtGui.QIcon() + icon36.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_plane_point_line_axis.setIcon(icon36) self.button_plane_point_line_axis.setIconSize(QtCore.QSize(32, 32)) self.button_plane_point_line_axis.setObjectName(_fromUtf8("button_plane_point_line_axis")) self.gridLayout_4.addWidget(self.button_plane_point_line_axis, 0, 0, 1, 1) self.button_line_plane_axis = QtGui.QPushButton(self.Axis_Tab2_3) - icon33 = QtGui.QIcon() - icon33.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePlaneAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_line_plane_axis.setIcon(icon33) + icon37 = QtGui.QIcon() + icon37.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePlaneAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_plane_axis.setIcon(icon37) self.button_line_plane_axis.setIconSize(QtCore.QSize(32, 32)) self.button_line_plane_axis.setObjectName(_fromUtf8("button_line_plane_axis")) self.gridLayout_4.addWidget(self.button_line_plane_axis, 1, 0, 1, 1) self.button_twoplanes_axis = QtGui.QPushButton(self.Axis_Tab2_3) - icon34 = QtGui.QIcon() - icon34.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2PlanesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_twoplanes_axis.setIcon(icon34) + icon38 = QtGui.QIcon() + icon38.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2PlanesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twoplanes_axis.setIcon(icon38) self.button_twoplanes_axis.setIconSize(QtCore.QSize(32, 32)) self.button_twoplanes_axis.setObjectName(_fromUtf8("button_twoplanes_axis")) self.gridLayout_4.addWidget(self.button_twoplanes_axis, 2, 0, 1, 1) self.horizontalLayout_54 = QtGui.QHBoxLayout() self.horizontalLayout_54.setObjectName(_fromUtf8("horizontalLayout_54")) self.button_distLine = QtGui.QPushButton(self.Axis_Tab2_3) - icon35 = QtGui.QIcon() - icon35.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_distLine.setIcon(icon35) + icon39 = QtGui.QIcon() + icon39.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distLine.setIcon(icon39) self.button_distLine.setIconSize(QtCore.QSize(32, 32)) self.button_distLine.setObjectName(_fromUtf8("button_distLine")) self.horizontalLayout_54.addWidget(self.button_distLine) @@ -547,9 +614,9 @@ class Ui_Form(object): self.horizontalLayout_55 = QtGui.QHBoxLayout() self.horizontalLayout_55.setObjectName(_fromUtf8("horizontalLayout_55")) self.button_angleLine = QtGui.QPushButton(self.Axis_Tab2_3) - icon36 = QtGui.QIcon() - icon36.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_angleLine.setIcon(icon36) + icon40 = QtGui.QIcon() + icon40.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_angleLine.setIcon(icon40) self.button_angleLine.setIconSize(QtCore.QSize(32, 32)) self.button_angleLine.setObjectName(_fromUtf8("button_angleLine")) self.horizontalLayout_55.addWidget(self.button_angleLine) @@ -579,9 +646,9 @@ class Ui_Form(object): self.horizontalLayout_56.setObjectName(_fromUtf8("horizontalLayout_56")) self.button_cut_wire_axis = QtGui.QPushButton(self.Axis_Tab2_3) self.button_cut_wire_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon37 = QtGui.QIcon() - icon37.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWireAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cut_wire_axis.setIcon(icon37) + icon41 = QtGui.QIcon() + icon41.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWireAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_wire_axis.setIcon(icon41) self.button_cut_wire_axis.setIconSize(QtCore.QSize(32, 32)) self.button_cut_wire_axis.setObjectName(_fromUtf8("button_cut_wire_axis")) self.horizontalLayout_56.addWidget(self.button_cut_wire_axis) @@ -598,9 +665,9 @@ class Ui_Form(object): self.horizontalLayout_57.setObjectName(_fromUtf8("horizontalLayout_57")) self.button_cut_axis = QtGui.QPushButton(self.Axis_Tab2_3) self.button_cut_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon38 = QtGui.QIcon() - icon38.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cut_axis.setIcon(icon38) + icon42 = QtGui.QIcon() + icon42.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_axis.setIcon(icon42) self.button_cut_axis.setIconSize(QtCore.QSize(32, 32)) self.button_cut_axis.setObjectName(_fromUtf8("button_cut_axis")) self.horizontalLayout_57.addWidget(self.button_cut_axis) @@ -621,9 +688,9 @@ class Ui_Form(object): sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_extension_axis.sizePolicy().hasHeightForWidth()) self.button_extension_axis.setSizePolicy(sizePolicy) - icon39 = QtGui.QIcon() - icon39.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargeLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_extension_axis.setIcon(icon39) + icon43 = QtGui.QIcon() + icon43.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargeLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_extension_axis.setIcon(icon43) self.button_extension_axis.setIconSize(QtCore.QSize(32, 32)) self.button_extension_axis.setObjectName(_fromUtf8("button_extension_axis")) self.horizontalLayout_58.addWidget(self.button_extension_axis) @@ -639,62 +706,25 @@ class Ui_Form(object): self.horizontalLayout_58.addWidget(self.extension_axis) self.gridLayout_4.addLayout(self.horizontalLayout_58, 7, 0, 1, 1) self.button_click_for_axis = QtGui.QRadioButton(self.Axis_Tab2_3) - icon40 = QtGui.QIcon() - icon40.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_click_for_axis.setIcon(icon40) + icon44 = QtGui.QIcon() + icon44.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_click_for_axis.setIcon(icon44) self.button_click_for_axis.setIconSize(QtCore.QSize(32, 32)) self.button_click_for_axis.setObjectName(_fromUtf8("button_click_for_axis")) self.gridLayout_4.addWidget(self.button_click_for_axis, 8, 0, 1, 1) - spacerItem5 = QtGui.QSpacerItem(20, 238, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_4.addItem(spacerItem5, 9, 0, 1, 1) + spacerItem6 = QtGui.QSpacerItem(20, 238, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_4.addItem(spacerItem6, 9, 0, 1, 1) self.tabWidget_2.addTab(self.Axis_Tab2_3, _fromUtf8("")) - self.Axis_Tab31_3 = QtGui.QWidget() - self.Axis_Tab31_3.setObjectName(_fromUtf8("Axis_Tab31_3")) - self.gridLayout_16 = QtGui.QGridLayout(self.Axis_Tab31_3) - self.gridLayout_16.setObjectName(_fromUtf8("gridLayout_16")) - self.button_object_base_axes = QtGui.QPushButton(self.Axis_Tab31_3) - icon41 = QtGui.QIcon() - icon41.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_baseObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_object_base_axes.setIcon(icon41) - self.button_object_base_axes.setIconSize(QtCore.QSize(32, 32)) - self.button_object_base_axes.setObjectName(_fromUtf8("button_object_base_axes")) - self.gridLayout_16.addWidget(self.button_object_base_axes, 0, 0, 1, 1) - self.button_object_Naxes = QtGui.QPushButton(self.Axis_Tab31_3) - icon42 = QtGui.QIcon() - icon42.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectNAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_object_Naxes.setIcon(icon42) - self.button_object_Naxes.setIconSize(QtCore.QSize(32, 32)) - self.button_object_Naxes.setObjectName(_fromUtf8("button_object_Naxes")) - self.gridLayout_16.addWidget(self.button_object_Naxes, 1, 0, 1, 1) - self.button_object_3axes = QtGui.QPushButton(self.Axis_Tab31_3) - icon43 = QtGui.QIcon() - icon43.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_object3Axes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_object_3axes.setIcon(icon43) - self.button_object_3axes.setIconSize(QtCore.QSize(32, 32)) - self.button_object_3axes.setObjectName(_fromUtf8("button_object_3axes")) - self.gridLayout_16.addWidget(self.button_object_3axes, 2, 0, 1, 1) - self.button_line_to_sketch = QtGui.QPushButton(self.Axis_Tab31_3) - self.button_line_to_sketch.setIcon(icon19) - self.button_line_to_sketch.setIconSize(QtCore.QSize(32, 32)) - self.button_line_to_sketch.setObjectName(_fromUtf8("button_line_to_sketch")) - self.gridLayout_16.addWidget(self.button_line_to_sketch, 3, 0, 1, 1) - spacerItem6 = QtGui.QSpacerItem(20, 483, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_16.addItem(spacerItem6, 4, 0, 1, 1) - self.tabWidget_2.addTab(self.Axis_Tab31_3, _fromUtf8("")) self.gridLayout_14.addWidget(self.tabWidget_2, 0, 0, 1, 1) - 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("")) + icon45 = QtGui.QIcon() + icon45.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_axis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Axis_Tab, icon45, _fromUtf8("")) 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) - 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) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.tabWidget_8.sizePolicy().hasHeightForWidth()) @@ -705,484 +735,41 @@ class Ui_Form(object): 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.gridLayout_7.addItem(spacerItem7, 2, 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) + icon46 = QtGui.QIcon() + icon46.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_bezierCubic2nodes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_4points_bezier.setIcon(icon46) 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.gridLayout_7.addWidget(self.button_4points_bezier, 1, 0, 1, 1) + self.button_points_to_polygon = QtGui.QPushButton(self.Wire_Tab1_3) + icon47 = QtGui.QIcon() + icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_makePolygon.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_points_to_polygon.setIcon(icon47) + self.button_points_to_polygon.setIconSize(QtCore.QSize(32, 32)) + self.button_points_to_polygon.setObjectName(_fromUtf8("button_points_to_polygon")) + self.gridLayout_7.addWidget(self.button_points_to_polygon, 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.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, 245, 648)) - self.scrollAreaWidgetContents_5.setObjectName(_fromUtf8("scrollAreaWidgetContents_5")) - self.gridLayout_76 = QtGui.QGridLayout(self.scrollAreaWidgetContents_5) - self.gridLayout_76.setObjectName(_fromUtf8("gridLayout_76")) - 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) - self.gridLayout_77.setObjectName(_fromUtf8("gridLayout_77")) - self.label_y_3 = QtGui.QLabel(self.groupBox_14) - self.label_y_3.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_y_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_y_3.setObjectName(_fromUtf8("label_y_3")) - self.gridLayout_77.addWidget(self.label_y_3, 3, 0, 1, 1) - self.ParCurve_a_2 = QtGui.QLineEdit(self.groupBox_14) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_a_2.sizePolicy().hasHeightForWidth()) - self.ParCurve_a_2.setSizePolicy(sizePolicy) - self.ParCurve_a_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_a_2.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_a_2.setMaxLength(32769) - self.ParCurve_a_2.setObjectName(_fromUtf8("ParCurve_a_2")) - self.gridLayout_77.addWidget(self.ParCurve_a_2, 0, 1, 1, 1) - self.label_b_3 = QtGui.QLabel(self.groupBox_14) - self.label_b_3.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_b_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_b_3.setObjectName(_fromUtf8("label_b_3")) - self.gridLayout_77.addWidget(self.label_b_3, 1, 0, 1, 1) - self.ParCurve_y_2 = QtGui.QLineEdit(self.groupBox_14) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_y_2.sizePolicy().hasHeightForWidth()) - self.ParCurve_y_2.setSizePolicy(sizePolicy) - self.ParCurve_y_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_y_2.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_y_2.setMaxLength(32769) - self.ParCurve_y_2.setObjectName(_fromUtf8("ParCurve_y_2")) - self.gridLayout_77.addWidget(self.ParCurve_y_2, 3, 1, 1, 1) - self.checkBox_polar_2 = QtGui.QCheckBox(self.groupBox_14) - self.checkBox_polar_2.setAutoExclusive(True) - self.checkBox_polar_2.setObjectName(_fromUtf8("checkBox_polar_2")) - self.gridLayout_77.addWidget(self.checkBox_polar_2, 4, 1, 1, 1) - self.label_x_3 = QtGui.QLabel(self.groupBox_14) - self.label_x_3.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_x_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_x_3.setObjectName(_fromUtf8("label_x_3")) - self.gridLayout_77.addWidget(self.label_x_3, 2, 0, 1, 1) - self.ParCurve_x_2 = QtGui.QLineEdit(self.groupBox_14) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_x_2.sizePolicy().hasHeightForWidth()) - self.ParCurve_x_2.setSizePolicy(sizePolicy) - self.ParCurve_x_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_x_2.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_x_2.setMaxLength(32769) - self.ParCurve_x_2.setObjectName(_fromUtf8("ParCurve_x_2")) - self.gridLayout_77.addWidget(self.ParCurve_x_2, 2, 1, 1, 1) - self.label_a_3 = QtGui.QLabel(self.groupBox_14) - self.label_a_3.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_a_3.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_a_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_a_3.setObjectName(_fromUtf8("label_a_3")) - self.gridLayout_77.addWidget(self.label_a_3, 0, 0, 1, 1) - self.ParCurve_b_2 = QtGui.QLineEdit(self.groupBox_14) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_b_2.sizePolicy().hasHeightForWidth()) - self.ParCurve_b_2.setSizePolicy(sizePolicy) - self.ParCurve_b_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_b_2.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_b_2.setMaxLength(32769) - self.ParCurve_b_2.setObjectName(_fromUtf8("ParCurve_b_2")) - self.gridLayout_77.addWidget(self.ParCurve_b_2, 1, 1, 1, 1) - self.gridLayout_76.addWidget(self.groupBox_14, 2, 0, 1, 1) - self.horizontalLayout_59 = QtGui.QHBoxLayout() - self.horizontalLayout_59.setObjectName(_fromUtf8("horizontalLayout_59")) - self.ParCurve_comboBox_2 = QtGui.QComboBox(self.scrollAreaWidgetContents_5) - self.ParCurve_comboBox_2.setObjectName(_fromUtf8("ParCurve_comboBox_2")) - self.horizontalLayout_59.addWidget(self.ParCurve_comboBox_2) - self.ParCurve_button_edit_2 = QtGui.QPushButton(self.scrollAreaWidgetContents_5) - self.ParCurve_button_edit_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_button_edit_2.setMaximumSize(QtCore.QSize(60, 16777215)) - self.ParCurve_button_edit_2.setObjectName(_fromUtf8("ParCurve_button_edit_2")) - self.horizontalLayout_59.addWidget(self.ParCurve_button_edit_2) - self.gridLayout_76.addLayout(self.horizontalLayout_59, 0, 0, 1, 1) - self.horizontalLayout_61 = QtGui.QHBoxLayout() - self.horizontalLayout_61.setObjectName(_fromUtf8("horizontalLayout_61")) - self.checkBox_close_2 = QtGui.QCheckBox(self.scrollAreaWidgetContents_5) - self.checkBox_close_2.setEnabled(True) - self.checkBox_close_2.setObjectName(_fromUtf8("checkBox_close_2")) - self.horizontalLayout_61.addWidget(self.checkBox_close_2) - self.checkBox_face_2 = QtGui.QCheckBox(self.scrollAreaWidgetContents_5) - self.checkBox_face_2.setEnabled(False) - self.checkBox_face_2.setObjectName(_fromUtf8("checkBox_face_2")) - self.horizontalLayout_61.addWidget(self.checkBox_face_2) - self.gridLayout_76.addLayout(self.horizontalLayout_61, 5, 0, 1, 1) - self.horizontalLayout_60 = QtGui.QHBoxLayout() - self.horizontalLayout_60.setObjectName(_fromUtf8("horizontalLayout_60")) - self.label_name_2 = QtGui.QLabel(self.scrollAreaWidgetContents_5) - self.label_name_2.setFrameShape(QtGui.QFrame.Box) - self.label_name_2.setFrameShadow(QtGui.QFrame.Raised) - self.label_name_2.setLineWidth(3) - self.label_name_2.setAlignment(QtCore.Qt.AlignCenter) - self.label_name_2.setObjectName(_fromUtf8("label_name_2")) - self.horizontalLayout_60.addWidget(self.label_name_2) - self.ParCurve_name_2 = QtGui.QLineEdit(self.scrollAreaWidgetContents_5) - self.ParCurve_name_2.setObjectName(_fromUtf8("ParCurve_name_2")) - self.horizontalLayout_60.addWidget(self.ParCurve_name_2) - self.gridLayout_76.addLayout(self.horizontalLayout_60, 1, 0, 1, 1) - self.groupBox_15 = QtGui.QGroupBox(self.scrollAreaWidgetContents_5) - self.groupBox_15.setObjectName(_fromUtf8("groupBox_15")) - self.gridLayout_78 = QtGui.QGridLayout(self.groupBox_15) - self.gridLayout_78.setObjectName(_fromUtf8("gridLayout_78")) - self.label_tmin_3 = QtGui.QLabel(self.groupBox_15) - self.label_tmin_3.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_tmin_3.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_tmin_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_tmin_3.setObjectName(_fromUtf8("label_tmin_3")) - self.gridLayout_78.addWidget(self.label_tmin_3, 0, 0, 1, 1) - self.ParCurve_tmin_2 = QtGui.QLineEdit(self.groupBox_15) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_tmin_2.sizePolicy().hasHeightForWidth()) - self.ParCurve_tmin_2.setSizePolicy(sizePolicy) - self.ParCurve_tmin_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_tmin_2.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_tmin_2.setMaxLength(32769) - self.ParCurve_tmin_2.setObjectName(_fromUtf8("ParCurve_tmin_2")) - self.gridLayout_78.addWidget(self.ParCurve_tmin_2, 0, 1, 1, 1) - self.label_tmax_3 = QtGui.QLabel(self.groupBox_15) - self.label_tmax_3.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_tmax_3.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_tmax_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_tmax_3.setObjectName(_fromUtf8("label_tmax_3")) - self.gridLayout_78.addWidget(self.label_tmax_3, 1, 0, 1, 1) - self.ParCurve_tmax_2 = QtGui.QLineEdit(self.groupBox_15) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_tmax_2.sizePolicy().hasHeightForWidth()) - self.ParCurve_tmax_2.setSizePolicy(sizePolicy) - self.ParCurve_tmax_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_tmax_2.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_tmax_2.setMaxLength(32769) - self.ParCurve_tmax_2.setObjectName(_fromUtf8("ParCurve_tmax_2")) - self.gridLayout_78.addWidget(self.ParCurve_tmax_2, 1, 1, 1, 1) - self.label_tstep_3 = QtGui.QLabel(self.groupBox_15) - self.label_tstep_3.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_tstep_3.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_tstep_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_tstep_3.setObjectName(_fromUtf8("label_tstep_3")) - self.gridLayout_78.addWidget(self.label_tstep_3, 2, 0, 1, 1) - self.ParCurve_tstep_2 = QtGui.QLineEdit(self.groupBox_15) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_tstep_2.sizePolicy().hasHeightForWidth()) - self.ParCurve_tstep_2.setSizePolicy(sizePolicy) - self.ParCurve_tstep_2.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_tstep_2.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_tstep_2.setMaxLength(32769) - self.ParCurve_tstep_2.setObjectName(_fromUtf8("ParCurve_tstep_2")) - self.gridLayout_78.addWidget(self.ParCurve_tstep_2, 2, 1, 1, 1) - self.gridLayout_76.addWidget(self.groupBox_15, 3, 0, 1, 1) - self.groupBox_16 = QtGui.QGroupBox(self.scrollAreaWidgetContents_5) - self.groupBox_16.setObjectName(_fromUtf8("groupBox_16")) - self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_16) - self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) - self.checkBox_points_2 = QtGui.QCheckBox(self.groupBox_16) - self.checkBox_points_2.setAutoExclusive(True) - self.checkBox_points_2.setObjectName(_fromUtf8("checkBox_points_2")) - self.gridLayout_2.addWidget(self.checkBox_points_2, 0, 0, 1, 1) - self.checkBox_polyline_2 = QtGui.QCheckBox(self.groupBox_16) - self.checkBox_polyline_2.setChecked(True) - self.checkBox_polyline_2.setAutoExclusive(True) - self.checkBox_polyline_2.setObjectName(_fromUtf8("checkBox_polyline_2")) - self.gridLayout_2.addWidget(self.checkBox_polyline_2, 0, 1, 1, 1) - self.checkBox_bezier_2 = QtGui.QCheckBox(self.groupBox_16) - self.checkBox_bezier_2.setEnabled(True) - self.checkBox_bezier_2.setChecked(False) - self.checkBox_bezier_2.setAutoExclusive(True) - self.checkBox_bezier_2.setObjectName(_fromUtf8("checkBox_bezier_2")) - self.gridLayout_2.addWidget(self.checkBox_bezier_2, 1, 0, 1, 1) - self.checkBox_bspline_2 = QtGui.QCheckBox(self.groupBox_16) - self.checkBox_bspline_2.setEnabled(True) - self.checkBox_bspline_2.setChecked(False) - self.checkBox_bspline_2.setAutoExclusive(True) - self.checkBox_bspline_2.setObjectName(_fromUtf8("checkBox_bspline_2")) - self.gridLayout_2.addWidget(self.checkBox_bspline_2, 1, 1, 1, 1) - self.gridLayout_76.addWidget(self.groupBox_16, 4, 0, 1, 1) - self.horizontalLayout_62 = QtGui.QHBoxLayout() - self.horizontalLayout_62.setObjectName(_fromUtf8("horizontalLayout_62")) - self.ParCurve_button_store_2 = QtGui.QPushButton(self.scrollAreaWidgetContents_5) - self.ParCurve_button_store_2.setMinimumSize(QtCore.QSize(40, 0)) - 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) - 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)) - self.ParCurve_button_apply_2.setObjectName(_fromUtf8("ParCurve_button_apply_2")) - self.horizontalLayout_62.addWidget(self.ParCurve_button_apply_2) - 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.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.Wire_Tab3_3) - self.scrollArea_5.setWidgetResizable(True) - self.scrollArea_5.setObjectName(_fromUtf8("scrollArea_5")) - self.scrollAreaWidgetContents_6 = QtGui.QWidget() - self.scrollAreaWidgetContents_6.setGeometry(QtCore.QRect(0, 0, 202, 692)) - self.scrollAreaWidgetContents_6.setObjectName(_fromUtf8("scrollAreaWidgetContents_6")) - self.gridLayout_81 = QtGui.QGridLayout(self.scrollAreaWidgetContents_6) - self.gridLayout_81.setObjectName(_fromUtf8("gridLayout_81")) - self.horizontalLayout_63 = QtGui.QHBoxLayout() - self.horizontalLayout_63.setObjectName(_fromUtf8("horizontalLayout_63")) - self.ParCurve_comboBox_3 = QtGui.QComboBox(self.scrollAreaWidgetContents_6) - self.ParCurve_comboBox_3.setObjectName(_fromUtf8("ParCurve_comboBox_3")) - self.horizontalLayout_63.addWidget(self.ParCurve_comboBox_3) - self.ParCurve_button_edit_3 = QtGui.QPushButton(self.scrollAreaWidgetContents_6) - self.ParCurve_button_edit_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_button_edit_3.setMaximumSize(QtCore.QSize(60, 16777215)) - self.ParCurve_button_edit_3.setObjectName(_fromUtf8("ParCurve_button_edit_3")) - self.horizontalLayout_63.addWidget(self.ParCurve_button_edit_3) - self.gridLayout_81.addLayout(self.horizontalLayout_63, 0, 0, 1, 1) - self.horizontalLayout_64 = QtGui.QHBoxLayout() - self.horizontalLayout_64.setObjectName(_fromUtf8("horizontalLayout_64")) - self.label_name_3 = QtGui.QLabel(self.scrollAreaWidgetContents_6) - self.label_name_3.setFrameShape(QtGui.QFrame.Box) - self.label_name_3.setFrameShadow(QtGui.QFrame.Raised) - self.label_name_3.setLineWidth(3) - self.label_name_3.setAlignment(QtCore.Qt.AlignCenter) - self.label_name_3.setObjectName(_fromUtf8("label_name_3")) - self.horizontalLayout_64.addWidget(self.label_name_3) - self.ParCurve_name_3 = QtGui.QLineEdit(self.scrollAreaWidgetContents_6) - self.ParCurve_name_3.setObjectName(_fromUtf8("ParCurve_name_3")) - self.horizontalLayout_64.addWidget(self.ParCurve_name_3) - self.gridLayout_81.addLayout(self.horizontalLayout_64, 1, 0, 1, 1) - self.groupBox_17 = QtGui.QGroupBox(self.scrollAreaWidgetContents_6) - self.groupBox_17.setObjectName(_fromUtf8("groupBox_17")) - self.formLayout_3 = QtGui.QFormLayout(self.groupBox_17) - self.formLayout_3.setObjectName(_fromUtf8("formLayout_3")) - self.label_a_4 = QtGui.QLabel(self.groupBox_17) - self.label_a_4.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_a_4.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_a_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_a_4.setObjectName(_fromUtf8("label_a_4")) - self.formLayout_3.setWidget(0, QtGui.QFormLayout.LabelRole, self.label_a_4) - self.ParCurve_a_3 = QtGui.QLineEdit(self.groupBox_17) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_a_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_a_3.setSizePolicy(sizePolicy) - self.ParCurve_a_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_a_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_a_3.setMaxLength(32769) - self.ParCurve_a_3.setObjectName(_fromUtf8("ParCurve_a_3")) - self.formLayout_3.setWidget(0, QtGui.QFormLayout.FieldRole, self.ParCurve_a_3) - self.label_b_4 = QtGui.QLabel(self.groupBox_17) - self.label_b_4.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_b_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_b_4.setObjectName(_fromUtf8("label_b_4")) - self.formLayout_3.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_b_4) - self.ParCurve_b_3 = QtGui.QLineEdit(self.groupBox_17) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_b_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_b_3.setSizePolicy(sizePolicy) - self.ParCurve_b_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_b_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_b_3.setMaxLength(32769) - self.ParCurve_b_3.setObjectName(_fromUtf8("ParCurve_b_3")) - self.formLayout_3.setWidget(1, QtGui.QFormLayout.FieldRole, self.ParCurve_b_3) - self.label_c_2 = QtGui.QLabel(self.groupBox_17) - self.label_c_2.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_c_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_c_2.setObjectName(_fromUtf8("label_c_2")) - self.formLayout_3.setWidget(2, QtGui.QFormLayout.LabelRole, self.label_c_2) - self.ParCurve_c_3 = QtGui.QLineEdit(self.groupBox_17) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_c_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_c_3.setSizePolicy(sizePolicy) - self.ParCurve_c_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_c_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_c_3.setMaxLength(32769) - self.ParCurve_c_3.setObjectName(_fromUtf8("ParCurve_c_3")) - self.formLayout_3.setWidget(2, QtGui.QFormLayout.FieldRole, self.ParCurve_c_3) - self.label_x_4 = QtGui.QLabel(self.groupBox_17) - self.label_x_4.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_x_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_x_4.setObjectName(_fromUtf8("label_x_4")) - self.formLayout_3.setWidget(3, QtGui.QFormLayout.LabelRole, self.label_x_4) - self.ParCurve_x_3 = QtGui.QLineEdit(self.groupBox_17) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_x_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_x_3.setSizePolicy(sizePolicy) - self.ParCurve_x_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_x_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_x_3.setMaxLength(32769) - self.ParCurve_x_3.setObjectName(_fromUtf8("ParCurve_x_3")) - self.formLayout_3.setWidget(3, QtGui.QFormLayout.FieldRole, self.ParCurve_x_3) - self.label_y_4 = QtGui.QLabel(self.groupBox_17) - self.label_y_4.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_y_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_y_4.setObjectName(_fromUtf8("label_y_4")) - self.formLayout_3.setWidget(4, QtGui.QFormLayout.LabelRole, self.label_y_4) - self.label_z_2 = QtGui.QLabel(self.groupBox_17) - self.label_z_2.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_z_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_z_2.setObjectName(_fromUtf8("label_z_2")) - self.formLayout_3.setWidget(5, QtGui.QFormLayout.LabelRole, self.label_z_2) - self.ParCurve_z_3 = QtGui.QLineEdit(self.groupBox_17) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_z_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_z_3.setSizePolicy(sizePolicy) - self.ParCurve_z_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_z_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_z_3.setMaxLength(32769) - self.ParCurve_z_3.setObjectName(_fromUtf8("ParCurve_z_3")) - self.formLayout_3.setWidget(5, QtGui.QFormLayout.FieldRole, self.ParCurve_z_3) - self.ParCurve_y_3 = QtGui.QLineEdit(self.groupBox_17) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_y_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_y_3.setSizePolicy(sizePolicy) - self.ParCurve_y_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_y_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_y_3.setMaxLength(32769) - self.ParCurve_y_3.setObjectName(_fromUtf8("ParCurve_y_3")) - self.formLayout_3.setWidget(4, QtGui.QFormLayout.FieldRole, self.ParCurve_y_3) - self.gridLayout_81.addWidget(self.groupBox_17, 2, 0, 1, 1) - self.groupBox_18 = QtGui.QGroupBox(self.scrollAreaWidgetContents_6) - self.groupBox_18.setObjectName(_fromUtf8("groupBox_18")) - self.gridLayout_82 = QtGui.QGridLayout(self.groupBox_18) - self.gridLayout_82.setObjectName(_fromUtf8("gridLayout_82")) - self.label_tmin_4 = QtGui.QLabel(self.groupBox_18) - self.label_tmin_4.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_tmin_4.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_tmin_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_tmin_4.setObjectName(_fromUtf8("label_tmin_4")) - self.gridLayout_82.addWidget(self.label_tmin_4, 0, 0, 1, 1) - self.label_tmax_4 = QtGui.QLabel(self.groupBox_18) - self.label_tmax_4.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_tmax_4.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_tmax_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_tmax_4.setObjectName(_fromUtf8("label_tmax_4")) - self.gridLayout_82.addWidget(self.label_tmax_4, 1, 0, 1, 1) - self.ParCurve_tmax_3 = QtGui.QLineEdit(self.groupBox_18) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_tmax_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_tmax_3.setSizePolicy(sizePolicy) - self.ParCurve_tmax_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_tmax_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_tmax_3.setMaxLength(32769) - self.ParCurve_tmax_3.setObjectName(_fromUtf8("ParCurve_tmax_3")) - self.gridLayout_82.addWidget(self.ParCurve_tmax_3, 1, 1, 1, 1) - self.label_tstep_4 = QtGui.QLabel(self.groupBox_18) - self.label_tstep_4.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_tstep_4.setLayoutDirection(QtCore.Qt.LeftToRight) - self.label_tstep_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.label_tstep_4.setObjectName(_fromUtf8("label_tstep_4")) - self.gridLayout_82.addWidget(self.label_tstep_4, 2, 0, 1, 1) - self.ParCurve_tstep_3 = QtGui.QLineEdit(self.groupBox_18) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_tstep_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_tstep_3.setSizePolicy(sizePolicy) - self.ParCurve_tstep_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_tstep_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_tstep_3.setMaxLength(32769) - self.ParCurve_tstep_3.setObjectName(_fromUtf8("ParCurve_tstep_3")) - self.gridLayout_82.addWidget(self.ParCurve_tstep_3, 2, 1, 1, 1) - self.ParCurve_tmin_3 = QtGui.QLineEdit(self.groupBox_18) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ParCurve_tmin_3.sizePolicy().hasHeightForWidth()) - self.ParCurve_tmin_3.setSizePolicy(sizePolicy) - self.ParCurve_tmin_3.setMinimumSize(QtCore.QSize(40, 0)) - self.ParCurve_tmin_3.setMaximumSize(QtCore.QSize(150, 16777215)) - self.ParCurve_tmin_3.setMaxLength(32769) - self.ParCurve_tmin_3.setObjectName(_fromUtf8("ParCurve_tmin_3")) - self.gridLayout_82.addWidget(self.ParCurve_tmin_3, 0, 1, 1, 1) - self.gridLayout_81.addWidget(self.groupBox_18, 3, 0, 1, 1) - self.checkBox_close_3 = QtGui.QCheckBox(self.scrollAreaWidgetContents_6) - self.checkBox_close_3.setObjectName(_fromUtf8("checkBox_close_3")) - self.gridLayout_81.addWidget(self.checkBox_close_3, 5, 0, 1, 1) - self.horizontalLayout_65 = QtGui.QHBoxLayout() - self.horizontalLayout_65.setObjectName(_fromUtf8("horizontalLayout_65")) - self.ParCurve_button_store_3 = QtGui.QPushButton(self.scrollAreaWidgetContents_6) - self.ParCurve_button_store_3.setMinimumSize(QtCore.QSize(40, 0)) - 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) - 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) - 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) + self.Wire_Tab1_4 = QtGui.QWidget() + self.Wire_Tab1_4.setObjectName(_fromUtf8("Wire_Tab1_4")) + self.gridLayout_3 = QtGui.QGridLayout(self.Wire_Tab1_4) self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) - self.checkBox_points_3 = QtGui.QCheckBox(self.groupBox_19) - self.checkBox_points_3.setAutoExclusive(True) - self.checkBox_points_3.setObjectName(_fromUtf8("checkBox_points_3")) - self.gridLayout_3.addWidget(self.checkBox_points_3, 0, 1, 1, 1) - self.checkBox_polyline_3 = QtGui.QCheckBox(self.groupBox_19) - self.checkBox_polyline_3.setChecked(True) - self.checkBox_polyline_3.setAutoExclusive(True) - self.checkBox_polyline_3.setObjectName(_fromUtf8("checkBox_polyline_3")) - self.gridLayout_3.addWidget(self.checkBox_polyline_3, 0, 2, 1, 1) - self.checkBox_bspline_3 = QtGui.QCheckBox(self.groupBox_19) - self.checkBox_bspline_3.setChecked(False) - self.checkBox_bspline_3.setAutoExclusive(True) - self.checkBox_bspline_3.setObjectName(_fromUtf8("checkBox_bspline_3")) - self.gridLayout_3.addWidget(self.checkBox_bspline_3, 1, 2, 1, 1) - self.checkBox_bezier_3 = QtGui.QCheckBox(self.groupBox_19) - self.checkBox_bezier_3.setEnabled(True) - self.checkBox_bezier_3.setChecked(False) - self.checkBox_bezier_3.setAutoExclusive(True) - self.checkBox_bezier_3.setObjectName(_fromUtf8("checkBox_bezier_3")) - self.gridLayout_3.addWidget(self.checkBox_bezier_3, 1, 1, 1, 1) - 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.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.button_curves_and_surfaces = QtGui.QToolButton(self.Wire_Tab1_4) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_curves_and_surfaces.sizePolicy().hasHeightForWidth()) + self.button_curves_and_surfaces.setSizePolicy(sizePolicy) + self.button_curves_and_surfaces.setObjectName(_fromUtf8("button_curves_and_surfaces")) + self.gridLayout_3.addWidget(self.button_curves_and_surfaces, 0, 0, 1, 1) + spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_3.addItem(spacerItem8, 1, 0, 1, 1) + self.tabWidget_8.addTab(self.Wire_Tab1_4, _fromUtf8("")) + self.gridLayout_74.addWidget(self.tabWidget_8, 0, 0, 1, 1) + icon48 = QtGui.QIcon() + icon48.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_wire.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Wire_Tab, icon48, _fromUtf8("")) self.Circle_Tab = QtGui.QWidget() self.Circle_Tab.setObjectName(_fromUtf8("Circle_Tab")) self.gridLayout = QtGui.QGridLayout(self.Circle_Tab) @@ -1190,9 +777,9 @@ class Ui_Form(object): 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) + icon49 = QtGui.QIcon() + icon49.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineCenterCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_linecenter_circle.setIcon(icon49) 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) @@ -1203,18 +790,18 @@ class Ui_Form(object): 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) + icon50 = QtGui.QIcon() + icon50.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_linepoint_circle.setIcon(icon50) 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) + spacerItem9 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem9, 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) + icon51 = QtGui.QIcon() + icon51.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsEllipse.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_3points_ellipse.setIcon(icon51) 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) @@ -1223,28 +810,28 @@ class Ui_Form(object): 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) + spacerItem10 = QtGui.QSpacerItem(20, 121, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem10, 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) + icon52 = QtGui.QIcon() + icon52.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsArc.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_3points_arc.setIcon(icon52) 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_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_3points_circle.setIcon(icon51) + icon53 = QtGui.QIcon() + icon53.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_3points_circle.setIcon(icon53) 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) + icon54 = QtGui.QIcon() + icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_circle.setIcon(icon54) 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) @@ -1257,9 +844,9 @@ class Ui_Form(object): 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("")) + icon55 = QtGui.QIcon() + icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_circle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Circle_Tab, icon55, _fromUtf8("")) self.Plane_Tab = QtGui.QWidget() self.Plane_Tab.setObjectName(_fromUtf8("Plane_Tab")) self.gridLayout_17 = QtGui.QGridLayout(self.Plane_Tab) @@ -1271,46 +858,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) - icon54 = QtGui.QIcon() - icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_threepoints_plane.setIcon(icon54) + icon56 = QtGui.QIcon() + icon56.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_threepoints_plane.setIcon(icon56) 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) - icon55 = QtGui.QIcon() - icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoPointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_twopoints_plane.setIcon(icon55) + icon57 = QtGui.QIcon() + icon57.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoPointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twopoints_plane.setIcon(icon57) 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) - icon56 = QtGui.QIcon() - icon56.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_Npoints_plane.setIcon(icon56) + icon58 = QtGui.QIcon() + icon58.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_Npoints_plane.setIcon(icon58) 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) - icon57 = QtGui.QIcon() - icon57.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_axisandpoint_plane.setIcon(icon57) + icon59 = QtGui.QIcon() + icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_axisandpoint_plane.setIcon(icon59) 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) - 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) + icon60 = QtGui.QIcon() + icon60.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane2.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_axis_point_plane.setIcon(icon60) 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) - icon59 = QtGui.QIcon() - icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_planeandpoint_plane.setIcon(icon59) + icon61 = QtGui.QIcon() + icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_planeandpoint_plane.setIcon(icon61) 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) @@ -1328,9 +915,9 @@ class Ui_Form(object): sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_planeandaxis_plane.sizePolicy().hasHeightForWidth()) self.button_planeandaxis_plane.setSizePolicy(sizePolicy) - icon60 = QtGui.QIcon() - icon60.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_planeandaxis_plane.setIcon(icon60) + icon62 = QtGui.QIcon() + icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_planeandaxis_plane.setIcon(icon62) 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) @@ -1348,9 +935,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) - icon61 = QtGui.QIcon() - icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_distPlane.setIcon(icon61) + icon63 = QtGui.QIcon() + icon63.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distPlane.setIcon(icon63) self.button_distPlane.setIconSize(QtCore.QSize(32, 32)) self.button_distPlane.setObjectName(_fromUtf8("button_distPlane")) self.horizontalLayout_70.addWidget(self.button_distPlane) @@ -1384,9 +971,9 @@ class Ui_Form(object): sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_face_tangent.sizePolicy().hasHeightForWidth()) self.button_face_tangent.setSizePolicy(sizePolicy) - icon62 = QtGui.QIcon() - icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_face_tangent.setIcon(icon62) + icon64 = QtGui.QIcon() + icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_tangent.setIcon(icon64) 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) @@ -1411,8 +998,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) - spacerItem14 = QtGui.QSpacerItem(20, 235, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_18.addItem(spacerItem14, 9, 0, 1, 1) + spacerItem11 = QtGui.QSpacerItem(20, 235, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_18.addItem(spacerItem11, 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")) @@ -1426,9 +1013,9 @@ class Ui_Form(object): sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_click_for_plane.sizePolicy().hasHeightForWidth()) self.button_click_for_plane.setSizePolicy(sizePolicy) - 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) + icon65 = QtGui.QIcon() + icon65.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_click_for_plane.setIcon(icon65) 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) @@ -1461,9 +1048,9 @@ class Ui_Form(object): sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_extension_plane.sizePolicy().hasHeightForWidth()) self.button_extension_plane.setSizePolicy(sizePolicy) - icon64 = QtGui.QIcon() - icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_extension_plane.setIcon(icon64) + icon66 = QtGui.QIcon() + icon66.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_extension_plane.setIcon(icon66) 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) @@ -1479,19 +1066,19 @@ 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) - 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) + icon67 = QtGui.QIcon() + icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPlanes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_center_planes.setIcon(icon67) 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) - spacerItem15 = QtGui.QSpacerItem(20, 527, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_36.addItem(spacerItem15, 3, 0, 1, 1) + spacerItem12 = QtGui.QSpacerItem(20, 527, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_36.addItem(spacerItem12, 3, 0, 1, 1) self.tabWidget_3.addTab(self.Plane_Tab2_2, _fromUtf8("")) self.gridLayout_17.addWidget(self.tabWidget_3, 0, 0, 1, 1) - 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("")) + icon68 = QtGui.QIcon() + icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_plane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Plane_Tab, icon68, _fromUtf8("")) self.Sweep_Tab = QtGui.QWidget() self.Sweep_Tab.setObjectName(_fromUtf8("Sweep_Tab")) self.gridLayout_6 = QtGui.QGridLayout(self.Sweep_Tab) @@ -1528,23 +1115,30 @@ 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) - icon67 = QtGui.QIcon() - icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Sweep.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_sweep.setIcon(icon67) + icon69 = QtGui.QIcon() + icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Sweep.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_sweep.setIcon(icon69) 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) - spacerItem16 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_6.addItem(spacerItem16, 2, 0, 1, 1) + spacerItem13 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_6.addItem(spacerItem13, 3, 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) + icon70 = QtGui.QIcon() + icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_beam.setIcon(icon70) 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.Sweep_Tab, icon68, _fromUtf8("")) + self.button_beam_cut_miter = QtGui.QPushButton(self.Sweep_Tab) + icon71 = QtGui.QIcon() + icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_BeamMiterCut.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_beam_cut_miter.setIcon(icon71) + self.button_beam_cut_miter.setIconSize(QtCore.QSize(32, 32)) + self.button_beam_cut_miter.setObjectName(_fromUtf8("button_beam_cut_miter")) + self.gridLayout_6.addWidget(self.button_beam_cut_miter, 2, 0, 1, 1) + self.tabWidget_7.addTab(self.Sweep_Tab, icon70, _fromUtf8("")) self.Objects_Tab2_2 = QtGui.QWidget() self.Objects_Tab2_2.setEnabled(True) self.Objects_Tab2_2.setMinimumSize(QtCore.QSize(0, 0)) @@ -1557,17 +1151,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)) - icon69 = QtGui.QIcon() - icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_boundingboxes.setIcon(icon69) + icon72 = QtGui.QIcon() + icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_boundingboxes.setIcon(icon72) 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)) - icon70 = QtGui.QIcon() - icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_boundingbox.setIcon(icon70) + icon73 = QtGui.QIcon() + icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_boundingbox.setIcon(icon73) self.button_boundingbox.setIconSize(QtCore.QSize(32, 32)) self.button_boundingbox.setObjectName(_fromUtf8("button_boundingbox")) self.verticalLayout_4.addWidget(self.button_boundingbox) @@ -1588,9 +1182,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) - icon71 = QtGui.QIcon() - icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinder.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cylinder_create.setIcon(icon71) + icon74 = QtGui.QIcon() + icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinder.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cylinder_create.setIcon(icon74) 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) @@ -1618,9 +1212,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) - icon72 = QtGui.QIcon() - icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cube.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cube_create.setIcon(icon72) + icon75 = QtGui.QIcon() + icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cube.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cube_create.setIcon(icon75) 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) @@ -1648,9 +1242,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) - icon73 = QtGui.QIcon() - icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_sphere.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_sphere_create.setIcon(icon73) + icon76 = QtGui.QIcon() + icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_sphere.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_sphere_create.setIcon(icon76) 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) @@ -1668,9 +1262,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) - icon74 = QtGui.QIcon() - icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_dome.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_dome_create.setIcon(icon74) + icon77 = QtGui.QIcon() + icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_dome.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_dome_create.setIcon(icon77) 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) @@ -1697,9 +1291,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) - icon75 = QtGui.QIcon() - icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointText.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_letter.setIcon(icon75) + icon78 = QtGui.QIcon() + icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointText.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_letter.setIcon(icon78) self.button_letter.setIconSize(QtCore.QSize(32, 32)) self.button_letter.setObjectName(_fromUtf8("button_letter")) self.horizontalLayout_75.addWidget(self.button_letter) @@ -1721,9 +1315,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) - icon76 = QtGui.QIcon() - icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Revolve.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_revolve.setIcon(icon76) + icon79 = QtGui.QIcon() + icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Revolve.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_revolve.setIcon(icon79) self.button_revolve.setIconSize(QtCore.QSize(32, 32)) self.button_revolve.setObjectName(_fromUtf8("button_revolve")) self.horizontalLayout_76.addWidget(self.button_revolve) @@ -1739,41 +1333,61 @@ 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) - icon77 = QtGui.QIcon() - icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCopy.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_copy_objects.setIcon(icon77) + icon80 = QtGui.QIcon() + icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCopy.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_copy_objects.setIcon(icon80) 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) - icon78 = QtGui.QIcon() - icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_common.setIcon(icon78) + icon81 = QtGui.QIcon() + icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_common.setIcon(icon81) 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) - icon79 = QtGui.QIcon() - icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_difference.setIcon(icon79) + icon82 = QtGui.QIcon() + icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_difference.setIcon(icon82) 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) - 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("")) + spacerItem14 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_5.addItem(spacerItem14, 11, 0, 1, 1) + icon83 = QtGui.QIcon() + icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Objects_Tab2_2, icon83, _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_3 = QtGui.QHBoxLayout() + self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) + self.button_rotate_image = QtGui.QPushButton(self.tab_2) + self.button_rotate_image.setObjectName(_fromUtf8("button_rotate_image")) + self.horizontalLayout_3.addWidget(self.button_rotate_image) + self.Image_comboBox_axis_rotate = 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_rotate.sizePolicy().hasHeightForWidth()) + self.Image_comboBox_axis_rotate.setSizePolicy(sizePolicy) + self.Image_comboBox_axis_rotate.setMinimumSize(QtCore.QSize(40, 0)) + self.Image_comboBox_axis_rotate.setMaximumSize(QtCore.QSize(60, 16777215)) + self.Image_comboBox_axis_rotate.setLayoutDirection(QtCore.Qt.LeftToRight) + self.Image_comboBox_axis_rotate.setObjectName(_fromUtf8("Image_comboBox_axis_rotate")) + self.Image_comboBox_axis_rotate.addItem(_fromUtf8("")) + self.Image_comboBox_axis_rotate.addItem(_fromUtf8("")) + self.Image_comboBox_axis_rotate.addItem(_fromUtf8("")) + self.horizontalLayout_3.addWidget(self.Image_comboBox_axis_rotate) + self.gridLayout_8.addLayout(self.horizontalLayout_3, 0, 0, 1, 1) 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) + icon84 = QtGui.QIcon() + icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_ImageScale.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_scale_image.setIcon(icon84) 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) @@ -1804,9 +1418,9 @@ class Ui_Form(object): 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.gridLayout_8.addLayout(self.horizontalLayout_4, 1, 0, 1, 1) + spacerItem15 = QtGui.QSpacerItem(20, 650, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_8.addItem(spacerItem15, 2, 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")) @@ -1825,9 +1439,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)) - icon82 = QtGui.QIcon() - icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_alignface2view.setIcon(icon82) + icon85 = QtGui.QIcon() + icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignface2view.setIcon(icon85) 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) @@ -1835,9 +1449,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)) - icon83 = QtGui.QIcon() - icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_align_faces.setIcon(icon83) + icon86 = QtGui.QIcon() + icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_faces.setIcon(icon86) 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) @@ -1856,9 +1470,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)) - icon84 = QtGui.QIcon() - icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_align_edges.setIcon(icon84) + icon87 = QtGui.QIcon() + icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_edges.setIcon(icon87) 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) @@ -1876,9 +1490,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) - 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) + icon88 = QtGui.QIcon() + icon88.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignMainAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_main_axis.setIcon(icon88) 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) @@ -1894,21 +1508,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) - icon86 = QtGui.QIcon() - icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_joint_points.setIcon(icon86) + icon89 = QtGui.QIcon() + icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_points.setIcon(icon89) 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) - icon87 = QtGui.QIcon() - icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_joint_faces.setIcon(icon87) + icon90 = QtGui.QIcon() + icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_faces.setIcon(icon90) 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) - spacerItem19 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_9.addItem(spacerItem19, 6, 0, 1, 1) + spacerItem16 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_9.addItem(spacerItem16, 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")) @@ -2018,8 +1632,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) - spacerItem20 = QtGui.QSpacerItem(18, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_80.addItem(spacerItem20) + spacerItem17 = QtGui.QSpacerItem(18, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_80.addItem(spacerItem17) self.button_cut_apply = QtGui.QPushButton(self.groupBox_20) self.button_cut_apply.setEnabled(False) self.button_cut_apply.setMaximumSize(QtCore.QSize(50, 16777215)) @@ -2030,8 +1644,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) - spacerItem21 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_96.addItem(spacerItem21, 1, 0, 1, 1) + spacerItem18 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_96.addItem(spacerItem18, 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")) @@ -2075,9 +1689,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) - 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("")) + icon91 = QtGui.QIcon() + icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_18, icon91, _fromUtf8("")) self.tab_19 = QtGui.QWidget() self.tab_19.setObjectName(_fromUtf8("tab_19")) self.gridLayout_106 = QtGui.QGridLayout(self.tab_19) @@ -2104,9 +1718,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) - 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("")) + icon92 = QtGui.QIcon() + icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_19, icon92, _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)) @@ -2142,9 +1756,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) - 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("")) + icon93 = QtGui.QIcon() + icon93.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_11.addTab(self.tab_21, icon93, _fromUtf8("")) self.gridLayout_107.addWidget(self.tabWidget_11, 0, 0, 1, 1) self.horizontalLayout_81 = QtGui.QHBoxLayout() self.horizontalLayout_81.setObjectName(_fromUtf8("horizontalLayout_81")) @@ -2172,8 +1786,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) - spacerItem22 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_82.addItem(spacerItem22) + spacerItem19 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_82.addItem(spacerItem19) 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)) @@ -2181,14 +1795,19 @@ 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) - spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_103.addItem(spacerItem23, 1, 0, 1, 1) + spacerItem20 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_103.addItem(spacerItem20, 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")) - self.gridLayout_110 = QtGui.QGridLayout(self.translate_tab_2) - self.gridLayout_110.setObjectName(_fromUtf8("gridLayout_110")) + self.gridLayout_60 = QtGui.QGridLayout(self.translate_tab_2) + self.gridLayout_60.setObjectName(_fromUtf8("gridLayout_60")) self.frame_12 = QtGui.QFrame(self.translate_tab_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.frame_12.sizePolicy().hasHeightForWidth()) + self.frame_12.setSizePolicy(sizePolicy) self.frame_12.setMaximumSize(QtCore.QSize(220, 16777215)) self.frame_12.setFrameShape(QtGui.QFrame.StyledPanel) self.frame_12.setFrameShadow(QtGui.QFrame.Raised) @@ -2225,6 +1844,11 @@ class Ui_Form(object): self.gridLayout_112 = QtGui.QGridLayout(self.tab_22) self.gridLayout_112.setObjectName(_fromUtf8("gridLayout_112")) self.groupBox_22 = QtGui.QGroupBox(self.tab_22) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.groupBox_22.sizePolicy().hasHeightForWidth()) + self.groupBox_22.setSizePolicy(sizePolicy) self.groupBox_22.setMinimumSize(QtCore.QSize(150, 0)) self.groupBox_22.setFlat(False) self.groupBox_22.setObjectName(_fromUtf8("groupBox_22")) @@ -2293,9 +1917,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) - 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("")) + icon94 = QtGui.QIcon() + icon94.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_22, icon94, _fromUtf8("")) self.tab_23 = QtGui.QWidget() self.tab_23.setObjectName(_fromUtf8("tab_23")) self.gridLayout_118 = QtGui.QGridLayout(self.tab_23) @@ -2370,9 +1994,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) - 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("")) + icon95 = QtGui.QIcon() + icon95.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_23, icon95, _fromUtf8("")) self.gridLayout_111.addWidget(self.tabWidget_12, 2, 0, 1, 1) self.horizontalLayout_84 = QtGui.QHBoxLayout() self.horizontalLayout_84.setObjectName(_fromUtf8("horizontalLayout_84")) @@ -2381,17 +2005,17 @@ 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) - spacerItem24 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_84.addItem(spacerItem24) + spacerItem21 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_84.addItem(spacerItem21) 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)) self.ObjTrans_button_apply.setObjectName(_fromUtf8("ObjTrans_button_apply")) 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) - spacerItem25 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_110.addItem(spacerItem25, 1, 0, 1, 1) + self.gridLayout_60.addWidget(self.frame_12, 0, 0, 1, 1) + spacerItem22 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_60.addItem(spacerItem22, 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("")) @@ -2406,103 +2030,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)) - icon93 = QtGui.QIcon() - icon93.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_alignview.setIcon(icon93) + icon96 = QtGui.QIcon() + icon96.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignview.setIcon(icon96) 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) - spacerItem26 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_124.addItem(spacerItem26, 2, 0, 1, 1) + spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_124.addItem(spacerItem23, 2, 0, 1, 1) self.button_trackcamera = QtGui.QPushButton(self.View_Tab_2) - icon94 = QtGui.QIcon() - icon94.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_trackcamera.setIcon(icon94) + icon97 = QtGui.QIcon() + icon97.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_trackcamera.setIcon(icon97) 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) - 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("")) + icon98 = QtGui.QIcon() + icon98.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.View_Tab_2, icon98, _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) - icon96 = QtGui.QIcon() - icon96.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isView.setIcon(icon96) + icon99 = QtGui.QIcon() + icon99.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isView.setIcon(icon99) 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) - spacerItem27 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_125.addItem(spacerItem27, 10, 0, 1, 1) + spacerItem24 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_125.addItem(spacerItem24, 10, 0, 1, 1) self.button_isParallel = QtGui.QPushButton(self.tab_24) - icon97 = QtGui.QIcon() - icon97.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isParallel.setIcon(icon97) + icon100 = QtGui.QIcon() + icon100.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isParallel.setIcon(icon100) 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) - icon98 = QtGui.QIcon() - icon98.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isAngle.setIcon(icon98) + icon101 = QtGui.QIcon() + icon101.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isAngle.setIcon(icon101) 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) - icon99 = QtGui.QIcon() - icon99.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isLength.setIcon(icon99) + icon102 = QtGui.QIcon() + icon102.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isLength.setIcon(icon102) 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) - icon100 = QtGui.QIcon() - icon100.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isDistance.setIcon(icon100) + icon103 = QtGui.QIcon() + icon103.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isDistance.setIcon(icon103) 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) - icon101 = QtGui.QIcon() - icon101.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isCoplanar.setIcon(icon101) + icon104 = QtGui.QIcon() + icon104.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isCoplanar.setIcon(icon104) 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) - icon102 = QtGui.QIcon() - icon102.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isArea.setIcon(icon102) + icon105 = QtGui.QIcon() + icon105.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isArea.setIcon(icon105) 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) - icon103 = QtGui.QIcon() - icon103.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isPerpendicular.setIcon(icon103) + icon106 = QtGui.QIcon() + icon106.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isPerpendicular.setIcon(icon106) 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) - icon104 = QtGui.QIcon() - icon104.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isClearance.setIcon(icon104) + icon107 = QtGui.QIcon() + icon107.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isClearance.setIcon(icon107) 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) - icon105 = QtGui.QIcon() - icon105.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isRadius.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isRadius.setIcon(icon105) + icon108 = QtGui.QIcon() + icon108.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isRadius.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isRadius.setIcon(icon108) 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) - 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("")) + icon109 = QtGui.QIcon() + icon109.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.tab_24, icon109, _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) @@ -2511,23 +2135,24 @@ 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) - spacerItem28 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_43.addItem(spacerItem28) + spacerItem25 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_43.addItem(spacerItem25) 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(6) - self.tabWidget.setCurrentIndex(0) - self.tabWidget_2.setCurrentIndex(0) + self.tabWidget_7.setCurrentIndex(0) + self.tabWidget.setCurrentIndex(2) + self.tabWidget_2.setCurrentIndex(2) self.point_loc_comboBox.setCurrentIndex(1) self.tabWidget_8.setCurrentIndex(0) - self.tabWidget_3.setCurrentIndex(1) + self.tabWidget_3.setCurrentIndex(0) self.transition_comboBox.setCurrentIndex(2) + self.Image_comboBox_axis_rotate.setCurrentIndex(0) self.Image_comboBox_axis_scale.setCurrentIndex(0) - self.tabWidget_9.setCurrentIndex(0) + self.tabWidget_9.setCurrentIndex(2) self.tabWidget_10.setCurrentIndex(0) self.ObjRot_comboBox_axis.setCurrentIndex(0) self.ObjRot_comboBox_center.setCurrentIndex(2) @@ -2677,8 +2302,17 @@ class Ui_Form(object): 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)) - self.button_twolines_point.setToolTip(_translate("Form", "Plot one or two Point(s) at minimum distance of two Lines\n" -"Create a Point at intersection of 2 crossing Lines.", None)) + self.button_twolines_point.setToolTip(_translate("Form", "Point(s)=(Line(s),Line(s)):\n" +"Plot one or two Point(s) at minimum distance of two Lines\n" +"Create a unique Point at intersection of 2 crossing Lines.\n" +"\n" +"First\n" +" - Select two or more Line/Edge(s) and\n" +" - Then Click on the button\n" +" \n" +"Plot the point A on the first Line given and the point B on the second Line.\n" +"The Vector AB perpendicular to the first and second Line.\n" +" ", None)) self.button_twolines_point.setText(_translate("Form", "Point=(Line,Line) ", None)) self.button_point_on_line.setToolTip(_translate("Form", "Create a Point at a certain distance along the line \n" "respecting to the choosen reference starting point.", None)) @@ -2758,6 +2392,11 @@ class Ui_Form(object): " if you select an Object : many points will be saved.\n" "- Then click on this button.", None)) self.button_points_save.setText(_translate("Form", "Save Points", None)) + self.button_points_random.setToolTip(_translate("Form", "

Create random Point(s).

Define first the number of points to create and the coordinates limits.

- Then push the button,

or

- Select first one point to the center desired location;

- Then push the button.

", None)) + self.button_points_random.setText(_translate("Form", "Random Points", None)) + self.spin_random_points.setToolTip(_translate("Form", "

The number indicates in how many point(s) will be generated (Max 100).

", None)) + self.distance_random_points.setToolTip(_translate("Form", "

If set to 10.0 return random floats coordinates in the half-open interval [-10.0, 10.0).

", None)) + self.distance_random_points.setText(_translate("Form", "10.0", None)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.Point_Tab3_3), _translate("Form", "Point 3/3", None)) self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Point_Tab), _translate("Form", "Point", None)) self.tabWidget_7.setTabToolTip(self.tabWidget_7.indexOf(self.Point_Tab), _translate("Form", "Create Point(s)", None)) @@ -2840,6 +2479,30 @@ class Ui_Form(object): "-Select two Axes.", None)) self.button_twolines_axis.setText(_translate("Form", "Axis=(Line,Line)", None)) self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.Axis_Tab1_3), _translate("Form", "Axis 1/3", None)) + self.button_object_base_axes.setToolTip(_translate("Form", "Create 3 Axes at Base location of all selected Object(s).", None)) + self.button_object_base_axes.setText(_translate("Form", "Object(s) Base Axes", None)) + self.button_object_Naxes.setToolTip(_translate("Form", "Create a set of axes from selected Objetcs:\n" +"- Select object(s)\n" +" to create axes from these object(s) !\n" +" if you select a Plane : 4 axes will be created;\n" +" if you select an Object : many axes will be created.\n" +"- Then click on this button.", None)) + self.button_object_Naxes.setText(_translate("Form", "Object(s) N Axes(s)", None)) + self.button_line_to_sketch.setToolTip(_translate("Form", "Transform Line(s) in Sketch\'s Line(s) by projection onto the Sketch\'s Plane:\n" +"- First select an existing Skecth;\n" +"- Select as much as Lines needed;\n" +"Then click on this button.", None)) + self.button_line_to_sketch.setText(_translate("Form", "Axis(es) to Sketch", None)) + self.button_object_3axes.setToolTip(_translate("Form", "Create a set of 2 or 3 main axes from selected Objetcs:\n" +"The most representative axes will be selected from all axis.\n" +"The length of main axes will be the cumulative length of all axes with the same direction.\n" +"- Select object(s)\n" +" to create axes from these object(s) !\n" +" if you select a Plane : 2 axes will be created;\n" +" if you select an Object : 3 axes will be created.\n" +"- Then click on this button.", None)) + self.button_object_3axes.setText(_translate("Form", "Object(s) 3 Axes(s)", None)) + self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.Axis_Tab31_3), _translate("Form", "Axis 3/3", None)) self.button_plane_point_line_axis.setToolTip(_translate("Form", "Create an Axis Perpendicular to an Axis, crossing a Point and Parallel to a Plane.\n" "-Select one Plane, one Axis and one Point ON the previous Axis.", None)) self.button_plane_point_line_axis.setText(_translate("Form", "Axis=(Plane,Point,Axis)", None)) @@ -2945,115 +2608,17 @@ class Ui_Form(object): "MB2 and MB3 can still be used for view zoom and view rotation.", None)) self.button_click_for_axis.setText(_translate("Form", "Click", None)) self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.Axis_Tab2_3), _translate("Form", "Axis 2/3", None)) - self.button_object_base_axes.setToolTip(_translate("Form", "Create 3 Axes at Base location of all selected Object(s).", None)) - self.button_object_base_axes.setText(_translate("Form", "Object(s) Base Axes", None)) - self.button_object_Naxes.setToolTip(_translate("Form", "Create a set of axes from selected Objetcs:\n" -"- Select object(s)\n" -" to create axes from these object(s) !\n" -" if you select a Plane : 4 axes will be created;\n" -" if you select an Object : many axes will be created.\n" -"- Then click on this button.", None)) - self.button_object_Naxes.setText(_translate("Form", "Object(s) N Axes(s)", None)) - self.button_object_3axes.setToolTip(_translate("Form", "Create a set of 2 or 3 main axes from selected Objetcs:\n" -"The most representative axes will be selected from all axis.\n" -"The length of main axes will be the cumulative length of all axes with the same direction.\n" -"- Select object(s)\n" -" to create axes from these object(s) !\n" -" if you select a Plane : 2 axes will be created;\n" -" if you select an Object : 3 axes will be created.\n" -"- Then click on this button.", None)) - self.button_object_3axes.setText(_translate("Form", "Object(s) 3 Axes(s)", None)) - self.button_line_to_sketch.setToolTip(_translate("Form", "Transform Line(s) in Sketch\'s Line(s) by projection onto the Sketch\'s Plane:\n" -"- First select an existing Skecth;\n" -"- Select as much as Lines needed;\n" -"Then click on this button.", None)) - 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.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.button_points_to_polygon.setToolTip(_translate("Form", "

Wire=(N Points):

Create a Polygon (wire) from a set of points.

- First select several Points (at least 2);

- Then push this button


", None)) + self.button_points_to_polygon.setText(_translate("Form", "Make Wire", 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)) - self.label_b_3.setText(_translate("Form", "b (a, t) ", None)) - self.ParCurve_y_2.setText(_translate("Form", "b*sin(t)", None)) - self.checkBox_polar_2.setToolTip(_translate("Form", "Toggle for Polar coordinates:\n" -"then x is interpreted as radius\n" -" and y is interpreted as angle teta.", None)) - self.checkBox_polar_2.setText(_translate("Form", " Polar coord.", None)) - self.label_x_3.setText(_translate("Form", "X (a,b,t) ", None)) - self.ParCurve_x_2.setText(_translate("Form", "a*cos(t)", None)) - self.label_a_3.setText(_translate("Form", "a (t) ", None)) - self.ParCurve_b_2.setText(_translate("Form", "a", None)) - self.ParCurve_comboBox_2.setToolTip(_translate("Form", "Choose another curve from the list.", None)) - self.ParCurve_button_edit_2.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)) - self.ParCurve_button_edit_2.setText(_translate("Form", "Edit", None)) - self.checkBox_close_2.setText(_translate("Form", "Closed curve", None)) - self.checkBox_face_2.setText(_translate("Form", "Create Face", None)) - self.label_name_2.setText(_translate("Form", "Name", None)) - self.ParCurve_name_2.setText(_translate("Form", "Circle", None)) - self.groupBox_15.setTitle(_translate("Form", "Parameter :", None)) - self.label_tmin_3.setText(_translate("Form", "t min", None)) - self.ParCurve_tmin_2.setText(_translate("Form", "0", None)) - self.label_tmax_3.setText(_translate("Form", "t max", None)) - self.ParCurve_tmax_2.setText(_translate("Form", "2*pi", None)) - self.label_tstep_3.setText(_translate("Form", "step", None)) - self.ParCurve_tstep_2.setText(_translate("Form", "0.01", None)) - self.groupBox_16.setTitle(_translate("Form", "Type of 2D Curve :", None)) - self.checkBox_points_2.setText(_translate("Form", "Points", None)) - self.checkBox_polyline_2.setText(_translate("Form", "Polyline", None)) - self.checkBox_bezier_2.setText(_translate("Form", "Bezier", None)) - self.checkBox_bspline_2.setText(_translate("Form", "Bspline", None)) - self.ParCurve_button_store_2.setToolTip(_translate("Form", "Click to store the current edited curve into the table.\n" -"To save your curve you need to go to \"Edit\".", None)) - 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.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)) - self.ParCurve_button_edit_3.setText(_translate("Form", "Edit", None)) - self.label_name_3.setText(_translate("Form", "Name", None)) - self.ParCurve_name_3.setText(_translate("Form", "Cylindrical helix", None)) - self.groupBox_17.setTitle(_translate("Form", "Equation :", None)) - self.label_a_4.setText(_translate("Form", "a (t) ", None)) - self.ParCurve_a_3.setText(_translate("Form", "10*0.05 #Vert. step", None)) - self.label_b_4.setText(_translate("Form", "b (a, t) ", None)) - self.ParCurve_b_3.setText(_translate("Form", "1", None)) - self.label_c_2.setText(_translate("Form", "c (a, b, t) ", None)) - self.ParCurve_c_3.setText(_translate("Form", "10 # Radius", None)) - self.label_x_4.setText(_translate("Form", "X (a,b,c,t) ", None)) - self.ParCurve_x_3.setText(_translate("Form", "c*sin(t)", None)) - self.label_y_4.setText(_translate("Form", "Y (a,b,c,t) ", None)) - self.label_z_2.setText(_translate("Form", "Z (a,b,c,t) ", None)) - self.ParCurve_z_3.setText(_translate("Form", "a*t", None)) - self.ParCurve_y_3.setText(_translate("Form", "c*cos(t)", None)) - self.groupBox_18.setTitle(_translate("Form", "Parameter :", None)) - self.label_tmin_4.setText(_translate("Form", "t min", None)) - self.label_tmax_4.setText(_translate("Form", "t max", None)) - self.ParCurve_tmax_3.setText(_translate("Form", "5*2*pi #5 circles", None)) - self.label_tstep_4.setText(_translate("Form", "step", None)) - self.ParCurve_tstep_3.setText(_translate("Form", "0.01", None)) - self.ParCurve_tmin_3.setText(_translate("Form", "0", None)) - self.checkBox_close_3.setText(_translate("Form", "Closed curve", None)) - self.ParCurve_button_store_3.setToolTip(_translate("Form", "Click to store the current edited curve into the table.\n" -"To save your curve you need to go to \"Edit\".", None)) - self.ParCurve_button_store_3.setText(_translate("Form", "Store", None)) - self.ParCurve_button_apply_3.setToolTip(_translate("Form", "Click to visualize the curve.", None)) - self.ParCurve_button_apply_3.setText(_translate("Form", "Apply", None)) - self.groupBox_19.setTitle(_translate("Form", "Type of 3D Curve :", None)) - self.checkBox_points_3.setText(_translate("Form", "Points", None)) - 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.Wire_Tab3_3), _translate("Form", "Parametric 3D", None)) + self.button_curves_and_surfaces.setText(_translate("Form", "Launch Curves and Surfaces Menu...", None)) + self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.Wire_Tab1_4), _translate("Form", "Curves And Surfaces", 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" @@ -3251,6 +2816,7 @@ class Ui_Form(object): "- Then push this button\n" "", None)) self.button_beam.setText(_translate("Form", "Beam", None)) + self.button_beam_cut_miter.setText(_translate("Form", "Beam Cut Miter", 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)) @@ -3366,6 +2932,10 @@ 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_rotate_image.setText(_translate("Form", "Rotate", None)) + self.Image_comboBox_axis_rotate.setItemText(0, _translate("Form", "X", None)) + self.Image_comboBox_axis_rotate.setItemText(1, _translate("Form", "Y", None)) + self.Image_comboBox_axis_rotate.setItemText(2, _translate("Form", "Z", 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" diff --git a/WorkFeature/WFGui_2015.ui b/WorkFeature/WFGui_2015.ui deleted file mode 100644 index 197c35b..0000000 --- a/WorkFeature/WFGui_2015.ui +++ /dev/null @@ -1,7717 +0,0 @@ - - - Form - - - - 0 - 0 - 382 - 845 - - - - WorkFeature - - - - ../Icons/WF_wf.svg../Icons/WF_wf.svg - - - - - - QFrame::StyledPanel - - - QFrame::Sunken - - - 1 - - - 0 - - - true - - - - - 0 - 0 - 365 - 773 - - - - - - - - 0 - 0 - - - - QTabWidget::West - - - 8 - - - - - ../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 - - - - 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: - - 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: - - in "Axis 2/2" TAB: - Axes=(Axis,Pt,dist) - If an Edge of a Cube is selected the Cube is duplicate - with the corresponding - Edge at the defined distance from the original. - - in "Plane" TAB: - Plane=(Plane,dist) - - - 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: - - in "Check" TAB: - are Parallel? - are Perpendicular? - are Coplanar? - - - 1e-10 - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - ../Icons/WF_point.svg../Icons/WF_point.svg - - - Point - - - Create Point(s) - - - - - - 0 - - - - Point 1/3 - - - Create Point(s) - - - - - - - - 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! - -- 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 - - - - - - - - - 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 - - - - ../Icons/WF_NpointsPoint.svg../Icons/WF_NpointsPoint.svg - - - - 32 - 32 - - - - - - - - - - - 16777215 - 16777215 - - - - Create Point(s) : -Cut each selected Line(s) in 2 (n) parts and -create a (n-1) Point(s) 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 - - - - ../Icons/WF_centerLinePoint.svg../Icons/WF_centerLinePoint.svg - - - - 32 - 32 - - - - - - - - - 40 - 0 - - - - - 50 - 16777215 - - - - The number indicates in how many parts each selected Lines(s) will be cut (Max 100). - - - 2 - - - 100 - - - 1 - - - - - - - - - Create 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 - - - - ../Icons/WF_extremaLinePoint.svg../Icons/WF_extremaLinePoint.svg - - - - 32 - 32 - - - - - - - - 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 - - - - ../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 - - - - 32 - 32 - - - - - - - - Qt::Vertical - - - - 20 - 252 - - - - - - - - - Point 2/3 - - - Create Point(s) - - - - - - Plot one or two Point(s) at minimum distance of two Lines -Create a Point at intersection of 2 crossing Lines. - - - Point=(Line,Line) - - - - ../Icons/WF_lineLinePoint.svg../Icons/WF_lineLinePoint.svg - - - - 32 - 32 - - - - - - - - QLayout::SetFixedSize - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - Create a Point at a certain distance along the line -respecting to the choosen reference starting point. - - - Point along Line - - - - ../Icons/WF_alongLinePoint.svg../Icons/WF_alongLinePoint.svg - - - - 32 - 32 - - - - - - - - - 0 - 0 - - - - - 50 - 0 - - - - - 60 - 16777215 - - - - Distance from the extremity - - - 0.0 - - - - - - - - - - - Point=(Point,Ax,dist): -Create a Point along the given Axis, at a given distance of the selected Point. -The Axis indicate the direction along where the Point is duplicate. -(you can also select several axes to define different directions) -- First select a Point (you can select several points) and one or several Axis -- Second push this button - -NB: - - The distance between points can be defined first. -Positive number in one direction and negative in the other one. -The second number indicates the number of Points to create. - - - - Point=(Pt,Ax,dist) - - - - ../Icons/WF_distPointPoint.svg../Icons/WF_distPointPoint.svg - - - - 32 - 32 - - - - - - - - - 0 - 0 - - - - - 40 - 0 - - - - - 40 - 16777215 - - - - Distance to the new Axis. -Can be negative for the reverse direction! - - - 10.0 - - - - - - - - 30 - 0 - - - - - 30 - 16777215 - - - - The number of copies (Max 100). - - - QAbstractSpinBox::NoButtons - - - false - - - 1 - - - 100 - - - 1 - - - 1 - - - - - - - - - - - - 16777215 - 16777215 - - - - Create Points by Partition: -Cut the selected wire(s) in 2(n) parts and create 2(n) Points with function discretize. -The number indicates in how many parts to cut. -Wires can be: - Line - Circle - Arc - Ellipse -An object must also be seleted but before any Wire to cut all his edges! - - - Points=Cut(Wire) - - - - ../Icons/WF_cutWirePoints.svg../Icons/WF_cutWirePoints.svg - - - - 32 - 32 - - - - - - - - - 40 - 0 - - - - - 50 - 16777215 - - - - The number indicates in how many parts the selected Line will be cut (Max 100). - - - 2 - - - 100 - - - 1 - - - - - - - - - Create a set of Points on a Plane perpendicular to the view at location of mouse clicks. -- Click first on the Button then click on the View (with no object in background). -- Click first on the Button then click on the View (with an object in background), it will attach the points to the surface of the object. - -Use left mouse button (MB1) to generate Points. -MB2 and MB3 can still be used for view zoom and view rotation. - - - - Click - - - - ../Icons/WF_clickPoint.svg../Icons/WF_clickPoint.svg - - - - 32 - 32 - - - - true - - - - - - - Create Base Point of all selected Object(s). - - - Object(s) Base Point - - - - ../Icons/WF_objectBasePoint.svg../Icons/WF_objectBasePoint.svg - - - - 32 - 32 - - - - - - - - Create Center of Mass Point of all selected Object(s). - - - Object(s) Mass Center Point - - - - ../Icons/WF_objectCenterMassPoint.svg../Icons/WF_objectCenterMassPoint.svg - - - - 32 - 32 - - - - - - - - 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 - 255 - - - - - - - - - Point 3/3 - - - - - - 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 - - - - Load Points - - - - ../Icons/WF_pointsSetLoad.svg../Icons/WF_pointsSetLoad.svg - - - - 32 - 32 - - - - - - - - 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 - - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - Create an Axis crossing 2 Points. - - - Two Points Axis - - - - ../Icons/WF_2pointsLine.svg../Icons/WF_2pointsLine.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 - - - - - - - - - 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 - - - - - - - - - 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 - -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 - - - - - - - - - - - 16777215 - 16777215 - - - - Create an Axis Parallel to an Axis (as Direction) and crossing a Point. -- Select one Axis and one (or several) Point(s) NOT on the previous Axis. -Define the length and the attach point if needed. -A Length of Zero means the length of already selected Axis will be used. - - - Axis=(Pt,Dir) - - - - ../Icons/WF_pointLineAxis.svg../Icons/WF_pointLineAxis.svg - - - - 32 - 32 - - - - - - - - - 40 - 16777215 - - - - Define the length of the Axis to create. -A Length of Zero means the length of already selected Axis will be used. - - - 0.0 - - - - - - - - 60 - 16777215 - - - - The Attach Point will be at : -Start of the Axis; -Mid of the Axis; -End of the Axis. - - - 1 - - - - Start - - - - - Mid - - - - - End - - - - - - - - - - - - - - - 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 - - - - - - - - - - - 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 (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. --Select two Axes. - - - Axis=(Line,Line) - - - - ../Icons/WF_twoLinesAxis.svg../Icons/WF_twoLinesAxis.svg - - - - 32 - 32 - - - - - - - - - Axis 2/3 - - - - - - Create an Axis Perpendicular to an Axis, crossing a Point and Parallel to a Plane. --Select one Plane, one Axis and one Point ON the previous Axis. - - - Axis=(Plane,Point,Axis) - - - - ../Icons/WF_planeLinePointAxis.svg../Icons/WF_planeLinePointAxis.svg - - - - 32 - 32 - - - - - - - - Axes=(Pl(s),Axes): -Create projection(s) of Axes onto Plane(s). -- First select one (or several) Line(s) -- Second select one or several) Plane(s) -- Then push this button - - - Axes=(Pl(s),Axes) - - - - ../Icons/WF_linePlaneAxis.svg../Icons/WF_linePlaneAxis.svg - - - - 32 - 32 - - - - - - - - Create an Axis by intersect of 2 Planes. - - - Axis=(Plane,Plane) - - - - ../Icons/WF_2PlanesAxis.svg../Icons/WF_2PlanesAxis.svg - - - - 32 - 32 - - - - - - - - - - Axes=(Axis,Pt,dist): -Create an Axis parallel to a given Axis, Point at a given distance. -The Axis is created along the Plane defined by the given Axis and Point. -- First select an Axis (or several Axes) and a Point -(you can also select several points to define different Planes) -- Second push this button - -NB: - - The distance to the Axis created can be defined first. -Positive number in one direction and negative in the other one. -The second number indicates the number of Axes to create. -With option "Object copy" in "Ori. Pref." TAB - - If an Edge of a Cube is selected the Cube is duplicate with the corresponding -Edge at the defined distance from the original. -Several Edges of the cube can be selected. - - - - Axes=(Axis,Pt,dist) - - - - ../Icons/WF_distAxisAxis.svg../Icons/WF_distAxisAxis.svg - - - - 32 - 32 - - - - - - - - - 0 - 0 - - - - - 40 - 0 - - - - - 40 - 16777215 - - - - Distance to the new Axis. -Can be negative for the reverse direction! - - - 10.0 - - - - - - - - 30 - 0 - - - - - 30 - 16777215 - - - - The number of copies (Max 100). - - - QAbstractSpinBox::NoButtons - - - false - - - 1 - - - 100 - - - 1 - - - 1 - - - - - - - - - - - Axes=(Axis,Pt,Pl,a): -Create an Axis with an Angle to a origin Axis. -- First select an Axis to rotate, then a Plane and a rotation Point -- Second push this button -or -- First select an Axis to rotate, then a rotation Axis and a rotation Point -- Second push this button - -NB: -The Axis is created by rotation using : - The Normal of the selected Plane as rotation Axis -and selected Point as rotation Point. -or - The second selected Axis as rotation Axis -and selected Point as rotation Point. - - - The angle (in degrees) of rotation can be defined first. -Positive number in one direction and negative in the other one. - - The second number indicates the number of Axes to create. - - - - - Axes=(Axis,Pt,Pl,a) - - - - ../Icons/WF_angleAxisAxis.svg../Icons/WF_angleAxisAxis.svg - - - - 32 - 32 - - - - - - - - - 0 - 0 - - - - - 40 - 0 - - - - - 40 - 16777215 - - - - Angle to the new Axis. -Can be negative for the reverse direction! -(in degrees) - - - 45.0 - - - - - - - - 30 - 0 - - - - - 30 - 16777215 - - - - The number of copies (Max 100). - - - QAbstractSpinBox::NoButtons - - - false - - - 1 - - - 100 - - - 1 - - - 1 - - - - - - - - - - - - 16777215 - 16777215 - - - - Create Axes by Partition: -Cut the selected wire(s) in 2(n) parts and create 2(n) Axes with function discretize. -The number indicates in how many parts to cut. -Wires can be: - Line - Circle - Arc - Ellipse -An object must also be seleted but before any Wire to cut all his Edges! -NB: You can change the successive lines to be bicolor (red and white) -in "Ori. Pref." TAB - - - - Axes=Cut(Wire) - - - - ../Icons/WF_cutWireAxes.svg../Icons/WF_cutWireAxes.svg - - - - 32 - 32 - - - - - - - - - 40 - 0 - - - - - 50 - 16777215 - - - - The number indicates in how many parts the selected Line will be cut (Max 100). - - - 2 - - - 100 - - - 1 - - - - - - - - - - - - 16777215 - 16777215 - - - - Create Axes: -Cut the selected Line in 2(n) parts and create 2(n) Axes. -The number indicates in how many parts to cut. - -NB: You can change the successive lines to be bicolor (red and white) -in "Ori. Pref." TAB - - - Axes=Cut(Axis) - - - - ../Icons/WF_cutAxis.svg../Icons/WF_cutAxis.svg - - - - 32 - 32 - - - - - - - - - 40 - 0 - - - - - 50 - 16777215 - - - - The number indicates in how many parts the selected Line will be cut (Max 100). - - - 2 - - - 100 - - - 1 - - - - - - - - - - - - 0 - 0 - - - - Enlarge(Axis): -Extend an Axis at two extrema. -- First select an Axis (or several Axes) -- Second push this button - -NB: - - The percentage of the extension can be defined first. - - Negative percentage will shrink the Axis - - - Enlarge(Axis) - - - - ../Icons/WF_enlargeLine.svg../Icons/WF_enlargeLine.svg - - - - 32 - 32 - - - - - - - - - 0 - 0 - - - - - 40 - 0 - - - - - 50 - 16777215 - - - - 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 - - - - - - - - - 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. - - -Use left mouse button (MB1) to generate Lines. -MB2 and MB3 can still be used for view zoom and view rotation. - - - Click - - - - ../Icons/WF_clickLine.svg../Icons/WF_clickLine.svg - - - - 32 - 32 - - - - - - - - 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: -- First select an existing Skecth; -- Select as much as Lines needed; -Then click on this button. - - - Axis(es) to Sketch - - - - ../Icons/WF_2Sketch.svg../Icons/WF_2Sketch.svg - - - - 32 - 32 - - - - - - - - Qt::Vertical - - - - 20 - 483 - - - - - - - - - - - - - - ../Icons/WF_wire.svg../Icons/WF_wire.svg - - - Wire - - - - - - Examples from http://www.mathcurve.com/ - - - true - - - - - - - - 0 - 0 - - - - 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 - - - - - - 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. - - - Plane=(Point, Plane) - - - - ../Icons/WF_pointPlanePlane.svg../Icons/WF_pointPlanePlane.svg - - - - 32 - 32 - - - - - - - - - 40 - 0 - - - - - 60 - 16777215 - - - - Length for the extensions of the new Plane compared to initial one. - - - 0.0 - - - - - - - - - - - - 0 - 0 - - - - Plane=(Plane, Axis): -Create a Plane crossing a Line and perpendicular to a Plane. -- First select a plane and a line NOT on the previous plane -- Second push this button - -NB: The plane created can be rotated if a none null angle is defined first. - - - Plane=(Plane, Axis) - - - - ../Icons/WF_planeLinePlane.svg../Icons/WF_planeLinePlane.svg - - - - 32 - 32 - - - - - - - - - 0 - 0 - - - - - 40 - 0 - - - - - 60 - 16777215 - - - - Angle of rotation of the created Plane (in degrees). - - - 0.0 - - - - - - - - - - - Plane=(Plane,dist): -Create a Plane parallel to a Plane at a given distance. -- First select a plane or several Planes -- Second push this button - -NB: - - The distance to the plane created can be defined first. -Positive number in one direction and negative in the other one. -The second number indicates the number of planes to create. -With option "Object copy" in "Ori. Pref." TAB - - If a Face of a Cube is selected the Cube is duplicate with the -corresponding Face at the defined distance from the original. -Several Faces of the cube can be selected. - - - Plane=(Plane,dist) - - - - ../Icons/WF_distPlanePlane.svg../Icons/WF_distPlanePlane.svg - - - - 32 - 32 - - - - - - - - - 0 - 0 - - - - - 40 - 0 - - - - - 40 - 16777215 - - - - Distance to the new plane. -Can be negative for the reverse direction! - - - 10.0 - - - - - - - - 30 - 0 - - - - - 30 - 16777215 - - - - The number of copies (Max 100). - - - QAbstractSpinBox::NoButtons - - - false - - - 1 - - - 100 - - - 1 - - - 1 - - - - - - - - - - - - 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 - - - - ../Icons/WF_FaceTangent.svg../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 - - - - - - - - - Qt::Vertical - - - - 20 - 235 - - - - - - - - - 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 - - - - - - - - - - - - 0 - 0 - - - - Enlarge(Plane): -Extend a Plane in each dimension. -- First select a Plane (or several Planes) -- Second push this button - -NB: - - The percentage of the extension can be defined first. - - - Enlarge(Plane) - - - - ../Icons/WF_enlargePlane.svg../Icons/WF_enlargePlane.svg - - - - 32 - 32 - - - - - - - - - 0 - 0 - - - - - 40 - 0 - - - - - 50 - 16777215 - - - - Extension of the Plane in each dimension in percentage. - - - 50.0 - - - - - - - - - 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 - - - - ../Icons/WF_centerObjectsPlanes.svg../Icons/WF_centerObjectsPlanes.svg - - - - 32 - 32 - - - - - - - - Qt::Vertical - - - - 20 - 527 - - - - - - - - - - - - - - ../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 : -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: - 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 : -makePipeShell(shapeList,[isSolid,isFrenet,transition]) - - - - 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; -- the "plane" of the Section is rotate to be perpendicular to the 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 - -NB: You can change first: -- Solid option (if toggled will generate a solid for Closed wire Section only) -- isFrenet option -- All option (means if the trajectory selected is a compound, all sub wires will be used for the sweep) -- 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 - - - - ../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 - - - - - - - - - - - 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 - - - - Align - - - - - - - 0 - 0 - - - - - 220 - 16777215 - - - - Align the face of selected object(s) to the actual view Plane. - - Click first to select a Face of one or several objects. -These objects will be moved not the point of view. -Then Click the button. - -NB: - The center of rotation is the center of the bounbing box if possible or - the center of the Face. - - if the Face of the object selected is already aligned to the view Plane, - a rotation of 180 deg is applied to the object. - In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1) - - Two clicks will rotate by 180 deg the moving objects. - - - - - 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). -Then Click the button. - -NB: - The center of rotation is the center of the bounbing box if possible or - the center of the Face. - - if the Face of the object selected is already aligned to the last one, - a rotation of 180 deg is applied to the object. - In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1) - - Two clicks will rotate by 180 deg the moving objects. - - - - 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). -Then Click the button. - -NB: - The center of rotation is the center of the bounbing box if possible or - the center of the Edge. - - if the Edge of the object selected is already aligned to the last one, - a rotation of 180 deg is applied to the object. - In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1) - - Two clicks will rotate by 180 deg the moving objects. - - - - 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 - - - - ../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). -Then Click the button. - - Two clicks will rotate by 180 deg the moving objects. - - - - 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: -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: -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 - - - - - - - - - - - - - - 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 - - - - - - - - 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 - - - - - - - - - - - - - - - - - - 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 - - - - - 80 - 0 - - - - - 130 - 16777215 - - - - Qt::LeftToRight - - - 0 - - - - X - - - - - Y - - - - - Z - - - - - To select - - - - - - - - false - - - - 40 - 0 - - - - - 80 - 16777215 - - - - Select - - - - - - - - - ../Icons/WF_rotationPoint.svg../Icons/WF_rotationPoint.svg - - - Center - - - - - - true - - - - 0 - 0 - - - - - 120 - 0 - - - - - 130 - 16777215 - - - - 2 - - - QComboBox::AdjustToContentsOnFirstShow - - - - Origin - - - - - Base Obj. - - - - - Center Obj.(s) - - - - - To select - - - - - - - - false - - - - 40 - 0 - - - - - 80 - 16777215 - - - - Select - - - - - - - - - - - - 150 - 67 - - - - - 16777215 - 16777215 - - - - Angle of rotation : - - - false - - - - - - 0 - - - - Define - - - - - - - 0 - 39 - - - - - 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 -or -- Select the 2 Planes and -- Click this button -or -- Select one Edge and one Plane and -- Click this button - -NB: - Normals of Planes will be used. - - - Select - - - - - - - - - - - - - - 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. -Copy means that the original Object will be left in his original location. -NB: - -1 copy requested : - - If one starting point and one ending point are selected. - Only one copy is done! - - - If one starting point and several ending points are selected. - One copy is done at each ending points selected! - -N copies requested : - - If one starting point and one ending point are selected. - Only one copy is done at the ending point then at double distance - of the ending point along the line defined by starting and ending point, - and so on! - - If one starting point and several ending points are selected. - One copy is done at each ending points selected, then at double distance - of each ending points along the line defined by starting and the current - ending point, and so on! - - - 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 -Box -Pad - |_Sketch - -if the current check box is toggle the result will be : -Box -Pad - |_Sketch -Box001 -Pad001 - |_Sketch001 - -if not the result will be : -Box -Pad -Pad001 - |_Sketch - -On the last result the same Sketch is both link to Pad001 but also still to Pad. - - - Deep - - - - - - - - - 0 - - - - - ../Icons/WF_startPoint.svg../Icons/WF_startPoint.svg - - - Start - - - - - - - 150 - 0 - - - - Starting Point : - - - false - - - - - - true - - - - 0 - 0 - - - - - 100 - 0 - - - - - 120 - 16777215 - - - - 3 - - - QComboBox::AdjustToContentsOnFirstShow - - - - Origin - - - - - Base Obj. - - - - - Center Obj.(s) - - - - - To select - - - - - To define - - - - - - - - true - - - - 50 - 0 - - - - - 120 - 16777215 - - - - Select - - - - - - - - - - - X : - - - - - - - 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 - - - - - - - - - - - Z : - - - - - - - false - - - - 90 - 0 - - - - - 200 - 16777215 - - - - Please Enter a new coordinate and type RETURN to validate! - - - 0.0 - - - - - - - - - - - - - - - - ../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 - - - - - - - - - - - - - - ../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 ... - - - - ../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 ? - - - - ../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 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 -or -- Select the 2 Planes and -- Click this button -or -- Select one Edge and one Plane and -- Click this button - -NB: - Normals of Planes will be used. - - - Angle ? - - - - ../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: -Distances measurement and Delta values (on main Axes) between two Points -- Select the 2 Points and -Click this button - - - - 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 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 ? - - - - ../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 - - - - - - - - - - - - - - - - - - Close - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 2015 - - - - - - - - - - diff --git a/WorkFeature/WF_2015.py b/WorkFeature/WF_2015.py index 536062e..250cf7d 100644 --- a/WorkFeature/WF_2015.py +++ b/WorkFeature/WF_2015.py @@ -54,17 +54,23 @@ """ # First two lines to be able to launch with python import sys +import os.path -from WorkFeature import WF_ObjParCurve_2015 +# get the path of the current python script +m_current_path = os.path.realpath(__file__) +# Change this by your own FreeCAD lib path to import FreeCAD +if not sys.path.__contains__(m_current_path): + sys.path.append(m_current_path) + +from ParCurve.WF_ObjParCurve_2016 import * import WFGui_2015 as WFGui from WF_ObjRot_2015 import * from WF_Utils_2015 import * -from WF_ObjParCurve_2015 import * global myRelease -myRelease = "2016_09_10" +myRelease = "2016_12_30" + -import os.path import time import math import itertools @@ -129,12 +135,14 @@ m_numberLinePart = 2 m_numberLineCut = 2 m_numberPointCutWire = 2 m_numberAxisCutWire = 2 +m_numberRandomPoint = 1 m_numberCircleCut = 2 m_numberPlane = 1 m_numberLine = 1 m_numberLine2 = 1 m_numberPoint = 1 m_distanceLinePoint = 0.0 +m_distanceRandomPoints = 10.0 m_extensionTwoPointsAxis = 0.0 m_extensionLinePointAxis = 0.0 m_extensionLine = 0.0 @@ -2000,6 +2008,35 @@ def plot_axis(Vector_A, Vector_B, part="Part::Feature", name="Axis", grp="WorkAx return axis_User_Name, axis +def plot_curve(Matriz, Close, Face, part="Part::Feature", name="Curve", grp="WorkWires", color=(1.00,0.67,0.00)): + m_close = Close + m_face = Face + if not(App.ActiveDocument.getObject( grp )): + App.ActiveDocument.addObject("App::DocumentObjectGroup", grp) + curvea = Part.makePolygon(Matriz) + curve = Draft.makeWire(curvea,closed=m_close,face=m_face) + FreeCAD.ActiveDocument.ActiveObject.Label = str(name) + + if m_close == True and m_face == True: + Draft.upgrade(FreeCADGui.Selection.getSelection(),delete=True) + FreeCAD.ActiveDocument.recompute() + App.ActiveDocument.getObject( grp ).addObject(curve) + curve_User_Name = curve.Label + #Gui.ActiveDocument.getObject(curve_User_Name).LineColor = color + return curve_User_Name, curve + + +def plot_polygon(Matriz, part="Part::Feature", name="Polygon", grp="WorkWires", color=(1.00,0.67,0.00)): + if not(App.ActiveDocument.getObject( grp )): + App.ActiveDocument.addObject("App::DocumentObjectGroup", grp) + polygon = App.ActiveDocument.addObject(part, name) + polygon.Shape = Part.makePolygon(Matriz) + App.ActiveDocument.getObject( grp ).addObject(polygon) + polygon_User_Name = polygon.Label + Gui.ActiveDocument.getObject(polygon_User_Name).LineColor = color + return polygon_User_Name, polygon + + def plot_circle(Radius, Position, Direction, part="Part::Feature", name="Circle", grp="WorkCircles"): if not(App.ActiveDocument.getObject( grp )): App.ActiveDocument.addObject("App::DocumentObjectGroup", grp) @@ -3141,7 +3178,6 @@ def plot_pointLinePoint(): 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 @@ -3272,6 +3308,8 @@ def distanceLinePoint(value): #plot_alongLinePoint() except ValueError: 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. @@ -3348,6 +3386,88 @@ def plot_alongLinePoint(): def plot_2LinesPoint(): + """ Point(s)=(Line(s),Line(s)): + Plot one or two Point(s) at minimum distance of two Lines + Create a unique Point at intersection of 2 crossing Lines. + + First + - Select two or more Line/Edge(s) and + - Then Click on the button + + Plot the point A on the first Line given and the point B on the second Line. + The Vector AB perpendicular to the first and second Line. + + """ + msg=verbose + msg=1 + + error_msg = """Unable to create (Line,Line) Intersection(s) : + First + - Select two or more Line/Edge(s) and + - Then Click on the button + but at least select two different Lines !""" + result_msg = " : (Line,Line) Intersection(s) are created !" + + createFolders('WorkPoints') + m_dir = 'Set' + name = "Intersection" + 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=["Segments","Curves","Planes","Objects"]) + if msg != 0: + print_msg("Number_of_Edges=" + str(Number_of_Edges)) + + if Number_of_Edges >= 2: + for i in range( Number_of_Edges -1 ): + f1 = Edge_List[i] + f2 = Edge_List[i+1] + #print_msg(str(f1)) + #print_msg(str(f2)) + d = f1.distToShape(f2) + print_msg(str(d)) + Distance = d[0] + Vector_A = d[1][0][0] + #print_point(Vector_A,"Vector_A is : ") + Vector_B = d[1][0][1] + if abs(Distance) <= 1.e-14: + Center_User_Name = plot_point(Vector_A, part, name, str(m_dir)) + print_msg(str(Center_User_Name) + result_msg ) + else: + 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 :") + print_msg(" Distance between the points is : " + str(Distance)) + else: + printError_msg(error_msg) + + except: + printError_msg(error_msg) + + +def plot_2LinesPoint2(): """ Plot one or two Point(s) at minimum distance of two Lines. """ msg=0 @@ -3386,7 +3506,7 @@ def plot_2LinesPoint(): except: printError_msg(error_msg) - + def numberPoint(value): """ Respond to the change in number of point from the spin box. @@ -3531,6 +3651,112 @@ def plot_distPoint(): except: printError_msg(error_msg) +def plot_distPoint2(): + """ Axes=(Axis,Pt,dist)): + Create an Axis parallel to a given Axis, Point at a given distance. + The Axis is created on the Plane defined by the given Axis and Point. + - First select an Axis (or several Axes) and a Point + (you can also select several points to define different Planes) + + NB: The distance to the Axis created can be defined first. + Positive number in one direction and negative in the other one. + The second number indicates the number of Axes to create. + + If an Edge of a Cube is selected the Cube is duplicate with the corresponding + """ + global verbose + global m_numberPoint + global m_distPoint + msg=verbose + createFolders('WorkPoints') + error_msg = "Unable to create Point(s) : \nSelect one (or several) Point and one or several Lines" + result_msg = " : Point(s) created !" + + Selection = get_SelectedObjectsWithParent(info=msg, printError=False) + + try: + SelectedObjects = Selection + Number_of_Points = SelectedObjects[0] + Number_of_Edges = SelectedObjects[1] + + if (Number_of_Edges >= 1) and (Number_of_Points >= 1): + Edge_List = SelectedObjects[4] + Points_List = SelectedObjects[3] + if msg !=0: + print_msg("Number_of_Points = " + str(Number_of_Points)) + print_msg("Number_of_Edges = " + str(Number_of_Edges)) + print_msg("Point List = " + str(Points_List)) + print_msg("Edge List = " + str(Edge_List)) + + # Loop on the Points + for Selected_Point_dict in Points_List: + if msg != 0: + print_msg("Selected_Point_dict = " + str(Selected_Point_dict)) + for Selected_Point, Parent_Point in Selected_Point_dict.iteritems(): + if msg != 0: + print_msg("Selected_Point = " + str(Selected_Point)) + print_msg("Parent_Point = " + str(Parent_Point)) + Point_C = Selected_Point.Point + if msg !=0: + print_point(Point_C, msg="Point_C : ") + Placement1 = Selected_Point.Placement + #Placement1 = Parent_Point.Placement + #base1 = Placement1.Base + #base1 = Point_C + rot1 = Placement1.Rotation + center_Vector = Point_C + m_move = Base.Vector(0, 0, 0) + Move_Vector = Base.Vector(0, 0, 0) + # Loop on the Edges + for Selected_Edge_dict in Edge_List: + for Selected_Edge, Parent_Edge in Selected_Edge_dict.iteritems(): + if msg != 0: + print_msg("Selected_Edge = " + str(Selected_Edge)) + print_msg("Parent_Edge = " + str(Parent_Edge)) + + Point_A = Selected_Edge.Vertexes[0].Point + Point_B = Selected_Edge.Vertexes[-1].Point + if msg !=0: + print_point(Point_A, msg="Selected_Edge.Vertexes[0] Point_A : ") + print_point(Point_B, msg="Selected_Edge.Vertexes[-1] Point_B : ") + AB_Vector = Point_B.sub(Point_A) + AB_Vector = AB_Vector.normalize() + # plot_axis(Base.Vector(0, 0, 0), AB_Vector, "Part::Feature", "AB") + Move_Vector = AB_Vector.multiply(m_distPoint) + Move_Vector = Move_Vector.add(center_Vector) + # plot_axis(Base.Vector(0, 0, 0), Move_Vector, "Part::Feature", "Move_Vector") + m_move = Move_Vector.sub(center_Vector) + + if msg != 0: + print_point(Move_Vector, msg="Move_Vector = ") + print_point(m_move, msg="m_move = ") + print_msg("m_numberPoint = " + str(m_numberPoint)) + + for m_i in range(m_numberPoint): +#============================================================================== +# if objCopy == 1: +# m_new_point = App.activeDocument().copyObject(Parent_Point) +# else: +#============================================================================== + m_new_point_shape = Selected_Point.copy() + m_new_point = App.ActiveDocument.addObject("Part::Feature", "Point_at_distance") + m_new_point.Shape = m_new_point_shape + App.ActiveDocument.getObject('WorkPoints').addObject(m_new_point) + Point_User_Name = m_new_point.Label + + newplace1 = App.Placement(m_move, rot1 ) + m_new_point.Placement = newplace1 + # Update the move + m_move = m_move.add(Move_Vector.sub(center_Vector)) + + properties_point(Point_User_Name) + print_msg(str(Point_User_Name) + result_msg ) + + else: + printError_msg(error_msg) + except: + printError_msg(error_msg) + def numberPointCutWire(value): """ Respond to the change in number of cut value from the spin box. @@ -4221,7 +4447,102 @@ def point_toSave2(): except: printError_msg(error_msg) +def numberRandomPoint(value): + """ Respond to the change in number of cut value from the spin box. + """ + global verbose + msg=verbose + try: + # First we check if a valid number have been entered + global m_numberRandomPoint + if str(value) == '-': + return + m_numberRandomPoint = int(value) + if msg != 0: + print_msg("New number is :" + str(m_numberRandomPoint)) + except ValueError: + printError_msg("Number must be valid !") + + +def distanceRandomPoints(value): + """ Respond to the change in distance value from the text box. + """ + try: + # First we check if a valid number have been entered + global m_distanceRandomPoints + if str(value) == '-': + return + m_distanceRandomPoints = float(value) + print_msg("New distance is :" + str(m_distanceRandomPoints)) + #plot_alongLinePoint() + except ValueError: + printError_msg("Distance must be valid number !") + + +def plot_points_random(): + """Create random Point(s). + Define first the number of points to create and the coordinates limits. + - Then push the button, + or + - Select first one point to the center desired location; + - Then push the button. + """ + msg=verbose + msg = 1 + import numpy as np + + error_msg = """Unable to create random Point(s) : + Define first the number of points to create and the coordinates limits. + - Then push the button, + or + - Select first one point to the center desired location; + - Then push the button. + """ + result_msg = " : random Point(s) created !" + + createFolders('WorkPoints') + m_dir = 'Set' + name = "RandomPoint" + 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 + + Number_of_Points = 0 + + m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name) + if m_selEx: + if msg != 0: + print_msg(str(m_selEx)) + m_sel = Selection(m_selEx) + Number_of_Points, Point_List = m_sel.get_points(getfrom=["Points"]) + if msg != 0: + print_msg("Number_of_Points=" + str(Number_of_Points)) + + m_limit = m_distanceRandomPoints/2 + if (Number_of_Points >= 1): + m_Point = Point_List[-1] + for m_point_id in range(m_numberRandomPoint): + x, y, z = m_distanceRandomPoints* np.random.random_sample((3,)) - m_limit + x -= m_Point.Point.x + y -= m_Point.Point.y + z -= m_Point.Point.z + plot_point(Base.Vector(x, y, z), part, name, str(m_dir)) + else: + for m_point_id in range(m_numberRandomPoint): + x, y, z = m_distanceRandomPoints* np.random.random_sample((3,)) - m_limit + plot_point(Base.Vector(x, y, z), part, name, str(m_dir)) + + def plot_centerObjectAxes(): """ Create 3 Axes XY, and Z at center point of all selected objects. """ @@ -8037,6 +8358,71 @@ def plot_wire_on_plane(): # points.append(p.projectToPlane(p1,p4)) # sel.Object.Points = points + +def plot_bezier(): + pass + +def points_toPolygon(): + """ Create a polygon from a set of points. + - First select several Points + + """ + msg=verbose + m_close = False + m_face = False + + error_msg = """Unable to create Polygon : + Select at least two points !""" + result_msg = " : Polygon created !" + + createFolders('WorkWires') + m_dir = 'Set' + name = "Polygon_from_N_Points" + 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 + + Selection = get_SelectedObjects(info=msg, printError=False) + + try: + SelectedObjects = Selection + Number_of_Points = SelectedObjects[0] + if msg != 0: + print_msg("Number_of_Points=" + str(Number_of_Points)) + if Number_of_Points > 1: + m_x = 0.0 + m_y = 0.0 + m_z = 0.0 + matriz = [] + Point_List = SelectedObjects[3] + if msg != 0: + print_msg("Point_List=" + str(Point_List)) + + for Selected_Point in Point_List: + m_point = Selected_Point.Point + m_x = m_point.x + m_y = m_point.y + m_z = m_point.z + matriz.append(FreeCAD.Vector(m_x,m_y,m_z)) + + curve_User_Name, curve = plot_curve(matriz, m_close, m_face, part, name, str(m_dir)) + #curve_User_Name, curve = plot_polygon(matriz, part, name, str(m_dir)) + print_msg(str(curve_User_Name) + result_msg + " into :" + str(m_dir)) + else: + printError_msg(error_msg) + except: + printError_msg(error_msg) + + def plot_4points_bezier(): msg=1 @@ -8084,6 +8470,7 @@ def plot_4points_bezier(): 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 """ @@ -12636,7 +13023,7 @@ def object_jointFaces(): except: printError_msg(error_msg) - + #################################################################################### try: _fromUtf8 = QtCore.QString.fromUtf8 @@ -12757,10 +13144,13 @@ class WorkFeatureTab(): self.eventsRot = RotationEvents(self.ui) # Create a Translation object and connect self.eventsTrans = TranslationEvents(self.ui) - # Create a Parametric 2D Curve object and connect - self.events2D = ParametricCurve2DEvents(self.ui) - # Create a Parametric 3D Curve object and connect - self.events3D = ParametricCurve3DEvents(self.ui) + + + + ## Create a Parametric 2D Curve object and connect + #self.events2D = ParametricCurve2DEvents(self.ui) + ## Create a Parametric 3D Curve object and connect + #self.events3D = ParametricCurve3DEvents(self.ui) ### Connect to functions self.connections_for_checkbox_toggled = { @@ -12770,7 +13160,8 @@ class WorkFeatureTab(): "checkBox_volumBB" : "volumBBox_toggled", } self.connections_for_button_clicked = { - "button_WF_quit" : "quit_clicked", + "button_WF_quit" : "quit_clicked", + "button_curves_and_surfaces" : "launch_curvesAndSurfaces", } #self.PB_Quit.clicked.connect(self.on_PB_Quit_clicked) # quit @@ -12798,6 +13189,7 @@ class WorkFeatureTab(): "button_point_to_sketch" : "point_toSketch", "button_points_load" : "point_toLoad", "button_points_save" : "point_toSave", + "button_points_random" : "plot_points_random", "button_object_axis" : "plot_centerObjectAxes", "button_twopoints_axis" : "plot_2PointsAxis", @@ -12823,6 +13215,10 @@ class WorkFeatureTab(): "button_object_3axes" : "plot_object3Axes", "button_line_to_sketch" : "line_toSketch", + "button_points_to_polygon" : "points_toPolygon", + #"button_wire_on_plane" : "plot_wire_on_plane", + "button_4points_bezier" : "plot_4points_bezier", + "button_linecenter_circle" : "plot_linecenterCircle", "button_linepoint_circle" : "plot_linepointCircle", "button_3points_circle" : "plot_3pointsCircle", @@ -12845,10 +13241,7 @@ class WorkFeatureTab(): "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", @@ -12897,6 +13290,8 @@ class WorkFeatureTab(): self.connections_for_text_changed = { "tolerance_edit" : "setTolerance", "distance_point_on_line" : "distanceLinePoint", + "distance_random_points" : "distanceRandomPoints", + "extension_twopoints_axis" : "extensionTwoPointsAxis", "extension_face_normal" : "extensionFaceNormal", @@ -12941,6 +13336,7 @@ class WorkFeatureTab(): "spin_axis_cut" : "numberLineCut", "spin_wire_cut_point" : "numberPointCutWire", "spin_wire_cut_axis" : "numberAxisCutWire", + "spin_random_points" : "numberRandomPoint", "spin_circle_cut" : "numberCircleCut", "spin_dist_plane" : "numberPlane", "spin_dist_line" : "numberLine", @@ -13036,8 +13432,20 @@ class WorkFeatureTab(): for i in range(2,self.m_tab.count()): if "Work Features" == str(_fromUtf8(self.m_tab.tabText(i))): self.m_tab.removeTab(int(i)) - break - + break + + def launch_curvesAndSurfaces(self): + myObject = ParametricTab(ParCurveGui) + + # Create a Regression 2D Curve object and connect + self.reg_events2D = RegressionCurve2DEvents(self.ui) + # Create a Parametric 2D Curve object and connect + self.events2D = ParametricCurve2DEvents(self.ui) + # Create a Parametric 3D Curve object and connect + self.events3D = ParametricCurve3DEvents(self.ui) + # Create a Surface object and connect + self.surface = SurfaceEvents(self.ui) + def getMainWindow(self): """ Returns the main window """ diff --git a/WorkFeature/WF_ObjParCurve2DEditGui_2015.py b/WorkFeature/WF_ObjParCurve2DEditGui_2016.py similarity index 98% rename from WorkFeature/WF_ObjParCurve2DEditGui_2015.py rename to WorkFeature/WF_ObjParCurve2DEditGui_2016.py index 75fc49b..732f71c 100644 --- a/WorkFeature/WF_ObjParCurve2DEditGui_2015.py +++ b/WorkFeature/WF_ObjParCurve2DEditGui_2016.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'WF_ObjParCurve2DEditGui_2015.ui' +# Form implementation generated from reading ui file 'WF_ObjParCurve2DEditGui_2016.ui' # -# Created: Tue Oct 27 06:56:40 2015 -# by: PySide UI code generator 4.11.2 +# Created: Fri Dec 30 15:42:17 2016 +# by: PySide UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost! diff --git a/WorkFeature/WF_ObjParCurve3DEditGui_2015.py b/WorkFeature/WF_ObjParCurve3DEditGui_2016.py similarity index 96% rename from WorkFeature/WF_ObjParCurve3DEditGui_2015.py rename to WorkFeature/WF_ObjParCurve3DEditGui_2016.py index c25afcd..29c0800 100644 --- a/WorkFeature/WF_ObjParCurve3DEditGui_2015.py +++ b/WorkFeature/WF_ObjParCurve3DEditGui_2016.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'WF_ObjParCurve3DEditGui_2015.ui' +# Form implementation generated from reading ui file 'WF_ObjParCurve3DEditGui_2016.ui' # -# Created: Tue Oct 27 06:56:50 2015 -# by: PySide UI code generator 4.11.2 +# Created: Fri Dec 30 15:42:28 2016 +# by: PySide UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost! @@ -26,7 +26,7 @@ except AttributeError: class Ui_Form(object): def setupUi(self, Form): Form.setObjectName(_fromUtf8("Form")) - Form.resize(1039, 460) + Form.resize(1247, 460) self.gridLayout_3 = QtGui.QGridLayout(Form) self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) self.groupBox_2 = QtGui.QGroupBox(Form) @@ -47,7 +47,7 @@ class Ui_Form(object): self.gridLayout_3.addWidget(self.groupBox_2, 0, 0, 1, 1) self.tableWidget = QtGui.QTableWidget(Form) self.tableWidget.setObjectName(_fromUtf8("tableWidget")) - self.tableWidget.setColumnCount(11) + self.tableWidget.setColumnCount(12) self.tableWidget.setRowCount(3) item = QtGui.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(0, item) @@ -78,6 +78,8 @@ class Ui_Form(object): item = QtGui.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(10, item) item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(11, item) + item = QtGui.QTableWidgetItem() self.tableWidget.setItem(0, 0, item) item = QtGui.QTableWidgetItem() self.tableWidget.setItem(0, 1, item) @@ -191,6 +193,8 @@ class Ui_Form(object): item = self.tableWidget.horizontalHeaderItem(9) item.setText(_translate("Form", "t step", None)) item = self.tableWidget.horizontalHeaderItem(10) + item.setText(_translate("Form", "Cartesian", None)) + item = self.tableWidget.horizontalHeaderItem(11) item.setText(_translate("Form", "Comments", None)) __sortingEnabled = self.tableWidget.isSortingEnabled() self.tableWidget.setSortingEnabled(False) diff --git a/WorkFeature/WF_ObjSurfaceEditGui_2016.py b/WorkFeature/WF_ObjSurfaceEditGui_2016.py new file mode 100644 index 0000000..2653875 --- /dev/null +++ b/WorkFeature/WF_ObjSurfaceEditGui_2016.py @@ -0,0 +1,270 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'WF_ObjSurfaceEditGui_2016.ui' +# +# Created: Fri Dec 30 15:42:38 2016 +# by: PySide UI code generator 4.11.3 +# +# WARNING! All changes made in this file will be lost! + +from PySide import QtCore, QtGui + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + def _fromUtf8(s): + return s + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig) + +class Ui_Form(object): + def setupUi(self, Form): + Form.setObjectName(_fromUtf8("Form")) + Form.resize(1247, 460) + self.gridLayout_3 = QtGui.QGridLayout(Form) + self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) + self.groupBox_2 = QtGui.QGroupBox(Form) + self.groupBox_2.setObjectName(_fromUtf8("groupBox_2")) + self.gridLayout = QtGui.QGridLayout(self.groupBox_2) + self.gridLayout.setObjectName(_fromUtf8("gridLayout")) + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) + self.button_load = QtGui.QPushButton(self.groupBox_2) + self.button_load.setObjectName(_fromUtf8("button_load")) + self.horizontalLayout.addWidget(self.button_load) + self.button_save = QtGui.QPushButton(self.groupBox_2) + self.button_save.setObjectName(_fromUtf8("button_save")) + self.horizontalLayout.addWidget(self.button_save) + spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) + self.gridLayout_3.addWidget(self.groupBox_2, 0, 0, 1, 1) + self.tableWidget = QtGui.QTableWidget(Form) + self.tableWidget.setObjectName(_fromUtf8("tableWidget")) + self.tableWidget.setColumnCount(14) + self.tableWidget.setRowCount(3) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(8, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(9, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(10, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(11, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(12, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(13, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 8, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 9, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 10, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 11, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 12, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 8, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 9, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 10, item) + self.gridLayout_3.addWidget(self.tableWidget, 1, 0, 1, 1) + self.groupBox = QtGui.QGroupBox(Form) + self.groupBox.setObjectName(_fromUtf8("groupBox")) + self.gridLayout_2 = QtGui.QGridLayout(self.groupBox) + self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) + self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) + self.button_addRow = QtGui.QPushButton(self.groupBox) + self.button_addRow.setObjectName(_fromUtf8("button_addRow")) + self.horizontalLayout_2.addWidget(self.button_addRow) + self.button_removeRow = QtGui.QPushButton(self.groupBox) + self.button_removeRow.setObjectName(_fromUtf8("button_removeRow")) + self.horizontalLayout_2.addWidget(self.button_removeRow) + spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_2.addItem(spacerItem1) + self.gridLayout_2.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) + self.gridLayout_3.addWidget(self.groupBox, 2, 0, 1, 1) + self.horizontalLayout_4 = QtGui.QHBoxLayout() + self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4")) + self.comboBox_select = QtGui.QComboBox(Form) + self.comboBox_select.setEnabled(False) + self.comboBox_select.setMaximumSize(QtCore.QSize(0, 0)) + self.comboBox_select.setModelColumn(1) + self.comboBox_select.setObjectName(_fromUtf8("comboBox_select")) + self.horizontalLayout_4.addWidget(self.comboBox_select) + spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_4.addItem(spacerItem2) + self.gridLayout_3.addLayout(self.horizontalLayout_4, 3, 0, 1, 1) + self.horizontalLayout_3 = QtGui.QHBoxLayout() + self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) + self.button_quit = QtGui.QPushButton(Form) + self.button_quit.setObjectName(_fromUtf8("button_quit")) + self.horizontalLayout_3.addWidget(self.button_quit) + spacerItem3 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_3.addItem(spacerItem3) + self.gridLayout_3.addLayout(self.horizontalLayout_3, 4, 0, 1, 1) + + self.retranslateUi(Form) + QtCore.QMetaObject.connectSlotsByName(Form) + + def retranslateUi(self, Form): + Form.setWindowTitle(_translate("Form", "Form", None)) + self.groupBox_2.setTitle(_translate("Form", "3D Database", None)) + self.button_load.setToolTip(_translate("Form", "Click to load common and customs curves.", None)) + self.button_load.setText(_translate("Form", "Load", None)) + self.button_save.setToolTip(_translate("Form", "This will save customs curves only in your HOME directory under \"Parametric3D.dat\".", None)) + self.button_save.setText(_translate("Form", "Save", None)) + item = self.tableWidget.verticalHeaderItem(0) + item.setText(_translate("Form", "1", None)) + item = self.tableWidget.verticalHeaderItem(1) + item.setText(_translate("Form", "2", None)) + item = self.tableWidget.verticalHeaderItem(2) + item.setText(_translate("Form", "3", None)) + item = self.tableWidget.horizontalHeaderItem(0) + item.setText(_translate("Form", "Name", None)) + item = self.tableWidget.horizontalHeaderItem(1) + item.setText(_translate("Form", "a", None)) + item = self.tableWidget.horizontalHeaderItem(2) + item.setText(_translate("Form", "b (a) ", None)) + item = self.tableWidget.horizontalHeaderItem(3) + item.setText(_translate("Form", "c (a, b) ", None)) + item = self.tableWidget.horizontalHeaderItem(4) + item.setText(_translate("Form", "X (a,b,c,u,v)", None)) + item = self.tableWidget.horizontalHeaderItem(5) + item.setText(_translate("Form", "Y (a,b,c,u,v)", None)) + item = self.tableWidget.horizontalHeaderItem(6) + item.setText(_translate("Form", "Z (a,b,c,u,v)", None)) + item = self.tableWidget.horizontalHeaderItem(7) + item.setText(_translate("Form", "u min", None)) + item = self.tableWidget.horizontalHeaderItem(8) + item.setText(_translate("Form", "u max", None)) + item = self.tableWidget.horizontalHeaderItem(9) + item.setText(_translate("Form", "u step", None)) + item = self.tableWidget.horizontalHeaderItem(10) + item.setText(_translate("Form", "v min", None)) + item = self.tableWidget.horizontalHeaderItem(11) + item.setText(_translate("Form", "v max", None)) + item = self.tableWidget.horizontalHeaderItem(12) + item.setText(_translate("Form", "v step", None)) + item = self.tableWidget.horizontalHeaderItem(13) + item.setText(_translate("Form", "comments", None)) + __sortingEnabled = self.tableWidget.isSortingEnabled() + self.tableWidget.setSortingEnabled(False) + item = self.tableWidget.item(0, 0) + item.setText(_translate("Form", "Astroid", None)) + item = self.tableWidget.item(0, 1) + item.setText(_translate("Form", "4", None)) + item = self.tableWidget.item(0, 2) + item.setText(_translate("Form", "3", None)) + item = self.tableWidget.item(0, 3) + item.setText(_translate("Form", "2", None)) + item = self.tableWidget.item(0, 4) + item.setText(_translate("Form", "a*pow(cos(v),3)*pow(cos(u),3)", None)) + item = self.tableWidget.item(0, 5) + item.setText(_translate("Form", "b*pow(cos(v),3)*pow(sin(u),3)", None)) + item = self.tableWidget.item(0, 6) + item.setText(_translate("Form", "c*pow(sin(v),3)", None)) + item = self.tableWidget.item(0, 7) + item.setText(_translate("Form", "0.0", None)) + item = self.tableWidget.item(0, 8) + item.setText(_translate("Form", "2*pi", None)) + item = self.tableWidget.item(0, 9) + item.setText(_translate("Form", "0.01", None)) + item = self.tableWidget.item(0, 10) + item.setText(_translate("Form", "-2.0", None)) + item = self.tableWidget.item(0, 11) + item.setText(_translate("Form", "2.0", None)) + item = self.tableWidget.item(0, 12) + item.setText(_translate("Form", "0.01", None)) + item = self.tableWidget.item(1, 0) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 1) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 2) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 3) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 4) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 5) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 6) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 7) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 8) + item.setText(_translate("Form", " ", None)) + item = self.tableWidget.item(1, 9) + item.setText(_translate("Form", " ", None)) + self.tableWidget.setSortingEnabled(__sortingEnabled) + self.groupBox.setTitle(_translate("Form", "Row", None)) + self.button_addRow.setToolTip(_translate("Form", "Add a row into the table.", None)) + self.button_addRow.setText(_translate("Form", "add", None)) + self.button_removeRow.setToolTip(_translate("Form", "Remove a row from the table.", None)) + self.button_removeRow.setText(_translate("Form", "remove", None)) + self.button_quit.setText(_translate("Form", "Quit", None)) +