diff --git a/Gui/Resources/icons/Assembly_SmartRecompute.svg b/Gui/Resources/icons/Assembly_SmartRecompute.svg new file mode 100644 index 0000000..66cbfc1 --- /dev/null +++ b/Gui/Resources/icons/Assembly_SmartRecompute.svg @@ -0,0 +1,1119 @@ +<?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="svg2980" + sodipodi:version="0.32" + inkscape:version="0.91 r13725" + sodipodi:docname="Assembly_SmartRecompute.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.1"> + <defs + id="defs2982"> + <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 + inkscape:collect="always" + xlink:href="#linearGradient3864" + id="radialGradient3850" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.6028459,1.0471639,-1.9794021,1.1395295,127.9588,-74.456907)" + cx="51.328892" + cy="31.074146" + fx="51.328892" + fy="31.074146" + r="19.571428" /> + <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="perspective2988" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-6" + id="radialGradient3699" + gradientUnits="userSpaceOnUse" + cx="76.383331" + cy="94.369568" + fx="76.383331" + fy="94.369568" + r="19.467436" + gradientTransform="matrix(0.9818943,0.1894295,-0.4109427,2.1300924,40.163453,-121.11559)" /> + <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> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377" + id="radialGradient3701" + gradientUnits="userSpaceOnUse" + cx="84.883324" + cy="77.042847" + fx="84.883324" + fy="77.042847" + r="19.467436" + gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)" /> + <linearGradient + id="linearGradient3007"> + <stop + id="stop3009" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3011" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <radialGradient + r="19.467436" + fy="77.042847" + fx="84.883324" + cy="77.042847" + cx="84.883324" + gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)" + gradientUnits="userSpaceOnUse" + id="radialGradient3017" + xlink:href="#linearGradient3377-6" + inkscape:collect="always" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-6" + id="radialGradient3699-2" + gradientUnits="userSpaceOnUse" + cx="76.383331" + cy="94.369568" + fx="76.383331" + fy="94.369568" + r="19.467436" + gradientTransform="matrix(0.9818943,0.1894295,-0.4109427,2.1300924,40.163453,-121.11559)" /> + <linearGradient + id="linearGradient3377-6"> + <stop + id="stop3379-2" + offset="0" + style="stop-color:#00afff;stop-opacity:1;" /> + <stop + id="stop3381-4" + offset="1" + style="stop-color:#0034ff;stop-opacity:1;" /> + </linearGradient> + <radialGradient + r="19.467436" + fy="77.042847" + fx="84.883324" + cy="77.042847" + cx="84.883324" + gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)" + gradientUnits="userSpaceOnUse" + id="radialGradient3017-8" + xlink:href="#linearGradient3377-6" + inkscape:collect="always" /> + <linearGradient + id="linearGradient3835"> + <stop + id="stop3837" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3839" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <radialGradient + r="19.467436" + fy="77.042847" + fx="84.883324" + cy="77.042847" + cx="84.883324" + gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)" + gradientUnits="userSpaceOnUse" + id="radialGradient3844" + xlink:href="#linearGradient3377-6" + inkscape:collect="always" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-6" + id="radialGradient3699-7" + gradientUnits="userSpaceOnUse" + cx="76.383331" + cy="94.369568" + fx="76.383331" + fy="94.369568" + r="19.467436" + gradientTransform="matrix(0.9818943,0.1894295,-0.4109427,2.1300924,40.163453,-121.11559)" /> + <linearGradient + id="linearGradient3377-2"> + <stop + id="stop3379-7" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3381-8" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <radialGradient + r="19.467436" + fy="77.042847" + fx="84.883324" + cy="77.042847" + cx="84.883324" + gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)" + gradientUnits="userSpaceOnUse" + id="radialGradient3017-6" + xlink:href="#linearGradient3377-2" + inkscape:collect="always" /> + <linearGradient + id="linearGradient3835-1"> + <stop + id="stop3837-0" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3839-9" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <radialGradient + r="19.467436" + fy="77.042847" + fx="84.883324" + cy="77.042847" + cx="84.883324" + gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)" + gradientUnits="userSpaceOnUse" + id="radialGradient3844-7" + xlink:href="#linearGradient3377-6" + inkscape:collect="always" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4032" + id="radialGradient4112" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-0.19157613,0.46621455,-1.1364164,-0.41904304,156.5648,24.076707)" + cx="86.836884" + cy="90.601151" + fx="86.836884" + fy="90.601151" + r="19.467436" /> + <linearGradient + id="linearGradient4032"> + <stop + style="stop-color:#71b2f8;stop-opacity:1;" + offset="0" + id="stop4034" /> + <stop + style="stop-color:#002795;stop-opacity:1;" + offset="1" + id="stop4036" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4032" + id="radialGradient4114" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)" + cx="113.50187" + cy="65.849281" + fx="113.50187" + fy="65.849281" + r="19.467436" /> + <linearGradient + id="linearGradient3171"> + <stop + style="stop-color:#71b2f8;stop-opacity:1;" + offset="0" + id="stop3173" /> + <stop + style="stop-color:#002795;stop-opacity:1;" + offset="1" + id="stop3175" /> + </linearGradient> + <radialGradient + r="19.467436" + fy="65.849281" + fx="113.50187" + cy="65.849281" + cx="113.50187" + gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)" + gradientUnits="userSpaceOnUse" + id="radialGradient3180" + xlink:href="#linearGradient4032" + inkscape:collect="always" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4032-7" + id="radialGradient4112-9" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-0.19157613,0.46621455,-1.1364164,-0.41904304,162.99236,26.56694)" + cx="86.836884" + cy="90.601151" + fx="86.836884" + fy="90.601151" + r="19.467436" /> + <linearGradient + id="linearGradient4032-7"> + <stop + style="stop-color:#71b2f8;stop-opacity:1;" + offset="0" + id="stop4034-3" /> + <stop + style="stop-color:#002795;stop-opacity:1;" + offset="1" + id="stop4036-6" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4032-7" + id="radialGradient4114-3" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)" + cx="113.50187" + cy="65.849281" + fx="113.50187" + fy="65.849281" + r="19.467436" /> + <linearGradient + id="linearGradient3171-9"> + <stop + style="stop-color:#71b2f8;stop-opacity:1;" + offset="0" + id="stop3173-7" /> + <stop + style="stop-color:#002795;stop-opacity:1;" + offset="1" + id="stop3175-5" /> + </linearGradient> + <radialGradient + r="19.467436" + fy="65.849281" + fx="113.50187" + cy="65.849281" + cx="113.50187" + gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)" + gradientUnits="userSpaceOnUse" + id="radialGradient3180-6" + xlink:href="#linearGradient4032-7" + inkscape:collect="always" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4032-8" + id="radialGradient4112-7" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-0.19157613,0.46621455,-1.1364164,-0.41904304,156.5648,24.076707)" + cx="86.836884" + cy="90.601151" + fx="86.836884" + fy="90.601151" + r="19.467436" /> + <linearGradient + id="linearGradient4032-8"> + <stop + style="stop-color:#71b2f8;stop-opacity:1;" + offset="0" + id="stop4034-4" /> + <stop + style="stop-color:#002795;stop-opacity:1;" + offset="1" + id="stop4036-3" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4032-8" + id="radialGradient4114-9" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)" + cx="113.50187" + cy="65.849281" + fx="113.50187" + fy="65.849281" + r="19.467436" /> + <linearGradient + id="linearGradient3171-1"> + <stop + style="stop-color:#71b2f8;stop-opacity:1;" + offset="0" + id="stop3173-0" /> + <stop + style="stop-color:#002795;stop-opacity:1;" + offset="1" + id="stop3175-3" /> + </linearGradient> + <radialGradient + r="19.467436" + fy="65.849281" + fx="113.50187" + cy="65.849281" + cx="113.50187" + gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)" + gradientUnits="userSpaceOnUse" + id="radialGradient3180-9" + xlink:href="#linearGradient4032-8" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-9" + id="linearGradient3822" + x1="154.13527" + y1="33.267025" + x2="165.61629" + y2="46.429642" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient4032-0"> + <stop + style="stop-color:#71b2f8;stop-opacity:1;" + offset="0" + id="stop4034-37" /> + <stop + style="stop-color:#002795;stop-opacity:1;" + offset="1" + id="stop4036-1" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4032-0" + id="radialGradient3703" + gradientUnits="userSpaceOnUse" + cx="132.70454" + cy="90.193245" + fx="132.70454" + fy="90.193245" + r="19.467436" + gradientTransform="matrix(-0.08162339,1.3949072,-1.1572569,-0.26963374,245.22773,-105.44363)" /> + <linearGradient + id="linearGradient3284"> + <stop + style="stop-color:#71b2f8;stop-opacity:1;" + offset="0" + id="stop3286" /> + <stop + style="stop-color:#002795;stop-opacity:1;" + offset="1" + id="stop3288" /> + </linearGradient> + <radialGradient + r="19.467436" + fy="90.193245" + fx="132.70454" + cy="90.193245" + cx="132.70454" + gradientTransform="matrix(-0.08162339,1.3949072,-1.1572569,-0.26963374,245.22773,-105.44363)" + gradientUnits="userSpaceOnUse" + id="radialGradient3294" + xlink:href="#linearGradient3377-9" + inkscape:collect="always" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-9" + id="radialGradient4112-90" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-0.30609499,0.61332806,-1.343059,-0.58110363,169.81431,115.03622)" + cx="86.836884" + cy="90.601151" + fx="86.836884" + fy="90.601151" + r="19.467436" /> + <linearGradient + id="linearGradient3377-9"> + <stop + id="stop3379-3" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3381-7" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-9-9" + id="linearGradient4568" + x1="113.20887" + y1="84.950653" + x2="55.225117" + y2="83.622498" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient3377-9-9"> + <stop + id="stop3379-3-2" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3381-7-3" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <linearGradient + y2="83.622498" + x2="55.225117" + y1="84.950653" + x1="113.20887" + gradientUnits="userSpaceOnUse" + id="linearGradient3091" + xlink:href="#linearGradient3377-9-9" + inkscape:collect="always" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-9-8" + id="radialGradient4112-90-2" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-0.30609499,0.61332806,-1.343059,-0.58110363,169.81431,115.03622)" + cx="86.836884" + cy="90.601151" + fx="86.836884" + fy="90.601151" + r="19.467436" /> + <linearGradient + id="linearGradient3377-9-8"> + <stop + id="stop3379-3-8" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3381-7-2" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-9-9-7" + id="linearGradient4568-2" + x1="113.20887" + y1="84.950653" + x2="55.225117" + y2="83.622498" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient3377-9-9-7"> + <stop + id="stop3379-3-2-0" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3381-7-3-7" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <linearGradient + y2="83.622498" + x2="55.225117" + y1="84.950653" + x1="113.20887" + gradientUnits="userSpaceOnUse" + id="linearGradient3091-0" + xlink:href="#linearGradient3377-9-9-7" + inkscape:collect="always" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-9-2" + id="radialGradient4112-90-9" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-0.30609499,0.61332806,-1.343059,-0.58110363,169.81431,115.03622)" + cx="86.836884" + cy="90.601151" + fx="86.836884" + fy="90.601151" + r="19.467436" /> + <linearGradient + id="linearGradient3377-9-2"> + <stop + id="stop3379-3-21" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3381-7-22" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-9-9-1" + id="linearGradient4568-6" + x1="113.20887" + y1="84.950653" + x2="55.225117" + y2="83.622498" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient3377-9-9-1"> + <stop + id="stop3379-3-2-6" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3381-7-3-3" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <linearGradient + y2="83.622498" + x2="55.225117" + y1="84.950653" + x1="113.20887" + gradientUnits="userSpaceOnUse" + id="linearGradient3091-4" + xlink:href="#linearGradient3377-9-9-1" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4023" + id="linearGradient4029" + x1="45" + y1="34" + x2="50" + y2="59" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4023"> + <stop + style="stop-color:#8ae234;stop-opacity:1;" + offset="0" + id="stop4025" /> + <stop + style="stop-color:#4e9a06;stop-opacity:1" + offset="1" + id="stop4027" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3801-6" + id="linearGradient3807-3" + x1="110" + y1="35" + x2="85" + y2="35" + gradientUnits="userSpaceOnUse" + spreadMethod="reflect" + gradientTransform="matrix(0.45833337,0,0,0.51724135,-28.625003,1.4482735)" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3801-6"> + <stop + style="stop-color:#204a87;stop-opacity:1" + offset="0" + id="stop3803-7" /> + <stop + style="stop-color:#729fcf;stop-opacity:1" + offset="1" + id="stop3805-5" /> + </linearGradient> + <linearGradient + id="linearGradient2682"> + <stop + id="stop2684" + offset="0" + style="stop-color:#4e9a06;stop-opacity:1" /> + <stop + id="stop2686" + offset="1" + style="stop-color:#89aedc;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient2402"> + <stop + id="stop2404" + offset="0" + style="stop-color:#729fcf;stop-opacity:1;" /> + <stop + id="stop2406" + offset="1" + style="stop-color:#528ac5;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient2871" + inkscape:collect="always"> + <stop + id="stop2873" + offset="0" + style="stop-color:#3465a4;stop-opacity:1;" /> + <stop + id="stop2875" + offset="1" + style="stop-color:#3465a4;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient3945"> + <stop + style="stop-color:#8ae234;stop-opacity:1" + offset="0" + id="stop3947" /> + <stop + style="stop-color:#73d216;stop-opacity:1" + offset="1" + id="stop3949" /> + </linearGradient> + <linearGradient + id="linearGradient2380"> + <stop + id="stop2382" + offset="0" + style="stop-color:#b9cfe7;stop-opacity:1" /> + <stop + id="stop2384" + offset="1" + style="stop-color:#729fcf;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2831-2" + id="linearGradient1486-5" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.370336,0,0,1.3589114,0.02150968,-18.214919)" + x1="13.478554" + y1="10.612206" + x2="15.419417" + y2="19.115122" /> + <linearGradient + id="linearGradient2831-2"> + <stop + style="stop-color:#3465a4;stop-opacity:1;" + offset="0" + id="stop2833-3" /> + <stop + id="stop2855-1" + offset="0.33333334" + style="stop-color:#5b86be;stop-opacity:1;" /> + <stop + style="stop-color:#83a8d8;stop-opacity:0;" + offset="1" + id="stop2835-6" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2871" + id="linearGradient1488-8" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.370336,0,0,-1.3589114,64.512944,44.464873)" + x1="37.128052" + y1="29.729605" + x2="37.065414" + y2="26.194071" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3063-2" + id="linearGradient3858-1" + gradientUnits="userSpaceOnUse" + x1="42.703487" + y1="20.547306" + x2="26.605606" + y2="33.634254" /> + <linearGradient + id="linearGradient3063-2"> + <stop + id="stop3065-6" + offset="0" + style="stop-color:#729fcf;stop-opacity:1" /> + <stop + id="stop3067-0" + offset="1" + style="stop-color:#204a87;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2380-9" + id="linearGradient3034-4" + gradientUnits="userSpaceOnUse" + x1="26.221533" + y1="31.125586" + x2="46.731483" + y2="21.766298" /> + <linearGradient + id="linearGradient2380-9"> + <stop + style="stop-color:#729fcf;stop-opacity:1" + offset="0" + id="stop2382-4" /> + <stop + style="stop-color:#3465a4;stop-opacity:1" + offset="1" + id="stop2384-6" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2871" + id="linearGradient1488" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.370336,0,0,-1.3589114,64.512944,44.464873)" + x1="37.128052" + y1="29.729605" + x2="37.065414" + y2="26.194071" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2380-9" + id="linearGradient3034" + gradientUnits="userSpaceOnUse" + x1="41.791897" + y1="20.134634" + x2="23.705669" + y2="34.083359" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8662" + id="radialGradient1503" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.0414388,0,0,0.73027218,-167.54261,-130.39501)" + cx="24.837126" + cy="36.421127" + fx="24.837126" + fy="36.421127" + r="15.644737" /> + <linearGradient + inkscape:collect="always" + id="linearGradient8662"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop8664" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop8666" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2831-2" + id="linearGradient4585" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.370336,0,0,1.3589114,0.02150968,-18.214919)" + x1="13.478554" + y1="10.612206" + x2="15.419417" + y2="19.115122" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3063-2" + id="linearGradient4587" + gradientUnits="userSpaceOnUse" + x1="42.703487" + y1="20.547306" + x2="26.605606" + y2="33.634254" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-9-9-1" + id="radialGradient4383" + cx="129.95859" + cy="112.15061" + fx="129.95859" + fy="112.15061" + r="59.459999" + gradientTransform="matrix(1.0619271,0.87484094,-0.7116457,0.87743359,69.12087,-102.68143)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-9-9-1" + id="radialGradient4393" + cx="22.848982" + cy="109.67272" + fx="22.848982" + fy="109.67272" + r="28.117317" + gradientTransform="matrix(1.1140321,0.01182134,-0.00390978,0.37425601,-2.1767207,72.25418)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-9-9-1" + id="radialGradient4403" + cx="45.323826" + cy="43.942806" + fx="45.323826" + fy="43.942806" + r="24.864599" + gradientTransform="matrix(1.250924,0.85979819,-0.2645376,0.39093685,4.6493662,-15.962789)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-9-9-1" + id="linearGradient4411" + x1="138.69154" + y1="20.081022" + x2="154.29837" + y2="25.508753" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-9-9-1" + id="linearGradient4421" + x1="222.00125" + y1="42.013535" + x2="237.44318" + y2="63.22588" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-9-9-1" + id="radialGradient4429" + cx="242.11412" + cy="114.51905" + fx="242.11412" + fy="114.51905" + r="28.120558" + gradientTransform="matrix(1,0,0,0.48394079,0,60.476218)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8662" + id="radialGradient4443" + cx="143.30699" + cy="259.802" + fx="143.30699" + fy="259.802" + r="20.253759" + gradientTransform="matrix(1.2547839,0.01300674,-0.00402626,0.39453529,-35.466293,155.43697)" + gradientUnits="userSpaceOnUse" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="3.1601562" + inkscape:cx="72.511732" + inkscape:cy="53.195007" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:document-units="px" + inkscape:grid-bbox="true" + inkscape:window-width="1375" + inkscape:window-height="876" + inkscape:window-x="65" + inkscape:window-y="24" + inkscape:window-maximized="1" + inkscape:snap-global="true" + inkscape:snap-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid3268" + empspacing="2" + visible="true" + enabled="true" + snapvisiblegridlinesonly="true" /> + </sodipodi:namedview> + <metadata + id="metadata2985"> + <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> + <dc:creator> + <cc:Agent> + <dc:title>[jmaustpc]</dc:title> + </cc:Agent> + </dc:creator> + <dc:title>Assembly_Assembly_Create_New</dc:title> + <dc:date>2013-12-24</dc:date> + <dc:relation>http://www.freecadweb.org/wiki/index.php?title=Artwork</dc:relation> + <dc:publisher> + <cc:Agent> + <dc:title>FreeCAD</dc:title> + </cc:Agent> + </dc:publisher> + <dc:identifier>FreeCAD/src/Mod/Assembly/Gui/Resources/icons/Assembly_Assembly_Create_New.svg</dc:identifier> + <dc:rights> + <cc:Agent> + <dc:title>FreeCAD LGPL2+</dc:title> + </cc:Agent> + </dc:rights> + <cc:license>https://www.gnu.org/copyleft/lesser.html</cc:license> + <dc:contributor> + <cc:Agent> + <dc:title>[agryson] Alexander Gryson</dc:title> + </cc:Agent> + </dc:contributor> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <g + id="g4589" + transform="matrix(0.50541932,0,0,0.49939308,-9.1317625,6.445082)"> + <ellipse + inkscape:r_cy="true" + inkscape:r_cx="true" + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.38333333;fill:url(#radialGradient1503);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none" + id="path8660" + transform="scale(-1,-1)" + cx="-116.83913" + cy="-103.79766" + rx="31.937773" + ry="11.424921" /> + <g + id="g3863" + transform="translate(84,68)"> + <path + style="color:#000000;display:block;overflow:visible;visibility:visible;fill:url(#linearGradient4585);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1488);stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" + d="m 27,-3.6915582 c 0,0 -12.247378,-0.8493196 -8.478954,13.4192502 l -10.534458,0 c 0,0 0.685168,-16.137073 19.013412,-13.4192502 z" + id="path2865-9" + inkscape:r_cx="true" + inkscape:r_cy="true" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" /> + <g + id="g1878-1" + transform="matrix(-0.79349441,-0.66481753,-0.67040672,0.78687903,77.66003,0.94046451)" + inkscape:r_cx="true" + inkscape:r_cy="true" + style="fill:url(#linearGradient4587);fill-opacity:1;stroke:#204a87;stroke-width:0.73280919;stroke-opacity:1"> + <path + sodipodi:nodetypes="ccccccc" + id="path1880-27" + d="M 44.306783,50.229694 C 62.821497,35.818859 49.664587,13.411704 22.462411,12.49765 L 22.113843,3.1515478 7.6245439,20.496754 22.714328,33.219189 c 0,0 -0.251917,-9.88122 -0.251917,-9.88122 18.82976,0.998977 32.981627,14.071729 21.844372,26.891725 z" + style="color:#000000;display:block;overflow:visible;visibility:visible;fill:url(#linearGradient3034);fill-opacity:1;fill-rule:nonzero;stroke:#0b1521;stroke-width:3.26039815;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" + inkscape:r_cx="true" + inkscape:r_cy="true" + inkscape:connector-curvature="0" /> + </g> + <g + style="fill:none;stroke:#729fcf;stroke-width:0.73280919;stroke-opacity:1" + inkscape:r_cy="true" + inkscape:r_cx="true" + transform="matrix(-0.69686517,-0.58385766,-0.58876622,0.69105539,72.350404,1.0127423)" + id="g2805-0"> + <path + inkscape:r_cy="true" + inkscape:r_cx="true" + style="color:#000000;display:block;overflow:visible;visibility:visible;fill:none;stroke:#729fcf;stroke-width:2.20148993;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:21;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" + d="M 52.368857,42.344789 C 57.336994,33.465615 49.176003,12.601866 19.05552,12.672851 L 18.677956,5.6633463 7.4378077,19.282655 19.129354,29.167094 18.807724,20.554957 c 18.244937,0.381972 33.804002,9.457851 33.561133,21.789832 z" + id="path2807-9" + sodipodi:nodetypes="ccccccc" + inkscape:connector-curvature="0" /> + </g> + </g> + <g + id="g3863-0" + transform="matrix(-1,0,0,-1,149.98659,97)"> + <path + style="color:#000000;display:block;overflow:visible;visibility:visible;fill:url(#linearGradient1486-5);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1488-8);stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" + d="m 27,-3.6915582 c 0,0 -12.247378,-0.8493196 -8.478954,13.4192502 l -10.534458,0 c 0,0 0.685168,-16.137073 19.013412,-13.4192502 z" + id="path2865-3" + inkscape:r_cx="true" + inkscape:r_cy="true" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" /> + <g + id="g1878-6" + transform="matrix(-0.79349441,-0.66481753,-0.67040672,0.78687903,77.66003,0.94046451)" + inkscape:r_cx="true" + inkscape:r_cy="true" + style="fill:url(#linearGradient3858-1);fill-opacity:1;stroke:#204a87;stroke-width:0.73280919;stroke-opacity:1"> + <path + sodipodi:nodetypes="ccccccc" + id="path1880-2" + d="M 44.306783,50.229694 C 62.821497,35.818859 49.664587,13.411704 22.462411,12.49765 L 22.113843,3.1515478 7.6245439,20.496754 22.714328,33.219189 c 0,0 -0.251917,-9.88122 -0.251917,-9.88122 18.82976,0.998977 32.981627,14.071729 21.844372,26.891725 z" + style="color:#000000;display:block;overflow:visible;visibility:visible;fill:url(#linearGradient3034-4);fill-opacity:1;fill-rule:nonzero;stroke:#0b1521;stroke-width:3.26039815;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" + inkscape:r_cx="true" + inkscape:r_cy="true" + inkscape:connector-curvature="0" /> + </g> + <g + style="fill:none;stroke:#729fcf;stroke-width:0.73280919;stroke-opacity:1" + inkscape:r_cy="true" + inkscape:r_cx="true" + transform="matrix(-0.69686517,-0.58385766,-0.58876622,0.69105539,72.350404,1.0127423)" + id="g2805-4"> + <path + inkscape:r_cy="true" + inkscape:r_cx="true" + style="color:#000000;display:block;overflow:visible;visibility:visible;fill:none;stroke:#729fcf;stroke-width:2.20148993;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:21;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" + d="M 52.368857,42.344789 C 57.864671,33.591679 49.176003,12.601866 19.05552,12.672851 L 18.677956,5.6633463 7.4378077,19.282655 19.129354,29.167094 18.807724,20.554957 c 18.244937,0.381972 33.804002,9.457851 33.561133,21.789832 z" + id="path2807-5" + sodipodi:nodetypes="ccccccc" + inkscape:connector-curvature="0" /> + </g> + </g> + </g> + <g + id="g3760-8" + transform="matrix(0.39800085,0,0,0.49338099,18.710208,-4.5784768)" /> + <g + transform="matrix(0.19152769,-0.00201655,0.00200085,0.19003743,-0.60344927,1.4635324)" + id="g3" + style="stroke:none;stroke-opacity:1"> + <path + style="fill:#ac6d00;fill-opacity:1;stroke:none;stroke-opacity:1" + d="m 143.25,55.486 c -41.06,0 -74.465,33.405 -74.465,74.465 0,16.824 5.511,32.711 15.938,45.939 1.998,2.536 4.15,5.033 6.23,7.448 6.212,7.208 12.078,14.017 14.166,21.675 0.045,0.165 0.438,1.773 0.38,7.247 l -0.01,0.791 c -0.063,4.444 -0.147,10.528 4.352,15.091 3.081,3.125 7.399,4.645 13.204,4.645 l 40.272,0 c 6.268,0 10.774,-1.534 13.776,-4.689 4.061,-4.267 3.789,-9.779 3.608,-13.427 -0.032,-0.645 -0.066,-1.296 -0.074,-1.944 -0.065,-5.48 0.345,-7.025 0.362,-7.09 2.121,-7.657 8.993,-15.732 15.057,-22.855 2.023,-2.377 3.934,-4.622 5.714,-6.879 10.431,-13.23 15.944,-29.12 15.944,-45.951 0.001,-41.06 -33.399,-74.466 -74.454,-74.466 z" + id="path4345" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient4383);fill-opacity:1;stroke:none;stroke-opacity:1" + d="m 189.982,166.614 c -1.607,2.036 -3.429,4.178 -5.358,6.445 -7.07,8.307 -15.084,17.722 -18.089,28.572 -0.429,1.546 -0.988,4.395 -0.905,11.273 0.01,0.835 0.049,1.675 0.091,2.507 0.032,0.657 0.075,1.523 0.071,2.209 -0.528,0.086 -1.325,0.166 -2.475,0.166 l -40.272,0 c -1.276,0 -2.022,-0.135 -2.405,-0.237 -0.198,-0.977 -0.17,-3.007 -0.152,-4.287 l 0.012,-0.844 c 0.072,-6.919 -0.483,-9.789 -0.907,-11.348 -2.98,-10.936 -10.575,-19.749 -17.275,-27.524 -2.066,-2.398 -4.019,-4.664 -5.813,-6.942 -8.32,-10.557 -12.718,-23.232 -12.718,-36.654 0,-32.789 26.676,-59.465 59.465,-59.465 32.783,0 59.455,26.676 59.455,59.465 -0.002,13.429 -4.401,26.108 -12.725,36.664 z" + id="path5" + inkscape:connector-curvature="0" /> + <path + style="fill:#5b5959;fill-opacity:1;stroke:none;stroke-opacity:1" + d="m 161.766,239.564 -37.041,0 c -7.995,0 -14.5,6.505 -14.5,14.5 l 0,11.117 c 0,7.995 6.505,14.5 14.5,14.5 l 37.041,0 c 7.995,0 14.5,-6.505 14.5,-14.5 l 0,-11.117 c 0,-7.995 -6.505,-14.5 -14.5,-14.5 z" + id="path4433" /> + <path + style="fill:url(#radialGradient4443);fill-opacity:1;stroke:none;stroke-opacity:1;opacity:0.758" + d="m 123.22461,254.56445 c 0.55843,5.48064 -2.76597,14.84409 6,12.11719 11.347,0 22.69401,0 34.04101,0 -1.3829,-4.65615 3.47493,-15.55305 -4,-14.11719 -12.01367,0 -24.02734,0 -36.04101,0 l 0,1 0,1 z" + id="path7" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient4411);fill-opacity:1;stroke:#c0822e;stroke-width:7.86197805;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 142.80859,-1.9902344 c -6.70066,0.096425 -10.44207,7.4630245 -9.06445,13.4902344 0.64107,9.971359 -1.1383,20.252456 0.59375,30.091797 2.4143,7.712791 14.41447,8.238512 17.49023,0.763672 2.51116,-8.005025 0.0496,-16.819665 0.91602,-25.076172 0.0972,-6.095366 1.63458,-15.2331902 -5.42383,-18.3613282 -1.39837,-0.669597 -2.96355,-0.9799344 -4.51172,-0.9082032 z" + id="path9" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient4421);fill-opacity:1;stroke:#c0822e;stroke-width:7.86197805;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 236.20898,30.28125 c -7.98029,0.673879 -11.81771,9.525162 -17.85206,13.667619 -4.45654,5.923394 -14.48955,9.683724 -14.10692,18.295272 0.20115,7.702099 10.73961,11.72848 16.0293,6.134765 7.9295,-8.219307 17.22778,-15.283922 24.53906,-24.029297 3.65508,-6.107121 -1.50408,-14.545855 -8.60938,-14.068359 z" + id="path11" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient4429);fill-opacity:1;stroke:#c0822e;stroke-width:7.86197805;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 234.94531,107.64648 c -7.94238,-0.41137 -12.66288,10.36968 -6.97656,15.92774 5.73241,5.81509 14.93709,1.91631 22.00975,3.04828 7.09567,-1.02452 17.26161,2.93838 22.20705,-4.26508 4.61636,-6.2548 -1.27863,-15.85783 -8.92774,-14.75621 -9.4375,0.0151 -18.875,0.0302 -28.3125,0.0453 z" + id="path13" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient4403);fill-opacity:1;stroke:#c0822e;stroke-width:7.86197805;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 45.929688,28.28125 c -7.919358,-0.206018 -12.380235,10.625648 -6.609376,16.054688 8.635557,7.662348 16.269453,16.62843 25.390626,23.671874 6.878173,3.891073 15.901303,-3.51073 13.410156,-11.017578 C 75.315771,49.717566 67.218914,46.102819 62.497433,40.206029 57.176555,36.477393 53.299765,28.138297 45.929688,28.28125 Z" + id="path15" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient4393);fill-opacity:1;stroke:#c0822e;stroke-width:7.86197805;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 14.970703,107.60938 c -7.95933,-0.0587 -12.1939741,10.93431 -6.2558592,16.23242 6.1295182,5.5103 15.3683282,1.55983 22.6757612,2.7834 6.851068,-0.79342 16.985568,2.80592 21.464864,-4.57832 4.209371,-6.2876 -1.665879,-15.44327 -9.123046,-14.40199 -9.587171,-0.007 -19.174764,-0.0469 -28.76172,-0.0355 z" + id="path17" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/assembly.py b/assembly.py index d6850b0..e709c16 100644 --- a/assembly.py +++ b/assembly.py @@ -293,8 +293,31 @@ class ViewProviderAsmPartGroup(ViewProviderAsmGroup): vobj.DefaultMode = mode +class AsmVersion(object): + def __init__(self,v=None): + self.value = 0 + self.childVersion = v + self._childVersion = v + self.updated = False + + def update(self,v): + self.updated = False + if self.childVersion!=v: + self._childVersion = v + self.updated = True + return True + return not gui.AsmCmdManager.SmartRecompute + + def commit(self): + if self.updated: + self.childVersion = self._childVersion + self.value += 1 + self.updated = False + + class AsmElement(AsmBase): def __init__(self,parent): + self.version = None self._initializing = True self.parent = getProxy(parent,AsmElementGroup) super(AsmElement,self).__init__() @@ -318,6 +341,8 @@ class AsmElement(AsmBase): obj.setPropertyStatus('LinkedObject','ReadOnly') obj.configLinkProperty('LinkedObject','Placement','LinkTransform') + self.version = AsmVersion() + def migrate(self): # To avoid over dependency, we no longer link to PartGroup, but to the # child part object directly @@ -404,7 +429,8 @@ class AsmElement(AsmBase): shape.ElementMap = info.Shape.ElementMap obj.Shape = shape - self.updatePlacement(info) + # unfortunately, we can't easily check two shapes are the same + self.version.value += 1 return False def updatePlacement(self,info=None): @@ -994,6 +1020,7 @@ def getElementInfo(parent,subname, class AsmElementLink(AsmBase): def __init__(self,parent): super(AsmElementLink,self).__init__() + self.version = None self.info = None self.infos = [] self.part = None @@ -1021,6 +1048,19 @@ class AsmElementLink(AsmBase): self.part = None self.multiply = False + self.version = AsmVersion() + + def childVersion(self,linked,mat): + if not isTypeOf(linked,AsmElement): + return None + obj = self.Object + return (getattr(obj,'Count',0), + linked, + linked.Proxy.version.value, + obj.Offset, + mat, + getattr(obj,'PlacementList',None)) + def attach(self,obj): obj.addProperty("App::PropertyXLink","LinkedObject"," Link",'') super(AsmElementLink,self).attach(obj) @@ -1032,16 +1072,33 @@ class AsmElementLink(AsmBase): return True def execute(self,obj): - info = self.getInfo(True) - linked = obj.getLinkedObject(False) + link = obj.LinkedObject + if not isinstance(link,tuple): + raise RuntimeError('broken link') + linked,mat = link[0].getSubObject(link[1],1,FreeCAD.Matrix()) if linked and linked.Label != linked.Name: obj.Label = linked.Label + + info = None + if getattr(obj,'Count',None): + info = self.getInfo(True) + + version = self.childVersion(linked,mat) + if not self.version.update(version): + logger.debug('skip {}, {}, {}'.format( + objName(obj),self.version.childVersion,version)) + return + logger.debug('not skip {}, {}'.format(objName(obj),version)) + + if not info: + info = self.getInfo(True) relationGroup = self.getAssembly().getRelationGroup() if relationGroup and (not self.part or self.part!=info.Part): oldPart = self.part self.part = info.Part relationGroup.Proxy.update( self.parent.Object,oldPart,info.Part,info.PartName) + self.version.commit() return False _MyIgnoredProperties = _IgnoredProperties | \ @@ -1066,12 +1123,14 @@ class AsmElementLink(AsmBase): self.getInfo(True) return if prop == 'Label': - linked = obj.getLinkedObject(False) - if linked and linked.Label != obj.Label: - linked.Label = obj.Label - # in case there is label duplication, AsmElement will auto - # re-lable it. - obj.Label = linked.Label + link = obj.LinkedObject + if isinstance(link,tuple): + linked = link[0].getSubObject(link[1],1) + if linked and linked.Label != obj.Label: + linked.Label = obj.Label + # in case there is label duplication, AsmElement will auto + # re-lable it. + obj.Label = linked.Label return if prop not in self._MyIgnoredProperties and \ not Constraint.isDisabled(self.parent.Object): @@ -1092,9 +1151,11 @@ class AsmElementLink(AsmBase): # subname reference relative to the parent assembly's part group link = self.Object.LinkedObject + if not isinstance(link,tuple): + raise RuntimeError('broken link') linked = link[0].getSubObject(link[1],1) if not linked: - raise RuntimeError('Element link broken') + raise RuntimeError('broken link') element = getProxy(linked,AsmElement) assembly = element.getAssembly() if assembly == self.getAssembly(): @@ -1307,6 +1368,8 @@ def setPlacement(part,pla,purgeTouched=False): ''' called by solver after solving to adjust the placement. part: obtained by AsmConstraint.getInfo().Part pla: the new placement + pla: new placement + purgeTouched: set to True to not touch object ''' if not isinstance(part,tuple): if purgeTouched: @@ -1423,9 +1486,13 @@ class AsmConstraint(AsmGroup): if not obj.Removing and prop not in _IgnoredProperties: if prop == Constraint.propMultiply() and not FreeCAD.isRestoring(): self.checkMultiply() + self.elements = None Constraint.onChanged(obj,prop) Assembly.autoSolve(obj,prop) + def childVersion(self): + return [(o,o.Proxy.version.value) for o in self.Object.Group] + def linkSetup(self,obj): self.elements = None super(AsmConstraint,self).linkSetup(obj) @@ -1440,6 +1507,8 @@ class AsmConstraint(AsmGroup): Constraint.attach(obj) obj.recompute() + self.version = AsmVersion() + def checkMultiply(self): obj = self.Object if not obj.Multiply: @@ -1633,10 +1702,13 @@ class AsmConstraint(AsmGroup): if not getattr(self,'_initializing',False) and\ getattr(self,'parent',None): self.checkSupport() + if not self.version.update(self.childVersion()): + return if Constraint.canMultiply(obj): self.checkMultiply() self.getElements(True) Constraint.execute(obj) + self.version.commit() return False def getElements(self,refresh=False): diff --git a/gui.py b/gui.py index da2b8fa..d3cd68c 100644 --- a/gui.py +++ b/gui.py @@ -516,6 +516,13 @@ class AsmCmdAutoRecompute(AsmCmdCheckable): _iconName = 'Assembly_AutoRecompute.svg' _saveParam = True +class AsmCmdSmartRecompute(AsmCmdCheckable): + _id = 22 + _menuText = 'Smart recompute' + _tooltip = 'Toggle smart recompute to reduce recompution time' + _iconName = 'Assembly_SmartRecompute.svg' + _saveParam = True + class AsmCmdAutoElementVis(AsmCmdCheckable): _id = 9 _menuText = 'Auto element visibility'