Release of 2015-11-04 :

Modification and addition:

Creation of TAB : Wire
	2D and 3D parametric functions panel.
	A set of predefined functions is available via a combo box.
	With possible saving of your parametric functions into a file in the home directory.
Creation of TAB : Sweeping
	Move of  Section Sweep from "Object" TAB into "Sweeping" TAB:

into "Object" TAB : 
		Compute the common parts between selected shapes.
		- Select at least two objects and click.
		Highlight common parts by showing the common shape in red and setting half-    	 transparency on original parts (the original objects are not modified).
		Original code from HighlightCommon.FCMacro
		https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightCommon.FCMacro
		Authors = 2015 Javier Martinez Garcia

into "Object" TAB : 
		Compute the difference parts between selected shapes.
		- Select two objects and click.
		Compute the difference between two shapes. Additions are marked red,
                removals are marked green. Both original parts will be half transparent. 
                The volume of the additions and removals are printed in the console. 
		Original code from HighlightDifference.FCMacro
		https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightDifference.FCMacro
		Authors = 2015 Gaël Ecorchard (Galou)

into "Axis 1/2" TAB :
		Axis=(Points):
		Create a "best fit" line from a set of points using Singular Value Decomposition..
		- First select several Points
		- Then push this button
		The 3 eigenvectors are generated.
		Orange one is the best fit line.
This commit is contained in:
Rentlau 2015-11-04 20:19:08 +01:00
parent dd45ff83e1
commit 751bff1ddc
28 changed files with 20000 additions and 2120 deletions

View File

@ -327,6 +327,174 @@
id="radialGradient5473"
xlink:href="#linearGradient5238-3-9-7-8-5"
inkscape:collect="always" />
<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="radialGradient7085-0-53"
xlink:href="#linearGradient3144-2-7-7"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144-2-7-7">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-2-4-6" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-6-8-6" />
</linearGradient>
<radialGradient
r="19.467436"
fy="21.168837"
fx="53.269112"
cy="21.168837"
cx="53.269112"
gradientTransform="matrix(-0.48347996,-1.1563533,0.92260429,-0.38574776,71.952844,110.62943)"
gradientUnits="userSpaceOnUse"
id="radialGradient5326-7"
xlink:href="#linearGradient5238-3-9-9"
inkscape:collect="always" />
<linearGradient
id="linearGradient5238-3-9-9">
<stop
id="stop5240-7-4-7"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-7-0-91"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="19.467436"
fy="21.168837"
fx="53.269112"
cy="21.168837"
cx="53.269112"
gradientTransform="matrix(-0.48347996,-1.1563533,0.92260429,-0.38574776,71.952844,110.62943)"
gradientUnits="userSpaceOnUse"
id="radialGradient3256"
xlink:href="#linearGradient5238-3-9-9"
inkscape:collect="always" />
<radialGradient
r="19.467436"
fy="21.168837"
fx="53.269112"
cy="21.168837"
cx="53.269112"
gradientTransform="matrix(-0.48347996,-1.1563533,0.92260429,-0.38574776,71.952844,110.62943)"
gradientUnits="userSpaceOnUse"
id="radialGradient3256-3"
xlink:href="#linearGradient5238-3-9-9-2"
inkscape:collect="always" />
<linearGradient
id="linearGradient5238-3-9-9-2">
<stop
id="stop5240-7-4-7-0"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-7-0-91-4"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</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="radialGradient7085-0-53-1"
xlink:href="#linearGradient3144-2-7-7-4"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144-2-7-7-4">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-2-4-6-8" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-6-8-6-4" />
</linearGradient>
<radialGradient
r="19.467436"
fy="21.168837"
fx="53.269112"
cy="21.168837"
cx="53.269112"
gradientTransform="matrix(-0.48347996,-1.1563533,0.92260429,-0.38574776,71.952844,110.62943)"
gradientUnits="userSpaceOnUse"
id="radialGradient3305"
xlink:href="#linearGradient5238-3-9-9-2"
inkscape:collect="always" />
<radialGradient
r="19.467436"
fy="21.168837"
fx="53.269112"
cy="21.168837"
cx="53.269112"
gradientTransform="matrix(-0.48347996,-1.1563533,0.92260429,-0.38574776,71.952844,110.62943)"
gradientUnits="userSpaceOnUse"
id="radialGradient3256-4"
xlink:href="#linearGradient5238-3-9-9-4"
inkscape:collect="always" />
<linearGradient
id="linearGradient5238-3-9-9-4">
<stop
id="stop5240-7-4-7-06"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-7-0-91-3"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</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="radialGradient7085-0-53-3"
xlink:href="#linearGradient3144-2-7-7-8"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144-2-7-7-8">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-2-4-6-1" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-6-8-6-3" />
</linearGradient>
<radialGradient
r="19.467436"
fy="21.168837"
fx="53.269112"
cy="21.168837"
cx="53.269112"
gradientTransform="matrix(-0.48347996,-1.1563533,0.92260429,-0.38574776,71.952844,110.62943)"
gradientUnits="userSpaceOnUse"
id="radialGradient3305-9"
xlink:href="#linearGradient5238-3-9-9-4"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
id="base"
@ -355,7 +523,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -385,7 +553,7 @@
inkscape:connector-curvature="0" />
</g>
<path
transform="matrix(0.31321424,0,0,0.30080742,-8.849291,36.873386)"
transform="matrix(0.45102851,0,0,0.43316268,-16.37425,30.181343)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
@ -403,69 +571,9 @@
sodipodi:rx="34.345188"
sodipodi:ry="23.991123"
d="m 259.60921,672.79736 a 34.345188,23.991123 0 1 1 -68.69038,0 34.345188,23.991123 0 1 1 68.69038,0 z"
transform="matrix(-0.04987404,0.03299078,-0.03350487,-0.0491088,39.593041,70.844876)" />
transform="matrix(-0.07181862,0.04750673,-0.04824701,-0.07071667,53.382707,79.100288)" />
<path
transform="matrix(0.31321424,0,0,0.30080742,20.241618,42.691567)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3696-5-7-8"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient5375);fill-opacity:1;fill-rule:evenodd;stroke:#00064a;stroke-width:1.79201269;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient7085-0-5);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.19132471;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
id="path3189-9-7"
sodipodi:cx="225.26402"
sodipodi:cy="672.79736"
sodipodi:rx="34.345188"
sodipodi:ry="23.991123"
d="m 259.60921,672.79736 a 34.345188,23.991123 0 1 1 -68.69038,0 34.345188,23.991123 0 1 1 68.69038,0 z"
transform="matrix(-0.04987404,0.03299078,-0.03350487,-0.0491088,68.68395,76.663057)" />
<path
transform="matrix(0.31321424,0,0,0.30080742,39.150709,30.327931)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3696-5-7-8-5"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient5424);fill-opacity:1;fill-rule:evenodd;stroke:#00064a;stroke-width:1.79201269;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient7085-0-5-9);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.19132471;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
id="path3189-9-7-5"
sodipodi:cx="225.26402"
sodipodi:cy="672.79736"
sodipodi:rx="34.345188"
sodipodi:ry="23.991123"
d="m 259.60921,672.79736 a 34.345188,23.991123 0 1 1 -68.69038,0 34.345188,23.991123 0 1 1 68.69038,0 z"
transform="matrix(-0.04987404,0.03299078,-0.03350487,-0.0491088,87.593041,64.299421)" />
<path
transform="matrix(0.31321424,0,0,0.30080742,40.0598,-3.3084325)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3696-5-7-8-5-7"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient5473);fill-opacity:1;fill-rule:evenodd;stroke:#00064a;stroke-width:1.79201269;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient7085-0-5-9-4);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.19132471;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
id="path3189-9-7-5-8"
sodipodi:cx="225.26402"
sodipodi:cy="672.79736"
sodipodi:rx="34.345188"
sodipodi:ry="23.991123"
d="m 259.60921,672.79736 a 34.345188,23.991123 0 1 1 -68.69038,0 34.345188,23.991123 0 1 1 68.69038,0 z"
transform="matrix(-0.04987404,0.03299078,-0.03350487,-0.0491088,88.502132,30.663058)" />
<path
transform="matrix(0.2573555,0,0,0.20702674,-3.6949895,51.751881)"
transform="matrix(0.37059192,0,0,0.29811851,-8.9520558,51.606375)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
@ -475,34 +583,94 @@
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.79201269;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
sodipodi:type="arc" />
<path
transform="matrix(0.2573555,0,0,0.20702674,28.486829,55.206427)"
transform="matrix(0.37059192,0,0,0.29811851,24.279215,53.329981)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3968-4"
id="path3968-7"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.79201269;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
sodipodi:type="arc" />
<path
transform="matrix(0.2573555,0,0,0.20702674,43.214101,45.570064)"
transform="matrix(0.37059192,0,0,0.29811851,37.551942,44.60271)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3968-4-6"
id="path3968-7-1"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.79201269;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
sodipodi:type="arc" />
<path
transform="matrix(0.2573555,0,0,0.20702674,46.305011,42.660972)"
transform="matrix(0.37059192,0,0,0.29811851,44.642851,39.693618)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3968-4-6-4"
id="path3968-7-1-4"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.79201269;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
sodipodi:type="arc" />
<path
transform="matrix(0.45102851,0,0,0.43316268,15.453385,36.297675)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3696-5-7-2"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient3256);fill-opacity:1;fill-rule:evenodd;stroke:#00064a;stroke-width:1.79201269;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient7085-0-53);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.19132471;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
id="path3189-9-3"
sodipodi:cx="225.26402"
sodipodi:cy="672.79736"
sodipodi:rx="34.345188"
sodipodi:ry="23.991123"
d="m 259.60921,672.79736 a 34.345188,23.991123 0 1 1 -68.69038,0 34.345188,23.991123 0 1 1 68.69038,0 z"
transform="matrix(-0.07181862,0.04750673,-0.04824701,-0.07071667,85.210342,85.216621)" />
<path
transform="matrix(0.45102851,0,0,0.43316268,32.90793,26.297676)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3696-5-7-2-2"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient3305);fill-opacity:1;fill-rule:evenodd;stroke:#00064a;stroke-width:1.79201269;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient7085-0-53-1);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.19132471;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
id="path3189-9-3-3"
sodipodi:cx="225.26402"
sodipodi:cy="672.79736"
sodipodi:rx="34.345188"
sodipodi:ry="23.991123"
d="m 259.60921,672.79736 a 34.345188,23.991123 0 1 1 -68.69038,0 34.345188,23.991123 0 1 1 68.69038,0 z"
transform="matrix(-0.07181862,0.04750673,-0.04824701,-0.07071667,102.66489,75.216623)" />
<path
transform="matrix(0.45102851,0,0,0.43316268,32.362476,-6.6114153)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3696-5-7-2-5"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient3305-9);fill-opacity:1;fill-rule:evenodd;stroke:#00064a;stroke-width:1.79201269;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient7085-0-53-3);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.19132471;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
id="path3189-9-3-0"
sodipodi:cx="225.26402"
sodipodi:cy="672.79736"
sodipodi:rx="34.345188"
sodipodi:ry="23.991123"
d="m 259.60921,672.79736 a 34.345188,23.991123 0 1 1 -68.69038,0 34.345188,23.991123 0 1 1 68.69038,0 z"
transform="matrix(-0.07181862,0.04750673,-0.04824701,-0.07071667,102.11943,42.307531)" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -14,7 +14,7 @@
width="64"
height="64"
id="svg3017"
inkscape:version="0.48.3.1 r9886"
inkscape:version="0.48.5 r10040"
sodipodi:docname="WF_Beam.svg"
inkscape:export-filename="/home/mark/HyperbolaIcon.png"
inkscape:export-xdpi="90"
@ -398,15 +398,15 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1301"
inkscape:window-height="744"
inkscape:window-width="1366"
inkscape:window-height="702"
id="namedview13601"
showgrid="false"
inkscape:zoom="5.840651"
inkscape:cx="60.002575"
inkscape:cy="25.215672"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3017" />
<g
@ -416,20 +416,6 @@
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Layer1" />
<path
style="fill:none;stroke:#0079f0;stroke-width:4.9307642;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker-start:none;filter:url(#filter42258-3)"
d="M 59.56913,7.9400816 C 52.605606,20.282372 52.646355,12.180239 40.4768,16.330627 25.214023,24.892743 34.805959,31.293654 14.840698,34.047565"
id="path41306-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc"
transform="matrix(0.91635966,-0.33268937,0.34441163,0.8851708,-9.6046235,26.426786)" />
<path
style="fill:none;stroke:#0079f0;stroke-width:2.95845842;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter42258-1)"
d="M 53.466148,40.841396 C 54.960979,34.41438 48.179469,13.17288 40.4768,16.330627 c -15.262777,8.562116 -9.554229,15.976085 -0.985029,20.249582 2.913415,2.039486 12.07402,7.793518 13.974377,4.261187 z"
id="path41306-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
transform="matrix(1.0140416,0,0,1.0140416,-10.21039,-3.9181536)" />
<path
style="fill:none;stroke:#0079f0;stroke-width:2.95845842;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter42258-1-9)"
d="M 53.466148,40.841396 C 54.960979,34.41438 48.179469,13.17288 40.4768,16.330627 c -15.262777,8.562116 -9.554229,15.976085 -0.985029,20.249582 2.913415,2.039486 12.07402,7.793518 13.974377,4.261187 z"
@ -437,13 +423,20 @@
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
transform="matrix(1.0140416,0,0,1.0140416,6.7397744,-16.930401)" />
<path
style="fill:none;stroke:#0079f0;stroke-width:4.9307642;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker-start:none;filter:url(#filter42258-3)"
d="M 59.56913,7.9400816 14.840698,34.047565"
id="path41306-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc"
transform="matrix(0.93587081,-0.32882237,0.35174485,0.87488206,-10.056452,26.755735)" />
<path
style="opacity:0.75;fill:url(#radialGradient4972);fill-opacity:1;stroke:#7b5600;stroke-width:1.97230566;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter42258)"
d="M 6.6613918,2.5495318 C 9.2305553,5.0712097 20.288955,23.501009 20.114154,29.63164 c 6.20581,8.839182 2.57458,8.81748 -0.188372,12.178573 -2.225672,2.707499 -2.064471,7.051135 -0.697402,7.997419 4.481547,3.102123 6.354714,4.03936 10.859411,4.821296 7.112471,1.2346 5.045004,2.123561 11.20649,2.995214 5.940277,0.840358 6.185458,1.430347 10.452615,1.364355 6.413081,-0.09918 13.422437,-0.691591 15.039049,-2.128547 1.616612,-1.436957 6.588793,-8.392511 1.514045,-15.840704 C 65.997631,37.640079 69.677573,35.107755 71.553137,29.49985 69.051243,16.104327 68.258012,12.906337 54.517268,1.5836261 L 50.129083,9.6635035 C 43.991819,12.312691 38.86159,10.422644 35.440528,10.84792 28.051671,10.309231 20.15682,7.0009091 16.5933,6.4423435 12.069524,5.6212399 7.7511199,3.1875723 6.6613918,2.5495318 z"
d="M 5.6355134,3.1288963 18.202502,50.386996 c 4.481547,3.102123 6.508918,3.663424 10.697937,4.957264 6.523619,2.014916 10.431492,2.708408 16.592978,3.580061 5.940277,0.840358 10.042357,1.311866 18.251555,-0.935616 5.871839,-1.607569 4.984746,-11.508491 1.746683,-14.547053 L 49.661758,-4.8533273 50.129083,9.6635035 C 43.991819,12.312691 38.86159,10.422644 35.440528,10.84792 28.051671,10.309231 22.570106,8.9514381 19.006586,8.3928725 14.48281,7.5717689 6.7252415,3.7669368 5.6355134,3.1288963 z"
id="path41302"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccssssssscccccc"
transform="matrix(-0.37450424,-0.5067961,0.81446679,-0.60186189,28.68567,66.998638)" />
sodipodi:nodetypes="ccssscccccc"
transform="matrix(-0.37450424,-0.5067961,0.81446679,-0.60186189,27.487169,66.65621)" />
<path
style="fill:none;stroke:#0079f0;stroke-width:2.95845842;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter42258)"
d="M 53.466148,40.841396 C 54.960979,34.41438 48.179469,13.17288 40.4768,16.330627 c -15.262777,8.562116 -9.554229,15.976085 -0.985029,20.249582 2.913415,2.039486 12.07402,7.793518 13.974377,4.261187 z"

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,986 @@
<?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="svg2860"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="WF_isCommon.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2862">
<linearGradient
inkscape:collect="always"
id="linearGradient4247">
<stop
style="stop-color:#f30606;stop-opacity:1;"
offset="0"
id="stop4249" />
<stop
style="stop-color:#f30606;stop-opacity:0;"
offset="1"
id="stop4251" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4155">
<stop
style="stop-color:#0079ff;stop-opacity:1;"
offset="0"
id="stop4157" />
<stop
style="stop-color:#0079ff;stop-opacity:0;"
offset="1"
id="stop4159" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4135">
<stop
style="stop-color:#0079ff;stop-opacity:1;"
offset="0"
id="stop4137" />
<stop
style="stop-color:#0079ff;stop-opacity:0;"
offset="1"
id="stop4139" />
</linearGradient>
<linearGradient
id="linearGradient3377">
<stop
id="stop3379"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<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="perspective2868" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3377-7"
id="radialGradient3692-3"
cx="45.883327"
cy="28.869568"
fx="45.883327"
fy="28.869568"
r="19.467436"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3377-7">
<stop
id="stop3379-8"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="19.467436"
fy="28.869568"
fx="45.883327"
cy="28.869568"
cx="45.883327"
gradientUnits="userSpaceOnUse"
id="radialGradient3288-6"
xlink:href="#linearGradient3377-7-5"
inkscape:collect="always" />
<linearGradient
id="linearGradient3377-7-5">
<stop
id="stop3379-8-7"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-4"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4135"
id="linearGradient4145"
x1="131.82286"
y1="101.22672"
x2="191.3165"
y2="101.22672"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4155"
id="linearGradient4161"
x1="4.6279406"
y1="100.81277"
x2="60.639036"
y2="100.81277"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4155"
id="linearGradient4231"
x1="33.746853"
y1="34.571426"
x2="72.681725"
y2="34.571426"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4135"
id="linearGradient3034"
gradientUnits="userSpaceOnUse"
x1="131.82286"
y1="101.22672"
x2="184.22351"
y2="100.7989" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
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
inkscape:collect="always"
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-4"
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-4">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-3" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-6" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144-8"
id="radialGradient3809"
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-8"
inkscape:collect="always">
<stop
id="stop3146-1"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
id="stop3148-3"
offset="1"
style="stop-color:#ffffff;stop-opacity:0;" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144-8"
id="radialGradient3811"
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-8"
id="radialGradient3799"
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-8"
id="radialGradient3819"
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-8"
id="radialGradient3827"
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-8"
id="radialGradient3361"
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-8"
id="radialGradient3363"
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-8"
id="radialGradient3365"
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-8"
id="radialGradient3367"
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"
xlink:href="#linearGradient4135-9"
id="linearGradient4145-1"
x1="131.82286"
y1="101.22672"
x2="191.3165"
y2="101.22672"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
id="linearGradient4135-9">
<stop
style="stop-color:#0079ff;stop-opacity:1;"
offset="0"
id="stop4137-0" />
<stop
style="stop-color:#0079ff;stop-opacity:0;"
offset="1"
id="stop4139-9" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4247"
id="linearGradient4253"
x1="3.6551317"
y1="12.367598"
x2="17.097535"
y2="12.367598"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-3.2003726,1.9706624)" />
<linearGradient
id="linearGradient5238">
<stop
id="stop5240"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</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="radialGradient3437"
xlink:href="#linearGradient3144-47"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144-47">
<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-1" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-7">
<stop
id="stop3379-4-2"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-6"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-22">
<stop
id="stop3379-4-4"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-11"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-5">
<stop
id="stop3379-4-8"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-1"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-67">
<stop
id="stop3379-4-54"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-37"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-9">
<stop
id="stop3379-4-7"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-0"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-29">
<stop
id="stop3379-4-9"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-3"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-2">
<stop
id="stop3379-4-5"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-2"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-6">
<stop
id="stop3379-4-1"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-8"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79">
<stop
id="stop3379-4"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-13"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient4476">
<stop
id="stop4478"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop4480"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient4483">
<stop
id="stop4485"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop4487"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient5238-9">
<stop
id="stop5240-3"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-6"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</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="radialGradient3437-1"
xlink:href="#linearGradient3144-5"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144-5">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-17" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-13" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238"
id="radialGradient5500"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.48347996,-1.1563533,0.92260429,-0.38574776,71.952844,110.62943)"
cx="53.269112"
cy="21.168837"
fx="53.269112"
fy="21.168837"
r="19.467436" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144-47"
id="radialGradient5502"
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="#linearGradient5238-9"
id="radialGradient5513"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684"
gradientTransform="matrix(1,0,0,0.99281388,0,0.18208544)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5517"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,0,0.18208544)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5542"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5545"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5548"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5551"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5554"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5557"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5560"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5563"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.778876,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5566"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5569"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5572"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9-8"
id="radialGradient5563-1"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.778876,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<linearGradient
id="linearGradient5238-9-8">
<stop
id="stop5240-3-8"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-6-8"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-39.856219,8.9284534)"
gradientUnits="userSpaceOnUse"
id="radialGradient5591"
xlink:href="#linearGradient5238-9-8"
inkscape:collect="always" />
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-39.856219,8.9284534)"
gradientUnits="userSpaceOnUse"
id="radialGradient5591-2"
xlink:href="#linearGradient5238-9-8-5"
inkscape:collect="always" />
<linearGradient
id="linearGradient5238-9-8-5">
<stop
id="stop5240-3-8-5"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-6-8-4"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-18.476934,27.412948)"
gradientUnits="userSpaceOnUse"
id="radialGradient5633"
xlink:href="#linearGradient5238-9-8-5"
inkscape:collect="always" />
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-39.856219,8.9284534)"
gradientUnits="userSpaceOnUse"
id="radialGradient5591-8"
xlink:href="#linearGradient5238-9-8-4"
inkscape:collect="always" />
<linearGradient
id="linearGradient5238-9-8-4">
<stop
id="stop5240-3-8-0"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-6-8-8"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-31.066129,4.3948345)"
gradientUnits="userSpaceOnUse"
id="radialGradient5667"
xlink:href="#linearGradient5238-9-8-4"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="6.7121053"
inkscape:cx="58.182729"
inkscape:cy="32.094002"
inkscape:current-layer="layer2"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1070"
inkscape:window-height="665"
inkscape:window-x="65"
inkscape:window-y="63"
inkscape:window-maximized="0" />
<metadata
id="metadata2865">
<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
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer0">
<g
id="g3813"
transform="matrix(-0.0719454,0.08583917,-0.08364263,-0.06979446,100.90296,75.889312)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/circle.png"
inkscape:export-xdpi="7.2934141"
inkscape:export-ydpi="7.2934141" />
<g
id="g3821"
transform="matrix(-0.0719454,0.08583917,-0.08364263,-0.06979446,125.77915,48.713266)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/circle.png"
inkscape:export-xdpi="7.2934141"
inkscape:export-ydpi="7.2934141" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3198-6"
d="m 114.9741,73.223439 56.67942,-56.310384 2.99835,3.323948 -56.14916,56.285527 z"
style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.30718172;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
</g>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g3564"
transform="matrix(0.57893948,0,0,0.57354776,33.859216,-7.0273696)"
style="fill:url(#linearGradient4161);fill-opacity:1" />
<path
transform="matrix(1.1022754,0,0,0.38094153,-28.016309,45.375294)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3694-2"
style="opacity:0.66523605;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
<path
transform="matrix(1.0840729,0,0,1.1348087,-34.93237,4.0975175)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3696-2"
style="fill:url(#radialGradient5500);fill-opacity:1;fill-rule:evenodd;stroke:#00064a;stroke-width:1.79201269;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient5502);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.19132471;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
id="path3189"
sodipodi:cx="225.26402"
sodipodi:cy="672.79736"
sodipodi:rx="34.345188"
sodipodi:ry="23.991123"
d="m 259.60921,672.79736 a 34.345188,23.991123 0 1 1 -68.69038,0 34.345188,23.991123 0 1 1 68.69038,0 z"
transform="matrix(-0.17262016,0.1244591,-0.11596444,-0.18526499,127.95453,131.21484)" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc"
id="rect3522"
d="M 37.569484,2.0043621 20.089034,8.3531546 46.992491,12.022128 47.367854,43.65736 61.58003,34.29201 62.08807,3.8844471 37.569484,2.0043621 z"
style="opacity:0.55555558;fill:url(#radialGradient5572);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.94319201;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="rect3520-3"
d="M 20.084355,8.4626046 47.215281,11.885373 47.598076,44.058548 20.086719,39.55212 z"
style="opacity:0.5;fill:url(#radialGradient5569);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.95841074;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
id="path3536"
d="M 46.557985,11.852145 61.70506,4.5446981"
style="fill:url(#radialGradient5566);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.77441907;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-5"
d="M 47.464169,43.45085 47.444692,11.678137"
style="fill:url(#radialGradient5563);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-51"
d="M 20.557161,8.3821386 46.634102,11.448301"
style="fill:url(#radialGradient5560);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-2"
d="M 20.887964,7.9856676 36.853687,1.8193371"
style="fill:url(#radialGradient5557);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-9"
d="m 37.305679,2.0089961 24.217241,2.31975"
style="fill:url(#radialGradient5554);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.32157636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-6"
d="M 61.43665,5.0638601 62.14692,33.582487"
style="fill:url(#radialGradient5551);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-21"
d="M 47.678823,43.269031 62.17975,33.731471"
style="fill:url(#radialGradient5548);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-7"
d="m 20.32486,39.685618 26.821863,4.106589"
style="fill:url(#radialGradient5545);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-8"
d="M 20.324859,9.0109096 20.206881,39.547187"
style="fill:url(#radialGradient5542);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-5-8"
d="m 20.718591,39.064589 16.66679,-9.892804"
style="opacity:0.3142857;fill:url(#radialGradient5591);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.2234602;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-5-8-4"
d="m 37.777324,29.391004 23.669064,3.66479"
style="opacity:0.3142857;fill:url(#radialGradient5633);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.2234602;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-5-8-48"
d="M 37.702831,29.018542 37.385382,3.3333761"
style="opacity:0.3142857;fill:url(#radialGradient5667);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.2234602;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
style="opacity:0.67755103;fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 20.410884,39.417549 0,-17.282208 c 5.413105,-0.446954 14.550824,1.787815 17.133223,6.704305 5.413105,5.115136 5.164798,9.634334 5.512428,14.004548 z"
id="path5688"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3198-9"
d="m 42.462627,56.997784 34.257568,-26.9779 18.838952,6.94169 -32.593017,27.949337 z"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.30718172;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -0,0 +1,998 @@
<?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="svg2860"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="WF_Difference.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2862">
<linearGradient
inkscape:collect="always"
id="linearGradient4247">
<stop
style="stop-color:#f30606;stop-opacity:1;"
offset="0"
id="stop4249" />
<stop
style="stop-color:#f30606;stop-opacity:0;"
offset="1"
id="stop4251" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4155">
<stop
style="stop-color:#0079ff;stop-opacity:1;"
offset="0"
id="stop4157" />
<stop
style="stop-color:#0079ff;stop-opacity:0;"
offset="1"
id="stop4159" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4135">
<stop
style="stop-color:#0079ff;stop-opacity:1;"
offset="0"
id="stop4137" />
<stop
style="stop-color:#0079ff;stop-opacity:0;"
offset="1"
id="stop4139" />
</linearGradient>
<linearGradient
id="linearGradient3377">
<stop
id="stop3379"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<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="perspective2868" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3377-7"
id="radialGradient3692-3"
cx="45.883327"
cy="28.869568"
fx="45.883327"
fy="28.869568"
r="19.467436"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3377-7">
<stop
id="stop3379-8"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="19.467436"
fy="28.869568"
fx="45.883327"
cy="28.869568"
cx="45.883327"
gradientUnits="userSpaceOnUse"
id="radialGradient3288-6"
xlink:href="#linearGradient3377-7-5"
inkscape:collect="always" />
<linearGradient
id="linearGradient3377-7-5">
<stop
id="stop3379-8-7"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-4"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4135"
id="linearGradient4145"
x1="131.82286"
y1="101.22672"
x2="191.3165"
y2="101.22672"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4155"
id="linearGradient4161"
x1="4.6279406"
y1="100.81277"
x2="60.639036"
y2="100.81277"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4155"
id="linearGradient4231"
x1="33.746853"
y1="34.571426"
x2="72.681725"
y2="34.571426"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4135"
id="linearGradient3034"
gradientUnits="userSpaceOnUse"
x1="131.82286"
y1="101.22672"
x2="184.22351"
y2="100.7989" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
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
inkscape:collect="always"
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-4"
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-4">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-3" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-6" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144-8"
id="radialGradient3809"
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-8"
inkscape:collect="always">
<stop
id="stop3146-1"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
id="stop3148-3"
offset="1"
style="stop-color:#ffffff;stop-opacity:0;" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144-8"
id="radialGradient3811"
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-8"
id="radialGradient3799"
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-8"
id="radialGradient3819"
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-8"
id="radialGradient3827"
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-8"
id="radialGradient3361"
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-8"
id="radialGradient3363"
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-8"
id="radialGradient3365"
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-8"
id="radialGradient3367"
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"
xlink:href="#linearGradient4135-9"
id="linearGradient4145-1"
x1="131.82286"
y1="101.22672"
x2="191.3165"
y2="101.22672"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
id="linearGradient4135-9">
<stop
style="stop-color:#0079ff;stop-opacity:1;"
offset="0"
id="stop4137-0" />
<stop
style="stop-color:#0079ff;stop-opacity:0;"
offset="1"
id="stop4139-9" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4247"
id="linearGradient4253"
x1="3.6551317"
y1="12.367598"
x2="17.097535"
y2="12.367598"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-3.2003726,1.9706624)" />
<linearGradient
id="linearGradient5238">
<stop
id="stop5240"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</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="radialGradient3437"
xlink:href="#linearGradient3144-47"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144-47">
<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-1" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-7">
<stop
id="stop3379-4-2"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-6"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-22">
<stop
id="stop3379-4-4"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-11"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-5">
<stop
id="stop3379-4-8"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-1"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-67">
<stop
id="stop3379-4-54"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-37"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-9">
<stop
id="stop3379-4-7"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-0"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-29">
<stop
id="stop3379-4-9"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-3"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-2">
<stop
id="stop3379-4-5"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-2"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-6">
<stop
id="stop3379-4-1"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-8"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79">
<stop
id="stop3379-4"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-13"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient4476">
<stop
id="stop4478"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop4480"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient4483">
<stop
id="stop4485"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop4487"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient5238-9">
<stop
id="stop5240-3"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-6"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</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="radialGradient3437-1"
xlink:href="#linearGradient3144-5"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144-5">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-17" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-13" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144-47"
id="radialGradient5502"
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="#linearGradient5238-9"
id="radialGradient5513"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684"
gradientTransform="matrix(1,0,0,0.99281388,0,0.18208544)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5517"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,0,0.18208544)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5542"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5545"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5548"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5551"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5554"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5557"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5560"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5563"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.778876,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5566"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9-8"
id="radialGradient5563-1"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.778876,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<linearGradient
id="linearGradient5238-9-8">
<stop
id="stop5240-3-8"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-6-8"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-40.154188,8.9284534)"
gradientUnits="userSpaceOnUse"
id="radialGradient5591"
xlink:href="#linearGradient5238-9-8"
inkscape:collect="always" />
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-39.856219,8.9284534)"
gradientUnits="userSpaceOnUse"
id="radialGradient5591-2"
xlink:href="#linearGradient5238-9-8-5"
inkscape:collect="always" />
<linearGradient
id="linearGradient5238-9-8-5">
<stop
id="stop5240-3-8-5"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-6-8-4"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-18.476934,27.412948)"
gradientUnits="userSpaceOnUse"
id="radialGradient5633"
xlink:href="#linearGradient5238-9-8-5"
inkscape:collect="always" />
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-39.856219,8.9284534)"
gradientUnits="userSpaceOnUse"
id="radialGradient5591-8"
xlink:href="#linearGradient5238-9-8-4"
inkscape:collect="always" />
<linearGradient
id="linearGradient5238-9-8-4">
<stop
id="stop5240-3-8-0"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-6-8-8"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-31.066129,4.3948345)"
gradientUnits="userSpaceOnUse"
id="radialGradient5667"
xlink:href="#linearGradient5238-9-8-4"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9-9"
id="radialGradient5545-7"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<linearGradient
id="linearGradient5238-9-9">
<stop
id="stop5240-3-7"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-6-0"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="22.508684"
fy="25.338509"
fx="80.959427"
cy="25.338509"
cx="80.959427"
gradientTransform="matrix(1,0,0,0.99281388,-41.110527,-2.5117393)"
gradientUnits="userSpaceOnUse"
id="radialGradient3974"
xlink:href="#linearGradient5238-9-9"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="6.7121053"
inkscape:cx="31.737971"
inkscape:cy="32.094002"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1070"
inkscape:window-height="665"
inkscape:window-x="65"
inkscape:window-y="63"
inkscape:window-maximized="0" />
<metadata
id="metadata2865">
<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
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer0">
<g
id="g3813"
transform="matrix(-0.0719454,0.08583917,-0.08364263,-0.06979446,100.90296,75.889312)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/circle.png"
inkscape:export-xdpi="7.2934141"
inkscape:export-ydpi="7.2934141" />
<g
id="g3821"
transform="matrix(-0.0719454,0.08583917,-0.08364263,-0.06979446,125.77915,48.713266)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/circle.png"
inkscape:export-xdpi="7.2934141"
inkscape:export-ydpi="7.2934141" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3198-6"
d="m 114.9741,73.223439 56.67942,-56.310384 2.99835,3.323948 -56.14916,56.285527 z"
style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.30718172;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
</g>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g3564"
transform="matrix(0.57893948,0,0,0.57354776,33.859216,-7.0273696)"
style="fill:url(#linearGradient4161);fill-opacity:1" />
<path
transform="matrix(1.1022754,0,0,0.38094153,-28.016309,45.375294)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3694-2"
style="opacity:0.66523605;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
<path
transform="matrix(1.0840729,0,0,1.1348087,-37.316123,5.7363476)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3696-2"
style="fill:#ff0f2b;fill-opacity:1;fill-rule:evenodd;stroke:#00064a;stroke-width:1.79201268999999996;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient5502);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.19132471;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
id="path3189"
sodipodi:cx="225.26402"
sodipodi:cy="672.79736"
sodipodi:rx="34.345188"
sodipodi:ry="23.991123"
d="m 259.60921,672.79736 a 34.345188,23.991123 0 1 1 -68.69038,0 34.345188,23.991123 0 1 1 68.69038,0 z"
transform="matrix(-0.17262016,0.1244591,-0.11596444,-0.18526499,127.95453,131.21484)" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc"
id="rect3522"
d="M 37.569484,2.0043621 20.089034,8.3531546 46.992491,12.022128 47.367854,43.65736 61.58003,34.29201 62.08807,3.8844471 37.569484,2.0043621 z"
style="opacity:1;fill:#29c401;fill-opacity:0.99607843;fill-rule:evenodd;stroke:#000000;stroke-width:1.94319200999999997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc"
id="rect3520-3"
d="M 20.084355,8.4626046 47.215281,11.885373 47.747061,43.760579 40.757483,42.894695 33.469936,28.322232 19.49078,22.716866 z"
style="opacity:1;fill:#29c401;fill-opacity:0.97802197999999996;fill-rule:evenodd;stroke:#000000;stroke-width:1.95841073999999993;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
id="path3536"
d="M 46.557985,11.852145 61.70506,4.5446981"
style="fill:url(#radialGradient5566);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.77441907;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-5"
d="M 47.464169,43.45085 47.444692,11.678137"
style="fill:url(#radialGradient5563);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-51"
d="M 20.557161,8.3821386 46.634102,11.448301"
style="fill:url(#radialGradient5560);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-2"
d="M 20.887964,7.9856676 36.853687,1.8193371"
style="fill:url(#radialGradient5557);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-9"
d="m 37.305679,2.0089961 24.217241,2.31975"
style="fill:url(#radialGradient5554);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.32157636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-6"
d="M 61.43665,5.0638601 62.14692,33.582487"
style="fill:url(#radialGradient5551);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-21"
d="M 47.678823,43.269031 62.17975,33.731471"
style="fill:url(#radialGradient5548);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-7"
d="m 39.543867,42.814293 7.602856,0.977914"
style="fill:url(#radialGradient5545);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-8"
d="M 20.324859,9.0109096 19.759927,23.307871"
style="fill:url(#radialGradient5542);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-5-8"
d="m 20.420622,39.064589 16.66679,-9.892804"
style="opacity:0.3142857;fill:url(#radialGradient5591);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.2234602;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-5-8-4"
d="m 37.777324,29.391004 23.669064,3.66479"
style="opacity:0.3142857;fill:url(#radialGradient5633);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.2234602;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-5-8-48"
d="M 37.702831,29.018542 37.385382,3.3333761"
style="opacity:0.3142857;fill:url(#radialGradient5667);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.2234602;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3198-9"
d="m 42.462627,56.997784 34.257568,-26.9779 18.838952,6.94169 -32.593017,27.949337 z"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.30718172;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 16.984239,41.620746 0,-17.282208 c 5.413105,-0.446954 5.313781,5.21446 10.130949,10.577904 5.413105,5.115136 12.167072,5.760735 12.514702,10.130949 z"
id="path5688-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#fdffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 26.966204,35.096997 20.410884,24.07214 c 5.018321,0.83949 6.399181,0.569112 12.961656,4.469537 5.413105,5.115136 6.356674,10.975195 6.704304,15.345409 z"
id="path5688"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
id="path3536-7-2"
d="m 17.503363,40.865391 9.241686,-5.72639"
style="fill:url(#radialGradient3974);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 36 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,562 @@
<?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.48.5 r10040"
sodipodi:docname="WF_NpointsLine.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>
<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"
xlink:href="#linearGradient3144-6"
inkscape:collect="always" />
<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="radialGradient3238"
xlink:href="#linearGradient3144-6-2"
inkscape:collect="always" />
<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
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="radialGradient3278"
xlink:href="#linearGradient3144-6-9"
inkscape:collect="always" />
<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-3" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-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="radialGradient3222"
xlink:href="#linearGradient3144-9"
inkscape:collect="always" />
<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="radialGradient3238-6"
xlink:href="#linearGradient3144-6-2-3"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144-6-2-3">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-2-4-5" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-5-6-3" />
</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="radialGradient3264"
xlink:href="#linearGradient3144-6-2-3"
inkscape:collect="always" />
<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="radialGradient3278-7"
xlink:href="#linearGradient3144-6-9-4"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144-6-9-4">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-2-7-6" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-5-7-5" />
</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="radialGradient3304"
xlink:href="#linearGradient3144-6-9-4"
inkscape:collect="always" />
<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="radialGradient3222-2"
xlink:href="#linearGradient3144-9-7"
inkscape:collect="always" />
<linearGradient
id="linearGradient3144-9-7">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-3-4" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-7-2" />
</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="radialGradient3362"
xlink:href="#linearGradient3144-9-7"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="7.6104543"
inkscape:cx="36.921981"
inkscape:cy="37.14341"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1261"
inkscape:window-height="625"
inkscape:window-x="65"
inkscape:window-y="103"
inkscape:window-maximized="0" />
<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">
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:0.58431373;fill-rule:nonzero;stroke:none;stroke-width:5.79999971;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3187-6"
sodipodi:cx="197.14285"
sodipodi:cy="655.2193"
sodipodi:rx="48.57143"
sodipodi:ry="48.57143"
d="m 245.71428,655.2193 a 48.57143,48.57143 0 1 1 -97.14286,0 48.57143,48.57143 0 1 1 97.14286,0 z"
transform="matrix(-0.14592237,0.00572413,-0.00572413,-0.14592237,45.657933,108.15717)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:0.58431373;fill-rule:nonzero;stroke:none;stroke-width:5.79999971;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3187-6-5"
sodipodi:cx="197.14285"
sodipodi:cy="655.2193"
sodipodi:rx="48.57143"
sodipodi:ry="48.57143"
d="m 245.71428,655.2193 a 48.57143,48.57143 0 1 1 -97.14286,0 48.57143,48.57143 0 1 1 97.14286,0 z"
transform="matrix(-0.14592237,0.00572413,-0.00572413,-0.14592237,68.258423,110.25955)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:0.58431373;fill-rule:nonzero;stroke:none;stroke-width:5.79999971;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3187-6-5-7"
sodipodi:cx="197.14285"
sodipodi:cy="655.2193"
sodipodi:rx="48.57143"
sodipodi:ry="48.57143"
d="m 245.71428,655.2193 a 48.57143,48.57143 0 1 1 -97.14286,0 48.57143,48.57143 0 1 1 97.14286,0 z"
transform="matrix(-0.14592237,0.00572413,-0.00572413,-0.14592237,65.104866,133.77982)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:0.58431373;fill-rule:nonzero;stroke:none;stroke-width:5.79999971;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3187-6-5-7-2"
sodipodi:cx="197.14285"
sodipodi:cy="655.2193"
sodipodi:rx="48.57143"
sodipodi:ry="48.57143"
d="m 245.71428,655.2193 a 48.57143,48.57143 0 1 1 -97.14286,0 48.57143,48.57143 0 1 1 97.14286,0 z"
transform="matrix(-0.14592237,0.00572413,-0.00572413,-0.14592237,83.632013,142.5835)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:0.58431373;fill-rule:nonzero;stroke:none;stroke-width:5.79999971;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3187-6-5-7-2-9"
sodipodi:cx="197.14285"
sodipodi:cy="655.2193"
sodipodi:rx="48.57143"
sodipodi:ry="48.57143"
d="m 245.71428,655.2193 a 48.57143,48.57143 0 1 1 -97.14286,0 48.57143,48.57143 0 1 1 97.14286,0 z"
transform="matrix(-0.14592237,0.00572413,-0.00572413,-0.14592237,47.366109,146.65684)" />
<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" />
<g
id="g3154"
transform="matrix(-0.14037891,0.00375861,-0.00375861,-0.14037891,62.789867,103.927)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/line.png"
inkscape:export-xdpi="7.0721951"
inkscape:export-ydpi="7.0721951">
<path
d="m 245.71428,655.2193 c 0,26.82526 -21.74617,48.57143 -48.57143,48.57143 -26.82526,0 -48.57143,-21.74617 -48.57143,-48.57143 0,-26.82526 21.74617,-48.57143 48.57143,-48.57143 26.82526,0 48.57143,21.74617 48.57143,48.57143 z"
sodipodi:ry="48.57143"
sodipodi:rx="48.57143"
sodipodi:cy="655.2193"
sodipodi:cx="197.14285"
id="path2162"
style="fill:#0079ff;fill-opacity:1;stroke:#001833;stroke-width:5.80000019;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<path
transform="matrix(0.8513023,-0.5246754,0.5246754,0.8513023,-338.69692,214.19328)"
d="m 259.60921,672.79736 c 0,13.24993 -15.37686,23.99113 -34.34519,23.99113 -18.96832,0 -34.34519,-10.7412 -34.34519,-23.99113 0,-13.24993 15.37687,-23.99112 34.34519,-23.99112 18.96833,0 34.34519,10.74119 34.34519,23.99112 z"
sodipodi:ry="23.991123"
sodipodi:rx="34.345188"
sodipodi:cy="672.79736"
sodipodi:cx="225.26402"
id="path3134"
style="fill:url(#radialGradient4558);fill-opacity:1;stroke:none"
sodipodi:type="arc" />
</g>
<g
id="g3154-5"
transform="matrix(-0.14037891,0.00375861,-0.00375861,-0.14037891,40.912066,101.75893)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/line.png"
inkscape:export-xdpi="7.0721951"
inkscape:export-ydpi="7.0721951">
<path
d="m 245.71428,655.2193 c 0,26.82526 -21.74617,48.57143 -48.57143,48.57143 -26.82526,0 -48.57143,-21.74617 -48.57143,-48.57143 0,-26.82526 21.74617,-48.57143 48.57143,-48.57143 26.82526,0 48.57143,21.74617 48.57143,48.57143 z"
sodipodi:ry="48.57143"
sodipodi:rx="48.57143"
sodipodi:cy="655.2193"
sodipodi:cx="197.14285"
id="path2162-1"
style="fill:#0079ff;fill-opacity:1;stroke:#001833;stroke-width:5.80000019;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<path
transform="matrix(0.8513023,-0.5246754,0.5246754,0.8513023,-338.69692,214.19328)"
d="m 259.60921,672.79736 c 0,13.24993 -15.37686,23.99113 -34.34519,23.99113 -18.96832,0 -34.34519,-10.7412 -34.34519,-23.99113 0,-13.24993 15.37687,-23.99112 34.34519,-23.99112 18.96833,0 34.34519,10.74119 34.34519,23.99112 z"
sodipodi:ry="23.991123"
sodipodi:rx="34.345188"
sodipodi:cy="672.79736"
sodipodi:cx="225.26402"
id="path3134-2"
style="fill:url(#radialGradient3238);fill-opacity:1;stroke:none"
sodipodi:type="arc" />
</g>
<g
id="g3154-9"
transform="matrix(-0.14037891,0.00375861,-0.00375861,-0.14037891,61.80438,126.85598)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/line.png"
inkscape:export-xdpi="7.0721951"
inkscape:export-ydpi="7.0721951">
<path
d="m 245.71428,655.2193 c 0,26.82526 -21.74617,48.57143 -48.57143,48.57143 -26.82526,0 -48.57143,-21.74617 -48.57143,-48.57143 0,-26.82526 21.74617,-48.57143 48.57143,-48.57143 26.82526,0 48.57143,21.74617 48.57143,48.57143 z"
sodipodi:ry="48.57143"
sodipodi:rx="48.57143"
sodipodi:cy="655.2193"
sodipodi:cx="197.14285"
id="path2162-10"
style="fill:#0079ff;fill-opacity:1;stroke:#001833;stroke-width:5.80000019;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<path
transform="matrix(0.8513023,-0.5246754,0.5246754,0.8513023,-338.69692,214.19328)"
d="m 259.60921,672.79736 c 0,13.24993 -15.37686,23.99113 -34.34519,23.99113 -18.96832,0 -34.34519,-10.7412 -34.34519,-23.99113 0,-13.24993 15.37687,-23.99112 34.34519,-23.99112 18.96833,0 34.34519,10.74119 34.34519,23.99112 z"
sodipodi:ry="23.991123"
sodipodi:rx="34.345188"
sodipodi:cy="672.79736"
sodipodi:cx="225.26402"
id="path3134-28"
style="fill:url(#radialGradient3278);fill-opacity:1;stroke:none"
sodipodi:type="arc" />
</g>
<g
id="g3154-5-3"
transform="matrix(-0.14037891,0.00375861,-0.00375861,-0.14037891,43.408631,141.57257)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/line.png"
inkscape:export-xdpi="7.0721951"
inkscape:export-ydpi="7.0721951">
<path
d="m 245.71428,655.2193 c 0,26.82526 -21.74617,48.57143 -48.57143,48.57143 -26.82526,0 -48.57143,-21.74617 -48.57143,-48.57143 0,-26.82526 21.74617,-48.57143 48.57143,-48.57143 26.82526,0 48.57143,21.74617 48.57143,48.57143 z"
sodipodi:ry="48.57143"
sodipodi:rx="48.57143"
sodipodi:cy="655.2193"
sodipodi:cx="197.14285"
id="path2162-1-0"
style="fill:#0079ff;fill-opacity:1;stroke:#001833;stroke-width:5.80000019;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<path
transform="matrix(0.8513023,-0.5246754,0.5246754,0.8513023,-338.69692,214.19328)"
d="m 259.60921,672.79736 c 0,13.24993 -15.37686,23.99113 -34.34519,23.99113 -18.96832,0 -34.34519,-10.7412 -34.34519,-23.99113 0,-13.24993 15.37687,-23.99112 34.34519,-23.99112 18.96833,0 34.34519,10.74119 34.34519,23.99112 z"
sodipodi:ry="23.991123"
sodipodi:rx="34.345188"
sodipodi:cy="672.79736"
sodipodi:cx="225.26402"
id="path3134-2-9"
style="fill:url(#radialGradient3264);fill-opacity:1;stroke:none"
sodipodi:type="arc" />
</g>
<g
id="g3154-9-7"
transform="matrix(-0.14037891,0.00375861,-0.00375861,-0.14037891,78.49195,137.23643)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/line.png"
inkscape:export-xdpi="7.0721951"
inkscape:export-ydpi="7.0721951">
<path
d="m 245.71428,655.2193 c 0,26.82526 -21.74617,48.57143 -48.57143,48.57143 -26.82526,0 -48.57143,-21.74617 -48.57143,-48.57143 0,-26.82526 21.74617,-48.57143 48.57143,-48.57143 26.82526,0 48.57143,21.74617 48.57143,48.57143 z"
sodipodi:ry="48.57143"
sodipodi:rx="48.57143"
sodipodi:cy="655.2193"
sodipodi:cx="197.14285"
id="path2162-10-3"
style="fill:#0079ff;fill-opacity:1;stroke:#001833;stroke-width:5.80000019;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<path
transform="matrix(0.8513023,-0.5246754,0.5246754,0.8513023,-338.69692,214.19328)"
d="m 259.60921,672.79736 c 0,13.24993 -15.37686,23.99113 -34.34519,23.99113 -18.96832,0 -34.34519,-10.7412 -34.34519,-23.99113 0,-13.24993 15.37687,-23.99112 34.34519,-23.99112 18.96833,0 34.34519,10.74119 34.34519,23.99112 z"
sodipodi:ry="23.991123"
sodipodi:rx="34.345188"
sodipodi:cy="672.79736"
sodipodi:cx="225.26402"
id="path3134-28-1"
style="fill:url(#radialGradient3304);fill-opacity:1;stroke:none"
sodipodi:type="arc" />
</g>
<rect
transform="matrix(0.10014998,0.99497235,-0.99717424,-0.07512353,0,0)"
y="-56.775181"
x="25.173418"
height="56.917122"
width="4.4272137"
id="rect2269"
style="fill:#ff8f00;fill-opacity:1;fill-rule:nonzero;stroke:#7b5600;stroke-width:1.0918169;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
ry="0.57263404" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,454 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with FreeCAD (http://www.freecadweb.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"
version="1.1"
width="64"
height="64"
id="svg3017"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="WF_Beam.svg"
inkscape:export-filename="/home/mark/HyperbolaIcon.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<metadata
id="metadata13605">
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs13603">
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path3977"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
transform="scale(0.8) translate(12.5,0)" />
</marker>
<linearGradient
id="linearGradient41404">
<stop
style="stop-color:#71b2f8;stop-opacity:1;"
offset="0"
id="stop41406" />
<stop
style="stop-color:#002795;stop-opacity:1;"
offset="1"
id="stop41408" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3593"
id="radialGradient3599"
gradientUnits="userSpaceOnUse"
cx="51.637894"
cy="24.962704"
fx="51.637894"
fy="24.962704"
r="19.571428" />
<linearGradient
id="linearGradient3593">
<stop
style="stop-color:#c8e0f9;stop-opacity:1;"
offset="0"
id="stop3595" />
<stop
style="stop-color:#637dca;stop-opacity:1;"
offset="1"
id="stop3597" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3864"
id="radialGradient3552"
gradientUnits="userSpaceOnUse"
cx="48.645836"
cy="25.149042"
fx="48.645836"
fy="25.149042"
r="19.571428" />
<linearGradient
id="linearGradient3864">
<stop
id="stop3866"
offset="0"
style="stop-color:#71b2f8;stop-opacity:1;" />
<stop
id="stop3868"
offset="1"
style="stop-color:#002795;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="19.571428"
fy="25.149042"
fx="48.645836"
cy="25.149042"
cx="48.645836"
gradientUnits="userSpaceOnUse"
id="radialGradient41350"
xlink:href="#linearGradient3864"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient41404"
id="radialGradient41391"
cx="-10.118154"
cy="90.943642"
fx="-10.118154"
fy="90.943642"
r="56.551216"
gradientTransform="matrix(0.50193182,0.66234991,-0.74458126,0.56424671,128.48665,-4.100012)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3864"
id="radialGradient41416"
cx="50.641926"
cy="-35.530994"
fx="50.641926"
fy="-35.530994"
r="50.041149"
gradientTransform="matrix(0.52060754,0.00630777,-0.01015338,0.96270494,50.318067,-1.2529118)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3864"
id="radialGradient41424"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.52060754,0.00630777,-0.01015338,0.96270494,50.318067,-1.2529118)"
cx="50.641926"
cy="-35.530994"
fx="50.641926"
fy="-35.530994"
r="50.041149" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient41404"
id="radialGradient41426"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.50193182,0.66234991,-0.74458126,0.56424671,128.48665,-4.100012)"
cx="-10.118154"
cy="90.943642"
fx="-10.118154"
fy="90.943642"
r="56.551216" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient41404"
id="radialGradient41526"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.2683342,0.35409417,-0.39805529,0.30164792,43.740111,15.656731)"
cx="-10.118154"
cy="90.943642"
fx="-10.118154"
fy="90.943642"
r="56.551216" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient41404"
id="radialGradient41536"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.2683342,0.35409417,-0.39805529,0.30164792,43.740111,15.656731)"
cx="-10.118154"
cy="90.943642"
fx="-10.118154"
fy="90.943642"
r="56.551216" />
<filter
id="filter42258"
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow">
<feFlood
id="feFlood42260"
flood-opacity="0.705"
flood-color="rgb(0,0,0)"
result="flood" />
<feComposite
id="feComposite42262"
in2="SourceGraphic"
in="flood"
operator="in"
result="composite1" />
<feGaussianBlur
id="feGaussianBlur42264"
in="composite"
stdDeviation="0.8"
result="blur" />
<feOffset
id="feOffset42266"
dx="1.4"
dy="1.4"
result="offset" />
<feComposite
id="feComposite42268"
in2="offset"
in="SourceGraphic"
operator="over"
result="composite2" />
</filter>
<radialGradient
r="19.467436"
fy="97.369568"
fx="135.38333"
cy="97.369568"
cx="135.38333"
gradientTransform="matrix(0.64238306,-0.04135357,0.60238855,1.8564937,-126.43366,-120.1453)"
gradientUnits="userSpaceOnUse"
id="radialGradient3816"
xlink:href="#linearGradient3377-7-9-8-1-6-7-1"
inkscape:collect="always" />
<linearGradient
id="linearGradient3377-7-9-8-1-6-7-1">
<stop
id="stop3379-9-0-3-8-6-4-6"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-3-0-2-3-7-1-0"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="19.467436"
fy="97.369568"
fx="135.38333"
cy="97.369568"
cx="135.38333"
gradientTransform="matrix(0.64238306,-0.04135357,0.60238855,1.8564937,-83.929103,-124.84064)"
gradientUnits="userSpaceOnUse"
id="radialGradient3666"
xlink:href="#linearGradient3377-7-9-8-1-6-7-1"
inkscape:collect="always" />
<radialGradient
r="19.467436"
fy="21.168837"
fx="53.269112"
cy="21.168837"
cx="53.269112"
gradientTransform="matrix(-0.48347996,-1.1563533,0.92260429,-0.38574776,71.952844,110.62943)"
gradientUnits="userSpaceOnUse"
id="radialGradient5166"
xlink:href="#linearGradient5238-3-9"
inkscape:collect="always" />
<linearGradient
id="linearGradient5238-3-9">
<stop
id="stop5240-7-4"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-7-0"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="19.467436"
fy="21.168837"
fx="53.269112"
cy="21.168837"
cx="53.269112"
gradientTransform="matrix(-0.48347996,-1.1563533,0.92260429,-0.38574776,71.952844,110.62943)"
gradientUnits="userSpaceOnUse"
id="radialGradient4164"
xlink:href="#linearGradient5238-3-9"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3377-7-9-8-1-6-7-1"
id="radialGradient4972"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.2683342,0.35409417,-0.39805529,0.30164792,43.740111,15.656731)"
cx="-10.118154"
cy="90.943642"
fx="-10.118154"
fy="90.943642"
r="56.551216" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3377-7-9-8-1-6-7-1"
id="radialGradient4974"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.52060754,0.00630777,-0.01015338,0.96270494,50.318067,-1.2529118)"
cx="50.641926"
cy="-35.530994"
fx="50.641926"
fy="-35.530994"
r="50.041149" />
<filter
color-interpolation-filters="sRGB"
id="filter42258-3"
inkscape:label="Drop Shadow">
<feFlood
id="feFlood42260-8"
flood-opacity="0.705"
flood-color="rgb(0,0,0)"
result="flood" />
<feComposite
id="feComposite42262-1"
in2="SourceGraphic"
in="flood"
operator="in"
result="composite1" />
<feGaussianBlur
id="feGaussianBlur42264-3"
stdDeviation="0.8"
result="blur" />
<feOffset
id="feOffset42266-1"
dx="1.4"
dy="1.4"
result="offset" />
<feComposite
id="feComposite42268-0"
in2="offset"
in="SourceGraphic"
operator="over"
result="composite2" />
</filter>
<filter
color-interpolation-filters="sRGB"
id="filter42258-1"
inkscape:label="Drop Shadow">
<feFlood
id="feFlood42260-9"
flood-opacity="0.705"
flood-color="rgb(0,0,0)"
result="flood" />
<feComposite
id="feComposite42262-3"
in2="SourceGraphic"
in="flood"
operator="in"
result="composite1" />
<feGaussianBlur
id="feGaussianBlur42264-7"
stdDeviation="0.8"
result="blur" />
<feOffset
id="feOffset42266-0"
dx="1.4"
dy="1.4"
result="offset" />
<feComposite
id="feComposite42268-5"
in2="offset"
in="SourceGraphic"
operator="over"
result="composite2" />
</filter>
<filter
color-interpolation-filters="sRGB"
id="filter42258-1-9"
inkscape:label="Drop Shadow">
<feFlood
id="feFlood42260-9-7"
flood-opacity="0.705"
flood-color="rgb(0,0,0)"
result="flood" />
<feComposite
id="feComposite42262-3-6"
in2="SourceGraphic"
in="flood"
operator="in"
result="composite1" />
<feGaussianBlur
id="feGaussianBlur42264-7-3"
stdDeviation="0.8"
result="blur" />
<feOffset
id="feOffset42266-0-7"
dx="1.4"
dy="1.4"
result="offset" />
<feComposite
id="feComposite42268-5-0"
in2="offset"
in="SourceGraphic"
operator="over"
result="composite2" />
</filter>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1301"
inkscape:window-height="744"
id="namedview13601"
showgrid="false"
inkscape:zoom="5.840651"
inkscape:cx="60.002575"
inkscape:cy="25.215672"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg3017" />
<g
id="g3019"
transform="translate(0,-126)" />
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Layer1" />
<path
style="fill:none;stroke:#0079f0;stroke-width:4.9307642;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker-start:none;filter:url(#filter42258-3)"
d="M 59.56913,7.9400816 C 52.605606,20.282372 52.646355,12.180239 40.4768,16.330627 25.214023,24.892743 34.805959,31.293654 14.840698,34.047565"
id="path41306-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc"
transform="matrix(0.91635966,-0.33268937,0.34441163,0.8851708,-9.6046235,26.426786)" />
<path
style="fill:none;stroke:#0079f0;stroke-width:2.95845842;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter42258-1)"
d="M 53.466148,40.841396 C 54.960979,34.41438 48.179469,13.17288 40.4768,16.330627 c -15.262777,8.562116 -9.554229,15.976085 -0.985029,20.249582 2.913415,2.039486 12.07402,7.793518 13.974377,4.261187 z"
id="path41306-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
transform="matrix(1.0140416,0,0,1.0140416,-10.21039,-3.9181536)" />
<path
style="fill:none;stroke:#0079f0;stroke-width:2.95845842;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter42258-1-9)"
d="M 53.466148,40.841396 C 54.960979,34.41438 48.179469,13.17288 40.4768,16.330627 c -15.262777,8.562116 -9.554229,15.976085 -0.985029,20.249582 2.913415,2.039486 12.07402,7.793518 13.974377,4.261187 z"
id="path41306-0-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
transform="matrix(1.0140416,0,0,1.0140416,6.7397744,-16.930401)" />
<path
style="opacity:0.75;fill:url(#radialGradient4972);fill-opacity:1;stroke:#7b5600;stroke-width:1.97230566;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter42258)"
d="M 6.6613918,2.5495318 C 9.2305553,5.0712097 20.288955,23.501009 20.114154,29.63164 c 6.20581,8.839182 2.57458,8.81748 -0.188372,12.178573 -2.225672,2.707499 -2.064471,7.051135 -0.697402,7.997419 4.481547,3.102123 6.354714,4.03936 10.859411,4.821296 7.112471,1.2346 5.045004,2.123561 11.20649,2.995214 5.940277,0.840358 6.185458,1.430347 10.452615,1.364355 6.413081,-0.09918 13.422437,-0.691591 15.039049,-2.128547 1.616612,-1.436957 6.588793,-8.392511 1.514045,-15.840704 C 65.997631,37.640079 69.677573,35.107755 71.553137,29.49985 69.051243,16.104327 68.258012,12.906337 54.517268,1.5836261 L 50.129083,9.6635035 C 43.991819,12.312691 38.86159,10.422644 35.440528,10.84792 28.051671,10.309231 20.15682,7.0009091 16.5933,6.4423435 12.069524,5.6212399 7.7511199,3.1875723 6.6613918,2.5495318 z"
id="path41302"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccssssssscccccc"
transform="matrix(-0.37450424,-0.5067961,0.81446679,-0.60186189,28.68567,66.998638)" />
<path
style="fill:none;stroke:#0079f0;stroke-width:2.95845842;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter42258)"
d="M 53.466148,40.841396 C 54.960979,34.41438 48.179469,13.17288 40.4768,16.330627 c -15.262777,8.562116 -9.554229,15.976085 -0.985029,20.249582 2.913415,2.039486 12.07402,7.793518 13.974377,4.261187 z"
id="path41306"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
transform="matrix(1.0140416,0,0,1.0140416,-26.228007,19.516859)" />
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,998 @@
<?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="svg2860"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="WF_isCommon.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2862">
<linearGradient
inkscape:collect="always"
id="linearGradient4247">
<stop
style="stop-color:#f30606;stop-opacity:1;"
offset="0"
id="stop4249" />
<stop
style="stop-color:#f30606;stop-opacity:0;"
offset="1"
id="stop4251" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4155">
<stop
style="stop-color:#0079ff;stop-opacity:1;"
offset="0"
id="stop4157" />
<stop
style="stop-color:#0079ff;stop-opacity:0;"
offset="1"
id="stop4159" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4135">
<stop
style="stop-color:#0079ff;stop-opacity:1;"
offset="0"
id="stop4137" />
<stop
style="stop-color:#0079ff;stop-opacity:0;"
offset="1"
id="stop4139" />
</linearGradient>
<linearGradient
id="linearGradient3377">
<stop
id="stop3379"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<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="perspective2868" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3377-7"
id="radialGradient3692-3"
cx="45.883327"
cy="28.869568"
fx="45.883327"
fy="28.869568"
r="19.467436"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3377-7">
<stop
id="stop3379-8"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="19.467436"
fy="28.869568"
fx="45.883327"
cy="28.869568"
cx="45.883327"
gradientUnits="userSpaceOnUse"
id="radialGradient3288-6"
xlink:href="#linearGradient3377-7-5"
inkscape:collect="always" />
<linearGradient
id="linearGradient3377-7-5">
<stop
id="stop3379-8-7"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-4"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4135"
id="linearGradient4145"
x1="131.82286"
y1="101.22672"
x2="191.3165"
y2="101.22672"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4155"
id="linearGradient4161"
x1="4.6279406"
y1="100.81277"
x2="60.639036"
y2="100.81277"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4155"
id="linearGradient4231"
x1="33.746853"
y1="34.571426"
x2="72.681725"
y2="34.571426"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4135"
id="linearGradient3034"
gradientUnits="userSpaceOnUse"
x1="131.82286"
y1="101.22672"
x2="184.22351"
y2="100.7989" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
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
inkscape:collect="always"
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-4"
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-4">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-3" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-6" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144-8"
id="radialGradient3809"
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-8"
inkscape:collect="always">
<stop
id="stop3146-1"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
id="stop3148-3"
offset="1"
style="stop-color:#ffffff;stop-opacity:0;" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144-8"
id="radialGradient3811"
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-8"
id="radialGradient3799"
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-8"
id="radialGradient3819"
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-8"
id="radialGradient3827"
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-8"
id="radialGradient3361"
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-8"
id="radialGradient3363"
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-8"
id="radialGradient3365"
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-8"
id="radialGradient3367"
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"
xlink:href="#linearGradient4135-9"
id="linearGradient4145-1"
x1="131.82286"
y1="101.22672"
x2="191.3165"
y2="101.22672"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
id="linearGradient4135-9">
<stop
style="stop-color:#0079ff;stop-opacity:1;"
offset="0"
id="stop4137-0" />
<stop
style="stop-color:#0079ff;stop-opacity:0;"
offset="1"
id="stop4139-9" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4247"
id="linearGradient4253"
x1="3.6551317"
y1="12.367598"
x2="17.097535"
y2="12.367598"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-3.2003726,1.9706624)" />
<linearGradient
id="linearGradient5238">
<stop
id="stop5240"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</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="radialGradient3437"
xlink:href="#linearGradient3144-47"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144-47">
<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-1" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-7">
<stop
id="stop3379-4-2"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-6"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-22">
<stop
id="stop3379-4-4"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-11"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-5">
<stop
id="stop3379-4-8"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-1"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-67">
<stop
id="stop3379-4-54"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-37"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-9">
<stop
id="stop3379-4-7"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-0"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-29">
<stop
id="stop3379-4-9"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-3"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-2">
<stop
id="stop3379-4-5"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-2"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79-6">
<stop
id="stop3379-4-1"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-8"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3377-79">
<stop
id="stop3379-4"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-5-13"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient4476">
<stop
id="stop4478"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop4480"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient4483">
<stop
id="stop4485"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop4487"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient5238-9">
<stop
id="stop5240-3"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-6"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</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="radialGradient3437-1"
xlink:href="#linearGradient3144-5"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144-5">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146-17" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148-13" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238"
id="radialGradient5500"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.48347996,-1.1563533,0.92260429,-0.38574776,71.952844,110.62943)"
cx="53.269112"
cy="21.168837"
fx="53.269112"
fy="21.168837"
r="19.467436" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144-47"
id="radialGradient5502"
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="#linearGradient5238-9"
id="radialGradient5513"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684"
gradientTransform="matrix(1,0,0,0.99281388,0,0.18208544)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5517"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,0,0.18208544)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5542"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5545"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5548"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5551"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5554"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5557"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5560"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5563"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.778876,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5566"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5569"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9"
id="radialGradient5572"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.92786,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5238-9-8"
id="radialGradient5563-1"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99281388,-39.778876,-2.350652)"
cx="80.959427"
cy="25.338509"
fx="80.959427"
fy="25.338509"
r="22.508684" />
<linearGradient
id="linearGradient5238-9-8">
<stop
id="stop5240-3-8"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-6-8"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-39.856219,8.9284534)"
gradientUnits="userSpaceOnUse"
id="radialGradient5591"
xlink:href="#linearGradient5238-9-8"
inkscape:collect="always" />
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-39.856219,8.9284534)"
gradientUnits="userSpaceOnUse"
id="radialGradient5591-2"
xlink:href="#linearGradient5238-9-8-5"
inkscape:collect="always" />
<linearGradient
id="linearGradient5238-9-8-5">
<stop
id="stop5240-3-8-5"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-6-8-4"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-18.476934,27.412948)"
gradientUnits="userSpaceOnUse"
id="radialGradient5633"
xlink:href="#linearGradient5238-9-8-5"
inkscape:collect="always" />
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-39.856219,8.9284534)"
gradientUnits="userSpaceOnUse"
id="radialGradient5591-8"
xlink:href="#linearGradient5238-9-8-4"
inkscape:collect="always" />
<linearGradient
id="linearGradient5238-9-8-4">
<stop
id="stop5240-3-8-0"
offset="0"
style="stop-color:#001ccc;stop-opacity:1;" />
<stop
id="stop5242-6-8-8"
offset="1"
style="stop-color:#00afff;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="22.508684"
fy="27.361128"
fx="80.661461"
cy="27.361128"
cx="80.661461"
gradientTransform="matrix(1,0,0,0.66293275,-31.066129,4.3948345)"
gradientUnits="userSpaceOnUse"
id="radialGradient5667"
xlink:href="#linearGradient5238-9-8-4"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="6.7121053"
inkscape:cx="58.182729"
inkscape:cy="32.094002"
inkscape:current-layer="layer2"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1070"
inkscape:window-height="665"
inkscape:window-x="65"
inkscape:window-y="63"
inkscape:window-maximized="0" />
<metadata
id="metadata2865">
<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
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer0">
<g
id="g3813"
transform="matrix(-0.0719454,0.08583917,-0.08364263,-0.06979446,100.90296,75.889312)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/circle.png"
inkscape:export-xdpi="7.2934141"
inkscape:export-ydpi="7.2934141" />
<g
id="g3821"
transform="matrix(-0.0719454,0.08583917,-0.08364263,-0.06979446,125.77915,48.713266)"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/circle.png"
inkscape:export-xdpi="7.2934141"
inkscape:export-ydpi="7.2934141" />
<text
xml:space="preserve"
style="font-size:28px;font-style:normal;font-weight:normal;fill:#f30606;fill-opacity:1;stroke:#000000;stroke-width:0.94630939000000003px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="-0.99982059"
y="24.728886"
id="text3735"
transform="matrix(0.88877016,-0.00548731,0.00694648,1.1251074,0,0)"><tspan
sodipodi:role="line"
id="tspan3737"
x="-0.99982059"
y="24.728886"
style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#f30606;fill-opacity:1;stroke:#000000;stroke-width:0.94630939000000003;stroke-opacity:1;font-family:Arial Black;-inkscape-font-specification:'Arial Black, Bold'">?</tspan></text>
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3198-6"
d="m 114.9741,73.223439 56.67942,-56.310384 2.99835,3.323948 -56.14916,56.285527 z"
style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.30718172;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
</g>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g3564"
transform="matrix(0.57893948,0,0,0.57354776,33.859216,-7.0273696)"
style="fill:url(#linearGradient4161);fill-opacity:1" />
<path
transform="matrix(1.1022754,0,0,0.38094153,-28.016309,45.375294)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3694-2"
style="opacity:0.66523605;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
<path
transform="matrix(1.0840729,0,0,1.1348087,-34.93237,4.0975175)"
d="m 71.785715,34.571426 a 18.571428,18.571428 0 1 1 -37.142856,0 18.571428,18.571428 0 1 1 37.142856,0 z"
sodipodi:ry="18.571428"
sodipodi:rx="18.571428"
sodipodi:cy="34.571426"
sodipodi:cx="53.214287"
id="path3696-2"
style="fill:url(#radialGradient5500);fill-opacity:1;fill-rule:evenodd;stroke:#00064a;stroke-width:1.79201269;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:url(#radialGradient5502);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.19132471;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial"
id="path3189"
sodipodi:cx="225.26402"
sodipodi:cy="672.79736"
sodipodi:rx="34.345188"
sodipodi:ry="23.991123"
d="m 259.60921,672.79736 a 34.345188,23.991123 0 1 1 -68.69038,0 34.345188,23.991123 0 1 1 68.69038,0 z"
transform="matrix(-0.17262016,0.1244591,-0.11596444,-0.18526499,127.95453,131.21484)" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc"
id="rect3522"
d="M 37.569484,2.0043621 20.089034,8.3531546 46.992491,12.022128 47.367854,43.65736 61.58003,34.29201 62.08807,3.8844471 37.569484,2.0043621 z"
style="opacity:0.55555558;fill:url(#radialGradient5572);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.94319201;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="rect3520-3"
d="M 20.084355,8.4626046 47.215281,11.885373 47.598076,44.058548 20.086719,39.55212 z"
style="opacity:0.5;fill:url(#radialGradient5569);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.95841074;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
id="path3536"
d="M 46.557985,11.852145 61.70506,4.5446981"
style="fill:url(#radialGradient5566);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.77441907;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-5"
d="M 47.464169,43.45085 47.444692,11.678137"
style="fill:url(#radialGradient5563);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-51"
d="M 20.557161,8.3821386 46.634102,11.448301"
style="fill:url(#radialGradient5560);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-2"
d="M 20.887964,7.9856676 36.853687,1.8193371"
style="fill:url(#radialGradient5557);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-9"
d="m 37.305679,2.0089961 24.217241,2.31975"
style="fill:url(#radialGradient5554);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.32157636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-6"
d="M 61.43665,5.0638601 62.14692,33.582487"
style="fill:url(#radialGradient5551);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-21"
d="M 47.678823,43.269031 62.17975,33.731471"
style="fill:url(#radialGradient5548);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-7"
d="m 20.32486,39.685618 26.821863,4.106589"
style="fill:url(#radialGradient5545);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-8"
d="M 20.324859,9.0109096 20.206881,39.547187"
style="fill:url(#radialGradient5542);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-5-8"
d="m 20.718591,39.064589 16.66679,-9.892804"
style="opacity:0.3142857;fill:url(#radialGradient5591);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.2234602;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-5-8-4"
d="m 37.777324,29.391004 23.669064,3.66479"
style="opacity:0.3142857;fill:url(#radialGradient5633);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.2234602;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path3536-5-8-48"
d="M 37.702831,29.018542 37.385382,3.3333761"
style="opacity:0.3142857;fill:url(#radialGradient5667);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.2234602;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cc" />
<path
style="opacity:0.67755103;fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 20.410884,39.417549 0,-17.282208 c 5.413105,-0.446954 14.550824,1.787815 17.133223,6.704305 5.413105,5.115136 5.164798,9.634334 5.512428,14.004548 z"
id="path5688"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3198-9"
d="m 42.462627,56.997784 34.257568,-26.9779 18.838952,6.94169 -32.593017,27.949337 z"
style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.30718172;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -0,0 +1,23 @@
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']
['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']
['Parabola', '10 # Parabola parameter >0', 'a', 't', 'sqrt(2*a*t)', '0.01', '10', '0.01', '0']
['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']

View File

@ -0,0 +1,20 @@
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
['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']
['Circle with Teeth', '37', '1', '(a+cos(a*t)*2)*b', 'c*cos(t)', 'c*sin(t)', '0', '0.0', '2*pi', '0.01']
['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']
['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']
['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']
['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']
['Tangentoidal crown', '37', '1', '1 ', 'a*cos(t)', 'a*sin(t)', 'b*tan(c*t/2)', '0.0', '2*pi', '0.01']
['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']
['Cylindric sine wave', '25', '10', '5 #c>0', 'a*cos(t)', 'a*sin(t)', 'b*cos(c*t)', '0.0', '10*pi', '0.01']
['Skew circle', '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']
['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']
['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']
['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']
['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']
['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']
['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']
['3D Lissajous', '10 ', '10', '0', 'a*cos(3*t)', 'a*sin(2*t)', 'b*sin(7*t)', '0.0', '2*pi', '0.01']
['Trefoil knot', '10', '0', '1 #-1 senestre', 'a*(cos(t)+2*cos(2*t))', 'a*(sin(t)-2*sin(2*t))', 'a*2*c*sin(3*t)', '0.0', '2*pi', '0.01']
['Nfoil knot', '10', '10 #number of foils', '1 #-1 senestre', 'a*(cos(t)+2*cos((b-1)*t))', 'a*(sin(t)-2*sin((b-1)*t))', 'a*2*c*sin(b*t)', '0.0', '2*pi', '0.01']

3309
WorkFeature/Ui/WFGui_2015.py Normal file

File diff suppressed because it is too large Load Diff

6899
WorkFeature/Ui/WFGui_2015.ui Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,193 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'WF_ObjParCurve2DEditGui_2015.ui'
#
# Created: Tue Oct 27 06:56:40 2015
# by: PySide UI code generator 4.11.2
#
# 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(1039, 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(10)
self.tableWidget.setRowCount(2)
item = QtGui.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(0, item)
item = QtGui.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(1, 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.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)
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.setFrame(True)
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", "2D 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 \"Parametric2D.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.horizontalHeaderItem(0)
item.setText(_translate("Form", "Name", None))
item = self.tableWidget.horizontalHeaderItem(1)
item.setText(_translate("Form", "a (t) ", None))
item = self.tableWidget.horizontalHeaderItem(2)
item.setText(_translate("Form", "b (a, t) ", None))
item = self.tableWidget.horizontalHeaderItem(3)
item.setText(_translate("Form", "X (a,b,c,t)", None))
item = self.tableWidget.horizontalHeaderItem(4)
item.setText(_translate("Form", "Y (a,b,c,t)", None))
item = self.tableWidget.horizontalHeaderItem(5)
item.setText(_translate("Form", "t min", None))
item = self.tableWidget.horizontalHeaderItem(6)
item.setText(_translate("Form", "t max", None))
item = self.tableWidget.horizontalHeaderItem(7)
item.setText(_translate("Form", "t step", None))
item = self.tableWidget.horizontalHeaderItem(8)
item.setText(_translate("Form", "Polar", None))
item = self.tableWidget.horizontalHeaderItem(9)
item.setText(_translate("Form", "Comments", None))
__sortingEnabled = self.tableWidget.isSortingEnabled()
self.tableWidget.setSortingEnabled(False)
item = self.tableWidget.item(0, 0)
item.setText(_translate("Form", "Circle", None))
item = self.tableWidget.item(0, 1)
item.setText(_translate("Form", "10 # Radius", None))
item = self.tableWidget.item(0, 2)
item.setText(_translate("Form", "a", None))
item = self.tableWidget.item(0, 3)
item.setText(_translate("Form", "a*cos(t)", None))
item = self.tableWidget.item(0, 4)
item.setText(_translate("Form", "a*sin(t)", None))
item = self.tableWidget.item(0, 5)
item.setText(_translate("Form", "0", None))
item = self.tableWidget.item(0, 6)
item.setText(_translate("Form", "2*pi", None))
item = self.tableWidget.item(0, 7)
item.setText(_translate("Form", "0.01", None))
item = self.tableWidget.item(0, 8)
item.setText(_translate("Form", "0", 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,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

@ -0,0 +1,244 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'WF_ObjParCurve3DEditGui_2015.ui'
#
# Created: Tue Oct 27 06:56:50 2015
# by: PySide UI code generator 4.11.2
#
# 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(1039, 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(11)
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.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(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)
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 (t) ", None))
item = self.tableWidget.horizontalHeaderItem(2)
item.setText(_translate("Form", "b (a, t) ", None))
item = self.tableWidget.horizontalHeaderItem(3)
item.setText(_translate("Form", "c (a, b, t) ", None))
item = self.tableWidget.horizontalHeaderItem(4)
item.setText(_translate("Form", "X (a,b,c,t)", None))
item = self.tableWidget.horizontalHeaderItem(5)
item.setText(_translate("Form", "Y (a,b,c,t)", None))
item = self.tableWidget.horizontalHeaderItem(6)
item.setText(_translate("Form", "Z (a,b,c,t)", None))
item = self.tableWidget.horizontalHeaderItem(7)
item.setText(_translate("Form", "t min", None))
item = self.tableWidget.horizontalHeaderItem(8)
item.setText(_translate("Form", "t max", None))
item = self.tableWidget.horizontalHeaderItem(9)
item.setText(_translate("Form", "t step", None))
item = self.tableWidget.horizontalHeaderItem(10)
item.setText(_translate("Form", "Comments", None))
__sortingEnabled = self.tableWidget.isSortingEnabled()
self.tableWidget.setSortingEnabled(False)
item = self.tableWidget.item(0, 0)
item.setText(_translate("Form", "Cylindrical helix", None))
item = self.tableWidget.item(0, 1)
item.setText(_translate("Form", "10*0.05 #Vert. step", None))
item = self.tableWidget.item(0, 2)
item.setText(_translate("Form", "1", None))
item = self.tableWidget.item(0, 3)
item.setText(_translate("Form", "10 # Radius", None))
item = self.tableWidget.item(0, 4)
item.setText(_translate("Form", "c*sin(t)", None))
item = self.tableWidget.item(0, 5)
item.setText(_translate("Form", "c*cos(t)", None))
item = self.tableWidget.item(0, 6)
item.setText(_translate("Form", "a*t", None))
item = self.tableWidget.item(0, 7)
item.setText(_translate("Form", "0", None))
item = self.tableWidget.item(0, 8)
item.setText(_translate("Form", "5*2*pi #5 circles", None))
item = self.tableWidget.item(0, 9)
item.setText(_translate("Form", "0.01", None))
item = self.tableWidget.item(1, 0)
item.setText(_translate("Form", "Circle with Teeth", None))
item = self.tableWidget.item(1, 1)
item.setText(_translate("Form", "37", None))
item = self.tableWidget.item(1, 2)
item.setText(_translate("Form", "1", None))
item = self.tableWidget.item(1, 3)
item.setText(_translate("Form", "(a+cos(a*t)*2)*b", None))
item = self.tableWidget.item(1, 4)
item.setText(_translate("Form", "c*cos(t)", None))
item = self.tableWidget.item(1, 5)
item.setText(_translate("Form", "c*sin(t)", None))
item = self.tableWidget.item(1, 6)
item.setText(_translate("Form", "0", None))
item = self.tableWidget.item(1, 7)
item.setText(_translate("Form", "0", None))
item = self.tableWidget.item(1, 8)
item.setText(_translate("Form", "2*pi", None))
item = self.tableWidget.item(1, 9)
item.setText(_translate("Form", "0.01", 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,344 @@
<?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>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>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

View File

@ -3,6 +3,8 @@
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 '>tmp.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

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
***************************************************************************
* Thanks to original ideas, codes, and support from : *
* - Javier Martinez Garcia 2014, 2015 for ideas and first WF codes *
* for tje code on parallelism of two faces, forTour camera code *
* for tje code on parallelism of two faces, forTour camera code... *
* - Jonathan Wiedemann for Gui ideas and for view codes 2014 *
* and support *
* - NormandC for his support *
@ -13,6 +13,7 @@
* - Eriossoltero for macro Ellipse-Center+2Points *
* - Ulrich Brammer for Geodesic dome code *
* - Wmayer Many Thanks for active help on testing and debbuging *
* - Gaël Ecorchard for HighlightDifference Macro *
* Special thanks to Mario52 for diverse MACRO codes as FCCamera, *
* cutCircle, cutWire, Delta xyz, bounding box ... *
* and other diverse pieces of codes *
@ -29,6 +30,7 @@
* Copyright (c) 2013 galou_breizh *
* Copyright (c) 2015 Ulrich Brammer <ulrich1a[at]users.sourceforge.net> *
* Copyright (c) Eriossoltero *
* Copyright (c) 2015 Gaël Ecorchard *
* *
* This file is a supplement to the FreeCAD CAx development system. *
* *
@ -51,15 +53,18 @@
"""
# First two lines to be able to launch with python
import sys
from WorkFeature import WF_ObjParCurve_2015
# change this by your own FreeCAD lib path import FreeCAD
if not sys.path.__contains__("/usr/lib/freecad/lib"):
sys.path.append("/usr/lib/freecad/lib")
import WFGui_2015 as WFGui
from WF_ObjRot_2015 import *
from WF_Utils_2015 import *
from WF_ObjParCurve_2015 import *
global myRelease
myRelease = "2015_10_05"
myRelease = "2015_10_20"
import os.path
import time
@ -84,9 +89,13 @@ ICONS_PATH = os.path.dirname(__file__) + "/Icons"
QtCore.QDir.addSearchPath("icons", ICONS_PATH)
# LineColor
red = 1.0 # 1 = 255
green = 0.0 #
blue = 0.0 #
#red = 1.0 # 1 = 255
#green = 0.0 #
#blue = 0.0 #
red=(1.00,0.00,0.00)
green=(0.00,0.67,0.00)
blue=(0.33,0.00,1.00)
orange=(1.00,0.67,0.00)
flag_for_face=True
# Some Global variables
@ -1708,7 +1717,7 @@ def properties_point(Point_User_Name):
return
def properties_line(Line_User_Name):
def properties_line(Line_User_Name, color=(1.00,0.67,0.00)):
""" Define the properties of a Work feature Line.
PointColor
LineColor
@ -1717,11 +1726,11 @@ def properties_line(Line_User_Name):
Transparency
"""
try:
Gui.ActiveDocument.getObject(Line_User_Name).PointColor = (1.00,0.67,0.00)
Gui.ActiveDocument.getObject(Line_User_Name).PointColor = color
except:
print_msg("Not able to set PointColor !")
try:
Gui.ActiveDocument.getObject(Line_User_Name).LineColor = (1.00,0.67,0.00)
Gui.ActiveDocument.getObject(Line_User_Name).LineColor = color
except:
print_msg("Not able to set LineColor !")
try:
@ -1788,14 +1797,14 @@ def plot_point(Vector_point, part="Part::Feature", name="Point", grp="WorkPoints
return point_User_Name
def plot_axis(Vector_A, Vector_B, part="Part::Feature", name="Axis", grp="WorkAxis"):
def plot_axis(Vector_A, Vector_B, part="Part::Feature", name="Axis", grp="WorkAxis", color=(1.00,0.67,0.00)):
if not(App.ActiveDocument.getObject( grp )):
App.ActiveDocument.addObject("App::DocumentObjectGroup", grp)
axis = App.ActiveDocument.addObject(part, name)
axis.Shape = Part.makeLine(Vector_A, Vector_B)
App.ActiveDocument.getObject( grp ).addObject(axis)
axis_User_Name = axis.Label
properties_line(axis_User_Name)
properties_line(axis_User_Name, color)
return axis_User_Name, axis
@ -3304,6 +3313,7 @@ def point_toSketch():
if m_num_point != num_point:
printError_msg(error_msg)
return
if msg != 0:
createFolders('WorkPoints')
for point in return_points:
plot_point(point, part="Part::Feature", name="Sketch_Proj", grp="WorkPoints")
@ -3449,9 +3459,94 @@ def plot_2PointsAxis():
except:
printError_msg(error_msg)
def plot_NPoints_axis():
""" Create an Axis based on a linear regression from a set of Points.
"""
global verbose
msg=verbose
import numpy as np
m_actDoc = get_ActiveDocument(info=msg)
if m_actDoc == None:
return None
createFolders('WorkAxis')
error_msg = "Unable to create Axis : \nSelect at least two points!"
result_msg = " : Axis created !"
name = "Line from N Points"
part = "Part::Feature"
grp = "WorkAxis"
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 = []
m_y = []
m_z = []
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.append(m_point.x)
m_y.append(m_point.y)
m_z.append(m_point.z)
m_np_x = np.asfarray(m_x)
m_np_y = np.asfarray(m_y)
m_np_z = np.asfarray(m_z)
if msg != 0:
print_msg(" m_np_x=" + str(m_np_x))
print_msg(" m_np_y=" + str(m_np_y))
print_msg(" m_np_z=" + str(m_np_z))
m_data = np.concatenate((m_np_x[:, np.newaxis],
m_np_y[:, np.newaxis],
m_np_z[:, np.newaxis]),
axis=1)
if msg != 0:
print_msg(" m_data=" + str(m_data))
# Calculate the mean of the points, i.e. the 'center' of the cloud
m_datamean = m_data.mean(axis=0)
if msg != 0:
print_msg(" m_datamean=" + str(m_datamean))
Axis_E0 = Base.Vector(m_datamean[0], m_datamean[1], m_datamean[2])
# Do an SVD on the mean-centered data.
m_uu, m_dd, m_vv = np.linalg.svd(m_data - m_datamean)
if msg != 0:
print_msg(" m_uu=" + str(m_uu))
print_msg(" m_dd=" + str(m_dd))
print_msg(" m_vv=" + str(m_vv))
# Now vv[0] contains the first principal component, i.e. the direction
# vector of the 'best fit' line in the least squares sense.
Axis_dir = Base.Vector(m_vv[0][0],m_vv[0][1],m_vv[0][2])
Axis_E1 = Axis_E0 - Axis_dir.normalize().multiply(m_dd[0]/2.)
Axis_E2 = Axis_E0 + Axis_dir.normalize().multiply(m_dd[0]/2.)
Axis_User_Name, axis = plot_axis(Axis_E1, Axis_E2, part, name, grp, orange)
print_msg(str(Axis_User_Name) + result_msg )
Axis_dir = Base.Vector(m_vv[1][0],m_vv[1][1],m_vv[1][2])
#Axis_E2 = Axis_E0 + Axis_dir.normalize().multiply(m_dd[1]/2.)
Axis_E2 = Axis_E0 + Axis_dir
Axis_User_Name, axis = plot_axis(Axis_E0, Axis_E2, part, name, grp, red)
print_msg(str(Axis_User_Name) + result_msg )
Axis_dir = Base.Vector(m_vv[2][0],m_vv[2][1],m_vv[2][2])
#Axis_E2 = Axis_E0 + Axis_dir.normalize().multiply(m_dd[2]/2.)
Axis_E2 = Axis_E0 + Axis_dir
Axis_User_Name, axis = plot_axis(Axis_E0, Axis_E2, part, name, grp, green)
print_msg(str(Axis_User_Name) + result_msg )
else:
printError_msg(error_msg)
except:
printError_msg(error_msg)
def plot_cylinderAxis():
msg=1
global verbose
msg=verbose
createFolders('WorkAxis')
error_msg = "Unable to create Cylinder Axis : \nSelect one cylindrical face only !"
result_msg = " : Cylinder Axis created !"
@ -3471,9 +3566,10 @@ def plot_cylinderAxis():
if msg != 0:
print_msg("Number_of_Faces=" + str(Number_of_Faces))
print_msg("Number_of_Edges=" + str(Number_of_Edges))
if Number_of_Faces == 1:
if Number_of_Faces >= 1:
Face_list = SelectedObjects[5]
Face = Face_list[0]
for Face in Face_list:
#Face = Face_list[0]
Face_Wire = Face.OuterWire
Face_Edges = Face_Wire.Edges
try:
@ -4908,9 +5004,9 @@ def vertexToSketch(points,sketch):
# Append the Projection
geoList.append(Part.Point(Projection1))
return_points.append(Part.Point(Projection2))
m_sketch.addGeometry(geoList)
num_point = num_point + 1
m_sketch.addGeometry(geoList)
return num_point, return_points
@ -5320,6 +5416,7 @@ def line_toSketch():
if m_num_line != (num_edge + num_point):
printError_msg(error_msg)
return
if msg != 0:
createFolders('WorkPoints')
createFolders('WorkAxis')
for point in return_points:
@ -7588,6 +7685,7 @@ def plot_sectionSweep():
- Transition Option (Select a Transition option in case of trajectory with several wires; Transition can be:
# 0 (default), 1 (right corners) or 2 (rounded corners).)
"""
global verbose
msg=verbose
# Variable makeSolid = 1 to create solid if section is closed, 0 to create surfaces
@ -7600,11 +7698,11 @@ def plot_sectionSweep():
# will be processed
allSubProfile=sweep_all
# if msg != 0:
# print_msg("makeSolid = " + str(makeSolid))
# print_msg("isFrenet = " + str(isFrenet))
# print_msg("transition = " + str(transition))
# print_msg("allSubProfile = " + str(allSubProfile))
if msg != 0:
print_msg("makeSolid = " + str(makeSolid))
print_msg("isFrenet = " + str(isFrenet))
print_msg("transition = " + str(transition))
print_msg("allSubProfile = " + str(allSubProfile))
createFolders('WorkAxis')
createFolders('WorkPoints')
@ -7650,12 +7748,29 @@ def plot_sectionSweep():
# Get the list of sections in case of first section is a Compound
m_sections = []
if isinstance(shape0,Part.Compound):
m_msg = "Compound Section Found !"
if msg != 0:
print_msg("Compound Section Found !")
for wire in shape0.Wires:
m_sections.append(Part.Wire([wire]))
else:
m_msg = "NO Compound Found !"
m_sections.append(Part.Wire([shape0]))
if msg != 0:
print_msg("NO Compound Section Found !")
print_msg(str(getShapeType(shape0)))
try:
if len(shape0.Wires):
for wire in shape0.Wires:
m_sections.append(Part.Wire([wire]))
elif len(shape0.Edges):
for edge in shape0.Edges:
m_sections.append(Part.Wire([edge]))
elif len(shape0.Vertexes):
for vertex in shape0.Vertexes:
m_sections.append(Part.Wire([vertex]))
else:
print_msg("Not able to transform " + str(shape0) + "in wire !")
return
except:
pass
if msg != 0:
print_msg("03-Get the list of sections in case of first section is a Compound")
@ -7744,7 +7859,21 @@ def plot_sectionSweep():
for wire in shape3.Wires:
m_sections3.append(Part.Wire([wire]))
else:
m_sections3.append(Part.Wire([shape3]))
try:
if len(shape3.Wires):
for wire in shape3.Wires:
m_sections3.append(Part.Wire([wire]))
elif len(shape0.Edges):
for edge in shape3.Edges:
m_sections3.append(Part.Wire([edge]))
elif len(shape0.Vertexes):
for vertex in shape3.Vertexes:
m_sections3.append(Part.Wire([vertex]))
else:
print_msg("Not able to transform " + str(shape3) + "in wire !")
return
except:
pass
# if msg != 0:
# print_msg("m_sections3 = " + str(m_sections3))
@ -8979,6 +9108,16 @@ def object_perpendicular():
def object_coplanar():
two_objects_are("coplanar")
def object_highlightCommon():
"""
Compute the common parts between selected shapes:
Quick measurements between parallel faces and similarly placed objects
Original code from : 'JMG, galou and other contributors' 10/2015
Adapted to WF by : Rentlau_64 10/2015
"""
def object_clearance():
"""
Check for two Objects Clearance distance:
@ -9026,6 +9165,7 @@ def object_angle():
NB:
Normals of Planes will be used.
"""
global verbose
msg=verbose
error_msg =\
@ -9264,6 +9404,242 @@ def camera_orientation():
print_gui_msg(msg)
def object_common():
"""Compute the common parts between selected shapes.
- Select at least two objects.
Original code from HighlightCommon.FCMacro
https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightCommon.FCMacro
Authors = 2015 Javier Martinez Garcia
"""
global verbose
msg=verbose
m_actDoc = get_ActiveDocument(info=msg)
if m_actDoc == None:
return None
createFolders('WorkObjects')
error_msg =\
"INCORRECT Object(s) Selection :\n" +\
"You Must Select at least Two(2) Objects !"
result_msg = " : Common object created into WorkFeatures/WorkObjects/"
name = "Part"
part = "Part::Feature"
grp = "WorkObjects"
try:
selectionObjects = Gui.Selection.getSelection()
if len(selectionObjects) < 2:
printError_msg(error_msg)
return
object_list = []
for obj in selectionObjects:
object_list.append(obj)
for i, object_a in enumerate(object_list):
shape_a = object_a.Shape
label_a = object_a.Label
for object_b in object_list[(i + 1):]:
shape_b = object_b.Shape
label_b = object_b.Label
common = shape_a.common(shape_b)
if common.Volume > 1e-6:
if not(App.ActiveDocument.getObject( grp )):
App.ActiveDocument.addObject("App::DocumentObjectGroup", grp)
intersection_object = FreeCAD.ActiveDocument.addObject(part)
intersection_object.Label = "Common (" +\
str(label_a.encode('utf-8')) +\
"-" +\
str(label_b.encode('utf-8')) +\
")"
intersection_object.Shape = common
App.ActiveDocument.getObject( grp ).addObject(intersection_object)
intersection_object.ViewObject.ShapeColor = (1.0, 0.0, 0.0, 1.0)
object_a.ViewObject.Transparency = 80
object_b.ViewObject.Transparency = 80
print_msg( str(intersection_object.Label.encode('utf-8')) + result_msg )
print_msg("Volume of the intersection between " +\
str(label_a.encode('utf-8')) +\
" and " +\
str(label_b.encode('utf-8')) +\
" : " +\
str(common.Volume) + "\n")
else:
print_gui_msg("No intersection between " +\
str(label_a.encode('utf-8')) +\
" and " +\
str(label_b.encode('utf-8')))
except:
printError_msg(error_msg)
def object_difference():
"""Compute the difference parts between selected shapes.
- Select two objects.
Original code from HighlightDifference.FCMacro
https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightDifference.FCMacro
Authors = 2015 Gaël Ecorchard (Galou)
"""
global verbose
msg=verbose
msg=1
m_actDoc = get_ActiveDocument(info=msg)
if m_actDoc == None:
return None
createFolders('WorkObjects')
error_msg =\
"INCORRECT Object(s) Selection :\n" +\
"You Must Select Two(2) Objects !"
result_msg = " : Difference object created into WorkFeatures/WorkObjects/"
name = "Part"
part = "Part::Feature"
grp = "WorkObjects"
try:
selectionObjects = Gui.Selection.getSelection()
if len(selectionObjects) < 2:
printError_msg(error_msg)
return
object_list = []
for obj in selectionObjects:
object_list.append(obj)
for i, object_a in enumerate(object_list):
shape_a = object_a.Shape
label_a = object_a.Label
for object_b in object_list[(i + 1):]:
shape_b = object_b.Shape
label_b = object_b.Label
shape_addition = shape_a.cut(shape_b)
if shape_addition.Volume < 1e-6:
print_gui_msg("No Cut of " +\
str(label_a.encode('utf-8')) +\
" by " +\
str(label_b.encode('utf-8')))
else:
print_msg("Volume of the red " +\
str(label_a.encode('utf-8')) +\
" Cut by " +\
str(label_b.encode('utf-8')) +\
" : " +\
str(shape_addition.Volume) + "\n")
if not(App.ActiveDocument.getObject( grp )):
App.ActiveDocument.addObject("App::DocumentObjectGroup", grp)
added = FreeCAD.ActiveDocument.addObject(part)
added.Label = "Cut red (" +\
str(label_a.encode('utf-8')) +\
"-" +\
str(label_b.encode('utf-8')) +\
")"
added.Shape = shape_addition
App.ActiveDocument.getObject( grp ).addObject(added)
added.ViewObject.ShapeColor = (1.0, 0.0, 0.0, 1.0)
shape_removal = shape_b.cut(shape_a)
if shape_removal.Volume < 1e-6:
print_gui_msg("No Cut of " +\
str(label_b.encode('utf-8')) +\
" by " +\
str(label_a.encode('utf-8')))
else:
print_msg("Volume of the green " +\
str(label_b.encode('utf-8')) +\
" Cut by " +\
str(label_a.encode('utf-8')) +\
" : " +\
str(shape_removal.Volume) + "\n")
if not(App.ActiveDocument.getObject( grp )):
App.ActiveDocument.addObject("App::DocumentObjectGroup", grp)
removed = FreeCAD.ActiveDocument.addObject(part)
removed.Label = "Cut green (" +\
str(label_b.encode('utf-8')) +\
"-" +\
str(label_a.encode('utf-8')) +\
")"
removed.Shape = shape_removal
App.ActiveDocument.getObject( grp ).addObject(removed)
removed.ViewObject.ShapeColor = (0.0, 0.5, 0.0, 1.0)
object_a.ViewObject.Transparency = 80
object_b.ViewObject.Transparency = 80
except:
printError_msg(error_msg)
# object_a = FreeCAD.Gui.Selection.getSelectionEx()[0].Object
# object_b = FreeCAD.Gui.Selection.getSelectionEx()[1].Object
# shape_a = object_a.Shape
# shape_b = object_b.Shape
# label_a = object_a.Label
# label_b = object_b.Label
# shape_addition = shape_a.cut(shape_b)
# if shape_addition.Volume < 1e-6:
# FreeCAD.Console.PrintMessage('No addition from {} to {}\n'.format(
# label_a, label_b))
# else:
# FreeCAD.Console.PrintMessage(
# 'Volume of the addition from {} to {}: {}\n'.format(
# label_a, label_b, shape_addition.Volume))
#
# shape_removal = shape_b.cut(shape_a)
# if shape_removal.Volume < 1e-6:
# FreeCAD.Console.PrintMessage('No removal from {} to {}\n'.format(
# label_a, label_b))
# else:
# FreeCAD.Console.PrintMessage(
# 'Volume of the removal from {} to {}: {}\n'.format(
# label_a, label_b, shape_removal.Volume))
#
# if (shape_addition.Volume < 1e-6) and (shape_removal.Volume < 1e-6):
# FreeCAD.Console.PrintMessage('{} and {} have the same shape\n'.format(
# label_a, label_b))
#
# added = FreeCAD.ActiveDocument.addObject('Part::Feature')
# added.Label = 'Addition ({} {})'.format(label_a, label_b)
# added.Shape = shape_addition
# added.ViewObject.ShapeColor = (1.0, 0.0, 0.0, 1.0)
# removed = FreeCAD.ActiveDocument.addObject('Part::Feature')
# removed.Label = 'Removal ({} {})'.format(label_b, label_a)
# removed.Shape = shape_removal
# removed.ViewObject.ShapeColor = (0.0, 0.5, 0.0, 1.0)
#
# object_a.ViewObject.Transparency = 80
# object_b.ViewObject.Transparency = 80
def object_align2view_old():
""" Align the object(s) selected to the actual view.
- Click first to select a Face of an object.
The changed values are : Rotation Axis((X, Y, Z), Angle)
Same Euler angles : Yaw, Pitch, Roll
The Translation is not modifylace your object selected to the position ActiveView (camera)
Original Code from Mario52
"""
# revoir le point de rotation
msg=verbose
error_msg = "INCORRECT Object(s) Selection :\n\nYou Must at least one object !"
try:
m_sel_list = Gui.Selection.getSelection()
pl = App.Placement()
pl.Rotation = FreeCADGui.ActiveDocument.ActiveView.getCameraOrientation()
for m_sel in m_sel_list:
m_Nameelement = m_sel.Name
if msg!=0:
print_msg("Object selected =" + str(m_Nameelement))
pl.Base = m_sel.Placement.Base
App.ActiveDocument.getObject(m_Nameelement).Placement=pl
except:
printError_msg(error_msg)
def object_align2view():
"""
Align the face of selected object(s) to the actual view Plane.
@ -9763,10 +10139,14 @@ class WorkFeatureTab():
self.m_tab.setCurrentIndex(3)
#----------------------------------------------------------------
# Create a Rotation object
self.rot = Rotation(self.ui)
# Create a Translation object
self.trans = Translation(self.ui)
# Create a Rotation object and connect
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)
### Connect to functions
self.connections_for_checkbox_toggled = {
@ -9803,6 +10183,7 @@ class WorkFeatureTab():
"button_object_axis" : "plot_centerObjectAxes",
"button_twopoints_axis" : "plot_2PointsAxis",
"button_Npoints_axis" : "plot_NPoints_axis",
"button_cylinder_axis" : "plot_cylinderAxis",
"button_plane_axis" : "plot_planeAxis",
"button_face_normal" : "plot_faceNormal",
@ -9849,6 +10230,8 @@ class WorkFeatureTab():
"button_dome_create" : "plot_centerDome",
"button_letter" : "plot_letter",
"button_revolve" : "plot_revolution",
"button_common" : "object_common",
"button_difference" : "object_difference",
"button_sweep" : "plot_sectionSweep",
"button_alignview" : "view_align",
@ -9984,117 +10367,6 @@ class WorkFeatureTab():
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")),globals()[str(m_val)])
#==============================================================================
# Define Connections to Translation Object
#==============================================================================
self.connections_for_ObjTrans_button_pressed = {
"ObjTrans_button_select" : "initialize",
"ObjTrans_button_select_start" : "select_start",
"ObjTrans_button_select_end" : "select_end",
"ObjTrans_button_reset" : "reset",
"ObjTrans_button_apply" : "application",
}
self.connections_for_ObjTrans_combobox_changed = {
"ObjTrans_comboBox_start" : "select_start_type",
"ObjTrans_comboBox_end" : "select_end_type",
}
self.connections_for_ObjTrans_checkbox_toggled = {
"ObjTrans_duplicate" : "copyFlag",
"ObjTrans_deepCopy" : "deepCopyFlag",
}
self.connections_for_ObjTrans_spin_changed = {
"ObjTrans_spin" : "numberCopies",
}
self.connections_for_ObjTrans_return_pressed = {
"ObjTrans_start_x" : "start_x_entered",
"ObjTrans_start_y" : "start_y_entered",
"ObjTrans_start_z" : "start_z_entered",
"ObjTrans_end_x" : "end_x_entered",
"ObjTrans_end_y" : "end_y_entered",
"ObjTrans_end_z" : "end_z_entered",
}
#==============================================================================
# Connect to Translation functions
#==============================================================================
for m_key, m_val in self.connections_for_ObjTrans_button_pressed.items():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("pressed()"),getattr(self.trans, str(m_val)))
for m_key, m_val in self.connections_for_ObjTrans_combobox_changed.items():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")),getattr(self.trans, str(m_val)))
for m_key, m_val in self.connections_for_ObjTrans_checkbox_toggled.items():
#print_msg( "Connecting : " + str(m_key) + " and " + str(m_val) )
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL(_fromUtf8("toggled(bool)")),getattr(self.trans, str(m_val)))
for m_key, m_val in self.connections_for_ObjTrans_spin_changed.items():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("valueChanged(int)"),getattr(self.trans, str(m_val)))
for m_key, m_val in self.connections_for_ObjTrans_return_pressed.items():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("returnPressed()"),getattr(self.trans, str(m_val)))
#==============================================================================
# Define Connections to Rotation Object
#==============================================================================
self.connections_for_ObjRot_slider_changed = {
"ObjRot_horizontalSlider" : "angle_value_changed",
}
self.connections_for_ObjRot_button_pressed = {
"ObjRot_button_select" : "initialize",
"ObjRot_button_select_center" : "select_center",
"ObjRot_button_select_axis" : "select_axis",
"ObjRot_button_select_angle" : "select_angle",
"ObjRot_button_reset" : "reset",
"ObjRot_button_apply" : "application",
}
self.connections_for_ObjRot_combobox_changed = {
"ObjRot_comboBox_center" : "center_value",
"ObjRot_comboBox_axis" : "axis_value",
}
self.connections_for_ObjRot_return_pressed = {
"ObjRot_lineEdit_angle" : "angle_value_entered",
}
#==============================================================================
# Connect to Rotation functions
#==============================================================================
for m_key, m_val in self.connections_for_ObjRot_button_pressed.items():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("pressed()"),getattr(self.rot, str(m_val)))
for m_key, m_val in self.connections_for_ObjRot_combobox_changed.items():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")),getattr(self.rot, str(m_val)))
for m_key, m_val in self.connections_for_ObjRot_slider_changed.items():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("valueChanged(int)"),getattr(self.rot, str(m_val)))
for m_key, m_val in self.connections_for_ObjRot_return_pressed.items():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("returnPressed()"),getattr(self.rot, str(m_val)))
#==============================================================================
self.m_dialog.show()
m_text=str(myRelease)
self.ui.label_release.setText(QtGui.QApplication.translate("Form", m_text, None, QtGui.QApplication.UnicodeUTF8))

View File

@ -0,0 +1,193 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'WF_ObjParCurve2DEditGui_2015.ui'
#
# Created: Tue Oct 27 06:56:40 2015
# by: PySide UI code generator 4.11.2
#
# 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(1039, 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(10)
self.tableWidget.setRowCount(2)
item = QtGui.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(0, item)
item = QtGui.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(1, 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.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)
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.setFrame(True)
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", "2D 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 \"Parametric2D.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.horizontalHeaderItem(0)
item.setText(_translate("Form", "Name", None))
item = self.tableWidget.horizontalHeaderItem(1)
item.setText(_translate("Form", "a (t) ", None))
item = self.tableWidget.horizontalHeaderItem(2)
item.setText(_translate("Form", "b (a, t) ", None))
item = self.tableWidget.horizontalHeaderItem(3)
item.setText(_translate("Form", "X (a,b,c,t)", None))
item = self.tableWidget.horizontalHeaderItem(4)
item.setText(_translate("Form", "Y (a,b,c,t)", None))
item = self.tableWidget.horizontalHeaderItem(5)
item.setText(_translate("Form", "t min", None))
item = self.tableWidget.horizontalHeaderItem(6)
item.setText(_translate("Form", "t max", None))
item = self.tableWidget.horizontalHeaderItem(7)
item.setText(_translate("Form", "t step", None))
item = self.tableWidget.horizontalHeaderItem(8)
item.setText(_translate("Form", "Polar", None))
item = self.tableWidget.horizontalHeaderItem(9)
item.setText(_translate("Form", "Comments", None))
__sortingEnabled = self.tableWidget.isSortingEnabled()
self.tableWidget.setSortingEnabled(False)
item = self.tableWidget.item(0, 0)
item.setText(_translate("Form", "Circle", None))
item = self.tableWidget.item(0, 1)
item.setText(_translate("Form", "10 # Radius", None))
item = self.tableWidget.item(0, 2)
item.setText(_translate("Form", "a", None))
item = self.tableWidget.item(0, 3)
item.setText(_translate("Form", "a*cos(t)", None))
item = self.tableWidget.item(0, 4)
item.setText(_translate("Form", "a*sin(t)", None))
item = self.tableWidget.item(0, 5)
item.setText(_translate("Form", "0", None))
item = self.tableWidget.item(0, 6)
item.setText(_translate("Form", "2*pi", None))
item = self.tableWidget.item(0, 7)
item.setText(_translate("Form", "0.01", None))
item = self.tableWidget.item(0, 8)
item.setText(_translate("Form", "0", 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,244 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'WF_ObjParCurve3DEditGui_2015.ui'
#
# Created: Tue Oct 27 06:56:50 2015
# by: PySide UI code generator 4.11.2
#
# 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(1039, 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(11)
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.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(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)
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 (t) ", None))
item = self.tableWidget.horizontalHeaderItem(2)
item.setText(_translate("Form", "b (a, t) ", None))
item = self.tableWidget.horizontalHeaderItem(3)
item.setText(_translate("Form", "c (a, b, t) ", None))
item = self.tableWidget.horizontalHeaderItem(4)
item.setText(_translate("Form", "X (a,b,c,t)", None))
item = self.tableWidget.horizontalHeaderItem(5)
item.setText(_translate("Form", "Y (a,b,c,t)", None))
item = self.tableWidget.horizontalHeaderItem(6)
item.setText(_translate("Form", "Z (a,b,c,t)", None))
item = self.tableWidget.horizontalHeaderItem(7)
item.setText(_translate("Form", "t min", None))
item = self.tableWidget.horizontalHeaderItem(8)
item.setText(_translate("Form", "t max", None))
item = self.tableWidget.horizontalHeaderItem(9)
item.setText(_translate("Form", "t step", None))
item = self.tableWidget.horizontalHeaderItem(10)
item.setText(_translate("Form", "Comments", None))
__sortingEnabled = self.tableWidget.isSortingEnabled()
self.tableWidget.setSortingEnabled(False)
item = self.tableWidget.item(0, 0)
item.setText(_translate("Form", "Cylindrical helix", None))
item = self.tableWidget.item(0, 1)
item.setText(_translate("Form", "10*0.05 #Vert. step", None))
item = self.tableWidget.item(0, 2)
item.setText(_translate("Form", "1", None))
item = self.tableWidget.item(0, 3)
item.setText(_translate("Form", "10 # Radius", None))
item = self.tableWidget.item(0, 4)
item.setText(_translate("Form", "c*sin(t)", None))
item = self.tableWidget.item(0, 5)
item.setText(_translate("Form", "c*cos(t)", None))
item = self.tableWidget.item(0, 6)
item.setText(_translate("Form", "a*t", None))
item = self.tableWidget.item(0, 7)
item.setText(_translate("Form", "0", None))
item = self.tableWidget.item(0, 8)
item.setText(_translate("Form", "5*2*pi #5 circles", None))
item = self.tableWidget.item(0, 9)
item.setText(_translate("Form", "0.01", None))
item = self.tableWidget.item(1, 0)
item.setText(_translate("Form", "Circle with Teeth", None))
item = self.tableWidget.item(1, 1)
item.setText(_translate("Form", "37", None))
item = self.tableWidget.item(1, 2)
item.setText(_translate("Form", "1", None))
item = self.tableWidget.item(1, 3)
item.setText(_translate("Form", "(a+cos(a*t)*2)*b", None))
item = self.tableWidget.item(1, 4)
item.setText(_translate("Form", "c*cos(t)", None))
item = self.tableWidget.item(1, 5)
item.setText(_translate("Form", "c*sin(t)", None))
item = self.tableWidget.item(1, 6)
item.setText(_translate("Form", "0", None))
item = self.tableWidget.item(1, 7)
item.setText(_translate("Form", "0", None))
item = self.tableWidget.item(1, 8)
item.setText(_translate("Form", "2*pi", None))
item = self.tableWidget.item(1, 9)
item.setText(_translate("Form", "0.01", 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,388 @@
# -*- 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 WorkFeature.WF_ObjParCurve2DEditGui_2015 as EDIT_2D
import WorkFeature.WF_ObjParCurve3DEditGui_2015 as EDIT_3D
from WorkFeature.WF_Utils_2015 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"
####################################################################################
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 "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 "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):
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 :" + str(my_database_name)
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"
def setupUi(self, Form, combox):
EDIT_3D.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_()

View File

@ -0,0 +1,545 @@
# -*- coding: utf-8 -*-
"""
"""
from WorkFeature.WF_Utils_2015 import DefineAndConnectEvents
import WorkFeature.WF_ObjParCurveEdit_2015 as ParCurveEdit
import FreeCAD
import FreeCADGui
import Draft
import Part
from PySide import QtGui
from math import *
####################################################################################
# Classes
class Parametric():
def __init__(self, gui):
""" A Parametric object
"""
self.debug = 1
self.close = False
self.face = False
self.points = False
self.poly = True
self.bspline = False
self.bezier = False
self.meshes = False
self.polar = False
self.dialog = None
self.combox = None
self.gui = gui
def updateOptions(self):
pass
def ccloseState(self, flag):
if self.debug != 0:
print self.ccloseState.__name__
self.close = flag
self.updateOptions()
def cfaceState(self, flag):
if self.debug != 0:
print self.cfaceState.__name__
self.face = flag
self.updateOptions()
def cpointsState(self, flag):
if self.debug != 0:
print self.cpointsState.__name__
self.points = flag
self.updateOptions()
def cpolyState(self, flag):
if self.debug != 0:
print self.cpolyState.__name__
self.poly = flag
self.updateOptions()
def cbsplineState(self, flag):
if self.debug != 0:
print self.cbsplineState.__name__
self.bspline = flag
self.updateOptions()
def cbezierState(self, flag):
if self.debug != 0:
print self.cbezierState.__name__
self.bezier = flag
self.updateOptions()
def cmeshesState (self, flag):
if self.debug != 0:
print self.cmeshesState.__name__
self.meshes = flag
self.updateOptions()
def cpolarState(self, flag):
if self.debug != 0:
print self.ccloseState.__name__
self.polar = flag
self.updateOptions()
def plot_matriz(self, matriz):
""" Plot the dataset with different options.
"""
if self.debug != 0:
print self.plot_matriz.__name__
if self.points == True:
for point in matriz:
Draft.makePoint(point)
else:
curva = Part.makePolygon(matriz)
if self.bspline == True:
Draft.makeBSpline(curva,closed=self.close,face=False)
#Draft.makeBSpline(Draft.makeWire(curva,closed=self.close,face=False),closed=self.close,face=False)
if self.bezier == True:
Draft.makeBezCurve(curva,closed=self.close,face=False)
if self.poly == True:
Draft.makeWire(curva,closed=self.close,face=False)
if self.close == True and self.face == True:
Draft.upgrade(FreeCADGui.Selection.getSelection(),delete=True)
FreeCAD.ActiveDocument.recompute()
def edit(self):
""" Launch the edit panel curve.
"""
if self.debug != 0:
print self.edit.__name__
self.dialog.show()
# self.dialog.exec_()
class ParametricCurve2D(Parametric):
""" A ParametricCurve2D object
"""
def __init__(self, gui):
Parametric.__init__(self, gui)
self.name = self.gui.ParCurve_name_2
self.la = self.gui.ParCurve_a_2
self.lb = self.gui.ParCurve_b_2
self.lx = self.gui.ParCurve_x_2
self.ly = self.gui.ParCurve_y_2
self.ltmin = self.gui.ParCurve_tmin_2
self.ltmax = self.gui.ParCurve_tmax_2
self.ltstep = self.gui.ParCurve_tstep_2
self.lpolar = self.gui.checkBox_polar_2
self.cb_points = self.gui.checkBox_points_2
self.cb_polyline = self.gui.checkBox_polyline_2
self.cb_bspline = self.gui.checkBox_bspline_2
self.cb_bezier = self.gui.checkBox_bezier_2
self.cb_close = self.gui.checkBox_close_2
self.cb_face = self.gui.checkBox_face_2
self.cb_face.setEnabled(False)
self.close = False
self.face = False
self.combox = self.gui.ParCurve_comboBox_2
self.dialog = QtGui.QDialog()
self.dialog.resize(280,110)
self.dialog.setWindowTitle("2D Parametric Curve Editor")
self.dialog.ui = ParCurveEdit.tableWidget2D(database="Parametric2D.dat")
self.dialog.ui.setupUi(self.dialog, self.combox)
def updateOptions(self):
if self.points:
self.cb_close.setEnabled(False)
self.cb_face.setEnabled(False)
self.cb_close.setChecked(False)
self.cb_face.setChecked(False)
self.close = False
self.face = False
else:
self.cb_close.setEnabled(True)
if self.poly and self.close:
self.cb_face.setEnabled(True)
else:
self.cb_face.setEnabled(False)
self.cb_face.setChecked(False)
self.face = False
def select_curve(self, *argc):
""" Selection of Curve by combo box.
"""
if self.debug != 0:
print self.select_curve.__name__
m_line = self.dialog.ui.selectCurve(*argc)
if self.debug != 0:
print str(m_line)
self.name.setText(str(m_line[0]))
self.la.setText(str(m_line[1]))
self.lb.setText(str(m_line[2]))
self.lx.setText(str(m_line[3]))
self.ly.setText(str(m_line[4]))
self.ltmin.setText(str(m_line[5]))
self.ltmax.setText(str(m_line[6]))
self.ltstep.setText(str(m_line[7]))
m_polar = int(str(m_line[8]))
if self.debug != 0:
print str(m_polar)
print str(self.lpolar)
self.polar = False
if m_polar == 1:
print str(m_polar)
self.polar = True
self.lpolar.setChecked(self.polar)
def draw(self):
if self.debug != 0:
print self.draw.__name__
msgBox = QtGui.QMessageBox()
fa = str(self.la.text())
fb = str(self.lb.text())
fx = str(self.lx.text())
fy = str(self.ly.text())
t = float(eval(str(self.ltmin.text())))
tf = float(eval(str(self.ltmax.text())))
intt = float(eval(str(self.ltstep.text())))
d = (tf + intt -t)/intt
dmax = int(d)
matriz = []
if self.debug != 0:
print "t=" + str(t) +" to " + str(tf) + " with step of " + str(intt)
print "d=" + str(d)
print "a=" + str(fa)
print "b=" + str(fb)
print "x=" + str(fx)
print "y=" + str(fy)
code = """
def f(fa,fb,fx,fy,t):
value=""
msgBox = QtGui.QMessageBox()
try:
value="a() = """+str(fa)+""""
a="""+str(fa)+"""
value="b() = """+str(fb)+""""
b="""+str(fb)+"""
value="X() = """+str(fx)+""""
fxx="""+str(fx)+"""
value="Y() = """+str(fy)+""""
fyy="""+str(fy)+"""
except ZeroDivisionError:
msgBox.setText("Error division by zero in calculus of "+value+" for (t) = "+str(t)+" !")
msgBox.exec_()
return
except:
msgBox.setText("Error in the formula of "+value+" for (t) = "+str(t)+" !")
msgBox.exec_()
return
return fxx, fyy
"""
#==============================================================================
# for i in range(int(d)):
# try:
# value="a"
# a=eval(fa)
# value="b"
# b=eval(fb)
# value="X"
# fxx=eval(fx)
# value="Y"
# fyy=eval(fy)
# #print fxx,fyy
# except ZeroDivisionError:
# msgBox.setText("Error division by zero in calculus of "+value+"() for t="+str(t)+" !")
# msgBox.exec_()
# except:
# msgBox.setText("Error in the formula of "+value+"() !")
# msgBox.exec_()
#
# if self.polar == True:
# matriz.append(FreeCAD.Vector(fxx*cos(fyy),fxx*sin(fyy),0.0))
# else:
# matriz.append(FreeCAD.Vector(fxx,fyy,0.0))
# t+=intt
#==============================================================================
if self.debug != 0:
print code
exec code
for i in range(dmax):
fxx, fyy = f(fa,fb,fx,fy,t)
if self.polar == True:
matriz.append(FreeCAD.Vector(fxx*cos(fyy),fxx*sin(fyy),0.0))
else:
matriz.append(FreeCAD.Vector(fxx,fyy,0.0))
t+=intt
self.plot_matriz(matriz)
def store(self):
""" Store the parametric curve.
"""
if self.debug != 0:
print self.store.__name__
m_line = []
m_items = [self.name, self.la, self.lb,self.lx, self.ly,
self.ltmin, self.ltmax, self.ltstep,]
for m_item in m_items:
m_val = ""
m_val = m_item.text()
m_line.append(str(m_val))
if self.polar:
m_line.append("1")
else:
m_line.append("0")
# append comment
m_line.append("")
print str(m_line)
self.dialog.ui.addCurveData(m_line)
class ParametricCurve3D(Parametric):
""" A ParametricCurve3D object
"""
def __init__(self, gui):
Parametric.__init__(self, gui)
self.name = self.gui.ParCurve_name_3
self.la = self.gui.ParCurve_a_3
self.lb = self.gui.ParCurve_b_3
self.lc = self.gui.ParCurve_c_3
self.lx = self.gui.ParCurve_x_3
self.ly = self.gui.ParCurve_y_3
self.lz = self.gui.ParCurve_z_3
self.ltmin = self.gui.ParCurve_tmin_3
self.ltmax = self.gui.ParCurve_tmax_3
self.ltstep = self.gui.ParCurve_tstep_3
self.combox = self.gui.ParCurve_comboBox_3
self.dialog = QtGui.QDialog()
self.dialog.resize(280,110)
self.dialog.setWindowTitle("3D Parametric Curve Editor")
self.dialog.ui = ParCurveEdit.tableWidget3D(database="Parametric3D.dat")
self.dialog.ui.setupUi(self.dialog, self.combox)
def select_curve(self, *argc):
""" Selection of Curve by combo box.
"""
if self.debug != 0:
print self.select_curve.__name__
m_line = self.dialog.ui.selectCurve(*argc)
if self.debug != 0:
print str(m_line)
self.name.setText(str(m_line[0]))
self.la.setText(str(m_line[1]))
self.lb.setText(str(m_line[2]))
self.lc.setText(str(m_line[3]))
self.lx.setText(str(m_line[4]))
self.ly.setText(str(m_line[5]))
self.lz.setText(str(m_line[6]))
self.ltmin.setText(str(m_line[7]))
self.ltmax.setText(str(m_line[8]))
self.ltstep.setText(str(m_line[9]))
def draw(self):
if self.debug != 0:
print self.draw.__name__
msgBox = QtGui.QMessageBox()
fa = str(self.la.text())
fb = str(self.lb.text())
fc = str(self.lc.text())
fx = str(self.lx.text())
fy = str(self.ly.text())
fz = str(self.lz.text())
t = float(eval(str(self.ltmin.text())))
tf = float(eval(str(self.ltmax.text())))
intt = float(eval(str(self.ltstep.text())))
d = (tf + intt -t)/intt
dmax = int(d)
matriz = []
if self.debug != 0:
print "t=" + str(t) +" to " + str(tf) + " with step of " + str(intt)
print "d=" + str(d)
print "a=" + str(fa)
print "b=" + str(fb)
print "c=" + str(fc)
print "x=" + str(fx)
print "y=" + str(fy)
print "z=" + str(fz)
code = """
def f(fa,fb,fc,fx,fy,fz,t):
value=""
msgBox = QtGui.QMessageBox()
try:
value="a() = """+str(fa)+""""
a="""+str(fa)+"""
value="b() = """+str(fb)+""""
b="""+str(fb)+"""
value="c() = """+str(fc)+""""
c="""+str(fc)+"""
value="X() = """+str(fx)+""""
fxx="""+str(fx)+"""
value="Y() = """+str(fy)+""""
fyy="""+str(fy)+"""
value="Z() = """+str(fz)+""""
fzz="""+str(fz)+"""
except ZeroDivisionError:
msgBox.setText("Error division by zero in calculus of "+value+" for (t) = "+str(t)+" !")
msgBox.exec_()
return
except:
msgBox.setText("Error in the formula of "+value+" for (t) = "+str(t)+" !")
msgBox.exec_()
return
return fxx, fyy, fzz
"""
#==============================================================================
# for i in range(int(d)):
# try:
# value="a"
# a=eval(fa)
# value="b"
# b=eval(fb)
# value="c"
# c=eval(fc)
# value="X"
# fxx=eval(fx)
# value="Y"
# fyy=eval(fy)
# value="Z"
# fzz=eval(fz)
# except ZeroDivisionError:
# msgBox.setText("Error division by zero in calculus of "+value+"() for t="+str(t)+" !")
# msgBox.exec_()
# except:
# msgBox.setText("Error in the formula of "+value+"() !")
# msgBox.exec_()
# matriz.append(FreeCAD.Vector(fxx,fyy,fzz))
# t+=intv
#==============================================================================
if self.debug != 0:
print code
exec code
for i in range(dmax):
fxx, fyy, fzz = f(fa,fb,fc,fx,fy,fz,t)
matriz.append(FreeCAD.Vector(fxx,fyy,fzz))
t+=intt
self.plot_matriz(matriz)
def store(self):
""" Store the parametric curve.
"""
if self.debug != 0:
print self.store.__name__
m_line = []
m_items = [self.name, self.la, self.lb, self.lc, self.lx, self.ly, self.lz,
self.ltmin, self.ltmax, self.ltstep,]
for m_item in m_items:
m_val = ""
m_val = m_item.text()
m_line.append(str(m_val))
# append comment
m_line.append("")
print str(m_line)
self.dialog.ui.addCurveData(m_line)
class ParametricCurve2DEvents(DefineAndConnectEvents):
def __init__(self,ui):
self.ui = ui
# Create Parametric Curve 2D object
self.parcurv2D = ParametricCurve2D(self.ui)
DefineAndConnectEvents.__init__(self, self.ui, self.parcurv2D)
def defineEvents(self):
#======================================================================
# Connect to 2D functions
#======================================================================
self.connections_for_slider_changed = {}
self.connections_for_button_pressed = {
"ParCurve_button_edit_2" : "edit",
"ParCurve_button_apply_2" : "draw",
"ParCurve_button_store_2" : "store",
}
self.connections_for_combobox_changed = {
"ParCurve_comboBox_2" : "select_curve",
}
self.connections_for_checkbox_toggled = {
"checkBox_close_2" : "ccloseState",
"checkBox_face_2" : "cfaceState",
"checkBox_points_2" : "cpointsState",
"checkBox_polyline_2" : "cpolyState",
"checkBox_bspline_2" : "cbsplineState",
"checkBox_bezier_2" : "cbezierState",
"checkBox_polar_2" : "cpolarState",
}
self.connections_for_spin_changed = {}
self.connections_for_return_pressed = {}
class ParametricCurve3DEvents(DefineAndConnectEvents):
def __init__(self,ui):
self.ui = ui
# Create Parametric Curve 3D object
self.parcurv3D = ParametricCurve3D(self.ui)
DefineAndConnectEvents.__init__(self, self.ui, self.parcurv3D)
def defineEvents(self):
#======================================================================
# Connect to 3D functions
#======================================================================
self.connections_for_slider_changed = {}
self.connections_for_button_pressed = {
"ParCurve_button_edit_3" : "edit",
"ParCurve_button_apply_3" : "draw",
"ParCurve_button_store_3" : "store",
}
self.connections_for_combobox_changed = {
"ParCurve_comboBox_3" : "select_curve",
}
self.connections_for_checkbox_toggled = {
"checkBox_close_3" : "ccloseState",
"checkBox_points_3" : "cpointsState",
"checkBox_polyline_3" : "cpolyState",
"checkBox_bspline_3" : "cbsplineState",
"checkBox_bezier_3" : "cbezierState",
}
self.connections_for_spin_changed = {}
self.connections_for_return_pressed = {}
if __name__ == '__main__':
myObject = Parametric(None)

View File

@ -5,9 +5,11 @@ import sys
if not sys.path.__contains__("/usr/lib/freecad/lib"):
sys.path.append("/usr/lib/freecad/lib")
import __init__ as func
import WF_2015 as func
from WF_Utils_2015 import *
global myRelease
myRelease = "2105_02"
myRelease = "2015_10"
import os.path
import math
@ -21,32 +23,6 @@ from FreeCAD import Base
from PySide import QtCore, QtGui
####################################################################################
# Functions
def print_attributes(obj, doc=False):
""" Print all the attributes of this object and their value """
__m_type = obj.__class__.__name__
print '* Attributes print for '+ str(__m_type) + '*'
for names in dir(obj):
attr = getattr(obj,names)
if not callable(attr):
if doc:
print names,':',attr
else:
print names
def print_methods(obj, doc=False):
""" Print all the methods of this object and their doc string"""
__m_type = obj.__class__.__name__
print '\n* Methods print for '+ str(__m_type) + '*'
for names in dir(obj):
attr = getattr(obj,names)
if callable(attr):
if doc:
print names,':',attr.__doc__
else:
print names
def plot_point(Vector_point, part="Part::Feature", name="CenterObjects", grp="Rot_Trans"):
@ -1407,6 +1383,69 @@ try:
except AttributeError:
_fromUtf8 = lambda s: s
class RotationEvents(DefineAndConnectEvents):
def __init__(self,ui):
self.ui = ui
# Create a Rotation object
self.rot = Rotation(self.ui)
DefineAndConnectEvents.__init__(self, self.ui, self.rot)
def defineEvents(self):
self.connections_for_slider_changed = {
"ObjRot_horizontalSlider" : "angle_value_changed",
}
self.connections_for_button_pressed = {
"ObjRot_button_select" : "initialize",
"ObjRot_button_select_center" : "select_center",
"ObjRot_button_select_axis" : "select_axis",
"ObjRot_button_reset" : "reset",
"ObjRot_button_apply" : "application",
}
self.connections_for_combobox_changed = {
"ObjRot_comboBox_center" : "center_value",
"ObjRot_comboBox_axis" : "axis_value",
}
self.connections_for_checkbox_toggled = {}
self.connections_for_spin_changed = {}
self.connections_for_return_pressed = {
"ObjRot_lineEdit_angle" : "angle_value_entered",
}
class TranslationEvents(DefineAndConnectEvents):
def __init__(self,ui):
self.ui = ui
# Create a Translation object
self.trans = Translation(self.ui)
DefineAndConnectEvents.__init__(self, self.ui, self.trans)
def defineEvents(self):
self.connections_for_slider_changed = {}
self.connections_for_button_pressed = {
"ObjTrans_button_select" : "initialize",
"ObjTrans_button_select_start" : "select_start",
"ObjTrans_button_select_end" : "select_end",
"ObjTrans_button_reset" : "reset",
"ObjTrans_button_apply" : "application",
}
self.connections_for_combobox_changed = {
"ObjTrans_comboBox_start" : "select_start_type",
"ObjTrans_comboBox_end" : "select_end_type",
}
self.connections_for_checkbox_toggled = {
"ObjTrans_duplicate" : "copyFlag",
"ObjTrans_deepCopy" : "deepCopyFlag",
}
self.connections_for_spin_changed = {
"ObjTrans_spin" : "numberCopies",
}
self.connections_for_return_pressed = {
"ObjTrans_start_x" : "start_x_entered",
"ObjTrans_start_y" : "start_y_entered",
"ObjTrans_start_z" : "start_z_entered",
"ObjTrans_end_x" : "end_x_entered",
"ObjTrans_end_y" : "end_y_entered",
"ObjTrans_end_z" : "end_z_entered",
}
####################################################################################
class ObjectRotationTab():
def __init__(self):
@ -1438,12 +1477,11 @@ class ObjectRotationTab():
self.ui.setupUi(self.m_dialog)
self.m_tab.setCurrentIndex(i+1)
# Create a Rotation object
self.rot = Rotation(self.ui)
# Create a Translation object
self.trans = Translation(self.ui)
# Connect to functions
# Create a Rotation object and connect
self.eventsRot = RotationEvents(self.ui)
self.connections_for_ObjTrans_button_pressed = {
@ -1476,57 +1514,16 @@ class ObjectRotationTab():
"ObjTrans_end_z" : "end_z_entered",
}
self.connections_for_ObjRot_slider_changed = {
"ObjRot_horizontalSlider" : "angle_value_changed",
}
self.connections_for_ObjRot_button_pressed = {
"ObjRot_button_select" : "initialize",
"ObjRot_button_select_center" : "select_center",
"ObjRot_button_select_axis" : "select_axis",
"ObjRot_button_reset" : "reset",
"ObjRot_button_apply" : "application",
}
self.connections_for_ObjRot_combobox_changed = {
"ObjRot_comboBox_center" : "center_value",
"ObjRot_comboBox_axis" : "axis_value",
}
self.connections_for_ObjRot_return_pressed = {
"ObjRot_lineEdit_angle" : "angle_value_entered",
}
self.connections_for_button_clicked = {
"button_quit" : "quit_clicked",
}
for m_key, m_val in self.connections_for_button_clicked.items():
#func.print_msg( "Connecting : " + str(m_key) + " and " + str(m_val) )
#print_msg( "Connecting : " + str(m_key) + " and " + str(m_val) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("clicked()"),getattr(self,str(m_val)))
# Connect to Rotation functions
for m_key, m_val in self.connections_for_ObjRot_button_pressed.items():
#func.print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("pressed()"),getattr(self.rot, str(m_val)))
for m_key, m_val in self.connections_for_ObjRot_combobox_changed.items():
#func.print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")),getattr(self.rot, str(m_val)))
for m_key, m_val in self.connections_for_ObjRot_slider_changed.items():
#func.print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("valueChanged(int)"),getattr(self.rot, str(m_val)))
for m_key, m_val in self.connections_for_ObjRot_return_pressed.items():
#func.print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("returnPressed()"),getattr(self.rot, str(m_val)))
# Connect to Translation functions
for m_key, m_val in self.connections_for_ObjTrans_button_pressed.items():
#func.print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) )

View File

@ -0,0 +1,238 @@
# -*- coding: utf-8 -*-
"""
"""
import os.path
from PySide import QtCore
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
###############################################################################
# Functions
def print_attributes(obj, doc=False):
""" Print all the attributes of this object and their value """
__m_type = obj.__class__.__name__
print '* Attributes print for '+ str(__m_type) + '*'
for names in dir(obj):
attr = getattr(obj,names)
if not callable(attr):
if doc:
print names,':',attr
else:
print names
def print_methods(obj, doc=False):
""" Print all the methods of this object and their doc string"""
__m_type = obj.__class__.__name__
print '\n* Methods print for '+ str(__m_type) + '*'
for names in dir(obj):
attr = getattr(obj,names)
if callable(attr):
if doc:
print names,':',attr.__doc__
else:
print names
def write_text(filename=None, text=None):
"""
Write the text into an ASCII file.
Return True if success, false if not.
*filename* : (string) full path name.
*text* : (string) the text to write.
"""
if filename != None and text != None:
try:
__m_f=open(filename,'w')
__m_f.write(text)
__m_f.close()
return True
except:
print "\nERROR : The file " + str(filename) + \
" cannot be opened in write mode !"
return False
else:
return False
def append_text(filename=None, text="" ):
"""
Print/Add text either on screen or on at the end of an existing ASCII text file.
*filename* : (string) full path name.
*text* : (string) the text to add at the end of the file.
"""
if text.__class__.__name__ != 'str':
return None
if filename and os.path.exists(filename):
try:
__m_f=open(filename,'r+')
__m_f.readlines()
__m_f.write(text+'\n')
__m_f.close()
except:
print "\nERROR : The file " + str(filename) + \
" can not be opened for append mode !"
return False
else:
print text +'\n'
def read_text_into_list(filename):
"""
Read the complete ASCII file *filename* (if possible) into a unique
list of strings and return the list
(or None in case of error).
Controls are done on *filename*.
*filename* : (string) full path name.
"""
if filename and os.path.exists(filename):
try:
__m_f=open(filename,'r')
# read the complete ASCII file if possible into a unique list of strings
try:
#m_strings = __m_f.readlines()
m_strings = __m_f.read().splitlines()
except:
__m_f.close()
print "\nERROR : The file " + str(filename) + \
" cannot be fully read !"
return None
finally:
__m_f.close()
__m_f.close()
return m_strings
except:
print "\nERROR : The file " + str(filename) + \
" cannot be opened in read mode !"
return None
else:
if os.path.exists(filename) == False:
print "\nERROR : " + str(filename) + " not a valid file !"
return None
def read_text(filename):
"""
Read the complete ASCII file *filename* (if possible) into a unique
string and return the string
(or None in case of error).
Controls are done on *filename*.
*filename* : (string) full path name.
"""
if filename and os.path.exists(filename):
try:
__m_f=open(filename,'r')
# read the complete ASCII file if possible into a unique string
try:
m_string = __m_f.read()
except:
__m_f.close()
print "\nERROR : The file " + str(filename) + \
" cannot be fully read !"
return None
finally:
__m_f.close()
__m_f.close()
return m_string
except:
print "\nERROR : The file " + str(filename) + \
" cannot be opened in read mode !"
return None
else:
if os.path.exists(filename) == False:
print "\nERROR : " + str(filename) + " not a valid file !"
return None
###############################################################################
# Classes
class DefineAndConnectEvents():
def __init__(self, ui, obj):
"""
Definition of communications between a Gui and an python Object.
This class is a base class and must be derived like :
class ParametricCurve2DEvents(DefineAndConnectEvents):
def __init__(self,ui):
self.ui = ui
# Create Parametric Curve objects
self.parcurv2D = ParametricCurve2D(self.ui)
DefineAndConnectEvents.__init__(self, self.ui, self.parcurv2D)
def defineEvents(self):
#==============================
# Definition of connections
# by type of actions on widgets of the Gui.
#==============================
self.connections_for_button_pressed = {
"ParCurve_button_edit_2" : "edit",
"ParCurve_button_apply_2" : "draw",
"ParCurve_button_store_2" : "store",
}
...
"""
if self.__class__ is DefineAndConnectEvents:
raise Exception("Direct construction not allowed !\nSee doc of the Class.")
self.ui = ui
self.obj = obj
self.defineEvents()
self.connectEvents()
def defineEvents(self):
"""
Definition of connections by type of actions on widgets of the Gui.
"""
self.connections_for_slider_changed = {}
self.connections_for_button_pressed = {}
self.connections_for_combobox_changed = {}
self.connections_for_checkbox_toggled = {}
self.connections_for_spin_changed = {}
self.connections_for_return_pressed = {}
def connectEvents(self):
for m_key, m_val in self.connections_for_slider_changed.items():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.obj, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("valueChanged(int)"),getattr(self.obj, str(m_val)))
for m_key, m_val in self.connections_for_button_pressed.items():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.obj, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("pressed()"),getattr(self.obj, str(m_val)))
for m_key, m_val in self.connections_for_combobox_changed.items():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.obj, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")),getattr(self.obj, str(m_val)))
for m_key, m_val in self.connections_for_checkbox_toggled.items():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.obj, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL(_fromUtf8("toggled(bool)")),getattr(self.obj, str(m_val)))
for m_key, m_val in self.connections_for_spin_changed.items():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.obj, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("valueChanged(int)"),getattr(self.obj, str(m_val)))
for m_key, m_val in self.connections_for_return_pressed.items():
#print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.obj, str(m_val))) )
QtCore.QObject.connect(getattr(self.ui, str(m_key)),
QtCore.SIGNAL("returnPressed()"),getattr(self.obj, str(m_val)))
if __name__ == '__main__':
myObject = DefineAndConnectEvents(None, None)

18
start_WF.py Normal file
View File

@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
import sys
import os.path
try:
# try import
import WorkFeature.WF_2015 as WF
except:
# get the path of the current python script
m_current_path = os.path.realpath(__file__)
m_current_path = os.path.dirname(m_current_path)
# check if this path belongs to the PYTHONPATH variable and if not add it
if not sys.path.__contains__(str(m_current_path)):
sys.path.append(str(m_current_path))
# retry import now
import WorkFeature.WF_2015 as WF
WF.myDialog = WF.WorkFeatureTab()