Merge branch 'master' into bugfix/dangling-signal-registration

This commit is contained in:
mlampert
2020-12-30 13:33:29 -08:00
committed by GitHub
100 changed files with 3037 additions and 1317 deletions
+1 -1
View File
@@ -53,7 +53,7 @@ namespace SMESH{
class SMESHCONTROLS_EXPORT Functor
{
public:
~Functor(){}
virtual ~Functor(){}
virtual void SetMesh( const SMDS_Mesh* theMesh ) = 0;
virtual SMDSAbs_ElementType GetType() const = 0;
};
+1 -1
View File
@@ -24,7 +24,7 @@
#ifndef APP_APPLICATION_H
#define APP_APPLICATION_H
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <vector>
#include <deque>
+1 -1
View File
@@ -70,7 +70,7 @@ recompute path. Also, it enables more complicated dependencies beyond trees.
#include <boost/algorithm/string.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost_graph_adjacency_list.hpp>
#include <boost/graph/subgraph.hpp>
#include <boost/graph/graphviz.hpp>
#include <boost/graph/strong_components.hpp>
+1 -1
View File
@@ -37,7 +37,7 @@
#include <stack>
#include <functional>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
namespace Base {
class Writer;
+1 -1
View File
@@ -36,7 +36,7 @@
#include <unordered_map>
#include <bitset>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
namespace App
{
+1 -1
View File
@@ -25,7 +25,7 @@
#define APP_DOCUMENTOBSERVER_H
#include <Base/BaseClass.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <set>
#include <memory>
+1 -1
View File
@@ -26,7 +26,7 @@
#include <CXX/Objects.hxx>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <boost/bind/bind.hpp>
#include <string>
+1 -1
View File
@@ -24,7 +24,7 @@
#ifndef APP_GROUPEXTENSION_H
#define APP_GROUPEXTENSION_H
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include "FeaturePython.h"
#include "DocumentObject.h"
#include "PropertyLinks.h"
+1 -1
View File
@@ -24,7 +24,7 @@
#define APP_LINK_H
#include <unordered_set>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <boost/preprocessor/facilities/expand.hpp>
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/seq/for_each.hpp>
+1 -1
View File
@@ -24,7 +24,7 @@
#ifndef APP_MERGEDOCUMENTS_H
#define APP_MERGEDOCUMENTS_H
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <Base/Persistence.h>
namespace zipios {
+2 -2
View File
@@ -80,13 +80,13 @@
#include <iterator>
// Boost
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <boost/bind/bind.hpp>
#include <boost/regex.hpp>
#include <boost/tuple/tuple.hpp>
#include <boost/utility.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost_graph_adjacency_list.hpp>
#include <boost/program_options.hpp>
//namespace po = boost::program_options;
-1
View File
@@ -36,7 +36,6 @@
#include <CXX/Objects.hxx>
#include <boost/bind/bind.hpp>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/adjacency_list.hpp>
using namespace App;
+2 -2
View File
@@ -25,8 +25,8 @@
#include <boost/unordered/unordered_map.hpp>
#include <boost/function.hpp>
#include <boost/signals2.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost_signals2.hpp>
#include <boost_graph_adjacency_list.hpp>
#include <boost/graph/topological_sort.hpp>
#include <App/PropertyLinks.h>
#include <App/Expression.h>
+1 -1
View File
@@ -25,7 +25,7 @@
#define APP_PROPERTYLINKS_H
// Std. configurations
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <vector>
#include <map>
+1 -1
View File
@@ -25,7 +25,7 @@
#include <string>
#include <fstream>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include "DocumentObject.h"
#include "TextDocument.h"
+1 -1
View File
@@ -26,7 +26,7 @@
#include <string>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include "DocumentObject.h"
#include "PropertyStandard.h"
+1 -1
View File
@@ -30,7 +30,7 @@
#include <iostream>
#include <vector>
#include <string>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <QString>
#include <QObject>
+1 -1
View File
@@ -24,7 +24,7 @@
#include "PreCompiled.h"
#ifndef _PreComp_
# include <boost/signals2.hpp>
# include <boost_signals2.hpp>
# include <boost_bind_bind.hpp>
# include <QAbstractItemView>
# include <QActionEvent>
+1 -1
View File
@@ -25,7 +25,7 @@
#ifndef _PreComp_
# include "InventorAll.h"
# include <boost/signals2.hpp>
# include <boost_signals2.hpp>
# include <boost_bind_bind.hpp>
# include <sstream>
# include <stdexcept>
+1 -1
View File
@@ -29,7 +29,7 @@
#include <map>
#include <set>
#include <string>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
namespace App {
class Document;
+6 -6
View File
@@ -1145,7 +1145,7 @@ StdCmdSetAppearance::StdCmdSetAppearance()
sToolTipText = QT_TR_NOOP("Sets the display properties of the selected object");
sWhatsThis = "Std_SetAppearance";
sStatusTip = QT_TR_NOOP("Sets the display properties of the selected object");
sPixmap = "Std_Tool1";
sPixmap = "Std_SetAppearance";
sAccel = "Ctrl+D";
eType = Alter3DView;
}
@@ -2289,7 +2289,7 @@ StdCmdViewIvStereoOff::StdCmdViewIvStereoOff()
sToolTipText = QT_TR_NOOP("Switch stereo viewing off");
sWhatsThis = "Std_ViewIvStereoOff";
sStatusTip = QT_TR_NOOP("Switch stereo viewing off");
sPixmap = "Std_Tool6";
sPixmap = "Std_ViewIvStereoOff";
eType = Alter3DView;
}
@@ -2318,7 +2318,7 @@ StdCmdViewIvStereoRedGreen::StdCmdViewIvStereoRedGreen()
sToolTipText = QT_TR_NOOP("Switch stereo viewing to red/cyan");
sWhatsThis = "Std_ViewIvStereoRedGreen";
sStatusTip = QT_TR_NOOP("Switch stereo viewing to red/cyan");
sPixmap = "Std_Tool7";
sPixmap = "Std_ViewIvStereoRedGreen";
eType = Alter3DView;
}
@@ -2346,7 +2346,7 @@ StdCmdViewIvStereoQuadBuff::StdCmdViewIvStereoQuadBuff()
sToolTipText = QT_TR_NOOP("Switch stereo viewing to quad buffer");
sWhatsThis = "Std_ViewIvStereoQuadBuff";
sStatusTip = QT_TR_NOOP("Switch stereo viewing to quad buffer");
sPixmap = "Std_Tool7";
sPixmap = "Std_ViewIvStereoQuadBuff";
eType = Alter3DView;
}
@@ -2374,7 +2374,7 @@ StdCmdViewIvStereoInterleavedRows::StdCmdViewIvStereoInterleavedRows()
sToolTipText = QT_TR_NOOP("Switch stereo viewing to Interleaved Rows");
sWhatsThis = "Std_ViewIvStereoInterleavedRows";
sStatusTip = QT_TR_NOOP("Switch stereo viewing to Interleaved Rows");
sPixmap = "Std_Tool7";
sPixmap = "Std_ViewIvStereoInterleavedRows";
eType = Alter3DView;
}
@@ -2402,7 +2402,7 @@ StdCmdViewIvStereoInterleavedColumns::StdCmdViewIvStereoInterleavedColumns()
sToolTipText = QT_TR_NOOP("Switch stereo viewing to Interleaved Columns");
sWhatsThis = "Std_ViewIvStereoInterleavedColumns";
sStatusTip = QT_TR_NOOP("Switch stereo viewing to Interleaved Columns");
sPixmap = "Std_Tool7";
sPixmap = "Std_ViewIvStereoInterleavedColumns";
eType = Alter3DView;
}
+1 -1
View File
@@ -24,7 +24,7 @@
#ifndef _PreComp_
#include <boost_bind_bind.hpp>
#include <boost/graph/topological_sort.hpp>
#include <boost/graph/reverse_graph.hpp>
#include <boost_graph_reverse_graph.hpp>
#include <QApplication>
#include <QString>
+1 -1
View File
@@ -26,7 +26,7 @@
#include <memory>
#include <vector>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <QGraphicsScene>
#include <QBrush>
+3 -3
View File
@@ -26,16 +26,16 @@
#include <memory>
#include <bitset>
#include <boost/graph/adjacency_list.hpp>
#include <boost_graph_adjacency_list.hpp>
#include <boost/graph/iteration_macros.hpp>
#include <boost/graph/reverse_graph.hpp>
#include <boost_graph_reverse_graph.hpp>
#include <boost/graph/topological_sort.hpp>
#include <boost/graph/graphviz.hpp>
#include <boost/graph/breadth_first_search.hpp>
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/member.hpp>
#include <boost/multi_index/ordered_index.hpp>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include "DAGRectItem.h"
+1 -1
View File
@@ -25,7 +25,7 @@
#ifndef _PreComp_
# include <algorithm>
# include <boost_bind_bind.hpp>
# include <boost/signals2.hpp>
# include <boost_signals2.hpp>
# include <QDockWidget>
#endif
+1 -1
View File
@@ -33,7 +33,7 @@
# include <QTextStream>
# include <qmessagebox.h>
# include <qstatusbar.h>
# include <boost/signals2.hpp>
# include <boost_signals2.hpp>
# include <boost_bind_bind.hpp>
# include <Inventor/actions/SoSearchAction.h>
# include <Inventor/nodes/SoSeparator.h>
+1 -1
View File
@@ -26,7 +26,7 @@
#ifndef _PreComp_
# include <QApplication>
# include <algorithm>
# include <boost/signals2.hpp>
# include <boost_signals2.hpp>
# include <boost_bind_bind.hpp>
#endif
+1 -1
View File
@@ -25,7 +25,7 @@
#define GUI_DOCUMENTOBSERVER_H
#include <Base/BaseClass.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
namespace App { class Property; }
namespace Gui
+1 -1
View File
@@ -26,7 +26,7 @@
#include <CXX/Objects.hxx>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <boost/bind/bind.hpp>
namespace Gui
+1 -1
View File
@@ -27,7 +27,7 @@
#include <App/ObjectIdentifier.h>
#include <boost/shared_ptr.hpp>
#include <QLabel>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
namespace App {
class Expression;
+1 -1
View File
@@ -26,7 +26,7 @@
#include "MDIView.h"
#include <boost/shared_ptr.hpp>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
class QGraphicsScene;
+233
View File
@@ -0,0 +1,233 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
width="64px"
height="64px"
id="svg3188"
version="1.1">
<title
id="title866">Std_SetAppearance</title>
<defs
id="defs3190">
<linearGradient
id="linearGradient3895">
<stop
style="stop-color:#729fcf;stop-opacity:1;"
offset="0"
id="stop3897" />
<stop
style="stop-color:#204a87;stop-opacity:1;"
offset="1"
id="stop3899" />
</linearGradient>
<linearGradient
id="linearGradient3354">
<stop
style="stop-color:#2157c7;stop-opacity:1;"
offset="0"
id="stop3356" />
<stop
style="stop-color:#6daaff;stop-opacity:1;"
offset="1"
id="stop3358" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3354"
id="linearGradient3599"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0083598,0,0,0.712664,-29.601181,398.25477)"
x1="2392.2313"
y1="1162.2943"
x2="2638.95"
y2="1162.2943" />
<linearGradient
xlink:href="#linearGradient3354-6"
id="linearGradient2996-3"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.15768287,0,0,0.15089213,-357.22613,-145.08225)"
x1="2392.2312"
y1="1162.2943"
x2="2638.95"
y2="1162.2943" />
<linearGradient
id="linearGradient3354-6">
<stop
style="stop-color:#2157c7;stop-opacity:1;"
offset="0"
id="stop3356-0" />
<stop
style="stop-color:#6daaff;stop-opacity:1;"
offset="1"
id="stop3358-6" />
</linearGradient>
</defs>
<g
id="layer1">
<rect
style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.08138;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect2364"
width="28"
height="58"
x="3"
y="3" />
<rect
style="display:inline;overflow:visible;visibility:visible;fill:none;stroke:#172a04;stroke-width:2;stroke-linejoin:round;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect3341"
width="20"
height="8.0000019"
x="7"
y="49" />
<rect
style="display:inline;overflow:visible;visibility:visible;fill:#73d216;stroke:#8ae234;stroke-width:2;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect3341-3"
width="16"
height="3.9999986"
x="9"
y="51" />
<rect
style="display:inline;overflow:visible;visibility:visible;fill:none;stroke:#0b1521;stroke-width:2;stroke-linejoin:round;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect3341-9"
width="20"
height="8.0000019"
x="7"
y="35" />
<rect
style="display:inline;overflow:visible;visibility:visible;fill:#3465a4;stroke:#729fcf;stroke-width:2;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect3341-3-1"
width="16"
height="3.9999986"
x="9"
y="37" />
<rect
style="display:inline;overflow:visible;visibility:visible;fill:none;stroke:#302b00;stroke-width:2;stroke-linejoin:round;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect3341-2"
width="20"
height="8.0000019"
x="7"
y="21" />
<rect
style="display:inline;overflow:visible;visibility:visible;fill:#edd400;stroke:#fce94f;stroke-width:2;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect3341-3-7"
width="16"
height="3.9999986"
x="9"
y="23" />
<rect
style="display:inline;overflow:visible;visibility:visible;fill:none;stroke:#280000;stroke-width:2;stroke-linejoin:round;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect3341-0"
width="20"
height="8.0000019"
x="7"
y="7" />
<rect
style="display:inline;overflow:visible;visibility:visible;fill:#cc0000;stroke:#ef2929;stroke-width:2;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect3341-3-9"
width="16"
height="3.9999986"
x="9"
y="9" />
<g
style="stroke-width:3.5;stroke-miterlimit:4;stroke-dasharray:none"
id="g3060"
transform="matrix(0.55090896,0,0,0.45218287,-39.418502,3.7972689)">
<path
id="path3150-7"
d="M 181.76846,74.564006 V 110.8957 l -17.89251,14.53268 v -36.3317 z"
style="fill:#204a87;stroke:none" />
<path
id="path3930"
d="m 163.87595,121.79521 17.89251,-14.53268"
style="fill:none;stroke:#3465a4;stroke-width:3.29157;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path3932"
d="M 178.78637,114.52887 V 78.197173"
style="fill:none;stroke:#3465a4;stroke-width:3.29157;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path3934"
d="m 181.76846,78.197173 -17.89251,14.53268"
style="fill:none;stroke:#3465a4;stroke-width:3.29157;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path3936"
d="M 166.85803,85.463513 V 121.79521"
style="fill:none;stroke:#3465a4;stroke-width:3.29157;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path3152-1"
d="M 163.87595,125.42838 140.01927,110.8957 V 74.564003 l 23.85668,14.532677 z"
style="fill:#3465a4;stroke:none" />
<path
id="path3938"
d="M 160.89386,89.096683 V 121.79521"
style="fill:none;stroke:#729fcf;stroke-width:3.29157;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path3940"
d="m 140.01927,107.26253 23.85668,14.53268"
style="fill:none;stroke:#729fcf;stroke-width:3.29157;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path3942"
d="M 143.00136,110.8957 V 78.197173"
style="fill:none;stroke:#729fcf;stroke-width:3.29157;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path3150"
d="M 181.76846,74.564003 V 110.8957 l -17.89251,14.53268 V 89.096683 Z"
style="fill:none;stroke:#0b1521;stroke-width:3.29157;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
<path
id="path3944"
d="M 163.87595,92.729853 140.01927,78.197173"
style="fill:none;stroke:#729fcf;stroke-width:3.29157;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path3152"
d="M 163.87595,125.42838 140.01927,110.8957 V 74.564003 l 23.85668,14.53268 z"
style="fill:none;stroke:#0b1521;stroke-width:3.29157;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
<path
id="path3156"
d="m 181.76846,74.564003 -17.89251,14.53268 -23.85668,-14.53268 17.89251,-14.53268 23.85668,14.53268"
style="fill:#729fcf;stroke:#0b1521;stroke-width:3.29157;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
</g>
</g>
<metadata
id="metadata3231">
<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>Std_SetAppearance</dc:title>
<cc:license
rdf:resource="" />
<dc:date>2020/12/20</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>[bitacovir]</dc:title>
</cc:Agent>
</dc:creator>
<dc:rights>
<cc:Agent>
<dc:title>FreeCAD LGPL2+</dc:title>
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title>FreeCAD</dc:title>
</cc:Agent>
</dc:publisher>
<dc:identifier></dc:identifier>
<dc:relation>http://www.freecadweb.org/wiki/index.php?title=Artwork</dc:relation>
<dc:contributor>
<cc:Agent>
<dc:title></dc:title>
</cc:Agent>
</dc:contributor>
<dc:subject>
<rdf:Bag />
</dc:subject>
<dc:description></dc:description>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 8.6 KiB

@@ -0,0 +1,254 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
width="64px"
height="64px"
id="svg2980"
version="1.1">
<title
id="title1117">Std_ViewIvStereoInterleavedColumns</title>
<defs
id="defs2982">
<linearGradient
id="linearGradient952">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop948" />
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="1"
id="stop950" />
</linearGradient>
<linearGradient
id="linearGradient944">
<stop
style="stop-color:#a40000;stop-opacity:1"
offset="0"
id="stop940" />
<stop
style="stop-color:#ef2929;stop-opacity:1"
offset="1"
id="stop942" />
</linearGradient>
<linearGradient
id="linearGradient1078">
<stop
id="stop1074"
offset="0"
style="stop-color:#2e3436;stop-opacity:1" />
<stop
id="stop1076"
offset="1"
style="stop-color:#babdb6;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3794">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3796" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3798" />
</linearGradient>
<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>
<linearGradient
gradientTransform="translate(0,-4)"
xlink:href="#linearGradient3767"
id="linearGradient3773"
x1="22.116516"
y1="55.717518"
x2="17.328547"
y2="21.31134"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3767">
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="0"
id="stop3769" />
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="1"
id="stop3771" />
</linearGradient>
<linearGradient
gradientTransform="translate(0,-4)"
xlink:href="#linearGradient3777"
id="linearGradient3783"
x1="53.896763"
y1="51.179787"
x2="47.502235"
y2="21.83742"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3777">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop3779" />
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="1"
id="stop3781" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient3794"
id="radialGradient3800"
cx="1"
cy="45"
fx="1"
fy="45"
r="41"
gradientTransform="matrix(0.93348213,-2.2905276e-8,0,0.28687573,0.06651751,32.090592)"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="24"
x2="7"
y1="43"
x1="56"
id="linearGradient1080"
xlink:href="#linearGradient1078"
gradientTransform="translate(0,-4)" />
<linearGradient
xlink:href="#linearGradient944"
id="linearGradient946"
x1="24.323317"
y1="38.115891"
x2="9.806756"
y2="27.753984"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,-4)" />
<linearGradient
xlink:href="#linearGradient952"
id="linearGradient954"
x1="51.042877"
y1="39.422012"
x2="35.269917"
y2="27.405685"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,-4)" />
</defs>
<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:creator>
<cc:Agent>
<dc:title>[bitacovir]</dc:title>
</cc:Agent>
</dc:creator>
<dc:title>Std_ViewIvStereoInterleavedColumns</dc:title>
<dc:date>2020/12/20</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></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></dc:title>
</cc:Agent>
</dc:contributor>
</cc:Work>
</rdf:RDF>
</metadata>
<path
id="path1020"
d="M 3,16 H 61 V 46 H 42 C 35.259065,30.714814 27.983716,31.963913 22,46 H 3 Z"
style="fill:url(#linearGradient1080);fill-opacity:1;stroke:#555753;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:url(#linearGradient946);fill-opacity:1;stroke:#280000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
d="M 31.401313,21.859905 H 8.1273987 V 38.360987 H 23.397057 l 6.834934,-7.827763 z"
id="path921" />
<path
id="path921-8"
d="M 32.632737,21.859905 H 55.906651 V 38.360987 H 40.636993 l -6.834934,-6.652253 z"
style="fill:url(#linearGradient954);fill-opacity:1;stroke:#0b1521;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
<path
style="fill:none;stroke:#babdb6;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 32.017025,33.189006 V 17.857777"
id="path919" />
<path
style="fill:none;stroke:#babdb6;stroke-width:1.808;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5.051724,17.655172 H 59 V 44 L 43.235996,43.938429 C 36.666589,28.519738 26.039445,30.454028 20.661358,44.030786 L 5.051724,44 Z"
id="path1020-3" />
<path
style="fill:none;stroke:#0b1521;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 35.004082,21.643537 0.06531,10.144218 c 3.212544,1.029984 5.005244,3.076287 7.22721,6.160544"
id="path956" />
<path
id="path956-0"
d="M 29.15557,21.542552 29.09026,31.68677 c -3.36274,1.130115 -5.441474,3.316313 -7.466666,6.269387"
style="fill:none;stroke:#280000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1068"
width="4.1252704"
height="3.8789856"
x="10.528675"
y="24.322754"
ry="0.43099841" />
<rect
ry="0.43099841"
y="24.476677"
x="37.527649"
height="3.8789856"
width="4.1252704"
id="rect1068-5"
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path1119-9"
d="M 30.840343,58.827548 V 5.0143181"
style="fill:none;stroke:#000000;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 30.840343,58.827548 V 5.0143181"
id="path1119-5-5" />
<path
style="fill:none;stroke:#000000;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 58.970335,58.78566 V 4.9724299"
id="path1119-9-3" />
<path
id="path1119-5-5-4"
d="M 58.970335,58.78566 V 4.9724299"
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5.0138194,58.799875 V 4.9866457"
id="path1119-9-8" />
<path
id="path1119-5-5-9"
d="M 5.0138194,58.799875 V 4.9866457"
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 8.9 KiB

@@ -0,0 +1,254 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
width="64px"
height="64px"
id="svg2980"
version="1.1">
<title
id="title1117">Std_ViewIvStereoInterleavedRows</title>
<defs
id="defs2982">
<linearGradient
id="linearGradient952">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop948" />
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="1"
id="stop950" />
</linearGradient>
<linearGradient
id="linearGradient944">
<stop
style="stop-color:#a40000;stop-opacity:1"
offset="0"
id="stop940" />
<stop
style="stop-color:#ef2929;stop-opacity:1"
offset="1"
id="stop942" />
</linearGradient>
<linearGradient
id="linearGradient1078">
<stop
id="stop1074"
offset="0"
style="stop-color:#2e3436;stop-opacity:1" />
<stop
id="stop1076"
offset="1"
style="stop-color:#babdb6;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3794">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3796" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3798" />
</linearGradient>
<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>
<linearGradient
gradientTransform="translate(0,-4)"
xlink:href="#linearGradient3767"
id="linearGradient3773"
x1="22.116516"
y1="55.717518"
x2="17.328547"
y2="21.31134"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3767">
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="0"
id="stop3769" />
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="1"
id="stop3771" />
</linearGradient>
<linearGradient
gradientTransform="translate(0,-4)"
xlink:href="#linearGradient3777"
id="linearGradient3783"
x1="53.896763"
y1="51.179787"
x2="47.502235"
y2="21.83742"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3777">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop3779" />
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="1"
id="stop3781" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient3794"
id="radialGradient3800"
cx="1"
cy="45"
fx="1"
fy="45"
r="41"
gradientTransform="matrix(0.93348213,-2.2905276e-8,0,0.28687573,0.06651751,32.090592)"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="24"
x2="7"
y1="43"
x1="56"
id="linearGradient1080"
xlink:href="#linearGradient1078"
gradientTransform="translate(0,-4)" />
<linearGradient
xlink:href="#linearGradient944"
id="linearGradient946"
x1="24.323317"
y1="38.115891"
x2="9.806756"
y2="27.753984"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,-4)" />
<linearGradient
xlink:href="#linearGradient952"
id="linearGradient954"
x1="51.042877"
y1="39.422012"
x2="35.269917"
y2="27.405685"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,-4)" />
</defs>
<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:creator>
<cc:Agent>
<dc:title>[bitacovir]</dc:title>
</cc:Agent>
</dc:creator>
<dc:title>Std_ViewIvStereoInterleavedRows</dc:title>
<dc:date>2020/12/20</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></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></dc:title>
</cc:Agent>
</dc:contributor>
</cc:Work>
</rdf:RDF>
</metadata>
<path
id="path1020"
d="M 3,16 H 61 V 46 H 42 C 35.259065,30.714814 27.983716,31.963913 22,46 H 3 Z"
style="fill:url(#linearGradient1080);fill-opacity:1;stroke:#555753;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:url(#linearGradient946);fill-opacity:1;stroke:#280000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
d="M 31.401313,21.859905 H 8.1273987 V 38.360987 H 23.397057 l 6.834934,-7.827763 z"
id="path921" />
<path
id="path921-8"
d="M 32.632737,21.859905 H 55.906651 V 38.360987 H 40.636993 l -6.834934,-6.652253 z"
style="fill:url(#linearGradient954);fill-opacity:1;stroke:#0b1521;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
<path
style="fill:none;stroke:#babdb6;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 32.017025,33.189006 V 17.857777"
id="path919" />
<path
style="fill:none;stroke:#babdb6;stroke-width:1.808;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5.051724,17.655172 H 59 V 44 L 43.235996,43.938429 C 36.666589,28.519738 26.039445,30.454028 20.661358,44.030786 L 5.051724,44 Z"
id="path1020-3" />
<path
style="fill:none;stroke:#0b1521;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 35.004082,21.643537 0.06531,10.144218 c 3.212544,1.029984 5.005244,3.076287 7.22721,6.160544"
id="path956" />
<path
id="path956-0"
d="M 29.15557,21.542552 29.09026,31.68677 c -3.36274,1.130115 -5.441474,3.316313 -7.466666,6.269387"
style="fill:none;stroke:#280000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1068"
width="4.1252704"
height="3.8789856"
x="10.528675"
y="24.322754"
ry="0.43099841" />
<rect
ry="0.43099841"
y="24.476677"
x="37.527649"
height="3.8789856"
width="4.1252704"
id="rect1068-5"
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5.0488386,6.1571202 H 58.862069"
id="path1119" />
<path
id="path1119-5"
d="m 5.048839,6.1571202 h 53.81323"
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path1119-9"
d="M 4.9804392,56.703342 H 58.793669"
style="fill:none;stroke:#000000;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 4.9804392,56.703342 H 58.793669"
id="path1119-5-5" />
<path
id="path1119-6"
d="M 5.0026606,30.400781 H 58.81589"
style="fill:none;stroke:#000000;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5.002661,30.400781 H 58.81589"
id="path1119-5-1" />
</svg>

After

Width:  |  Height:  |  Size: 8.9 KiB

+218
View File
@@ -0,0 +1,218 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
width="64px"
height="64px"
id="svg2980"
version="1.1">
<title
id="title1117">Std_ViewIvStereoOff</title>
<defs
id="defs2982">
<linearGradient
id="linearGradient944">
<stop
style="stop-color:#a40000;stop-opacity:1"
offset="0"
id="stop940" />
<stop
style="stop-color:#ef2929;stop-opacity:1"
offset="1"
id="stop942" />
</linearGradient>
<linearGradient
id="linearGradient1078">
<stop
id="stop1074"
offset="0"
style="stop-color:#2e3436;stop-opacity:1" />
<stop
id="stop1076"
offset="1"
style="stop-color:#babdb6;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3794">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3796" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3798" />
</linearGradient>
<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>
<linearGradient
gradientTransform="translate(0,-4)"
xlink:href="#linearGradient3767"
id="linearGradient3773"
x1="22.116516"
y1="55.717518"
x2="17.328547"
y2="21.31134"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3767">
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="0"
id="stop3769" />
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="1"
id="stop3771" />
</linearGradient>
<linearGradient
gradientTransform="translate(0,-4)"
xlink:href="#linearGradient3777"
id="linearGradient3783"
x1="53.896763"
y1="51.179787"
x2="47.502235"
y2="21.83742"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3777">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop3779" />
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="1"
id="stop3781" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient3794"
id="radialGradient3800"
cx="1"
cy="45"
fx="1"
fy="45"
r="41"
gradientTransform="matrix(0.93348213,-2.2905276e-8,0,0.28687573,0.06651751,32.090592)"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="24"
x2="7"
y1="43"
x1="56"
id="linearGradient1080"
xlink:href="#linearGradient1078"
gradientTransform="translate(0,-4)" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="17"
x2="15"
y1="47"
x1="29"
id="linearGradient3799"
xlink:href="#linearGradient944"
gradientTransform="translate(-6.0020978,-11.974588)" />
</defs>
<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:creator>
<cc:Agent>
<dc:title>[bitacovir]</dc:title>
</cc:Agent>
</dc:creator>
<dc:title>Std_ViewIvStereoOff</dc:title>
<dc:date>2020/12/20</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></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></dc:title>
</cc:Agent>
</dc:contributor>
</cc:Work>
</rdf:RDF>
</metadata>
<path
id="path1020"
d="M 3,16 H 61 V 46 H 42 C 35.259065,30.714814 27.983716,31.963913 22,46 H 3 Z"
style="fill:url(#linearGradient1080);fill-opacity:1;stroke:#555753;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:#2e3436;fill-opacity:1;stroke:#2e3436;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
d="M 31.401313,21.859905 H 8.1273987 V 38.360987 H 23.397057 l 6.834934,-7.827763 z"
id="path921" />
<path
id="path921-8"
d="M 32.632737,21.859905 H 55.906651 V 38.360987 H 40.636993 l -6.834934,-6.652253 z"
style="fill:#2e3436;fill-opacity:1;stroke:#2e3436;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
<path
style="fill:none;stroke:#babdb6;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 32.017025,33.189006 V 17.857777"
id="path919" />
<path
style="fill:none;stroke:#babdb6;stroke-width:1.808;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5.051724,17.655172 H 59 V 44 L 43.235996,43.938429 C 36.666589,28.519738 26.039445,30.454028 20.661358,44.030786 L 5.051724,44 Z"
id="path1020-3" />
<path
style="fill:none;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 35.004082,21.643537 0.06531,10.144218 c 3.212544,1.029984 5.005244,3.076287 7.22721,6.160544"
id="path956" />
<path
id="path956-0"
d="M 29.15557,21.542552 29.09026,31.68677 c -3.36274,1.130115 -5.441474,3.316313 -7.466666,6.269387"
style="fill:none;stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1068"
width="4.1252704"
height="3.8789856"
x="10.528675"
y="24.322754"
ry="0.43099841" />
<rect
ry="0.43099841"
y="24.476677"
x="37.527649"
height="3.8789856"
width="4.1252704"
id="rect1068-5"
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="rect3761"
d="m 8.9979027,3.0254115 -6.0000001,6 10.0000004,10.0000005 -10.0000004,10 6.0000001,6 10.0000003,-10 10,10 6,-6 -10,-10 10,-10.0000005 -6,-6 -10,10.0000005 z"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3799);fill-opacity:1;fill-rule:evenodd;stroke:#280000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<path
id="rect3761-3"
d="m 8.9979027,6.0254115 -3,3 10.0000003,10.0000005 -10.0000003,10 3,3 10.0000003,-10 10,10 3,-3 -10,-10 10,-10.0000005 -3,-3 -10,10.0000005 z"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ef2929;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
</svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

+262
View File
@@ -0,0 +1,262 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
width="64px"
height="64px"
id="svg2980"
version="1.1">
<title
id="title1117">Std_ViewIvStereoQuadBuff</title>
<defs
id="defs2982">
<linearGradient
id="linearGradient952">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop948" />
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="1"
id="stop950" />
</linearGradient>
<linearGradient
id="linearGradient944">
<stop
style="stop-color:#a40000;stop-opacity:1"
offset="0"
id="stop940" />
<stop
style="stop-color:#ef2929;stop-opacity:1"
offset="1"
id="stop942" />
</linearGradient>
<linearGradient
id="linearGradient1078">
<stop
id="stop1074"
offset="0"
style="stop-color:#2e3436;stop-opacity:1" />
<stop
id="stop1076"
offset="1"
style="stop-color:#babdb6;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3794">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3796" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3798" />
</linearGradient>
<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>
<linearGradient
gradientTransform="translate(0,-4)"
xlink:href="#linearGradient3767"
id="linearGradient3773"
x1="22.116516"
y1="55.717518"
x2="17.328547"
y2="21.31134"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3767">
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="0"
id="stop3769" />
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="1"
id="stop3771" />
</linearGradient>
<linearGradient
gradientTransform="translate(0,-4)"
xlink:href="#linearGradient3777"
id="linearGradient3783"
x1="53.896763"
y1="51.179787"
x2="47.502235"
y2="21.83742"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3777">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop3779" />
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="1"
id="stop3781" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient3794"
id="radialGradient3800"
cx="1"
cy="45"
fx="1"
fy="45"
r="41"
gradientTransform="matrix(0.93348213,-2.2905276e-8,0,0.28687573,0.06651751,32.090592)"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="24"
x2="7"
y1="43"
x1="56"
id="linearGradient1080"
xlink:href="#linearGradient1078"
gradientTransform="translate(0,4)" />
<linearGradient
xlink:href="#linearGradient944"
id="linearGradient946"
x1="24.323317"
y1="38.115891"
x2="9.806756"
y2="27.753984"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,4)" />
<linearGradient
xlink:href="#linearGradient952"
id="linearGradient954"
x1="51.042877"
y1="39.422012"
x2="35.269917"
y2="27.405685"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,4)" />
</defs>
<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:creator>
<cc:Agent>
<dc:title>[bitacovir]</dc:title>
</cc:Agent>
</dc:creator>
<dc:title>Std_ViewIvStereoQuadBuff</dc:title>
<dc:date>2020/12/20</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></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></dc:title>
</cc:Agent>
</dc:contributor>
</cc:Work>
</rdf:RDF>
</metadata>
<path
id="path1024"
d="M 5,25 19,10 c 3,-3 6.886274,-0.7693802 6,4"
style="fill:none;stroke:#555753;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#555753;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 59,25 45,10 C 42,7 38.113726,9.2306198 39,14"
id="path1024-4" />
<path
id="path1020"
d="M 3,24 H 61 V 54 H 42 C 35.259065,38.714814 27.983716,39.963913 22,54 H 3 Z"
style="fill:url(#linearGradient1080);fill-opacity:1;stroke:#555753;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:url(#linearGradient946);fill-opacity:1;stroke:#280000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
d="M 31.401313,29.859905 H 8.1273987 V 46.360987 H 23.397057 l 6.834934,-7.827763 z"
id="path921" />
<path
style="fill:none;stroke:#babdb6;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5,25 19,10 c 3,-3 6.886274,-0.7693802 6,4"
id="path1024-6" />
<path
id="path1024-6-3"
d="M 59,25 45,10 C 42,7 38.113726,9.2306198 39,14"
style="fill:none;stroke:#babdb6;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:#babdb6"
d="M 18.656075,11.573258 6.095549,24.99578 l 7.6964,0.123143 z"
id="path897" />
<path
style="fill:none;stroke:#555753;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 19.504761,12.185034 15.15102,24.201361"
id="path899" />
<path
id="path897-0"
d="m 45.102561,11.388544 12.560526,13.422522 -7.6964,0.123143 z"
style="fill:#babdb6" />
<path
id="path899-2"
d="m 44.253875,12.00032 4.353741,12.016327"
style="fill:none;stroke:#555753;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path921-8"
d="M 32.632737,29.859905 H 55.906651 V 46.360987 H 40.636993 l -6.834934,-6.652253 z"
style="fill:url(#linearGradient954);fill-opacity:1;stroke:#0b1521;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
<path
style="fill:none;stroke:#babdb6;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 32.017025,41.189006 V 25.857777"
id="path919" />
<path
style="fill:none;stroke:#babdb6;stroke-width:1.808;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5.051724,25.655172 H 59 V 52 L 43.235996,51.938429 C 36.666589,36.519738 26.039445,38.454028 20.661358,52.030786 L 5.051724,52 Z"
id="path1020-3" />
<path
style="fill:none;stroke:#0b1521;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 35.004082,29.643537 0.06531,10.144218 c 3.212544,1.029984 5.005244,3.076287 7.22721,6.160544"
id="path956" />
<path
id="path956-0"
d="M 29.15557,29.542552 29.09026,39.68677 c -3.36274,1.130115 -5.441474,3.316313 -7.466666,6.269387"
style="fill:none;stroke:#280000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1068"
width="4.1252704"
height="3.8789856"
x="10.528675"
y="32.322754"
ry="0.43099841" />
<rect
ry="0.43099841"
y="32.476677"
x="37.527649"
height="3.8789856"
width="4.1252704"
id="rect1068-5"
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 9.2 KiB

+230
View File
@@ -0,0 +1,230 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
width="64px"
height="64px"
id="svg2980"
version="1.1">
<title
id="title1117">Std_ViewIvStereoRedGreen</title>
<defs
id="defs2982">
<linearGradient
id="linearGradient952">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop948" />
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="1"
id="stop950" />
</linearGradient>
<linearGradient
id="linearGradient944">
<stop
style="stop-color:#a40000;stop-opacity:1"
offset="0"
id="stop940" />
<stop
style="stop-color:#ef2929;stop-opacity:1"
offset="1"
id="stop942" />
</linearGradient>
<linearGradient
id="linearGradient1078">
<stop
id="stop1074"
offset="0"
style="stop-color:#2e3436;stop-opacity:1" />
<stop
id="stop1076"
offset="1"
style="stop-color:#babdb6;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3794">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3796" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3798" />
</linearGradient>
<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>
<linearGradient
gradientTransform="translate(0,-4)"
xlink:href="#linearGradient3767"
id="linearGradient3773"
x1="22.116516"
y1="55.717518"
x2="17.328547"
y2="21.31134"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3767">
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="0"
id="stop3769" />
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="1"
id="stop3771" />
</linearGradient>
<linearGradient
gradientTransform="translate(0,-4)"
xlink:href="#linearGradient3777"
id="linearGradient3783"
x1="53.896763"
y1="51.179787"
x2="47.502235"
y2="21.83742"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3777">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop3779" />
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="1"
id="stop3781" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient3794"
id="radialGradient3800"
cx="1"
cy="45"
fx="1"
fy="45"
r="41"
gradientTransform="matrix(0.93348213,-2.2905276e-8,0,0.28687573,0.06651751,32.090592)"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="24"
x2="7"
y1="43"
x1="56"
id="linearGradient1080"
xlink:href="#linearGradient1078"
gradientTransform="translate(0,-4)" />
<linearGradient
xlink:href="#linearGradient944"
id="linearGradient946"
x1="24.323317"
y1="38.115891"
x2="9.806756"
y2="27.753984"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,-4)" />
<linearGradient
xlink:href="#linearGradient952"
id="linearGradient954"
x1="51.042877"
y1="39.422012"
x2="35.269917"
y2="27.405685"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,-4)" />
</defs>
<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:creator>
<cc:Agent>
<dc:title>[bitacovir]</dc:title>
</cc:Agent>
</dc:creator>
<dc:title>Std_ViewIvStereoRedGreen</dc:title>
<dc:date>2020/12/20</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></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></dc:title>
</cc:Agent>
</dc:contributor>
</cc:Work>
</rdf:RDF>
</metadata>
<path
id="path1020"
d="M 3,16 H 61 V 46 H 42 C 35.259065,30.714814 27.983716,31.963913 22,46 H 3 Z"
style="fill:url(#linearGradient1080);fill-opacity:1;stroke:#555753;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:url(#linearGradient946);fill-opacity:1;stroke:#280000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
d="M 31.401313,21.859905 H 8.1273987 V 38.360987 H 23.397057 l 6.834934,-7.827763 z"
id="path921" />
<path
id="path921-8"
d="M 32.632737,21.859905 H 55.906651 V 38.360987 H 40.636993 l -6.834934,-6.652253 z"
style="fill:url(#linearGradient954);fill-opacity:1;stroke:#0b1521;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
<path
style="fill:none;stroke:#babdb6;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 32.017025,33.189006 V 17.857777"
id="path919" />
<path
style="fill:none;stroke:#babdb6;stroke-width:1.808;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5.051724,17.655172 H 59 V 44 L 43.235996,43.938429 C 36.666589,28.519738 26.039445,30.454028 20.661358,44.030786 L 5.051724,44 Z"
id="path1020-3" />
<path
style="fill:none;stroke:#0b1521;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 35.004082,21.643537 0.06531,10.144218 c 3.212544,1.029984 5.005244,3.076287 7.22721,6.160544"
id="path956" />
<path
id="path956-0"
d="M 29.15557,21.542552 29.09026,31.68677 c -3.36274,1.130115 -5.441474,3.316313 -7.466666,6.269387"
style="fill:none;stroke:#280000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1068"
width="4.1252704"
height="3.8789856"
x="10.528675"
y="24.322754"
ry="0.43099841" />
<rect
ry="0.43099841"
y="24.476677"
x="37.527649"
height="3.8789856"
width="4.1252704"
id="rect1068-5"
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 7.5 KiB

+7 -1
View File
@@ -162,6 +162,7 @@
<file>Std_Revert.svg</file>
<file>Std_SaveAll.svg</file>
<file>Std_SaveCopy.svg</file>
<file>Std_SetAppearance.svg</file>
<file>Std_Tool1.svg</file>
<file>Std_Tool2.svg</file>
<file>Std_Tool3.svg</file>
@@ -174,7 +175,12 @@
<file>Std_Tool10.svg</file>
<file>Std_Tool11.svg</file>
<file>Std_Tool12.svg</file>
<file>Std_WindowCascade.svg</file>
<file>Std_ViewIvStereoInterleavedColumns.svg</file>
<file>Std_ViewIvStereoInterleavedRows.svg</file>
<file>Std_ViewIvStereoInterleavedRows.svg</file>
<file>Std_ViewIvStereoOff.svg</file>
<file>Std_ViewIvStereoQuadBuff.svg</file>
<file>Std_ViewIvStereoRedGreen.svg</file>
<file>Std_WindowNext.svg</file>
<file>Std_WindowPrev.svg</file>
<file>Std_WindowTileVer.svg</file>
+1 -1
View File
@@ -24,7 +24,7 @@
#include "PreCompiled.h"
#ifndef _PreComp_
# include <boost/signals2.hpp>
# include <boost_signals2.hpp>
# include <boost_bind_bind.hpp>
# include <qapplication.h>
# include <qregexp.h>
+1 -1
View File
@@ -31,7 +31,7 @@
#include <Gui/Application.h>
#include <Gui/Document.h>
#include <Gui/ViewProviderDocumentObject.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
class SbVec3f;
class SoPickedPoint;
+1 -1
View File
@@ -24,7 +24,7 @@
#ifndef GUI_MERGEDOCUMENTS_H
#define GUI_MERGEDOCUMENTS_H
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <Base/Persistence.h>
namespace zipios {
+1 -1
View File
@@ -29,7 +29,7 @@
#include <Gui/TaskView/TaskView.h>
#include <Base/Placement.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
class QSignalMapper;
+2 -2
View File
@@ -79,12 +79,12 @@
#include <unordered_map>
// Boost
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <boost/bind/bind.hpp>
#include <boost/program_options.hpp>
#include <boost/tuple/tuple.hpp>
#include <boost/utility.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost_graph_adjacency_list.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/exception.hpp>
+1 -1
View File
@@ -28,7 +28,7 @@
#include "DockWindow.h"
#include "Selection.h"
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
class QPixmap;
class QTabWidget;
+1 -1
View File
@@ -32,7 +32,7 @@
#include <list>
#include <map>
#include <deque>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <CXX/Objects.hxx>
#include <Base/Observer.h>
+1 -1
View File
@@ -26,7 +26,7 @@
#include "TaskView.h"
#include <Gui/Selection.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
namespace App {
+1 -1
View File
@@ -29,7 +29,7 @@
#include <map>
#include <string>
#include <vector>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <QScrollArea>
#if !defined (QSINT_ACTIONPANEL)
+1 -1
View File
@@ -32,7 +32,7 @@
# include <QTextBlock>
# include <iostream>
# include <boost_bind_bind.hpp>
# include <boost/signals2.hpp>
# include <boost_signals2.hpp>
#endif
+1 -1
View File
@@ -25,7 +25,7 @@
#define GUI_TEXTDOCUMENTEDITORVIEW_H
#include <string>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <QPlainTextEdit>
#include <App/TextDocument.h>
+1 -1
View File
@@ -29,7 +29,7 @@
#include <string>
#include <bitset>
#include <QIcon>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <boost/intrusive_ptr.hpp>
#include <App/TransactionalObject.h>
+1 -1
View File
@@ -29,7 +29,7 @@
#include <gp_Ax2.hxx>
#include <vector>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <Mod/Drawing/App/FeatureViewPart.h>
@@ -28,7 +28,7 @@
#include <Mod/Fem/App/FemPostFunction.h>
#include <Inventor/SbMatrix.h>
#include <QWidget>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
class SoScale;
class SoSurroundScale;
+1 -1
View File
@@ -25,7 +25,7 @@
#include <QObject>
#include <Mod/Mesh/Gui/ViewProvider.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
class SoCoordinate3;
class SoFaceSet;
+2 -2
View File
@@ -76,12 +76,12 @@
#include <QtGlobal>
// Boost
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <boost/bind/bind.hpp>
#include <boost/tuple/tuple.hpp>
#include <boost/utility.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost_graph_adjacency_list.hpp>
#include <boost/program_options.hpp>
//namespace po = boost::program_options;
+1 -1
View File
@@ -25,7 +25,7 @@
#include <Gui/TaskView/TaskDialog.h>
#include <Gui/TaskView/TaskView.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
class QTreeWidgetItem;
+1 -1
View File
@@ -177,7 +177,7 @@
#include <Python.h>
// Boost
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <boost/bind/bind.hpp>
// Qt Toolkit
+1 -1
View File
@@ -24,7 +24,7 @@
#include "PreCompiled.h"
#ifndef _PreComp_
# include <boost/signals2.hpp>
# include <boost_signals2.hpp>
# include <boost_bind_bind.hpp>
# include <BRep_Tool.hxx>
# include <BRepGProp.hxx>
+1 -1
View File
@@ -27,7 +27,7 @@
#include <App/PropertyStandard.h>
#include <Mod/Part/App/BodyBase.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
namespace App {
class Origin;
@@ -73,12 +73,10 @@ const std::list<gp_Trsf> LinearPattern::getTransformations(const std::vector<App
if (distance < Precision::Confusion())
throw Base::ValueError("Pattern length too small");
int occurrences = Occurrences.getValue();
if (occurrences < 2)
throw Base::ValueError("At least two occurrences required");
if (occurrences < 1)
throw Base::ValueError("At least one occurrence required");
bool reversed = Reversed.getValue();
double offset = distance / (occurrences - 1);
App::DocumentObject* refObject = Direction.getValue();
if (refObject == NULL)
throw Base::ValueError("No direction reference specified");
@@ -178,9 +176,12 @@ const std::list<gp_Trsf> LinearPattern::getTransformations(const std::vector<App
gp_Trsf trans;
transformations.push_back(trans); // identity transformation
for (int i = 1; i < occurrences; i++) {
trans.SetTranslation(direction * i * offset);
transformations.push_back(trans);
if (occurrences > 1) {
double offset = distance / (occurrences - 1);
for (int i = 1; i < occurrences; i++) {
trans.SetTranslation(direction * i * offset);
transformations.push_back(trans);
}
}
return transformations;
+1 -1
View File
@@ -25,7 +25,7 @@
#define PARTDESIGN_DATUMSHAPE_H
#include <QString>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <App/PropertyLinks.h>
#include <Mod/Part/App/DatumFeature.h>
@@ -25,7 +25,7 @@
#define GUI_TASKVIEW_TaskTransformedMessages_H
#include <Gui/TaskView/TaskView.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
class Ui_TaskTransformedMessages;
typedef boost::signals2::connection Connection;
+1 -1
View File
@@ -23,7 +23,7 @@
#ifndef WORKFLOWMANAGER_H_PB7A5GCM
#define WORKFLOWMANAGER_H_PB7A5GCM
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <map>
namespace App {
+1 -1
View File
@@ -35,7 +35,7 @@
//#include <boost/progress.hpp>
//#include <boost/timer.hpp>
#include <boost/foreach.hpp>
#include <boost/python.hpp>
#include <boost_python.hpp>
#include <boost/python/module.hpp>
#include <boost/python/class.hpp>
#include <boost/python/wrapper.hpp>
@@ -32,7 +32,7 @@
#include <App/Property.h>
#include <Mod/Part/App/Geometry.h>
#include "Constraint.h"
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <boost/unordered/unordered_map.hpp>
namespace Base {
+254 -147
View File
@@ -130,6 +130,85 @@ void Sketch::clear(void)
malformedConstraints = false;
}
bool Sketch::analyseBlockedGeometry( const std::vector<Part::Geometry *> &internalGeoList,
const std::vector<Constraint *> &constraintList,
std::vector<bool> &onlyblockedGeometry,
std::vector<int> &blockedGeoIds) const
{
bool isSomethingBlocked = false;
bool doesBlockAffectOtherConstraints = false;
int geoindex = 0;
for(auto g : internalGeoList) {
if(GeometryFacade::getBlocked(g)) {
// is it only affected by one constraint, the block constraint (and this is driving), or by any other driving constraint ?
bool blockOnly = true;
bool blockisDriving = false;
for(auto c : constraintList) {
// is block driving
if( c->Type == Sketcher::Block && c->isDriving && c->First == geoindex)
blockisDriving = true;
if( c->Type != Sketcher::Block && c->isDriving &&
(c->First == geoindex || c->Second == geoindex || c->Third == geoindex) )
blockOnly = false;
}
if(blockisDriving) {
if(blockOnly) {
onlyblockedGeometry[geoindex] = true; // we pre-fix this geometry
isSomethingBlocked = true;
}
else {
// we will have to pos-analyse the first diagnose result for these geometries
// in order to avoid redundant constraints
isSomethingBlocked = true;
doesBlockAffectOtherConstraints = true;
blockedGeoIds.push_back(geoindex);
}
}
}
geoindex++;
}
if(isSomethingBlocked) {
// look for internal geometry linked IAs
for(auto c : constraintList) {
if(c->Type == InternalAlignment) {
auto geoit = std::find(blockedGeoIds.begin(),blockedGeoIds.end(),c->Second);
if(geoit != blockedGeoIds.end() || onlyblockedGeometry[c->Second]) { // internal alignment geometry found, add to list
// check if pre-fix or post-analyses
bool blockAffectedOnly = true;
for(auto ic : constraintList) {
// there is another driving constraint
if( ic->Type != Sketcher::Block && ic->isDriving &&
(ic->First == c->First || ic->Second == c->First || ic->Third == c->First))
blockAffectedOnly = false;
}
if(blockAffectedOnly) {
onlyblockedGeometry[c->Second] = true; // we pre-fix this geometry
}
else {
// we will have to post-analyse the first diagnose result for these geometries
// in order to avoid redundant constraints
doesBlockAffectOtherConstraints = true;
blockedGeoIds.push_back(*geoit);
}
}
}
}
}
return doesBlockAffectOtherConstraints;
}
int Sketch::setUpSketch(const std::vector<Part::Geometry *> &GeoList,
const std::vector<Constraint *> &ConstraintList,
int extGeoCount)
@@ -144,13 +223,43 @@ int Sketch::setUpSketch(const std::vector<Part::Geometry *> &GeoList,
for (int i=int(GeoList.size())-extGeoCount; i < int(GeoList.size()); i++)
extGeoList.push_back(GeoList[i]);
std::vector<bool> blockedGeometry(intGeoList.size(),false); // these geometries are blocked, frozen and sent as fixed parameters to the solver
std::vector<bool> onlyBlockedGeometry(intGeoList.size(),false); // these geometries are blocked, frozen and sent as fixed parameters to the solver
std::vector<bool> unenforceableConstraints(ConstraintList.size(),false); // these constraints are unenforceable due to a Blocked constraint
/* This implements the old block constraint. I have decided not to remove it at this time while the new is tested, just in case the change
* needs to be reverted */
/*if(!intGeoList.empty())
getBlockedGeometry(blockedGeometry, unenforceableConstraints, ConstraintList);*/
addGeometry(intGeoList,blockedGeometry);
// Pre-analysis of blocked geometry (new block constraint) to fix geometry only affected by a block constraint (see comment in Sketch.h)
std::vector<int> blockedGeoIds;
bool doesBlockAffectOtherConstraints = analyseBlockedGeometry( intGeoList,
ConstraintList,
onlyBlockedGeometry,
blockedGeoIds);
#ifdef DEBUG_BLOCK_CONSTRAINT
if(doesBlockAffectOtherConstraints)
Base::Console().Log("\n Block interferes with other constraints: Post-analysis required");
Base::Console().Log("\nOnlyBlocked GeoIds:");
size_t i = 0;
for(; i < onlyBlockedGeometry.size(); i++) {
if(onlyBlockedGeometry[i])
Base::Console().Log("\n GeoId=%d", i);
}
if( i == 0)
Base::Console().Log("\n None");
Base::Console().Log("\nNotOnlyBlocked GeoIds:");
i = 0;
for(; i < blockedGeoIds.size(); i++)
Base::Console().Log("\n GeoId=%d", blockedGeoIds[i]);
if( i == 0)
Base::Console().Log("\n None");
#endif //DEBUG_BLOCK_CONSTRAINT
addGeometry(intGeoList,onlyBlockedGeometry);
int extStart=Geoms.size();
addGeometry(extGeoList, true);
int extEnd=Geoms.size()-1;
@@ -165,158 +274,43 @@ int Sketch::setUpSketch(const std::vector<Part::Geometry *> &GeoList,
GCSsys.declareUnknowns(Parameters);
GCSsys.declareDrivenParams(DrivenParameters);
GCSsys.initSolution(defaultSolverRedundant);
GCSsys.getConflicting(Conflicting);
GCSsys.getRedundant(Redundant);
GCSsys.getDependentParams(pDependentParametersList);
calculateDependentParametersElements();
// Post-analysis
// Now that we have all the parameters information, we deal properly with the block constraints if necessary
if(doesBlockAffectOtherConstraints) {
// Now that we have all the parameters information, we deal properly with the block constraint
bool isSomethingBlocked = false;
std::vector<int> blockedGeoIds;
int geoindex = 0;
for(auto & g : Geoms) {
if(!g.external && GeometryFacade::getBlocked(g.geo)) {
isSomethingBlocked = true;
blockedGeoIds.push_back(geoindex);
}
geoindex++;
}
if(isSomethingBlocked) {
// 0. look for internal geometry linked IAs
for(auto c : ConstraintList) {
if(c->Type == InternalAlignment) {
auto geoit = std::find(blockedGeoIds.begin(),blockedGeoIds.end(),c->Second);
if(geoit != blockedGeoIds.end()) { // internal alignment geometry found, add to list
blockedGeoIds.push_back(*geoit);
}
}
}
// 1. Look what needs blocking
std::vector<double *> params_to_block;
std::vector < std::set < double*>> groups;
GCSsys.getDependentParamsGroups(groups);
if(GCSsys.isEmptyDiagnoseMatrix()) { // special case in which no other driving constraint is in the system
for(auto geoid : blockedGeoIds) {
switch(Geoms[geoid].type) {
case Point:
params_to_block.push_back(Points[Geoms[geoid].index].x);
params_to_block.push_back(Points[Geoms[geoid].index].y);
break;
case Line:
Lines[Geoms[geoid].index].PushOwnParams(params_to_block);
break;
case Arc:
Arcs[Geoms[geoid].index].PushOwnParams(params_to_block);
break;
case Circle:
Circles[Geoms[geoid].index].PushOwnParams(params_to_block);
break;
case Ellipse:
Ellipses[Geoms[geoid].index].PushOwnParams(params_to_block);
break;
case ArcOfEllipse:
ArcsOfEllipse[Geoms[geoid].index].PushOwnParams(params_to_block);
break;
case ArcOfHyperbola:
ArcsOfHyperbola[Geoms[geoid].index].PushOwnParams(params_to_block);
break;
case ArcOfParabola:
ArcsOfParabola[Geoms[geoid].index].PushOwnParams(params_to_block);
break;
case BSpline:
BSplines[Geoms[geoid].index].PushOwnParams(params_to_block);
break;
case None:
break;
}
bool unsatisfied_groups = analyseBlockedConstraintDependentParameters(blockedGeoIds, params_to_block);
// I am unsure if more than one QR iterations are needed with the current implementation.
//
// With previous implementations mostly one QR iteration was enough, but if block constraint is abused, more
// iterations were needed.
int index = 0;
while(unsatisfied_groups) {
// We tried hard not to arrive to an unsatisfied group, so we try harder
// This loop has the advantage that the user will notice increased effort to solve,
// so may understand he is abusing the block constraint, while guaranteing that wrong
// behaviour of the block constraint is not undetected.
// Another QR iteration
fixParametersAndDiagnose(params_to_block);
unsatisfied_groups = analyseBlockedConstraintDependentParameters(blockedGeoIds,params_to_block);
if (debugMode==GCS::IterationLevel) {
Base::Console().Log("Sketcher::setUpSketch()-BlockConstraint-PostAnalysis:%d\n",index);
}
index++;
}
else {
#ifdef DEBUG_BLOCK_CONSTRAINT
for(size_t i = 0; i < groups.size(); i++) {
Base::Console().Log("\nDepParams: Group %d:",i);
for(size_t j = 0; j < groups[i].size(); j++)
Base::Console().Log("\n Param=%x ,GeoId=%d, GeoPos=%d",
param2geoelement.find(*std::next(groups[i].begin(), j))->first,
param2geoelement.find(*std::next(groups[i].begin(), j))->second.first,
param2geoelement.find(*std::next(groups[i].begin(), j))->second.second);
}
#endif //DEBUG_BLOCK_CONSTRAINT
for(size_t i = 0; i < groups.size(); i++) {
for(size_t j = 0; j < groups[i].size(); j++) {
double * thisparam = *std::next(groups[i].begin(), j);
auto element = param2geoelement.find(thisparam);
if (element != param2geoelement.end()) {
auto blocked = std::find(blockedGeoIds.begin(),blockedGeoIds.end(),element->second.first);
if( blocked != blockedGeoIds.end()) {
// This dependent parameter group contains a parameter that should be blocked.
//
// One parameter per group is enough to fix the group, but it must be a different one for each group or
// it will create a different dependency group
auto already_in = std::find(params_to_block.begin(),params_to_block.end(), thisparam);
if( already_in == params_to_block.end()) {
params_to_block.push_back(thisparam);
#ifdef DEBUG_BLOCK_CONSTRAINT
Base::Console().Log("\nBlocking: Param=%x ,GeoId=%d, GeoPos=%d",
element->first,
element->second.first,
element->second.second);
#endif //DEBUG_BLOCK_CONSTRAINT
break;
}
}
}
}
}
} // if(!GCSsys.isEmptyDiagnoseMatrix())
// 2. If something needs blocking, block-it
if(params_to_block.size() > 0) {
for( auto p : params_to_block ) {
auto findparam = std::find(Parameters.begin(),Parameters.end(), p);
if(findparam != Parameters.end()) {
FixParameters.push_back(*findparam);
Parameters.erase(findparam);
}
}
pDependencyGroups.clear();
clearTemporaryConstraints();
GCSsys.invalidatedDiagnosis();
GCSsys.declareUnknowns(Parameters);
GCSsys.declareDrivenParams(DrivenParameters);
GCSsys.initSolution(defaultSolverRedundant);
GCSsys.getConflicting(Conflicting);
GCSsys.getRedundant(Redundant);
GCSsys.getDependentParams(pDependentParametersList);
calculateDependentParametersElements();
fixParametersAndDiagnose(params_to_block);
#ifdef DEBUG_BLOCK_CONSTRAINT
std::vector < std::set < double*>> groups;
if(params_to_block.size() > 0) {
std::vector < std::vector < double*>> groups;
GCSsys.getDependentParamsGroups(groups);
// Debug code block
@@ -328,10 +322,17 @@ int Sketch::setUpSketch(const std::vector<Part::Geometry *> &GeoList,
param2geoelement.find(*std::next(groups[i].begin(), j))->second.first,
param2geoelement.find(*std::next(groups[i].begin(), j))->second.second);
}
#endif //DEBUG_BLOCK_CONSTRAINT
}
#endif //DEBUG_BLOCK_CONSTRAINT
}
// Now we set the Sketch status with the latest solver information
GCSsys.getConflicting(Conflicting);
GCSsys.getRedundant(Redundant);
GCSsys.getDependentParams(pDependentParametersList);
calculateDependentParametersElements();
if (debugMode==GCS::Minimal || debugMode==GCS::IterationLevel) {
Base::TimeInfo end_time;
@@ -341,6 +342,112 @@ int Sketch::setUpSketch(const std::vector<Part::Geometry *> &GeoList,
return GCSsys.dofsNumber();
}
void Sketch::fixParametersAndDiagnose(std::vector<double *> &params_to_block)
{
if(params_to_block.size() > 0) { // only there are parameters to fix
for( auto p : params_to_block ) {
auto findparam = std::find(Parameters.begin(),Parameters.end(), p);
if(findparam != Parameters.end()) {
FixParameters.push_back(*findparam);
Parameters.erase(findparam);
}
}
pDependencyGroups.clear();
clearTemporaryConstraints();
GCSsys.invalidatedDiagnosis();
GCSsys.declareUnknowns(Parameters);
GCSsys.declareDrivenParams(DrivenParameters);
GCSsys.initSolution(defaultSolverRedundant);
/*GCSsys.getConflicting(Conflicting);
GCSsys.getRedundant(Redundant);
GCSsys.getDependentParams(pDependentParametersList);
calculateDependentParametersElements();*/
}
}
bool Sketch::analyseBlockedConstraintDependentParameters(std::vector<int> &blockedGeoIds, std::vector<double *> &params_to_block) const
{
// 1. Retrieve solver information
std::vector < std::vector < double*>> groups;
GCSsys.getDependentParamsGroups(groups);
// 2. Determine blockable parameters for each group (see documentation in header file).
struct group {
std::vector<double *> blockable_params_in_group;
double * blocking_param_in_group = nullptr;
};
std::vector<group> prop_groups(groups.size());
#ifdef DEBUG_BLOCK_CONSTRAINT
for(size_t i = 0; i < groups.size(); i++) {
Base::Console().Log("\nDepParams: Group %d:",i);
for(size_t j = 0; j < groups[i].size(); j++)
Base::Console().Log("\n Param=%x ,GeoId=%d, GeoPos=%d",
param2geoelement.find(*std::next(groups[i].begin(), j))->first,
param2geoelement.find(*std::next(groups[i].begin(), j))->second.first,
param2geoelement.find(*std::next(groups[i].begin(), j))->second.second);
}
#endif //DEBUG_BLOCK_CONSTRAINT
for(size_t i = 0; i < groups.size(); i++) {
for(size_t j = 0; j < groups[i].size(); j++) {
double * thisparam = *std::next(groups[i].begin(), j);
auto element = param2geoelement.find(thisparam);
if (element != param2geoelement.end()) {
auto blockable = std::find(blockedGeoIds.begin(),blockedGeoIds.end(),element->second.first);
if( blockable != blockedGeoIds.end()) {
// This dependent parameter group contains at least one parameter that should be blocked, so added to the blockable list.
prop_groups[i].blockable_params_in_group.push_back(thisparam);
}
}
}
}
// 3. Apply heuristic - pick the last blockable param available to block the group, starting from the last group
for(size_t i = prop_groups.size(); i--> 0;) {
for(size_t j = prop_groups[i].blockable_params_in_group.size(); j-->0; ) {
// check if parameter is already satisfying one group
double * thisparam = prop_groups[i].blockable_params_in_group[j];
auto pos = std::find(params_to_block.begin(), params_to_block.end(), thisparam);
if( pos == params_to_block.end()) { // not found, so add
params_to_block.push_back(thisparam);
prop_groups[i].blocking_param_in_group = thisparam;
#ifdef DEBUG_BLOCK_CONSTRAINT
Base::Console().Log("\nTentatively blocking group %d, with param=%x", i, thisparam);
#endif //DEBUG_BLOCK_CONSTRAINT
break;
}
}
}
// 4. Check if groups are satisfied or are licitly unsatisfiable and thus deemed as satisfied
bool unsatisfied_groups = false;
for(size_t i = 0; i < prop_groups.size(); i++) {
// 4.1. unsatisfiable group
if(prop_groups[i].blockable_params_in_group.size() == 0) {
// this group does not contain any blockable parameter, so it is by definition satisfied (or impossible to satisfy by block constraints)
continue;
}
// 4.2. satisfiable and not satisfied
if(prop_groups[i].blocking_param_in_group == nullptr) {
unsatisfied_groups = true;
}
}
return unsatisfied_groups;
}
void Sketch::clearTemporaryConstraints(void)
{
GCSsys.clearByTag(GCS::DefaultTemporaryConstraint);
@@ -390,7 +497,7 @@ void Sketch::calculateDependentParametersElements(void)
}
}
std::vector < std::set < double*>> groups;
std::vector < std::vector < double*>> groups;
GCSsys.getDependentParamsGroups(groups);
pDependencyGroups.resize(groups.size());
@@ -399,7 +506,7 @@ void Sketch::calculateDependentParametersElements(void)
for(size_t i = 0; i < groups.size(); i++) {
for(size_t j = 0; j < groups[i].size(); j++) {
auto element = param2geoelement.find(*std::next(groups[i].begin(), j));
auto element = param2geoelement.find(groups[i][j]);
if (element != param2geoelement.end()) {
pDependencyGroups[i].insert(element->second);
+65
View File
@@ -499,6 +499,71 @@ private:
int checkGeoId(int geoId) const;
GCS::Curve* getGCSCurveByGeoId(int geoId);
const GCS::Curve* getGCSCurveByGeoId(int geoId) const;
// Block constraints
/** This function performs a pre-analysis of blocked geometries, separating them into:
*
* 1) onlyblockedGeometry : Geometries affected exclusively by a block constraint.
*
* 2) blockedGeoIds : Geometries affected notonly by a block constraint.
*
* This is important because 1) can be pre-fixed when creating geometry and constraints
* before GCS::diagnose() via initSolution(). This is important because if no other constraint
* affect the geometry, the geometry parameters won't even appear in the Jacobian, and they won't
* be reported as dependent parameters.
*
* On the contrary 2) cannot be pre-fixed because it would lead to redundant constraints and requires
* a post-analysis, see analyseBlockedConstraintDependentParameters, to fix just the parameters that
* fulfil the dependacy groups.
*/
bool analyseBlockedGeometry( const std::vector<Part::Geometry *> &internalGeoList,
const std::vector<Constraint *> &constraintList,
std::vector<bool> &onlyblockedGeometry,
std::vector<int> &blockedGeoIds) const;
/* This function performs a post-analysis of blocked geometries (see analyseBlockedGeometry for more detail
* on the pre-analysis).
*
* Basically identifies which parameters shall be fixed to make geometries having blocking constraints fixed,
* while not leading to redundant/conflicting constraints. These parameters must belong to blocked geometry. This
* is, groups may comprise parameters belonging to blocked geometry and parameters belonging to unconstrained geometry.
* It is licit that the latter remain as dependent parameters. The former are referred to as "blockable parameters".
*
* Extending this concept, there may be unsatisfiable groups (because they do not comprise any bloackable parameter),
* and it is the desired outcome NOT to satisfy such groups.
*
* There is not a single combination of fixed parameters from the blockable parameters that satisfy all the dependency
* groups. However:
*
* 1) some combinations do not satisfy all the dependency groups that must be satisfied (e.g. fixing one
* group containing two blockable parameters with a given one may result in another group, fixable only by the former, not
* to be satisfied). This leads, in a subsequent diagnosis, to satisfiable unsatisfied groups.
*
* 2) some combinations lead to partially redundant constraints, that the solver will silently drop in a subsequent diagnosis,
* thereby reducing the rank of the system fixing less than it should.
*
* Implementation rationale (at this time):
*
* The implementation is on the order of the groups provided by the QR decomposition used to reveal the parameters
* (see System::identifyDependentParameters in GCS). Zeros are made over the pilot of the full R matrix of the QR decomposition,
* which is a top triangular matrix.This, together with the permutation matrix, allow to know groups of dependent parameters
* (cols between rank and full size). Each group refers to a new parameter not affected by the rank in combination with other free
* parameters intervening in the rank (because of the triangular shape of the R matrix). This results in that each the first column
* between the rank and the full size, may only depend on a number of parameters, while the last full size colum may dependent on
* any amount of previously introduced parameters.
*
* Thus the rationale is start from the last group (having **potentially** the larger amount of parameters) and selecting as blocking
* for that group the latest blockable parameter. Because previous groups do not have access to the last parameter, this can never
* interfere with previous groups. However, because the last parameter may not be a blockable one, there is a risk of selecting a parameter
* common with other group, albeit the probability is reduced and probably (I have not demonstrated it though and I am not sure), it leads
* to the right solution in one iteration.
*
*/
bool analyseBlockedConstraintDependentParameters(std::vector<int> &blockedGeoIds, std::vector<double *> &params_to_block) const;
/// utility function refactoring fixing the provided parameters and running a new diagnose
void fixParametersAndDiagnose(std::vector<double *> &params_to_block);
};
} //namespace Part
+33 -5
View File
@@ -98,7 +98,7 @@
#include <FCConfig.h>
#include <Base/Console.h>
#include <boost/graph/adjacency_list.hpp>
#include <boost_graph_adjacency_list.hpp>
#include <boost/graph/connected_components.hpp>
typedef Eigen::FullPivHouseholderQR<Eigen::MatrixXd>::IntDiagSizeVectorType MatrixIndexType;
@@ -226,6 +226,7 @@ public:
void LogQRSystemInformation(const System &system, int paramsNum = 0, int constrNum = 0, int rank = 0);
void LogGroupOfConstraints(const std::string & str, std::vector< std::vector<Constraint *> > constraintgroups);
void LogGroupOfParameters(const std::string & str, std::vector< std::vector<double *> > parametergroups);
void LogMatrix(const std::string str, Eigen::MatrixXd matrix);
void LogMatrix(const std::string str, MatrixIndexType matrix);
@@ -367,6 +368,23 @@ void SolverReportingManager::LogGroupOfConstraints(const std::string & str, std:
LogString(tempstream.str());
}
void SolverReportingManager::LogGroupOfParameters(const std::string & str, std::vector< std::vector<double *> > parametergroups)
{
std::stringstream tempstream;
tempstream << str << ":" << '\n';
for(size_t i = 0; i < parametergroups.size(); i++) {
tempstream << "[";
for(auto p : parametergroups[i])
tempstream << std::hex << p << " ";
tempstream << "]" << '\n';
}
LogString(tempstream.str());
}
#ifdef _GCS_DEBUG
void SolverReportingManager::LogMatrix(const std::string str, Eigen::MatrixXd matrix)
@@ -4017,9 +4035,9 @@ SolverReportingManager::Manager().LogToFile("GCS::System::diagnose()\n");
//
// Debug:
// auto fut = std::async(std::launch::deferred,&System::identifyDependentParametersSparseQR,this,J,jacobianconstraintmap, pdiagnoselist, false);
auto fut = std::async(&System::identifyDependentParametersSparseQR,this,J,jacobianconstraintmap, pdiagnoselist, false);
auto fut = std::async(&System::identifyDependentParametersSparseQR,this,J,jacobianconstraintmap, pdiagnoselist, /*silent=*/true);
makeSparseQRDecomposition( J, jacobianconstraintmap, SqrJT, rank, R);
makeSparseQRDecomposition( J, jacobianconstraintmap, SqrJT, rank, R, /*transposed=*/true, /*silent=*/false);
int paramsNum = SqrJT.rows();
int constrNum = SqrJT.cols();
@@ -4260,21 +4278,31 @@ void System::identifyDependentParameters( T & qrJ,
if(!silent)
SolverReportingManager::Manager().LogMatrix("Rparams_nonzeros_over_pilot", Rparams);
#endif
pDependentParametersGroups.resize(qrJ.cols()-rank);
for (int j=rank; j < qrJ.cols(); j++) {
for (int row=0; row < rank; row++) {
if (fabs(Rparams(row,j)) > 1e-10) {
int origCol = qrJ.colsPermutation().indices()[row];
pDependentParametersGroups[j-rank].insert(pdiagnoselist[origCol]);
pDependentParametersGroups[j-rank].push_back(pdiagnoselist[origCol]);
pDependentParameters.push_back(pdiagnoselist[origCol]);
}
}
int origCol = qrJ.colsPermutation().indices()[j];
pDependentParametersGroups[j-rank].insert(pdiagnoselist[origCol]);
pDependentParametersGroups[j-rank].push_back(pdiagnoselist[origCol]);
pDependentParameters.push_back(pdiagnoselist[origCol]);
}
#ifdef _GCS_DEBUG
if(!silent) {
SolverReportingManager::Manager().LogMatrix("PermMatrix", (Eigen::MatrixXd)qrJ.colsPermutation());
SolverReportingManager::Manager().LogGroupOfParameters("ParameterGroups",pDependentParametersGroups);
}
#endif
}
void System::identifyDependentGeometryParametersInTransposedJacobianDenseQRDecomposition(
+2 -2
View File
@@ -106,7 +106,7 @@ namespace GCS
// This is a map of primary and secondary identifiers that are found dependent by the solver
// GCS ignores from a type point
std::vector< std::set<double *> > pDependentParametersGroups;
std::vector< std::vector<double *> > pDependentParametersGroups;
std::vector<Constraint *> clist;
std::map<Constraint *,VEC_pD > c2p; // constraint to parameter adjacency list
@@ -363,7 +363,7 @@ namespace GCS
{ redundantOut = hasDiagnosis ? redundantTags : VEC_I(0); }
void getDependentParams(VEC_pD &pdependentparameterlist) const
{ pdependentparameterlist = pDependentParameters;}
void getDependentParamsGroups(std::vector<std::set<double *>> &pdependentparametergroups) const
void getDependentParamsGroups(std::vector<std::vector<double *>> &pdependentparametergroups) const
{ pdependentparametergroups = pDependentParametersGroups;}
bool isEmptyDiagnoseMatrix() const {return emptyDiagnoseMatrix;}
void invalidatedDiagnosis();
+81 -81
View File
@@ -145,13 +145,13 @@ bool SketcherGui::checkBothExternal(int GeoId1, int GeoId2)
return (GeoId1 < 0 && GeoId2 < 0);
}
bool SketcherGui::checkBothExternalOrConstructionPoints(const Sketcher::SketchObject* Obj,int GeoId1, int GeoId2)
bool SketcherGui::checkBothExternalOrBSplinePoints(const Sketcher::SketchObject* Obj,int GeoId1, int GeoId2)
{
if (GeoId1 == Constraint::GeoUndef || GeoId2 == Constraint::GeoUndef)
return false;
else
return (GeoId1 < 0 && GeoId2 < 0) || (isConstructionPoint(Obj,GeoId1) && isConstructionPoint(Obj,GeoId2)) ||
(GeoId1 < 0 && isConstructionPoint(Obj,GeoId2)) || (GeoId2 < 0 && isConstructionPoint(Obj,GeoId1));
return (GeoId1 < 0 && GeoId2 < 0) || (isBsplineKnot(Obj,GeoId1) && isBsplineKnot(Obj,GeoId2)) ||
(GeoId1 < 0 && isBsplineKnot(Obj,GeoId2)) || (GeoId2 < 0 && isBsplineKnot(Obj,GeoId1));
}
bool SketcherGui::isPointOrSegmentFixed(const Sketcher::SketchObject* Obj, int GeoId)
@@ -161,7 +161,7 @@ bool SketcherGui::isPointOrSegmentFixed(const Sketcher::SketchObject* Obj, int G
if (GeoId == Constraint::GeoUndef)
return false;
else
return checkConstraint(vals, Sketcher::Block, GeoId, Sketcher::none) || GeoId <= Sketcher::GeoEnum::RtPnt || isConstructionPoint(Obj,GeoId);
return checkConstraint(vals, Sketcher::Block, GeoId, Sketcher::none) || GeoId <= Sketcher::GeoEnum::RtPnt || isBsplineKnot(Obj,GeoId);
}
bool SketcherGui::areBothPointsOrSegmentsFixed(const Sketcher::SketchObject* Obj, int GeoId1, int GeoId2)
@@ -171,8 +171,8 @@ bool SketcherGui::areBothPointsOrSegmentsFixed(const Sketcher::SketchObject* Obj
if (GeoId1 == Constraint::GeoUndef || GeoId2 == Constraint::GeoUndef)
return false;
else
return ((checkConstraint(vals, Sketcher::Block, GeoId1, Sketcher::none) || GeoId1 <= Sketcher::GeoEnum::RtPnt || isConstructionPoint(Obj,GeoId1)) &&
(checkConstraint(vals, Sketcher::Block, GeoId2, Sketcher::none) || GeoId2 <= Sketcher::GeoEnum::RtPnt || isConstructionPoint(Obj,GeoId2)));
return ((checkConstraint(vals, Sketcher::Block, GeoId1, Sketcher::none) || GeoId1 <= Sketcher::GeoEnum::RtPnt || isBsplineKnot(Obj,GeoId1)) &&
(checkConstraint(vals, Sketcher::Block, GeoId2, Sketcher::none) || GeoId2 <= Sketcher::GeoEnum::RtPnt || isBsplineKnot(Obj,GeoId2)));
}
bool SketcherGui::areAllPointsOrSegmentsFixed(const Sketcher::SketchObject* Obj, int GeoId1, int GeoId2, int GeoId3)
@@ -182,9 +182,9 @@ bool SketcherGui::areAllPointsOrSegmentsFixed(const Sketcher::SketchObject* Obj,
if (GeoId1 == Constraint::GeoUndef || GeoId2 == Constraint::GeoUndef || GeoId3 == Constraint::GeoUndef)
return false;
else
return ((checkConstraint(vals, Sketcher::Block, GeoId1, Sketcher::none) || GeoId1 <= Sketcher::GeoEnum::RtPnt || isConstructionPoint(Obj,GeoId1)) &&
(checkConstraint(vals, Sketcher::Block, GeoId2, Sketcher::none) || GeoId2 <= Sketcher::GeoEnum::RtPnt || isConstructionPoint(Obj,GeoId2)) &&
(checkConstraint(vals, Sketcher::Block, GeoId3, Sketcher::none) || GeoId3 <= Sketcher::GeoEnum::RtPnt || isConstructionPoint(Obj,GeoId3)));
return ((checkConstraint(vals, Sketcher::Block, GeoId1, Sketcher::none) || GeoId1 <= Sketcher::GeoEnum::RtPnt || isBsplineKnot(Obj,GeoId1)) &&
(checkConstraint(vals, Sketcher::Block, GeoId2, Sketcher::none) || GeoId2 <= Sketcher::GeoEnum::RtPnt || isBsplineKnot(Obj,GeoId2)) &&
(checkConstraint(vals, Sketcher::Block, GeoId3, Sketcher::none) || GeoId3 <= Sketcher::GeoEnum::RtPnt || isBsplineKnot(Obj,GeoId3)));
}
void SketcherGui::getIdsFromName(const std::string &name, const Sketcher::SketchObject* Obj,
@@ -235,10 +235,10 @@ bool SketcherGui::isSimpleVertex(const Sketcher::SketchObject* Obj, int GeoId, P
return false;
}
bool SketcherGui::isConstructionPoint(const Sketcher::SketchObject* Obj, int GeoId)
bool SketcherGui::isBsplineKnot(const Sketcher::SketchObject* Obj, int GeoId)
{
const Part::Geometry * geo = Obj->getGeometry(GeoId);
return (geo && geo->getTypeId() == Part::GeomPoint::getClassTypeId() && GeometryFacade::getConstruction(geo));
auto gf = Obj->getGeometryFacade(GeoId);
return (gf && gf->getInternalType() == Sketcher::InternalType::BSplineKnotPoint);
}
bool SketcherGui::IsPointAlreadyOnCurve(int GeoIdCurve, int GeoIdPoint, Sketcher::PointPos PosIdPoint, Sketcher::SketchObject* Obj)
@@ -1194,81 +1194,81 @@ void CmdSketcherConstrainHorizontal::applyConstraint(std::vector<SelIdPair> &sel
Sketcher::SketchObject* Obj = sketchgui->getSketchObject();
switch (seqIndex) {
case 0: // {Edge}
{
// create the constraint
const std::vector< Sketcher::Constraint * > &vals = Obj->Constraints.getValues();
case 0: // {Edge}
{
// create the constraint
const std::vector< Sketcher::Constraint * > &vals = Obj->Constraints.getValues();
int CrvId = selSeq.front().GeoId;
if (CrvId != -1) {
const Part::Geometry *geo = Obj->getGeometry(CrvId);
if (geo->getTypeId() != Part::GeomLineSegment::getClassTypeId()) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"),
QObject::tr("The selected edge is not a line segment"));
int CrvId = selSeq.front().GeoId;
if (CrvId != -1) {
const Part::Geometry *geo = Obj->getGeometry(CrvId);
if (geo->getTypeId() != Part::GeomLineSegment::getClassTypeId()) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"),
QObject::tr("The selected edge is not a line segment"));
return;
}
// check if the edge already has a Horizontal/Vertical/Block constraint
for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin();
it != vals.end(); ++it) {
if ((*it)->Type == Sketcher::Horizontal && (*it)->First == CrvId && (*it)->FirstPos == Sketcher::none){
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Double constraint"),
QObject::tr("The selected edge already has a horizontal constraint!"));
return;
}
if ((*it)->Type == Sketcher::Vertical && (*it)->First == CrvId && (*it)->FirstPos == Sketcher::none) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"),
QObject::tr("The selected edge already has a vertical constraint!"));
return;
}
// check if the edge already has a Block constraint
if ((*it)->Type == Sketcher::Block && (*it)->First == CrvId && (*it)->FirstPos == Sketcher::none) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"),
QObject::tr("The selected edge already has a Block constraint!"));
return;
}
}
// undo command open
Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add horizontal constraint"));
// issue the actual commands to create the constraint
Gui::cmdAppObjectArgs(sketchgui->getObject(), "addConstraint(Sketcher.Constraint('Horizontal',%d)) ",CrvId);
// finish the transaction and update
Gui::Command::commitCommand();
tryAutoRecompute(Obj);
}
break;
}
case 1 : // {SelVertex, SelVertexOrRoot}
case 2 : // {SelRoot, SelVertex}
{
int GeoId1, GeoId2;
Sketcher::PointPos PosId1, PosId2;
GeoId1 = selSeq.at(0).GeoId; GeoId2 = selSeq.at(1).GeoId;
PosId1 = selSeq.at(0).PosId; PosId2 = selSeq.at(1).PosId;
if ( areBothPointsOrSegmentsFixed(Obj, GeoId1, GeoId2) ) {
showNoConstraintBetweenFixedGeometry();
return;
}
// check if the edge already has a Horizontal/Vertical/Block constraint
for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin();
it != vals.end(); ++it) {
if ((*it)->Type == Sketcher::Horizontal && (*it)->First == CrvId && (*it)->FirstPos == Sketcher::none){
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Double constraint"),
QObject::tr("The selected edge already has a horizontal constraint!"));
return;
}
if ((*it)->Type == Sketcher::Vertical && (*it)->First == CrvId && (*it)->FirstPos == Sketcher::none) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"),
QObject::tr("The selected edge already has a vertical constraint!"));
return;
}
// check if the edge already has a Block constraint
if ((*it)->Type == Sketcher::Block && (*it)->First == CrvId && (*it)->FirstPos == Sketcher::none) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"),
QObject::tr("The selected edge already has a Block constraint!"));
return;
}
}
// undo command open
Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add horizontal constraint"));
Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add horizontal alignment"));
// issue the actual commands to create the constraint
Gui::cmdAppObjectArgs(sketchgui->getObject(), "addConstraint(Sketcher.Constraint('Horizontal',%d)) ",CrvId);
Gui::cmdAppObjectArgs(sketchgui->getObject()
,"addConstraint(Sketcher.Constraint('Horizontal',%d,%d,%d,%d)) "
,GeoId1,PosId1,GeoId2,PosId2);
// finish the transaction and update
Gui::Command::commitCommand();
tryAutoRecompute(Obj);
break;
}
break;
}
case 1 : // {SelVertex, SelVertexOrRoot}
case 2 : // {SelRoot, SelVertex}
{
int GeoId1, GeoId2;
Sketcher::PointPos PosId1, PosId2;
GeoId1 = selSeq.at(0).GeoId; GeoId2 = selSeq.at(1).GeoId;
PosId1 = selSeq.at(0).PosId; PosId2 = selSeq.at(1).PosId;
if ( areBothPointsOrSegmentsFixed(Obj, GeoId1, GeoId2) ) {
showNoConstraintBetweenFixedGeometry();
return;
}
// undo command open
Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add horizontal alignment"));
// issue the actual commands to create the constraint
Gui::cmdAppObjectArgs(sketchgui->getObject()
,"addConstraint(Sketcher.Constraint('Horizontal',%d,%d,%d,%d)) "
,GeoId1,PosId1,GeoId2,PosId2);
// finish the transaction and update
Gui::Command::commitCommand();
tryAutoRecompute(Obj);
break;
}
}
}
@@ -1614,12 +1614,12 @@ void CmdSketcherConstrainLock::activated(int iMsg)
lastconstraintindex+=2;
if (edgeisblocked || GeoId[0] <= Sketcher::GeoEnum::RefExt
|| isConstructionPoint(Obj,GeoId[0])
|| isBsplineKnot(Obj,GeoId[0])
|| constraintCreationMode==Reference) {
// it is a constraint on a external line, make it non-driving
Gui::cmdAppObjectArgs(selection[0].getObject(), "setDriving(%i,%s)",
lastconstraintindex-2,"False");
lastconstraintindex-1,"False");
Gui::cmdAppObjectArgs(selection[0].getObject(), "setDriving(%i,%s)",
lastconstraintindex,"False");
@@ -2409,7 +2409,7 @@ void CmdSketcherConstrainDistance::activated(int iMsg)
// it is a constraint on a external line, make it non-driving
if (arebothpointsorsegmentsfixed || GeoId1 <= Sketcher::GeoEnum::RefExt ||
isConstructionPoint(Obj,GeoId1) || constraintCreationMode==Reference) {
isBsplineKnot(Obj,GeoId1) || constraintCreationMode==Reference) {
const std::vector<Sketcher::Constraint *> &ConStr = Obj->Constraints.getValues();
Gui::cmdAppObjectArgs(selection[0].getObject(), "setDriving(%i,%s)",
@@ -2502,7 +2502,7 @@ void CmdSketcherConstrainDistance::applyConstraint(std::vector<SelIdPair> &selSe
if (arebothpointsorsegmentsfixed
|| GeoId1 <= Sketcher::GeoEnum::RefExt
|| isConstructionPoint(Obj,GeoId1)
|| isBsplineKnot(Obj,GeoId1)
|| constraintCreationMode==Reference) {
// it is a constraint on a external line, make it non-driving
const std::vector<Sketcher::Constraint *> &ConStr = Obj->Constraints.getValues();
@@ -3189,7 +3189,7 @@ void CmdSketcherConstrainDistanceY::activated(int iMsg)
GeoId1,PosId1,ActY);
if (GeoId1 <= Sketcher::GeoEnum::RefExt
|| isConstructionPoint(Obj,GeoId1)
|| isBsplineKnot(Obj,GeoId1)
|| constraintCreationMode==Reference) {
// it is a constraint on a external line, make it non-driving
const std::vector<Sketcher::Constraint *> &ConStr = Obj->Constraints.getValues();
+2 -2
View File
@@ -31,7 +31,7 @@ namespace SketcherGui {
bool checkBothExternal(int GeoId1, int GeoId2);
bool checkBothExternalOrConstructionPoints(const Sketcher::SketchObject* Obj,int GeoId1, int GeoId2);
bool checkBothExternalOrBSplinePoints(const Sketcher::SketchObject* Obj,int GeoId1, int GeoId2);
bool isPointOrSegmentFixed(const Sketcher::SketchObject* Obj, int GeoId);
@@ -47,7 +47,7 @@ bool inline isEdge(int GeoId, Sketcher::PointPos PosId);
bool isSimpleVertex(const Sketcher::SketchObject* Obj, int GeoId, Sketcher::PointPos PosId);
bool isConstructionPoint(const Sketcher::SketchObject* Obj, int GeoId);
bool isBsplineKnot(const Sketcher::SketchObject* Obj, int GeoId);
bool IsPointAlreadyOnCurve(int GeoIdCurve, int GeoIdPoint, Sketcher::PointPos PosIdPoint, Sketcher::SketchObject* Obj);
+1 -1
View File
@@ -32,7 +32,7 @@
#include "TaskSketcherGeneral.h"
#include "TaskSketcherMessages.h"
#include "TaskSketcherSolverAdvanced.h"
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
typedef boost::signals2::connection Connection;
@@ -26,7 +26,7 @@
#include <Gui/TaskView/TaskView.h>
#include <Gui/Selection.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <QListWidget>
namespace App {
+1 -1
View File
@@ -26,7 +26,7 @@
#include <Gui/TaskView/TaskView.h>
#include <Gui/Selection.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <QListWidget>
#include <QIcon>
+1 -1
View File
@@ -26,7 +26,7 @@
#include <Gui/TaskView/TaskView.h>
#include <Gui/Selection.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
class Ui_TaskSketcherGeneral;
+1 -1
View File
@@ -26,7 +26,7 @@
#include <Gui/TaskView/TaskView.h>
#include <Gui/Selection.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
class Ui_TaskSketcherMessages;
typedef boost::signals2::connection Connection;
+1 -1
View File
@@ -33,7 +33,7 @@
#include <Gui/Selection.h>
#include <Gui/GLPainter.h>
#include <App/Part.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <QCoreApplication>
#include <Gui/Document.h>
#include "ShortcutListener.h"
+1 -1
View File
@@ -24,7 +24,7 @@
#ifndef _DrawPage_h_
#define _DrawPage_h_
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <App/DocumentObject.h>
#include <App/DocumentObjectGroup.h>
+1 -1
View File
@@ -23,7 +23,7 @@
#ifndef _DrawView_h_
#define _DrawView_h_
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <QCoreApplication>
#include <QRectF>
+24 -9
View File
@@ -485,7 +485,7 @@ App::DocumentObjectExecReturn *DrawViewDimension::execute(void)
}
m_arcPoints = pts;
m_hasGeometry = true;
} else if(Type.isValue("Angle")){
} else if (Type.isValue("Angle")){
if (getRefType() != twoEdge) {
Base::Console().Log("Error: DVD - %s - 2D references are corrupt\n",getNameInDocument());
return App::DocumentObject::StdReturn;
@@ -529,7 +529,7 @@ App::DocumentObjectExecReturn *DrawViewDimension::execute(void)
pts.vertex = apex;
m_anglePoints = pts;
m_hasGeometry = true;
} else if(Type.isValue("Angle3Pt")){
} else if (Type.isValue("Angle3Pt")){
if (getRefType() != threeVertex) {
Base::Console().Log("Error: DVD - %s - 2D references are corrupt\n",getNameInDocument());
return App::DocumentObject::StdReturn;
@@ -629,8 +629,6 @@ std::string DrawViewDimension::formatValue(qreal value, QString qFormatSpec, int
QString qUserString = asQuantity.getUserString(); // this handles mm to inch/km/parsec etc
// and decimal positions but won't give more than
// Global_Decimals precision
// really should be able to ask units for value
// in appropriate UoM!!
//units api: get schema to figure out if this is multi-value schema(Imperial1, ImperialBuilding, etc)
//if it is multi-unit schema, don't even try to use Alt Decimals
@@ -664,7 +662,7 @@ std::string DrawViewDimension::formatValue(qreal value, QString qFormatSpec, int
formattedValue = qMultiValueStr;
} else {
if (formatSpecifier.isEmpty()) {
Base::Console().Warning("Warning - no numeric format in formatSpec %s - %s\n",
Base::Console().Warning("Warning - no numeric format in Format Spec %s - %s\n",
qPrintable(qFormatSpec), getNameInDocument());
return Base::Tools::toStdString(qFormatSpec);
}
@@ -693,7 +691,16 @@ std::string DrawViewDimension::formatValue(qreal value, QString qFormatSpec, int
// get the conversion factor for the unit
double convertValue = Base::Quantity::parse(QString::fromLatin1("1") + QString::fromStdString(BaseLengthUnit)).getValue();
// the result is now just val / convertValue because val is always in the base unit
double userVal = asQuantity.getValue() / convertValue;
// don't do this for angular values since they are not in the BaseLengthUnit
double userVal;
if (!angularMeasure) {
userVal = asQuantity.getValue() / convertValue;
// since we converted to the BaseLengthUnit we must assure it is also used for qUserStringUnits
qUserStringUnits = QChar::fromLatin1(' ') + QString::fromStdString(BaseLengthUnit);
}
else {
userVal = asQuantity.getValue();
}
// we reformat the value
// the user can overwrite the decimal settings, so we must in every case use the formatSpecifier
@@ -751,7 +758,7 @@ std::string DrawViewDimension::formatValue(qreal value, QString qFormatSpec, int
Base::Tools::toStdString(formatSuffix);
}
else if (partial == 2) { // just the unit
if ((Type.isValue("Angle")) || (Type.isValue("Angle3Pt"))) {
if (angularMeasure) {
// remove space between dimension and unit if unit is not "deg"
if ( !qUserStringUnits.contains(QString::fromLatin1("deg")) ) {
QRegExp space(QString::fromUtf8("\\s"));
@@ -779,8 +786,16 @@ std::pair<std::string, std::string> DrawViewDimension::getFormattedToleranceValu
underTolerance = underFormatSpec;
overTolerance = overFormatSpec;
} else {
underTolerance = QString::fromUtf8(formatValue(UnderTolerance.getValue(), underFormatSpec, partial).c_str());
overTolerance = QString::fromUtf8(formatValue(OverTolerance.getValue(), overFormatSpec, partial).c_str());
if (DrawUtil::fpCompare(UnderTolerance.getValue(), 0.0)) {
underTolerance = QString::fromUtf8(formatValue(UnderTolerance.getValue(), QString::fromUtf8("%.0f"), partial).c_str());
} else {
underTolerance = QString::fromUtf8(formatValue(UnderTolerance.getValue(), underFormatSpec, partial).c_str());
}
if (DrawUtil::fpCompare(OverTolerance.getValue(), 0.0)) {
overTolerance = QString::fromUtf8(formatValue(OverTolerance.getValue(), QString::fromUtf8("%.0f"), partial).c_str());
} else {
overTolerance = QString::fromUtf8(formatValue(OverTolerance.getValue(), overFormatSpec, partial).c_str());
}
}
tolerances.first = underTolerance.toStdString();
+1 -1
View File
@@ -29,7 +29,7 @@
#define TECHDRAW_EDGEWALKER_H
#include <vector>
#include <boost/graph/adjacency_list.hpp>
#include <boost_graph_adjacency_list.hpp>
#include <boost/graph/properties.hpp>
#include <boost/graph/graph_traits.hpp>
#include <boost/property_map/property_map.hpp>
+321 -202
View File
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>460</width>
<height>318</height>
<width>440</width>
<height>333</height>
</rect>
</property>
<property name="windowTitle">
@@ -40,7 +40,95 @@
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout" columnstretch="1,0,1">
<item row="5" column="2">
<item row="3" column="0">
<widget class="Gui::PrefCheckBox" name="cbShowLoose">
<property name="minimumSize">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
<property name="toolTip">
<string>Include 2D Objects in projection</string>
</property>
<property name="text">
<string>Show Loose 2D Geom</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="prefEntry" stdset="0">
<cstring>ShowLoose2d</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/General</cstring>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="Gui::PrefCheckBox" name="cbCrazyEdges">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Include edges with unexpected geometry (zero length etc.) in results</string>
</property>
<property name="text">
<string>Allow Crazy Edges</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>allowCrazyEdge</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/debug</cstring>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_5">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Edge Fuzz</string>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="Gui::PrefLineEdit" name="leFormatSpec">
<property name="minimumSize">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
<property name="toolTip">
<string>Override automatic dimension format</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="prefEntry" stdset="0">
<cstring>formatSpec</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>/Mod/TechDraw/Dimensions</cstring>
</property>
</widget>
</item>
<item row="7" column="2">
<widget class="Gui::PrefComboBox" name="cbEndCap">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
@@ -86,7 +174,136 @@ Only change unless you know what you are doing!</string>
</item>
</widget>
</item>
<item row="6" column="2">
<item row="2" column="2">
<widget class="Gui::PrefCheckBox" name="cbFuseBeforeSection">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="toolTip">
<string>Perform a fuse operation on input shape(s) before Section view processing</string>
</property>
<property name="text">
<string>Fuse Before Section</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>SectionFuseFirst</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/General</cstring>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_3">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Dimension Format</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_7">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Line End Cap Shape</string>
</property>
</widget>
</item>
<item row="2" column="1">
<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>
<item row="1" column="2">
<widget class="Gui::PrefCheckBox" name="cbDebugDetail">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
<property name="toolTip">
<string>Dump intermediate results during Detail view processing</string>
</property>
<property name="text">
<string>Debug Detail</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>debugDetail</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/debugDetail</cstring>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="Gui::PrefCheckBox" name="cbShowSectionEdges">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
<property name="toolTip">
<string>Highlights border of section cut in section views</string>
</property>
<property name="text">
<string>Show Section Edges</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="prefEntry" stdset="0">
<cstring>ShowSectionEdges</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>/Mod/TechDraw/General</cstring>
</property>
</widget>
</item>
<item row="8" column="2">
<widget class="Gui::PrefSpinBox" name="sbMaxTiles">
<property name="minimumSize">
<size>
@@ -122,146 +339,21 @@ Then you need to increase the tile limit.</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="Gui::PrefCheckBox" name="cbDebugDetail">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
<property name="toolTip">
<string>Dump intermediate results during Detail view processing</string>
</property>
<item row="8" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Debug Detail</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>debugDetail</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/debugDetail</cstring>
<string>Max SVG Hatch Tiles</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="Gui::PrefCheckBox" name="cbShowLoose">
<property name="minimumSize">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
<property name="toolTip">
<string>Include 2D Objects in projection</string>
</property>
<item row="9" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Show Loose 2D Geom</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="prefEntry" stdset="0">
<cstring>ShowLoose2d</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/General</cstring>
<string>Max PAT Hatch Segments</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="Gui::PrefCheckBox" name="cbDebugSection">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Dump intermediate results during Section view processing</string>
</property>
<property name="text">
<string>Debug Section</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>debugSection</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/debug</cstring>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="Gui::PrefCheckBox" name="cbFuseBeforeSection">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="toolTip">
<string>Perform a fuse operation on input shape(s) before Section view processing</string>
</property>
<property name="text">
<string>Fuse Before Section</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>SectionFuseFirst</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/General</cstring>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="Gui::PrefCheckBox" name="cbShowSectionEdges">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
<property name="toolTip">
<string>Highlights border of section cut in section views</string>
</property>
<property name="text">
<string>Show Section Edges</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="prefEntry" stdset="0">
<cstring>ShowSectionEdges</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>/Mod/TechDraw/General</cstring>
</property>
</widget>
</item>
<item row="7" column="2">
<item row="9" column="2">
<widget class="Gui::PrefSpinBox" name="sbMaxPat">
<property name="minimumSize">
<size>
@@ -296,15 +388,25 @@ when hatching a face with a PAT pattern</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_7">
<property name="font">
<font>
<italic>true</italic>
</font>
<item row="1" column="0">
<widget class="Gui::PrefCheckBox" name="cbDebugSection">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Dump intermediate results during Section view processing</string>
</property>
<property name="text">
<string>Line End Cap Shape</string>
<string>Debug Section</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>debugSection</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/debug</cstring>
</property>
</widget>
</item>
@@ -336,86 +438,98 @@ can be a performance penalty in complex models.</string>
</property>
</widget>
</item>
<item row="2" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="minimumSize">
<size>
<width>40</width>
<height>20</height>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
<property name="text">
<string>Mark Fuzz</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="Gui::PrefCheckBox" name="cbCrazyEdges">
<item row="4" column="2">
<widget class="Gui::PrefDoubleSpinBox" name="pdsbEdgeFuzz">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Include edges with unexpected geometry (zero length etc.) in results</string>
</property>
<property name="text">
<string>Allow Crazy Edges</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>allowCrazyEdge</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/debug</cstring>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Max SVG Hatch Tiles</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Max PAT Hatch Segments</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_3">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Dimension Format</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="Gui::PrefLineEdit" name="leFormatSpec">
<property name="minimumSize">
<size>
<width>174</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>20</height>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Override automatic dimension format</string>
<string>Size of selection area around edges
Each unit is approx. 0.1 mm wide</string>
</property>
<property name="statusTip">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="value">
<double>10.000000000000000</double>
</property>
<property name="prefEntry" stdset="0">
<cstring>formatSpec</cstring>
<cstring>EdgeFuzz</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>/Mod/TechDraw/Dimensions</cstring>
<cstring>Mod/TechDraw/General</cstring>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="Gui::PrefDoubleSpinBox" name="pdsbMarkFuzz">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>174</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Selection area around center marks
Each unit is approx. 0.1 mm wide</string>
</property>
<property name="statusTip">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="value">
<double>5.000000000000000</double>
</property>
<property name="prefEntry" stdset="0">
<cstring>MarkFuzz</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/General</cstring>
</property>
</widget>
</item>
@@ -450,8 +564,8 @@ can be a performance penalty in complex models.</string>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
<width>17</width>
<height>1</height>
</size>
</property>
</spacer>
@@ -479,6 +593,11 @@ can be a performance penalty in complex models.</string>
<extends>QLineEdit</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefDoubleSpinBox</class>
<extends>QDoubleSpinBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="Resources/TechDraw.qrc"/>
@@ -45,32 +45,36 @@ DlgPrefsTechDrawAdvancedImp::~DlgPrefsTechDrawAdvancedImp()
void DlgPrefsTechDrawAdvancedImp::saveSettings()
{
ui->cbEndCap->onSave();
ui->cbCrazyEdges->onSave();
ui->cbDebugSection->onSave();
ui->cbDetectFaces->onSave();
ui->cbDebugDetail->onSave();
ui->cbDetectFaces->onSave();
ui->cbShowSectionEdges->onSave();
ui->cbDebugSection->onSave();
ui->cbDebugDetail->onSave();
ui->cbCrazyEdges->onSave();
ui->cbFuseBeforeSection->onSave();
ui->cbShowLoose->onSave();
ui->pdsbEdgeFuzz->onSave();
ui->pdsbMarkFuzz->onSave();
ui->leFormatSpec->onSave();
ui->cbEndCap->onSave();
ui->sbMaxTiles->onSave();
ui->sbMaxPat->onSave();
ui->cbShowLoose->onSave();
ui->leFormatSpec->onSave();
}
void DlgPrefsTechDrawAdvancedImp::loadSettings()
{
ui->cbEndCap->onRestore();
ui->cbCrazyEdges->onRestore();
ui->cbDebugSection->onRestore();
ui->cbDetectFaces->onRestore();
ui->cbDebugDetail->onRestore();
ui->cbShowSectionEdges->onRestore();
ui->cbDebugSection->onRestore();
ui->cbDebugDetail->onRestore();
ui->cbCrazyEdges->onRestore();
ui->cbFuseBeforeSection->onRestore();
ui->cbShowLoose->onRestore();
ui->pdsbEdgeFuzz->onRestore();
ui->pdsbMarkFuzz->onRestore();
ui->leFormatSpec->onRestore();
ui->cbEndCap->onRestore();
ui->sbMaxTiles->onRestore();
ui->sbMaxPat->onRestore();
ui->cbShowLoose->onRestore();
ui->leFormatSpec->onRestore();
}
/**
@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>415</width>
<width>440</width>
<height>447</height>
</rect>
</property>
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>460</width>
<height>343</height>
<width>440</width>
<height>342</height>
</rect>
</property>
<property name="sizePolicy">
+183 -257
View File
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>460</width>
<height>403</height>
<width>440</width>
<height>336</height>
</rect>
</property>
<property name="sizePolicy">
@@ -46,19 +46,6 @@
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_16">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Standard and Style</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="Gui::PrefComboBox" name="pcbStandardAndStyle">
<property name="sizePolicy">
@@ -104,30 +91,101 @@
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="Gui::PrefCheckBox" name="cbGlobalDecimals">
<item row="6" column="0">
<widget class="QLabel" name="label_9">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Arrow Style</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_16">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Standard and Style</string>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="Gui::PrefComboBox" name="pcbArrow">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>22</height>
</size>
</property>
<property name="toolTip">
<string>Arrowhead style</string>
</property>
<property name="currentIndex">
<number>-1</number>
</property>
<property name="prefEntry" stdset="0">
<cstring>ArrowStyle</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/Dimensions</cstring>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_12">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Arrow Size</string>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="Gui::PrefLineEdit" name="leDiameter">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>22</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="toolTip">
<string>Use system setting for number of decimals</string>
<string>Character used to indicate diameter dimensions</string>
</property>
<property name="text">
<string>Use Global Decimals</string>
<string></string>
</property>
<property name="checked">
<bool>true</bool>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="prefEntry" stdset="0">
<cstring>UseGlobalDecimals</cstring>
<cstring>DiameterSymbol</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>/Mod/TechDraw/Dimensions</cstring>
@@ -162,10 +220,40 @@
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_11">
<item row="5" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Alternate Decimals</string>
<string>Diameter Symbol</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="Gui::PrefCheckBox" name="cbGlobalDecimals">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="toolTip">
<string>Use system setting for number of decimals</string>
</property>
<property name="text">
<string>Use Global Decimals</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="prefEntry" stdset="0">
<cstring>UseGlobalDecimals</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>/Mod/TechDraw/Dimensions</cstring>
</property>
</widget>
</item>
@@ -203,18 +291,6 @@
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Font Size</string>
</property>
</widget>
</item>
<item row="3" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
@@ -259,102 +335,7 @@
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Diameter Symbol</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="Gui::PrefLineEdit" name="leDiameter">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>22</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="toolTip">
<string>Character used to indicate diameter dimensions</string>
</property>
<property name="text">
<string>⌀</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="prefEntry" stdset="0">
<cstring>DiameterSymbol</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>/Mod/TechDraw/Dimensions</cstring>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_9">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Arrow Style</string>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="Gui::PrefComboBox" name="pcbArrow">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>22</height>
</size>
</property>
<property name="toolTip">
<string>Arrowhead style</string>
</property>
<property name="currentIndex">
<number>-1</number>
</property>
<property name="prefEntry" stdset="0">
<cstring>ArrowStyle</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/Dimensions</cstring>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_12">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Arrow Size</string>
</property>
</widget>
</item>
<item row="6" column="2">
<item row="7" column="2">
<widget class="Gui::PrefUnitSpinBox" name="plsb_ArrowSize">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
@@ -385,151 +366,91 @@
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>85</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>500</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>500</height>
</size>
</property>
<property name="title">
<string>Conventions</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout_6" columnstretch="1,0,1">
<item row="0" column="1">
<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>
<item row="0" column="0">
<widget class="QLabel" name="label_7">
<item row="2" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Projection Group Angle</string>
<string>Alternate Decimals</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="Gui::PrefComboBox" name="cbProjAngle">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<item row="3" column="0">
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="minimumSize">
<size>
<width>184</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Use first- or third-angle multiview projection convention</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>ProjectionAngle</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/General</cstring>
</property>
<item>
<property name="text">
<string>First</string>
</property>
</item>
<item>
<property name="text">
<string>Third</string>
</property>
</item>
<item>
<property name="text">
<string>Page</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Hidden Line Style</string>
<string>Font Size</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="Gui::PrefComboBox" name="cbHiddenLineStyle">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item row="4" column="0">
<widget class="QLabel" name="lbl_LabelFont">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="font">
<font>
<italic>false</italic>
</font>
</property>
<property name="text">
<string>Tolerance Text Scale</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="Gui::PrefDoubleSpinBox" name="pdsbToleranceScale">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>174</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Style for hidden lines</string>
<string>Tolerance text scale
Multiplier of 'Font Size'</string>
</property>
<property name="accessibleName">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>0.800000000000000</double>
</property>
<property name="prefEntry" stdset="0">
<cstring>HiddenLine</cstring>
<cstring>TolSizeAdjust</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/General</cstring>
<cstring>Mod/TechDraw/Dimensions</cstring>
</property>
<item>
<property name="text">
<string>Continuous</string>
</property>
<property name="icon">
<iconset resource="Resources/TechDraw.qrc">
<normaloff>:/icons/continuous-line.svg</normaloff>:/icons/continuous-line.svg</iconset>
</property>
</item>
<item>
<property name="text">
<string>Dashed</string>
</property>
<property name="icon">
<iconset resource="Resources/TechDraw.qrc">
<normaloff>:/icons/dash-line.svg</normaloff>:/icons/dash-line.svg</iconset>
</property>
</item>
</widget>
</item>
</layout>
@@ -594,6 +515,11 @@
<extends>QLineEdit</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefDoubleSpinBox</class>
<extends>QDoubleSpinBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefUnitSpinBox</class>
<extends>Gui::QuantitySpinBox</extends>
@@ -58,16 +58,15 @@ DlgPrefsTechDrawDimensionsImp::~DlgPrefsTechDrawDimensionsImp()
void DlgPrefsTechDrawDimensionsImp::saveSettings()
{
ui->pcbStandardAndStyle->onSave();
ui->cbGlobalDecimals->onSave();
ui->cbHiddenLineStyle->onSave();
ui->cbProjAngle->onSave();
ui->cbShowUnits->onSave();
ui->sbAltDecimals->onSave();
ui->plsb_FontSize->onSave();
ui->pdsbToleranceScale->onSave();
ui->leDiameter->onSave();
ui->pcbArrow->onSave();
ui->pcbStandardAndStyle->onSave();
ui->plsb_ArrowSize->onSave();
ui->plsb_FontSize->onSave();
ui->sbAltDecimals->onSave();
}
void DlgPrefsTechDrawDimensionsImp::loadSettings()
@@ -81,16 +80,15 @@ void DlgPrefsTechDrawDimensionsImp::loadSettings()
// plsb_ArrowSize->setValue(arrowDefault);
ui->plsb_ArrowSize->setValue(fontDefault);
ui->pcbStandardAndStyle->onRestore();
ui->cbGlobalDecimals->onRestore();
ui->cbHiddenLineStyle->onRestore();
ui->cbProjAngle->onRestore();
ui->cbShowUnits->onRestore();
ui->sbAltDecimals->onRestore();
ui->plsb_FontSize->onRestore();
ui->pdsbToleranceScale->onRestore();
ui->leDiameter->onRestore();
ui->pcbArrow->onRestore();
ui->pcbStandardAndStyle->onRestore();
ui->plsb_ArrowSize->onRestore();
ui->plsb_FontSize->onRestore();
ui->sbAltDecimals->onRestore();
DrawGuiUtil::loadArrowBox(ui->pcbArrow);
ui->pcbArrow->setCurrentIndex(prefArrowStyle());
+162 -4
View File
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>496</width>
<height>495</height>
<width>440</width>
<height>581</height>
</rect>
</property>
<property name="sizePolicy">
@@ -229,8 +229,12 @@ for ProjectionGroups</string>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>* this font is also used for dimensions
Changes have no effect on existing dimensions.</string>
</property>
<property name="text">
<string>Label Font</string>
<string>Label Font*</string>
</property>
</widget>
</item>
@@ -326,6 +330,153 @@ for ProjectionGroups</string>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>85</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>500</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>500</height>
</size>
</property>
<property name="title">
<string>Conventions</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout_6" columnstretch="1,0,1">
<item row="0" column="1">
<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>
<item row="0" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Projection Group Angle</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="Gui::PrefComboBox" name="cbProjAngle">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>184</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Use first- or third-angle multiview projection convention</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>ProjectionAngle</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/General</cstring>
</property>
<item>
<property name="text">
<string>First</string>
</property>
</item>
<item>
<property name="text">
<string>Third</string>
</property>
</item>
<item>
<property name="text">
<string>Page</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Hidden Line Style</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="Gui::PrefComboBox" name="cbHiddenLineStyle">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Style for hidden lines</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>HiddenLine</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/General</cstring>
</property>
<item>
<property name="text">
<string>Continuous</string>
</property>
<property name="icon">
<iconset resource="Resources/TechDraw.qrc">
<normaloff>:/icons/continuous-line.svg</normaloff>:/icons/continuous-line.svg</iconset>
</property>
</item>
<item>
<property name="text">
<string>Dashed</string>
</property>
<property name="icon">
<iconset resource="Resources/TechDraw.qrc">
<normaloff>:/icons/dash-line.svg</normaloff>:/icons/dash-line.svg</iconset>
</property>
</item>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_Templates">
<property name="sizePolicy">
@@ -689,6 +840,11 @@ for ProjectionGroups</string>
<extends>QCheckBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefComboBox</class>
<extends>QComboBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefLineEdit</class>
<extends>QLineEdit</extends>
@@ -705,6 +861,8 @@ for ProjectionGroups</string>
<header>Gui/PrefWidgets.h</header>
</customwidget>
</customwidgets>
<resources/>
<resources>
<include location="Resources/TechDraw.qrc"/>
</resources>
<connections/>
</ui>
@@ -53,54 +53,59 @@ DlgPrefsTechDrawGeneralImp::~DlgPrefsTechDrawGeneralImp()
void DlgPrefsTechDrawGeneralImp::saveSettings()
{
ui->pfc_DefTemp->onSave();
ui->pfc_DefDir->onSave();
ui->pfc_HatchFile->onSave();
ui->pfc_FilePattern->onSave();
ui->pfc_LineGroup->onSave();
ui->pfc_Welding->onSave();
ui->le_NamePattern->onSave();
ui->pfb_LabelFont->onSave();
ui->plsb_LabelSize->onSave();
ui->cb_Global->onSave();
ui->cb_Override->onSave();
ui->cb_PageUpdate->onSave();
ui->cb_AutoDist->onSave();
ui->pfb_LabelFont->onSave();
ui->plsb_LabelSize->onSave();
ui->cbProjAngle->onSave();
ui->cbHiddenLineStyle->onSave();
ui->pfc_DefTemp->onSave();
ui->pfc_DefDir->onSave();
ui->pfc_HatchFile->onSave();
ui->pfc_LineGroup->onSave();
ui->pfc_Welding->onSave();
ui->pfc_FilePattern->onSave();
ui->le_NamePattern->onSave();
}
void DlgPrefsTechDrawGeneralImp::loadSettings()
{
// double labelDefault = 8.0;
double labelDefault = Preferences::labelFontSizeMM();
ui->plsb_LabelSize->setValue(labelDefault);
QFont prefFont(Preferences::labelFontQString());
ui->pfb_LabelFont->setCurrentFont(prefFont);
// ui->pfb_LabelFont->setCurrentText(Preferences::labelFontQString()); //only works in Qt5
ui->pfc_DefTemp->setFileName(Preferences::defaultTemplate());
ui->pfc_DefDir->setFileName(Preferences::defaultTemplateDir());
ui->pfc_HatchFile->setFileName(QString::fromStdString(DrawHatch::prefSvgHatch()));
ui->pfc_FilePattern->setFileName(QString::fromStdString(DrawGeomHatch::prefGeomHatchFile()));
ui->pfc_Welding->setFileName(PreferencesGui::weldingDirectory());
ui->pfc_LineGroup->setFileName(QString::fromUtf8(Preferences::lineGroupFile().c_str()));
ui->pfc_DefTemp->onRestore();
ui->pfc_DefDir->onRestore();
ui->pfc_HatchFile->onRestore();
ui->pfc_FilePattern->onRestore();
ui->pfc_LineGroup->onRestore();
ui->pfc_Welding->onRestore();
ui->le_NamePattern->onRestore();
ui->pfb_LabelFont->onRestore();
ui->plsb_LabelSize->onRestore();
ui->cb_Global->onRestore();
ui->cb_Override->onRestore();
ui->cb_PageUpdate->onRestore();
ui->cb_AutoDist->onRestore();
double labelDefault = Preferences::labelFontSizeMM();
ui->plsb_LabelSize->setValue(labelDefault);
QFont prefFont(Preferences::labelFontQString());
ui->pfb_LabelFont->setCurrentFont(prefFont);
// ui->pfb_LabelFont->setCurrentText(Preferences::labelFontQString()); //only works in Qt5
ui->pfb_LabelFont->onRestore();
ui->plsb_LabelSize->onRestore();
ui->cbProjAngle->onRestore();
ui->cbHiddenLineStyle->onRestore();
ui->pfc_DefTemp->setFileName(Preferences::defaultTemplate());
ui->pfc_DefDir->setFileName(Preferences::defaultTemplateDir());
ui->pfc_HatchFile->setFileName(QString::fromStdString(DrawHatch::prefSvgHatch()));
ui->pfc_LineGroup->setFileName(QString::fromUtf8(Preferences::lineGroupFile().c_str()));
ui->pfc_Welding->setFileName(PreferencesGui::weldingDirectory());
ui->pfc_FilePattern->setFileName(QString::fromStdString(DrawGeomHatch::prefGeomHatchFile()));
ui->pfc_DefTemp->onRestore();
ui->pfc_DefDir->onRestore();
ui->pfc_HatchFile->onRestore();
ui->pfc_LineGroup->onRestore();
ui->pfc_Welding->onRestore();
ui->pfc_FilePattern->onRestore();
ui->le_NamePattern->onRestore();
}
/**
+192 -166
View File
@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>441</width>
<width>440</width>
<height>307</height>
</rect>
</property>
@@ -49,6 +49,41 @@
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout_6">
<item row="1" column="0">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Visible</string>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="Gui::PrefSpinBox" name="psbIsoCount">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>140</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>Number of ISO lines per face edge</string>
</property>
<property name="alignment">
<set>Qt::AlignRight</set>
</property>
<property name="prefEntry" stdset="0">
<cstring>IsoCount</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/HLR</cstring>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="Gui::PrefCheckBox" name="pcbSeamViz">
<property name="sizePolicy">
@@ -109,6 +144,88 @@
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="Gui::PrefCheckBox" name="pcbPolygon">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="toolTip">
<string>Use an approximation to find hidden lines.
Fast, but result is a collection of short straight lines.</string>
</property>
<property name="text">
<string>Use Polygon Approximation</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>UsePolygon</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/HLR</cstring>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="Gui::PrefCheckBox" name="pcbSmoothHid">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="toolTip">
<string>Show hidden smooth edges</string>
</property>
<property name="text">
<string>Show Smooth Lines</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>SmoothHid</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/HLR</cstring>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="Gui::PrefCheckBox" name="pcbHardHid">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="toolTip">
<string>Show hidden hard and outline edges</string>
</property>
<property name="text">
<string>Show Hard Lines</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>HardHid</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/HLR</cstring>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="Gui::PrefCheckBox" name="pcbHardViz">
<property name="enabled">
@@ -148,8 +265,8 @@
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="Gui::PrefCheckBox" name="pcbPolygon">
<item row="4" column="2">
<widget class="Gui::PrefCheckBox" name="pcbSeamHid">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
@@ -162,20 +279,71 @@
</font>
</property>
<property name="toolTip">
<string>Use an approximation to find hidden lines.
Fast, but result is a collection of short straight lines.</string>
<string>Show hidden seam lines</string>
</property>
<property name="text">
<string>Use Polygon Approximation</string>
<string>Show Seam Lines</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>UsePolygon</cstring>
<cstring>SeamHid</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/HLR</cstring>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="Gui::PrefCheckBox" name="pcbIsoHid">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="toolTip">
<string>Show hidden equal parameterization lines</string>
</property>
<property name="text">
<string>Show UV ISO Lines</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>IsoHid</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/HLR</cstring>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Hidden</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_19">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>ISO Count</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="Gui::PrefCheckBox" name="pcbIsoViz">
<property name="sizePolicy">
@@ -203,173 +371,31 @@ Fast, but result is a collection of short straight lines.</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="Gui::PrefCheckBox" name="pcbSmoothHid">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<item row="1" column="3">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
<property name="toolTip">
<string>Show hidden smooth edges</string>
</property>
<property name="text">
<string>Show Smooth Lines</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>SmoothHid</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/HLR</cstring>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="Gui::PrefCheckBox" name="pcbSeamHid">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="toolTip">
<string>Show hidden seam lines</string>
</property>
<property name="text">
<string>Show Seam Lines</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>SeamHid</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/HLR</cstring>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="Gui::PrefCheckBox" name="pcbIsoHid">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="toolTip">
<string>Show hidden equal parameterization lines</string>
</property>
<property name="text">
<string>Show UV ISO Lines</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>IsoHid</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/HLR</cstring>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Visible</string>
</property>
</widget>
</spacer>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Hidden</string>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="Gui::PrefCheckBox" name="pcbHardHid">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="toolTip">
<string>Show hidden hard and outline edges</string>
</property>
<property name="text">
<string>Show Hard Lines</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>HardHid</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/HLR</cstring>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_19">
<property name="minimumSize">
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
<width>40</width>
<height>20</height>
</size>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>ISO Count</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="Gui::PrefSpinBox" name="psbIsoCount">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>140</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>Number of ISO lines per face edge</string>
</property>
<property name="alignment">
<set>Qt::AlignRight</set>
</property>
<property name="prefEntry" stdset="0">
<cstring>IsoCount</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/HLR</cstring>
</property>
</widget>
</spacer>
</item>
</layout>
</item>
+61 -277
View File
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>440</width>
<height>447</height>
<height>342</height>
</rect>
</property>
<property name="sizePolicy">
@@ -220,164 +220,6 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_Selection">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>200</height>
</size>
</property>
<property name="title">
<string>Selection</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="1">
<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>
<item row="1" column="2">
<widget class="Gui::PrefDoubleSpinBox" name="pdsbMarkFuzz">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>174</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Selection area around center marks
Each unit is approx. 0.1 mm wide</string>
</property>
<property name="statusTip">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="value">
<double>5.000000000000000</double>
</property>
<property name="prefEntry" stdset="0">
<cstring>MarkFuzz</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/General</cstring>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="Gui::PrefDoubleSpinBox" name="pdsbEdgeFuzz">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>174</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Size of selection area around edges
Each unit is approx. 0.1 mm wide</string>
</property>
<property name="statusTip">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="value">
<double>10.000000000000000</double>
</property>
<property name="prefEntry" stdset="0">
<cstring>EdgeFuzz</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/General</cstring>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_4">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Mark Fuzz</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_3">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Edge Fuzz</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_SizeAdj">
<property name="sizePolicy">
@@ -398,47 +240,14 @@ Each unit is approx. 0.1 mm wide</string>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QGridLayout" name="gridLayout_3">
<item row="2" column="2">
<widget class="Gui::PrefDoubleSpinBox" name="pdsbToleranceScale">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>174</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Tolerance font size adjustment. Multiplier of dimension font size.</string>
</property>
<property name="accessibleName">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="value">
<double>0.500000000000000</double>
</property>
<property name="prefEntry" stdset="0">
<cstring>TolSizeAdjust</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/Dimensions</cstring>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Vertex Scale</string>
</property>
</widget>
</item>
<item row="3" column="2">
<item row="2" column="2">
<widget class="Gui::PrefUnitSpinBox" name="pdsbTemplateMark">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
@@ -469,26 +278,18 @@ Each unit is approx. 0.1 mm wide</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Vertex Scale</string>
<string>Center Mark Scale</string>
</property>
</widget>
</item>
<item row="1" column="1">
<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>
<item row="1" column="2">
<widget class="Gui::PrefDoubleSpinBox" name="pdsbCenterScale">
<property name="sizePolicy">
@@ -512,6 +313,9 @@ Each unit is approx. 0.1 mm wide</string>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>0.500000000000000</double>
</property>
@@ -523,6 +327,42 @@ Each unit is approx. 0.1 mm wide</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Template Edit Mark</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="Gui::PrefDoubleSpinBox" name="pdsbSymbolScale">
<property name="toolTip">
<string>Multiplier for size of welding symbols</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.250000000000000</double>
</property>
<property name="prefEntry" stdset="0">
<cstring>SymbolFactor</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/Decorations</cstring>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Welding Symbol Scale</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="Gui::PrefDoubleSpinBox" name="pdsbVertexScale">
<property name="sizePolicy">
@@ -557,74 +397,18 @@ Each unit is approx. 0.1 mm wide</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<italic>true</italic>
</font>
<item row="1" column="1">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="text">
<string>Center Mark Scale</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lbl_LabelFont">
<property name="minimumSize">
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
<width>40</width>
<height>20</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Tolerance Text Scale</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Template Edit Mark</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Welding Symbol Scale</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="Gui::PrefDoubleSpinBox" name="pdsbSymbolScale">
<property name="toolTip">
<string>Multiplier for size of welding symbols</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="value">
<double>1.250000000000000</double>
</property>
<property name="prefEntry" stdset="0">
<cstring>SymbolFactor</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/TechDraw/Decorations</cstring>
</property>
</widget>
</spacer>
</item>
</layout>
</item>
@@ -61,32 +61,24 @@ void DlgPrefsTechDrawScaleImp::onScaleTypeChanged(int index)
void DlgPrefsTechDrawScaleImp::saveSettings()
{
ui->pdsbToleranceScale->onSave();
ui->pdsbTemplateMark->onSave();
ui->pdsbVertexScale->onSave();
ui->pdsbCenterScale->onSave();
ui->pdsbPageScale->onSave();
ui->cbViewScaleType->onSave();
ui->pdsbViewScale->onSave();
ui->pdsbEdgeFuzz->onSave();
ui->pdsbMarkFuzz->onSave();
ui->pdsbVertexScale->onSave();
ui->pdsbCenterScale->onSave();
ui->pdsbTemplateMark->onSave();
ui->pdsbSymbolScale->onSave();
}
void DlgPrefsTechDrawScaleImp::loadSettings()
{
double markDefault = 3.0;
ui->pdsbTemplateMark->setValue(markDefault);
ui->pdsbToleranceScale->onRestore();
ui->pdsbTemplateMark->onRestore();
ui->pdsbVertexScale->onRestore();
ui->pdsbCenterScale->onRestore();
ui->pdsbPageScale->onRestore();
ui->cbViewScaleType->onRestore();
ui->pdsbViewScale->onRestore();
ui->pdsbEdgeFuzz->onRestore();
ui->pdsbMarkFuzz->onRestore();
ui->pdsbVertexScale->onRestore();
ui->pdsbCenterScale->onRestore();
double markDefault = 3.0;
ui->pdsbTemplateMark->setValue(markDefault);
ui->pdsbTemplateMark->onRestore();
ui->pdsbSymbolScale->onRestore();
}
+1 -1
View File
@@ -39,7 +39,7 @@
#include <QPrinter>
#include <QPrintDialog>
#include <QPrintPreviewDialog>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <boost_bind_bind.hpp>
#endif // #ifndef _PreComp_
@@ -25,7 +25,7 @@
#include "PreCompiled.h"
#ifndef _PreComp_
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <boost/signals2/connection.hpp>
#include <boost_bind_bind.hpp>
@@ -25,7 +25,7 @@
#ifndef TECHDRAWGUI_VIEWPROVIDERVIEW_H
#define TECHDRAWGUI_VIEWPROVIDERVIEW_H
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
#include <Gui/ViewProviderFeature.h>
#include <Gui/ViewProviderDocumentObjectGroup.h>
+1 -1
View File
@@ -32,7 +32,7 @@
# include <QTimer>
# include <QList>
# include <QPointer>
# include <boost/signals2.hpp>
# include <boost_signals2.hpp>
# include <boost/signals2/connection.hpp>
# include <boost_bind_bind.hpp>
+1 -1
View File
@@ -28,7 +28,7 @@
#include <QPointer>
#include <Gui/ViewProviderDocumentObject.h>
#include <boost/signals2.hpp>
#include <boost_signals2.hpp>
namespace TechDraw{
class DrawPage;
+9
View File
@@ -0,0 +1,9 @@
#ifndef FREECAD_ADJACENCY_LIST_HPP_WORKAROUND
#define FREECAD_ADJACENCY_LIST_HPP_WORKAROUND
// Workaround for boost >= 1.75
#define BOOST_ALLOW_DEPRECATED_HEADERS
#include <boost/graph/adjacency_list.hpp>
#undef BOOST_ALLOW_DEPRECATED_HEADERS
#endif // #ifndef FREECAD_ADJACENCY_LIST_HPP_WORKAROUND
+9
View File
@@ -0,0 +1,9 @@
#ifndef FREECAD_REVERSE_GRAPH_HPP_WORKAROUND
#define FREECAD_REVERSE_GRAPH_HPP_WORKAROUND
// Workaround for boost >= 1.75
#define BOOST_ALLOW_DEPRECATED_HEADERS
#include <boost/graph/reverse_graph.hpp>
#undef BOOST_ALLOW_DEPRECATED_HEADERS
#endif // #ifndef FREECAD_REVERSE_GRAPH_HPP_WORKAROUND
+9
View File
@@ -0,0 +1,9 @@
#ifndef FREECAD_BOOST_PYTHON_HPP_WORKAROUND
#define FREECAD_BOOST_PYTHON_HPP_WORKAROUND
// Workaround for boost >= 1.74
#define BOOST_ALLOW_DEPRECATED_HEADERS
#include <boost/python.hpp>
#undef BOOST_ALLOW_DEPRECATED_HEADERS
#endif // #ifndef FREECAD_BOOST_PYTHON_HPP_WORKAROUND
+9
View File
@@ -0,0 +1,9 @@
#ifndef FREECAD_SIGNALS2_HPP_WORKAROUND
#define FREECAD_SIGNALS2_HPP_WORKAROUND
// Workaround for boost >= 1.74
#define BOOST_ALLOW_DEPRECATED_HEADERS
#include <boost/signals2.hpp>
#undef BOOST_ALLOW_DEPRECATED_HEADERS
#endif // #ifndef FREECAD_SIGNALS2_HPP_WORKAROUND