Release of 2016-12-31 :

Addition:

into "Point 3/3" TAB :
	Random Point(s):

into "Wire 1/3" TAB :
	Make Wire:

Suppression of  "Wire 2/3 and 3/3" TABs and replacement by
"Curves And Surfaces" TAB :

Addition:

into "Curves And Surfaces " TAB :
	Launch Curves and Surfaces Menu:
		Click to launch a new tool for Curves and Surface
This commit is contained in:
Rentlau 2017-01-01 20:15:01 +01:00
parent 414bd24e9c
commit 0951c594f6
32 changed files with 11367 additions and 10981 deletions

Binary file not shown.

View File

@ -0,0 +1,446 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2918"
sodipodi:version="0.32"
inkscape:version="0.91 r13725"
sodipodi:docname="WF_makePolygon.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2920">
<linearGradient
id="linearGradient3144">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient3183"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2926" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144-6"
id="radialGradient4272"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144-6">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-2" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-5" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4135-3"
id="linearGradient4145-1"
x1="131.82286"
y1="101.22672"
x2="191.3165"
y2="101.22672"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
id="linearGradient4135-3">
<stop
style="stop-color:#0079ff;stop-opacity:1;"
offset="0"
id="stop4137-9" />
<stop
style="stop-color:#0079ff;stop-opacity:0;"
offset="1"
id="stop4139-2" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4135-3-5"
id="linearGradient4145-1-8"
x1="131.82286"
y1="101.22672"
x2="191.3165"
y2="101.22672"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
id="linearGradient4135-3-5">
<stop
style="stop-color:#0079ff;stop-opacity:1;"
offset="0"
id="stop4137-9-3" />
<stop
style="stop-color:#0079ff;stop-opacity:0;"
offset="1"
id="stop4139-2-7" />
</linearGradient>
<radialGradient
r="34.345188"
fy="672.79736"
fx="225.26402"
cy="672.79736"
cx="225.26402"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
gradientUnits="userSpaceOnUse"
id="radialGradient4558-0"
xlink:href="#linearGradient3144-6-2"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144-6-2">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-2-4" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-5-6" />
</linearGradient>
<radialGradient
r="34.345188"
fy="672.79736"
fx="225.26402"
cy="672.79736"
cx="225.26402"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
gradientUnits="userSpaceOnUse"
id="radialGradient4558-7"
xlink:href="#linearGradient3144-6-9"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144-6-9">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-2-7" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-5-7" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144-9"
id="radialGradient3191"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<linearGradient
id="linearGradient3144-9">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-7" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-2" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144-9"
id="radialGradient4852"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144-9-3"
id="radialGradient4852-4"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<linearGradient
id="linearGradient3144-9-3">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-7-5" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-2-7" />
</linearGradient>
<radialGradient
r="34.345188"
fy="672.79736"
fx="225.26402"
cy="672.79736"
cx="225.26402"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
gradientUnits="userSpaceOnUse"
id="radialGradient4889"
xlink:href="#linearGradient3144-9-3"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144-9-4"
id="radialGradient4852-9"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<linearGradient
id="linearGradient3144-9-4">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-7-7" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-2-9" />
</linearGradient>
<radialGradient
r="34.345188"
fy="672.79736"
fx="225.26402"
cy="672.79736"
cx="225.26402"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
gradientUnits="userSpaceOnUse"
id="radialGradient4929"
xlink:href="#linearGradient3144-9-4"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient4852-6"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="15.078125"
inkscape:cx="31.933679"
inkscape:cy="23.941969"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1920"
inkscape:window-height="1161"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata2923">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<ellipse
ry="6.2593665"
rx="5.8838305"
cy="45.098446"
cx="12.998963"
id="path3968"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:54.21519089px;font-family:Arial;-inkscape-font-specification:Arial;display:inline;overflow:visible;visibility:visible;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.79201269;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<ellipse
ry="6.2593665"
rx="5.8838305"
cy="60.551296"
cx="41.915024"
id="path3968-4"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:54.21519089px;font-family:Arial;-inkscape-font-specification:Arial;display:inline;overflow:visible;visibility:visible;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.79201269;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<ellipse
ry="6.2593665"
rx="5.8838305"
cy="16.978237"
cx="29.910881"
id="path3968-4-0"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:54.21519089px;font-family:Arial;-inkscape-font-specification:Arial;display:inline;overflow:visible;visibility:visible;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.79201269;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<ellipse
ry="6.2593665"
rx="5.8838305"
cy="23.941969"
cx="58.097412"
id="path3968-4-0-7"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:54.21519089px;font-family:Arial;-inkscape-font-specification:Arial;display:inline;overflow:visible;visibility:visible;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.79201269;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<path
style="display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.58431373;fill-rule:nonzero;stroke:none;stroke-width:0.84700072;marker:none;enable-background:accumulate"
d="M 57.905786,19.105436 29.578034,12.560311 9.4255882,45.49815 37.837962,63.67851 40.480295,57.198698 17.086112,41.9762 31.690938,17.646862 57.053414,23.748653 Z"
id="path4425-9-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<g
id="g3177"
transform="matrix(-0.1459885,0.00366916,-0.00366916,-0.1459885,83.957793,125.97476)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/circle.png"
inkscape:export-xdpi="7.2934141"
inkscape:export-ydpi="7.2934141" />
<path
style="display:inline;overflow:visible;visibility:visible;fill:#0079ff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.84700072;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
d="M 58.555579,11.316021 22.307841,5.7938518 4.8450848,37.848895 40.042117,59.66807 41.293589,54.194078 11.233991,36.399782 24.986028,10.157803 57.773488,15.36902 Z"
id="path4425-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<g
id="g3177-3"
transform="matrix(-0.1459885,0.00366916,-0.00366916,-0.1459885,160.08538,105.57482)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/circle.png"
inkscape:export-xdpi="7.2934141"
inkscape:export-ydpi="7.2934141" />
<g
id="g3185"
transform="matrix(-0.14592237,0.00572413,-0.00572413,-0.14592237,40.882773,131.25331)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/circle.png"
inkscape:export-xdpi="7.2934141"
inkscape:export-ydpi="7.2934141">
<circle
id="path3187"
style="display:inline;overflow:visible;visibility:visible;fill:#fcaf3e;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.79999971;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
cx="197.14285"
cy="655.2193"
r="48.57143" />
<ellipse
transform="matrix(0.8513023,-0.5246754,0.5246754,0.8513023,-338.69692,214.19328)"
id="path3189"
style="fill:url(#radialGradient4852);fill-opacity:1;stroke:none"
cx="225.26402"
cy="672.79736"
rx="34.345188"
ry="23.991123" />
</g>
<g
id="g3185-6"
transform="matrix(-0.14592237,0.00572413,-0.00572413,-0.14592237,91.042198,108.25459)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/circle.png"
inkscape:export-xdpi="7.2934141"
inkscape:export-ydpi="7.2934141">
<circle
id="path3187-2"
style="display:inline;overflow:visible;visibility:visible;fill:#fcaf3e;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.79999971;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
cx="197.14285"
cy="655.2193"
r="48.57143" />
<ellipse
transform="matrix(0.8513023,-0.5246754,0.5246754,0.8513023,-338.69692,214.19328)"
id="path3189-5"
style="fill:url(#radialGradient4889);fill-opacity:1;stroke:none"
cx="225.26402"
cy="672.79736"
rx="34.345188"
ry="23.991123" />
</g>
<g
id="g3185-66"
transform="matrix(-0.14592237,0.00572413,-0.00572413,-0.14592237,73.763959,150.60875)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/circle.png"
inkscape:export-xdpi="7.2934141"
inkscape:export-ydpi="7.2934141">
<circle
id="path3187-5"
style="display:inline;overflow:visible;visibility:visible;fill:#fcaf3e;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.79999971;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
cx="197.14285"
cy="655.2193"
r="48.57143" />
<ellipse
transform="matrix(0.8513023,-0.5246754,0.5246754,0.8513023,-338.69692,214.19328)"
id="path3189-0"
style="fill:url(#radialGradient4929);fill-opacity:1;stroke:none"
cx="225.26402"
cy="672.79736"
rx="34.345188"
ry="23.991123" />
</g>
<g
id="g3185-7"
transform="matrix(-0.14592237,0.00572413,-0.00572413,-0.14592237,55.133656,102.30859)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/circle.png"
inkscape:export-xdpi="7.2934141"
inkscape:export-ydpi="7.2934141">
<circle
r="48.57143"
cy="655.2193"
cx="197.14285"
id="path3187-0"
style="display:inline;overflow:visible;visibility:visible;fill:#fcaf3e;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.79999971;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<ellipse
ry="23.991123"
rx="34.345188"
cy="672.79736"
cx="225.26402"
transform="matrix(0.8513023,-0.5246754,0.5246754,0.8513023,-338.69692,214.19328)"
id="path3189-1"
style="fill:url(#radialGradient4852-6);fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -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

View File

@ -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']

View File

@ -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']

View File

@ -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', '']

View File

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>1039</width>
<width>1247</width>
<height>460</height>
</rect>
</property>
@ -127,6 +127,11 @@
<string>t step</string>
</property>
</column>
<column>
<property name="text">
<string>Cartesian</string>
</property>
</column>
<column>
<property name="text">
<string>Comments</string>

View File

@ -0,0 +1,379 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1247</width>
<height>460</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>3D Database</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="button_load">
<property name="toolTip">
<string>Click to load common and customs curves.</string>
</property>
<property name="text">
<string>Load</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="button_save">
<property name="toolTip">
<string>This will save customs curves only in your HOME directory under &quot;Parametric3D.dat&quot;.</string>
</property>
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QTableWidget" name="tableWidget">
<row>
<property name="text">
<string>1</string>
</property>
</row>
<row>
<property name="text">
<string>2</string>
</property>
</row>
<row>
<property name="text">
<string>3</string>
</property>
</row>
<column>
<property name="text">
<string>Name</string>
</property>
</column>
<column>
<property name="text">
<string>a</string>
</property>
</column>
<column>
<property name="text">
<string>b (a) </string>
</property>
</column>
<column>
<property name="text">
<string>c (a, b) </string>
</property>
</column>
<column>
<property name="text">
<string>X (a,b,c,u,v)</string>
</property>
</column>
<column>
<property name="text">
<string>Y (a,b,c,u,v)</string>
</property>
</column>
<column>
<property name="text">
<string>Z (a,b,c,u,v)</string>
</property>
</column>
<column>
<property name="text">
<string>u min</string>
</property>
</column>
<column>
<property name="text">
<string>u max</string>
</property>
</column>
<column>
<property name="text">
<string>u step</string>
</property>
</column>
<column>
<property name="text">
<string>v min</string>
</property>
</column>
<column>
<property name="text">
<string>v max</string>
</property>
</column>
<column>
<property name="text">
<string>v step</string>
</property>
</column>
<column>
<property name="text">
<string>comments</string>
</property>
</column>
<item row="0" column="0">
<property name="text">
<string>Astroid</string>
</property>
</item>
<item row="0" column="1">
<property name="text">
<string>4</string>
</property>
</item>
<item row="0" column="2">
<property name="text">
<string>3</string>
</property>
</item>
<item row="0" column="3">
<property name="text">
<string>2</string>
</property>
</item>
<item row="0" column="4">
<property name="text">
<string>a*pow(cos(v),3)*pow(cos(u),3)</string>
</property>
</item>
<item row="0" column="5">
<property name="text">
<string>b*pow(cos(v),3)*pow(sin(u),3)</string>
</property>
</item>
<item row="0" column="6">
<property name="text">
<string>c*pow(sin(v),3)</string>
</property>
</item>
<item row="0" column="7">
<property name="text">
<string>0.0</string>
</property>
</item>
<item row="0" column="8">
<property name="text">
<string>2*pi</string>
</property>
</item>
<item row="0" column="9">
<property name="text">
<string>0.01</string>
</property>
</item>
<item row="0" column="10">
<property name="text">
<string>-2.0</string>
</property>
</item>
<item row="0" column="11">
<property name="text">
<string>2.0</string>
</property>
</item>
<item row="0" column="12">
<property name="text">
<string>0.01</string>
</property>
</item>
<item row="1" column="0">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="1">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="2">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="3">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="4">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="5">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="6">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="7">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="8">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="9">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="10">
<property name="text">
<string/>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Row</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPushButton" name="button_addRow">
<property name="toolTip">
<string>Add a row into the table.</string>
</property>
<property name="text">
<string>add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="button_removeRow">
<property name="toolTip">
<string>Remove a row from the table.</string>
</property>
<property name="text">
<string>remove</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="3" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QComboBox" name="comboBox_select">
<property name="enabled">
<bool>false</bool>
</property>
<property name="maximumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="modelColumn">
<number>1</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="4" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="button_quit">
<property name="text">
<string>Quit</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

View File

@ -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

View File

@ -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_()

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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!

View File

@ -0,0 +1,282 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1039</width>
<height>460</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>2D Database</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="button_load">
<property name="toolTip">
<string>Click to load common and customs curves.</string>
</property>
<property name="text">
<string>Load</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="button_save">
<property name="toolTip">
<string>This will save customs curves only in your HOME directory under &quot;Parametric2D.dat&quot;.</string>
</property>
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QTableWidget" name="tableWidget">
<row>
<property name="text">
<string>1</string>
</property>
</row>
<row>
<property name="text">
<string>2</string>
</property>
</row>
<column>
<property name="text">
<string>Name</string>
</property>
</column>
<column>
<property name="text">
<string>a (t) </string>
</property>
</column>
<column>
<property name="text">
<string>b (a, t) </string>
</property>
</column>
<column>
<property name="text">
<string>X (a,b,c,t)</string>
</property>
</column>
<column>
<property name="text">
<string>Y (a,b,c,t)</string>
</property>
</column>
<column>
<property name="text">
<string>t min</string>
</property>
</column>
<column>
<property name="text">
<string>t max</string>
</property>
</column>
<column>
<property name="text">
<string>t step</string>
</property>
</column>
<column>
<property name="text">
<string>Polar</string>
</property>
</column>
<column>
<property name="text">
<string>Comments</string>
</property>
</column>
<item row="0" column="0">
<property name="text">
<string>Circle</string>
</property>
</item>
<item row="0" column="1">
<property name="text">
<string>10 # Radius</string>
</property>
</item>
<item row="0" column="2">
<property name="text">
<string>a</string>
</property>
</item>
<item row="0" column="3">
<property name="text">
<string>a*cos(t)</string>
</property>
</item>
<item row="0" column="4">
<property name="text">
<string>a*sin(t)</string>
</property>
</item>
<item row="0" column="5">
<property name="text">
<string>0</string>
</property>
</item>
<item row="0" column="6">
<property name="text">
<string>2*pi</string>
</property>
</item>
<item row="0" column="7">
<property name="text">
<string>0.01</string>
</property>
</item>
<item row="0" column="8">
<property name="text">
<string>0</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Row</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPushButton" name="button_addRow">
<property name="toolTip">
<string>Add a row into the table.</string>
</property>
<property name="text">
<string>add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="button_removeRow">
<property name="toolTip">
<string>Remove a row from the table.</string>
</property>
<property name="text">
<string>remove</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="3" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QComboBox" name="comboBox_select">
<property name="enabled">
<bool>false</bool>
</property>
<property name="maximumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="frame">
<bool>true</bool>
</property>
<property name="modelColumn">
<number>1</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="4" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="button_quit">
<property name="text">
<string>Quit</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -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)

View File

@ -0,0 +1,349 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1247</width>
<height>460</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>3D Database</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="button_load">
<property name="toolTip">
<string>Click to load common and customs curves.</string>
</property>
<property name="text">
<string>Load</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="button_save">
<property name="toolTip">
<string>This will save customs curves only in your HOME directory under &quot;Parametric3D.dat&quot;.</string>
</property>
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QTableWidget" name="tableWidget">
<row>
<property name="text">
<string>1</string>
</property>
</row>
<row>
<property name="text">
<string>2</string>
</property>
</row>
<row>
<property name="text">
<string>3</string>
</property>
</row>
<column>
<property name="text">
<string>Name</string>
</property>
</column>
<column>
<property name="text">
<string>a (t) </string>
</property>
</column>
<column>
<property name="text">
<string>b (a, t) </string>
</property>
</column>
<column>
<property name="text">
<string>c (a, b, t) </string>
</property>
</column>
<column>
<property name="text">
<string>X (a,b,c,t)</string>
</property>
</column>
<column>
<property name="text">
<string>Y (a,b,c,t)</string>
</property>
</column>
<column>
<property name="text">
<string>Z (a,b,c,t)</string>
</property>
</column>
<column>
<property name="text">
<string>t min</string>
</property>
</column>
<column>
<property name="text">
<string>t max</string>
</property>
</column>
<column>
<property name="text">
<string>t step</string>
</property>
</column>
<column>
<property name="text">
<string>Cartesian</string>
</property>
</column>
<column>
<property name="text">
<string>Comments</string>
</property>
</column>
<item row="0" column="0">
<property name="text">
<string>Cylindrical helix</string>
</property>
</item>
<item row="0" column="1">
<property name="text">
<string>10*0.05 #Vert. step</string>
</property>
</item>
<item row="0" column="2">
<property name="text">
<string>1</string>
</property>
</item>
<item row="0" column="3">
<property name="text">
<string>10 # Radius</string>
</property>
</item>
<item row="0" column="4">
<property name="text">
<string>c*sin(t)</string>
</property>
</item>
<item row="0" column="5">
<property name="text">
<string>c*cos(t)</string>
</property>
</item>
<item row="0" column="6">
<property name="text">
<string>a*t</string>
</property>
</item>
<item row="0" column="7">
<property name="text">
<string>0</string>
</property>
</item>
<item row="0" column="8">
<property name="text">
<string>5*2*pi #5 circles</string>
</property>
</item>
<item row="0" column="9">
<property name="text">
<string>0.01</string>
</property>
</item>
<item row="1" column="0">
<property name="text">
<string>Circle with Teeth</string>
</property>
</item>
<item row="1" column="1">
<property name="text">
<string>37</string>
</property>
</item>
<item row="1" column="2">
<property name="text">
<string>1</string>
</property>
</item>
<item row="1" column="3">
<property name="text">
<string>(a+cos(a*t)*2)*b</string>
</property>
</item>
<item row="1" column="4">
<property name="text">
<string>c*cos(t)</string>
</property>
</item>
<item row="1" column="5">
<property name="text">
<string>c*sin(t)</string>
</property>
</item>
<item row="1" column="6">
<property name="text">
<string>0</string>
</property>
</item>
<item row="1" column="7">
<property name="text">
<string>0</string>
</property>
</item>
<item row="1" column="8">
<property name="text">
<string>2*pi</string>
</property>
</item>
<item row="1" column="9">
<property name="text">
<string>0.01</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Row</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPushButton" name="button_addRow">
<property name="toolTip">
<string>Add a row into the table.</string>
</property>
<property name="text">
<string>add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="button_removeRow">
<property name="toolTip">
<string>Remove a row from the table.</string>
</property>
<property name="text">
<string>remove</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="3" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QComboBox" name="comboBox_select">
<property name="enabled">
<bool>false</bool>
</property>
<property name="maximumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="modelColumn">
<number>1</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="4" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="button_quit">
<property name="text">
<string>Quit</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -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))

View File

@ -0,0 +1,379 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1247</width>
<height>460</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>3D Database</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="button_load">
<property name="toolTip">
<string>Click to load common and customs curves.</string>
</property>
<property name="text">
<string>Load</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="button_save">
<property name="toolTip">
<string>This will save customs curves only in your HOME directory under &quot;Parametric3D.dat&quot;.</string>
</property>
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QTableWidget" name="tableWidget">
<row>
<property name="text">
<string>1</string>
</property>
</row>
<row>
<property name="text">
<string>2</string>
</property>
</row>
<row>
<property name="text">
<string>3</string>
</property>
</row>
<column>
<property name="text">
<string>Name</string>
</property>
</column>
<column>
<property name="text">
<string>a</string>
</property>
</column>
<column>
<property name="text">
<string>b (a) </string>
</property>
</column>
<column>
<property name="text">
<string>c (a, b) </string>
</property>
</column>
<column>
<property name="text">
<string>X (a,b,c,u,v)</string>
</property>
</column>
<column>
<property name="text">
<string>Y (a,b,c,u,v)</string>
</property>
</column>
<column>
<property name="text">
<string>Z (a,b,c,u,v)</string>
</property>
</column>
<column>
<property name="text">
<string>u min</string>
</property>
</column>
<column>
<property name="text">
<string>u max</string>
</property>
</column>
<column>
<property name="text">
<string>u step</string>
</property>
</column>
<column>
<property name="text">
<string>v min</string>
</property>
</column>
<column>
<property name="text">
<string>v max</string>
</property>
</column>
<column>
<property name="text">
<string>v step</string>
</property>
</column>
<column>
<property name="text">
<string>comments</string>
</property>
</column>
<item row="0" column="0">
<property name="text">
<string>Astroid</string>
</property>
</item>
<item row="0" column="1">
<property name="text">
<string>4</string>
</property>
</item>
<item row="0" column="2">
<property name="text">
<string>3</string>
</property>
</item>
<item row="0" column="3">
<property name="text">
<string>2</string>
</property>
</item>
<item row="0" column="4">
<property name="text">
<string>a*pow(cos(v),3)*pow(cos(u),3)</string>
</property>
</item>
<item row="0" column="5">
<property name="text">
<string>b*pow(cos(v),3)*pow(sin(u),3)</string>
</property>
</item>
<item row="0" column="6">
<property name="text">
<string>c*pow(sin(v),3)</string>
</property>
</item>
<item row="0" column="7">
<property name="text">
<string>0.0</string>
</property>
</item>
<item row="0" column="8">
<property name="text">
<string>2*pi</string>
</property>
</item>
<item row="0" column="9">
<property name="text">
<string>0.01</string>
</property>
</item>
<item row="0" column="10">
<property name="text">
<string>-2.0</string>
</property>
</item>
<item row="0" column="11">
<property name="text">
<string>2.0</string>
</property>
</item>
<item row="0" column="12">
<property name="text">
<string>0.01</string>
</property>
</item>
<item row="1" column="0">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="1">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="2">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="3">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="4">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="5">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="6">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="7">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="8">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="9">
<property name="text">
<string> </string>
</property>
</item>
<item row="1" column="10">
<property name="text">
<string/>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Row</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPushButton" name="button_addRow">
<property name="toolTip">
<string>Add a row into the table.</string>
</property>
<property name="text">
<string>add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="button_removeRow">
<property name="toolTip">
<string>Remove a row from the table.</string>
</property>
<property name="text">
<string>remove</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="3" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QComboBox" name="comboBox_select">
<property name="enabled">
<bool>false</bool>
</property>
<property name="maximumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="modelColumn">
<number>1</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="4" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="button_quit">
<property name="text">
<string>Quit</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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
"""

View File

@ -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!

View File

@ -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)

View File

@ -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))