Merge pull request #17 from Rentlau/2015_02_17

Release of 2015-11-04 :
This commit is contained in:
Rentlau 2015-11-04 20:24:50 +01:00
commit 972612a77e
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
@ -3303,10 +3312,11 @@ def point_toSketch():
num_point, return_points = vertexToSketch(m_pointList,m_sketch)
if m_num_point != num_point:
printError_msg(error_msg)
return
createFolders('WorkPoints')
for point in return_points:
plot_point(point, part="Part::Feature", name="Sketch_Proj", grp="WorkPoints")
return
if msg != 0:
createFolders('WorkPoints')
for point in return_points:
plot_point(point, part="Part::Feature", name="Sketch_Proj", grp="WorkPoints")
# Refresh
App.getDocument(str(m_actDoc.Name)).recompute()
print_msg(str(num_point) + result_msg )
@ -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,55 +3566,56 @@ 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]
Face_Wire = Face.OuterWire
Face_Edges = Face_Wire.Edges
try:
Circle_Center_1 = None
Circle_Center_2 = None
for i in range(len(Face_Edges)):
Current_Edge = Face_Edges[i]
Edge_Info = Current_Edge.Curve
Edge_Type_Name = str(Edge_Info)
#print_msg("Edge_Type_Name = " + str(Edge_Type_Name))
Edge_Circle = Edge_Type_Name[0:6]
Edge_Line = Edge_Type_Name[1:5]
if Edge_Circle == "Circle":
Circle_Axis = Current_Edge.Curve.Axis
Circle_Axis = Circle_Axis.normalize()
if Circle_Center_1 == None:
Circle_Center_1 = Current_Edge.Curve.Center
#Circle_Radius_1 = Current_Edge.Curve.Radius
else:
Circle_Center_2 = Current_Edge.Curve.Center
#Circle_Radius_2 = Current_Edge.Curve.Radius
if Edge_Line == "Line":
Line_Start = Current_Edge.Curve.StartPoint
Line_End = Current_Edge.Curve.EndPoint
Edge_Length = ( Line_End - Line_Start ).Length
except:
printError_msg("Not valid cylinder !")
#print_msg("Circle_Center_1 = " + str(Circle_Center_1))
#print_msg("Circle_Center_2 = " + str(Circle_Center_2))
Axis_A = Circle_Center_1
Axis_B = Circle_Center_2
Axis_dir = Axis_B - Axis_A
if m_extensionFaceNormal != 0.0:
Axis_dir_norm = Axis_B - Axis_A
Axis_dir_norm = Axis_dir_norm.normalize()
Axis_dir_norm = Axis_dir_norm.multiply(m_extensionFaceNormal)
Axis_E1 = Axis_B + Axis_dir_norm
Axis_E2 = Axis_A - Axis_dir_norm
else:
Axis_E1 = Axis_B + Axis_dir.multiply(0.1)
Axis_E2 = Axis_A - Axis_dir.multiply(0.9)
Axis_User_Name, axis = plot_axis(Axis_E1, Axis_E2, part, name)
print_msg(str(Axis_User_Name) + result_msg )
for Face in Face_list:
#Face = Face_list[0]
Face_Wire = Face.OuterWire
Face_Edges = Face_Wire.Edges
try:
Circle_Center_1 = None
Circle_Center_2 = None
for i in range(len(Face_Edges)):
Current_Edge = Face_Edges[i]
Edge_Info = Current_Edge.Curve
Edge_Type_Name = str(Edge_Info)
#print_msg("Edge_Type_Name = " + str(Edge_Type_Name))
Edge_Circle = Edge_Type_Name[0:6]
Edge_Line = Edge_Type_Name[1:5]
if Edge_Circle == "Circle":
Circle_Axis = Current_Edge.Curve.Axis
Circle_Axis = Circle_Axis.normalize()
if Circle_Center_1 == None:
Circle_Center_1 = Current_Edge.Curve.Center
#Circle_Radius_1 = Current_Edge.Curve.Radius
else:
Circle_Center_2 = Current_Edge.Curve.Center
#Circle_Radius_2 = Current_Edge.Curve.Radius
if Edge_Line == "Line":
Line_Start = Current_Edge.Curve.StartPoint
Line_End = Current_Edge.Curve.EndPoint
Edge_Length = ( Line_End - Line_Start ).Length
except:
printError_msg("Not valid cylinder !")
#print_msg("Circle_Center_1 = " + str(Circle_Center_1))
#print_msg("Circle_Center_2 = " + str(Circle_Center_2))
Axis_A = Circle_Center_1
Axis_B = Circle_Center_2
Axis_dir = Axis_B - Axis_A
if m_extensionFaceNormal != 0.0:
Axis_dir_norm = Axis_B - Axis_A
Axis_dir_norm = Axis_dir_norm.normalize()
Axis_dir_norm = Axis_dir_norm.multiply(m_extensionFaceNormal)
Axis_E1 = Axis_B + Axis_dir_norm
Axis_E2 = Axis_A - Axis_dir_norm
else:
Axis_E1 = Axis_B + Axis_dir.multiply(0.1)
Axis_E2 = Axis_A - Axis_dir.multiply(0.9)
Axis_User_Name, axis = plot_axis(Axis_E1, Axis_E2, part, name)
print_msg(str(Axis_User_Name) + result_msg )
elif Number_of_Edges >= 1:
m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name)
m_objs = [selobj.Object for selobj in m_selEx]
@ -4907,10 +5003,10 @@ def vertexToSketch(points,sketch):
Projection2 = m_p2.projectToPlane(m_sketch.Placement.Base, m_rec2N)
# Append the Projection
geoList.append(Part.Point(Projection1))
return_points.append(Part.Point(Projection2))
m_sketch.addGeometry(geoList)
return_points.append(Part.Point(Projection2))
num_point = num_point + 1
m_sketch.addGeometry(geoList)
return num_point, return_points
@ -5320,12 +5416,13 @@ def line_toSketch():
if m_num_line != (num_edge + num_point):
printError_msg(error_msg)
return
createFolders('WorkPoints')
createFolders('WorkAxis')
for point in return_points:
plot_point(point, part="Part::Feature", name="Sketch_Proj", grp="WorkPoints")
for edge in return_edges:
plot_axis(edge.StartPoint,edge.EndPoint, part="Part::Feature", name="Sketch_Proj", grp="WorkAxis")
if msg != 0:
createFolders('WorkPoints')
createFolders('WorkAxis')
for point in return_points:
plot_point(point, part="Part::Feature", name="Sketch_Proj", grp="WorkPoints")
for edge in return_edges:
plot_axis(edge.StartPoint,edge.EndPoint, part="Part::Feature", name="Sketch_Proj", grp="WorkAxis")
# Refresh
App.getDocument(str(m_actDoc.Name)).recompute()
@ -7587,7 +7684,8 @@ def plot_sectionSweep():
- All option (means if the trajectory selected is a compound, all sub wires will be used for the sweep)
- Transition Option (Select a Transition option in case of trajectory with several wires; Transition can be:
# 0 (default), 1 (right corners) or 2 (rounded corners).)
"""
"""
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')
@ -7649,13 +7747,30 @@ 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 isinstance(shape0,Part.Compound):
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))
@ -8978,6 +9107,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():
"""
@ -9026,6 +9165,7 @@ def object_angle():
NB:
Normals of Planes will be used.
"""
global verbose
msg=verbose
error_msg =\
@ -9262,8 +9402,244 @@ def camera_orientation():
"Degrees Angle : " + str(math.degrees(pl.Rotation.Angle))
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",
@ -9874,7 +10257,7 @@ class WorkFeatureTab():
"button_align_faces" : "object_alignFaces",
"button_align_edges" : "object_alignEdges",
"button_joint_points" : "object_jointPoints",
"button_joint_faces" : "object_jointFaces",
"button_joint_faces" : "object_jointFaces",
}
self.connections_for_text_changed = {
@ -9983,117 +10366,6 @@ class WorkFeatureTab():
#print_msg( "Connecting : " + str(m_key) + " and " + str(m_val) )
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)

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,33 +23,7 @@ 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"):
if not(App.ActiveDocument.getObject( grp )):
@ -1406,7 +1382,70 @@ try:
_fromUtf8 = QtCore.QString.fromUtf8
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()