From 20f92a250f9c34a32df4d52d637d1d0f60623d37 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me?= Date: Fri, 30 Oct 2020 16:53:54 +0100 Subject: [PATCH] Improvement coding style, documentation, translation --- src/FeaturesAPI/FeaturesAPI_Fillet.cpp | 51 ++- src/FeaturesAPI/FeaturesAPI_Fillet.h | 16 +- src/FeaturesPlugin/FeaturesPlugin_Fillet.cpp | 31 +- src/FeaturesPlugin/FeaturesPlugin_Fillet.h | 8 +- .../FeaturesPlugin_WidgetCreator.cpp | 1 - ...aturesPlugin_WidgetFilletMultiRadiuses.cpp | 367 ++++++++++-------- ...FeaturesPlugin_WidgetFilletMultiRadiuses.h | 32 +- src/FeaturesPlugin/FeaturesPlugin_msg_fr.ts | 21 +- .../doc/TUI_filletvariableFeature.rst | 22 ++ .../doc/examples/filletMultiRadiusByPoints.py | 17 + .../examples/filletMultiRadiusBycurvAbs.py | 12 + src/FeaturesPlugin/doc/filletFeature.rst | 115 +++++- src/FeaturesPlugin/doc/images/FilletFixed.png | Bin 12533 -> 18560 bytes .../doc/images/FilletMultipleRadius.png | Bin 0 -> 18454 bytes .../doc/images/FilletMultiplebycurv.png | Bin 0 -> 19421 bytes .../doc/images/FilletMultiplebypoint.png | Bin 0 -> 20431 bytes .../doc/images/FilletVarious.png | Bin 13211 -> 25598 bytes .../doc/images/fillet_multiradius_by_curv.png | Bin 0 -> 424 bytes .../images/fillet_multiradius_by_point.png | Bin 0 -> 312 bytes .../images/fillet_var_multiple_radiuses.png | Bin 0 -> 5091 bytes .../images/filletmultiRadiusCurvResult.png | Bin 0 -> 20342 bytes .../images/filletmultiRadiuspointResult.png | Bin 0 -> 16297 bytes src/FeaturesPlugin/fillet_widget.xml | 4 +- src/FeaturesPlugin/plugin-Features.xml | 2 +- src/GeomAlgoAPI/CMakeLists.txt | 1 + src/GeomAlgoAPI/GeomAlgoAPI_Fillet.cpp | 8 +- 26 files changed, 482 insertions(+), 226 deletions(-) create mode 100644 src/FeaturesPlugin/doc/examples/filletMultiRadiusByPoints.py create mode 100644 src/FeaturesPlugin/doc/examples/filletMultiRadiusBycurvAbs.py create mode 100644 src/FeaturesPlugin/doc/images/FilletMultipleRadius.png create mode 100644 src/FeaturesPlugin/doc/images/FilletMultiplebycurv.png create mode 100644 src/FeaturesPlugin/doc/images/FilletMultiplebypoint.png create mode 100644 src/FeaturesPlugin/doc/images/fillet_multiradius_by_curv.png create mode 100644 src/FeaturesPlugin/doc/images/fillet_multiradius_by_point.png create mode 100644 src/FeaturesPlugin/doc/images/fillet_var_multiple_radiuses.png create mode 100644 src/FeaturesPlugin/doc/images/filletmultiRadiusCurvResult.png create mode 100644 src/FeaturesPlugin/doc/images/filletmultiRadiuspointResult.png diff --git a/src/FeaturesAPI/FeaturesAPI_Fillet.cpp b/src/FeaturesAPI/FeaturesAPI_Fillet.cpp index 1b0f7172d..4863546aa 100644 --- a/src/FeaturesAPI/FeaturesAPI_Fillet.cpp +++ b/src/FeaturesAPI/FeaturesAPI_Fillet.cpp @@ -141,33 +141,33 @@ FeaturesAPI_Fillet2D::FeaturesAPI_Fillet2D(const std::shared_ptr& theFeature, - const std::list& theEdgesFaces, + const std::list& theBaseObjects, const ModelHighAPI_Double& theRadius1, const ModelHighAPI_Double& theRadius2) : FeaturesAPI_Fillet(theFeature) { if (initialize()) { fillAttribute(FeaturesPlugin_Fillet::CREATION_METHOD_VARYING_RADIUS(), mycreationMethod); - fillAttribute(theEdgesFaces, myedgesfacesselected); + fillAttribute(theBaseObjects, mybaseObjects); fillAttribute(theRadius1, mystartRadius); fillAttribute(theRadius2, myendRadius); - if (myedgesfacesselected->size() > 0) - execute(); + + execIfBaseNotEmpty(); } } FeaturesAPI_Fillet2D::FeaturesAPI_Fillet2D(const std::shared_ptr& theFeature, - const ModelHighAPI_Selection & theedgeselected, - const std::list& thepoint, + const ModelHighAPI_Selection & theEdgeSelected, + const std::list& thePoint, const std::list& theRadius) : FeaturesAPI_Fillet(theFeature) { if (initialize()) { fillAttribute(FeaturesPlugin_Fillet::METHOD_MULTIPLES_RADIUSES(), mycreationMethod); fillAttribute(FeaturesPlugin_Fillet::CREATION_METHOD_BY_POINTS(), mycreationMethodmulti); - fillAttribute(theedgeselected, myedgeselected); - fillAttribute(thepoint, myarraypointradiusbypoint); + fillAttribute(theEdgeSelected, myedgeselected); + fillAttribute(thePoint, myarraypointradiusbypoint); GeomEdgePtr anEdge = GeomEdgePtr(new GeomAPI_Edge( edgeselected()->value())); GeomPointPtr first = anEdge->firstPoint(); @@ -220,21 +220,21 @@ FeaturesAPI_Fillet2D::FeaturesAPI_Fillet2D(const std::shared_ptr& theFeature, const std::list& theEdgesFaces, - const std::list& thepointCurvCood, + const std::list& thePointCurvCood, const std::list& theRadius) : FeaturesAPI_Fillet(theFeature) { if (initialize()) { fillAttribute(FeaturesPlugin_Fillet::METHOD_MULTIPLES_RADIUSES(), mycreationMethod); fillAttribute(FeaturesPlugin_Fillet::CREATION_METHOD_BY_CURVILEAR_ABSCISSA(), - mycreationMethodmulti); + mycreationMethodmulti); fillAttribute(theEdgesFaces, myedgesfacesmultiselected); int aRowIndex = 0; - myvaluescurv()->setSize( thepointCurvCood.size(), 2 ); - std::list::const_iterator aRowsCoodIter = thepointCurvCood.begin(); + myvaluescurv()->setSize( thePointCurvCood.size(), 2 ); + std::list::const_iterator aRowsCoodIter = thePointCurvCood.begin(); std::list::const_iterator aRowsRadiusIter = theRadius.begin(); - for(; aRowsCoodIter != thepointCurvCood.end(); + for(; aRowsCoodIter != thePointCurvCood.end(); aRowsCoodIter++, aRowsRadiusIter++, aRowIndex++) { ModelAPI_AttributeTables::Value aVal; aVal.myDouble = aRowsCoodIter->value(); @@ -292,7 +292,7 @@ void FeaturesAPI_Fillet2D::dump(ModelHighAPI_Dumper& theDumper) const AttributeSelectionPtr anAttrEdgeSelec = aBase->selection(FeaturesPlugin_Fillet::EDGE_SELECTED_ID()); - if( aBase->string(FeaturesPlugin_Fillet::CREATION_MULTI_RADIUS_METHODE())->value() + if( aBase->string(FeaturesPlugin_Fillet::CREATION_MULTI_RADIUS_METHOD())->value() == FeaturesPlugin_Fillet::CREATION_METHOD_BY_POINTS() ) { @@ -301,7 +301,7 @@ void FeaturesAPI_Fillet2D::dump(ModelHighAPI_Dumper& theDumper) const AttributeTablesPtr anAttrTable = aBase->tables(FeaturesPlugin_Fillet::VALUES_ID()); theDumper << aBase << " = model.addFilletMultiRadiusByPoints(" - << aDocName << ", " << anAttrEdgeSelec; + << aDocName << ", " << anAttrEdgeSelec; theDumper << ", " << anAttrPoint ; theDumper<<", ["; for(int aRow = 0; aRow < myvalues()->rows(); aRow++) { @@ -317,7 +317,7 @@ void FeaturesAPI_Fillet2D::dump(ModelHighAPI_Dumper& theDumper) const aBase->selectionList(FeaturesPlugin_Fillet::EDGES_FACES_MULTI_LIST_ID()); AttributeTablesPtr anAttrTable = aBase->tables(FeaturesPlugin_Fillet::VALUES_CURV_ID()); theDumper << aBase << " = model.addFilletMultiRadiusBycurvAbs(" - << aDocName << ", " << anAttrEdgesFaces; + << aDocName << ", " << anAttrEdgesFaces; theDumper << ", "; theDumper<<"["; for(int aRow = 0; aRow < myvaluescurv()->rows(); aRow++) { @@ -337,7 +337,8 @@ void FeaturesAPI_Fillet2D::dump(ModelHighAPI_Dumper& theDumper) const }else { - std::string aCreationMethod = aBase->string(FeaturesPlugin_Fillet::CREATION_METHOD())->value(); + std::string aCreationMethod = + aBase->string(FeaturesPlugin_Fillet::CREATION_METHOD())->value(); if(aCreationMethod == FeaturesPlugin_Fillet::CREATION_METHOD_SINGLE_RADIUS()) { theDumper << aBase << " = model.addFillet(" << aDocName << ", " << anAttrObjects; @@ -365,9 +366,7 @@ void FeaturesAPI_Fillet2D::execIfBaseNotEmpty() execute(); } - //================================================================================================== - FilletPtr addFillet(const std::shared_ptr& thePart, const std::list& theBaseObjects, const ModelHighAPI_Double& theRadius1, @@ -393,10 +392,10 @@ FilletPtr addFillet(const std::shared_ptr& thePart, } FilletPtr addFilletMultiRadiusByPoints(const std::shared_ptr& thePart, - const ModelHighAPI_Selection & theedgeselected, - const std::list& thepoint, - const std::list& theRadius, - const bool keepSubResults) + const ModelHighAPI_Selection & theEdgeSelected, + const std::list& thePoint, + const std::list& theRadius, + const bool keepSubResults) { FeaturePtr aFeature = thePart->addFeature(FeaturesAPI_Fillet2D::ID()); @@ -405,14 +404,14 @@ FilletPtr addFilletMultiRadiusByPoints(const std::shared_ptr& FilletPtr aFillet; - aFillet.reset(new FeaturesAPI_Fillet2D(aFeature, theedgeselected, thepoint, theRadius)); + aFillet.reset(new FeaturesAPI_Fillet2D(aFeature, theEdgeSelected, thePoint, theRadius)); return aFillet; } FilletPtr addFilletMultiRadiusBycurvAbs(const std::shared_ptr& thePart, const std::list& theBaseObjects, - const std::list& thepointCurvCood, + const std::list& thePointCurvCood, const std::list& theRadius, const bool keepSubResults) { @@ -423,7 +422,7 @@ FilletPtr addFilletMultiRadiusBycurvAbs(const std::shared_ptr FilletPtr aFillet; - aFillet.reset(new FeaturesAPI_Fillet2D(aFeature, theBaseObjects, thepointCurvCood, theRadius)); + aFillet.reset(new FeaturesAPI_Fillet2D(aFeature, theBaseObjects, thePointCurvCood, theRadius)); return aFillet; } \ No newline at end of file diff --git a/src/FeaturesAPI/FeaturesAPI_Fillet.h b/src/FeaturesAPI/FeaturesAPI_Fillet.h index 3e5e45db1..413bb49f7 100644 --- a/src/FeaturesAPI/FeaturesAPI_Fillet.h +++ b/src/FeaturesAPI/FeaturesAPI_Fillet.h @@ -127,21 +127,21 @@ public: /// Constructor with values. FEATURESAPI_EXPORT explicit FeaturesAPI_Fillet2D(const std::shared_ptr& theFeature, - const std::list& theEdgesFaces, + const std::list& theBaseObjects, const ModelHighAPI_Double& theRadius1, const ModelHighAPI_Double& theRadius2); /// Constructor with values. FEATURESAPI_EXPORT explicit FeaturesAPI_Fillet2D(const std::shared_ptr& theFeature, - const ModelHighAPI_Selection& theedgeselected, - const std::list& thepoint, + const ModelHighAPI_Selection& theEdgeSelected, + const std::list& thePoint, const std::list& theRadius); /// Constructor with values. FEATURESAPI_EXPORT explicit FeaturesAPI_Fillet2D(const std::shared_ptr& theFeature, - const std::list& theEdgesFaces, + const std::list& theBaseObjects, const std::list& thepointCurvCood, const std::list& theRadius); /// Destructor. @@ -152,7 +152,7 @@ public: creationMethod, FeaturesPlugin_Fillet::CREATION_METHOD(), ModelAPI_AttributeString, /** Creation method */, - creationMethodmulti, FeaturesPlugin_Fillet::CREATION_MULTI_RADIUS_METHODE(), + creationMethodmulti, FeaturesPlugin_Fillet::CREATION_MULTI_RADIUS_METHOD(), ModelAPI_AttributeString, /** Creation method */, baseObjects, FeaturesPlugin_Fillet::OBJECT_LIST_ID(), @@ -220,8 +220,8 @@ FilletPtr addFillet(const std::shared_ptr& thePart, /// \brief Create Fillet feature. FEATURESAPI_EXPORT FilletPtr addFilletMultiRadiusByPoints(const std::shared_ptr& thePart, - const ModelHighAPI_Selection & theedgeselected, - const std::list& thepoint, + const ModelHighAPI_Selection & theEdgeSelected, + const std::list& thePoint, const std::list& theRadius, const bool keepSubResults= false); @@ -231,7 +231,7 @@ FilletPtr addFilletMultiRadiusByPoints(const std::shared_ptr& FEATURESAPI_EXPORT FilletPtr addFilletMultiRadiusBycurvAbs( const std::shared_ptr& thePart, const std::list& theBaseObjects, - const std::list& thepointCurvCood, + const std::list& thePointCurvCood, const std::list& theRadius, const bool keepSubResults= false); diff --git a/src/FeaturesPlugin/FeaturesPlugin_Fillet.cpp b/src/FeaturesPlugin/FeaturesPlugin_Fillet.cpp index 1fc290423..0095a62e9 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_Fillet.cpp +++ b/src/FeaturesPlugin/FeaturesPlugin_Fillet.cpp @@ -75,7 +75,7 @@ void FeaturesPlugin_Fillet::initAttributes() data()->addAttribute(EDGE_SELECTED_ID(), ModelAPI_AttributeSelection::typeId()); data()->addAttribute(CREATION_METHOD(), ModelAPI_AttributeString::typeId()); - data()->addAttribute(CREATION_MULTI_RADIUS_METHODE(), ModelAPI_AttributeString::typeId()); + data()->addAttribute(CREATION_MULTI_RADIUS_METHOD(), ModelAPI_AttributeString::typeId()); data()->addAttribute(START_RADIUS_ID(), ModelAPI_AttributeDouble::typeId()); data()->addAttribute(END_RADIUS_ID(), ModelAPI_AttributeDouble::typeId()); @@ -85,13 +85,17 @@ void FeaturesPlugin_Fillet::initAttributes() data()->addAttribute(ARRAY_POINT_RADIUS_BY_POINTS(), ModelAPI_AttributeSelectionList::typeId()); - ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), END_RADIUS_ID()); - ModelAPI_Session::get()->validators()-> - registerNotObligatory(getKind(), ARRAY_POINT_RADIUS_BY_POINTS()); - ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), VALUES_ID()); - ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), VALUES_CURV_ID()); - ModelAPI_Session::get()->validators()-> - registerNotObligatory(getKind(), CREATION_MULTI_RADIUS_METHODE()); + + ModelAPI_Session::get()->validators() + ->registerNotObligatory(getKind(), END_RADIUS_ID()); + ModelAPI_Session::get()->validators() + ->registerNotObligatory(getKind(), ARRAY_POINT_RADIUS_BY_POINTS()); + ModelAPI_Session::get()->validators() + ->registerNotObligatory(getKind(), VALUES_ID()); + ModelAPI_Session::get()->validators() + ->registerNotObligatory(getKind(), VALUES_CURV_ID()); + ModelAPI_Session::get()->validators() + ->registerNotObligatory(getKind(), CREATION_MULTI_RADIUS_METHOD()); initVersion(aSelectionEdgeSelected); initVersion(aSelectionEdgesFacesMultiList); @@ -104,18 +108,17 @@ AttributePtr FeaturesPlugin_Fillet::objectsAttribute() { if( string(CREATION_METHOD())->value() == METHOD_MULTIPLES_RADIUSES() ) { - if( string(CREATION_MULTI_RADIUS_METHODE())->value() == CREATION_METHOD_BY_POINTS()) + if( string(CREATION_MULTI_RADIUS_METHOD())->value() == CREATION_METHOD_BY_POINTS()) { return attribute(EDGE_SELECTED_ID()); }else{ - return attribute(EDGES_FACES_MULTI_LIST_ID()); + return attribute(EDGES_FACES_MULTI_LIST_ID()); } }else if ( string(CREATION_METHOD())->value() == CREATION_METHOD_VARYING_RADIUS() ) { return attribute(EDGES_FACES_LIST_ID()); } - return attribute(OBJECT_LIST_ID()); } @@ -144,6 +147,7 @@ GeomMakeShapePtr FeaturesPlugin_Fillet::performOperation(const GeomShapePtr& the std::shared_ptr aFilletBuilder; ListOfShape aFilletEdges = extractEdges(theEdges); + if ( aCreationMethod->value() == METHOD_MULTIPLES_RADIUSES()) { @@ -151,7 +155,8 @@ GeomMakeShapePtr FeaturesPlugin_Fillet::performOperation(const GeomShapePtr& the std::list aRadiuses; AttributeTablesPtr aTablesAttr; - if( string(CREATION_MULTI_RADIUS_METHODE())->value() == CREATION_METHOD_BY_POINTS() ) + + if( string(CREATION_MULTI_RADIUS_METHOD())->value() == CREATION_METHOD_BY_POINTS() ) { aTablesAttr = tables(VALUES_ID()); @@ -167,6 +172,8 @@ GeomMakeShapePtr FeaturesPlugin_Fillet::performOperation(const GeomShapePtr& the aVal = aTablesAttr->value(k, 1); aRadiuses.push_back(aVal.myDouble); } + + aFilletBuilder.reset(new GeomAlgoAPI_Fillet(theSolid, aFilletEdges, aCoodCurv,aRadiuses)); }else diff --git a/src/FeaturesPlugin/FeaturesPlugin_Fillet.h b/src/FeaturesPlugin/FeaturesPlugin_Fillet.h index 817592837..60bba75ed 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_Fillet.h +++ b/src/FeaturesPlugin/FeaturesPlugin_Fillet.h @@ -67,15 +67,15 @@ public: return MY_METHOD_MULTIPLES_RADIUSES; } - inline static const std::string CREATION_MULTI_RADIUS_METHODE() + inline static const std::string CREATION_MULTI_RADIUS_METHOD() { - static std::string MY_CREATION_MULTI_RADIUS_METHODE("multiple_radiuses_methode"); + static std::string MY_CREATION_MULTI_RADIUS_METHODE("multiple_radiuses_method"); return MY_CREATION_MULTI_RADIUS_METHODE; } inline static const std::string CREATION_METHOD_BY_CURVILEAR_ABSCISSA() { - static std::string MY_CREATION_METHOD_BY_CURVILEAR_ABSCISSA("by_curvilinear_abscissa_methode"); + static std::string MY_CREATION_METHOD_BY_CURVILEAR_ABSCISSA("by_curvilinear_abscissa_method"); return MY_CREATION_METHOD_BY_CURVILEAR_ABSCISSA; } inline static const std::string CREATION_METHOD_BY_POINTS() @@ -90,8 +90,6 @@ public: return MY_ARRAY_POINT_RADIUS_BY_POINTS; } - - /// Attribute name of main objects. inline static const std::string& OBJECT_LIST_ID() { diff --git a/src/FeaturesPlugin/FeaturesPlugin_WidgetCreator.cpp b/src/FeaturesPlugin/FeaturesPlugin_WidgetCreator.cpp index 310ef8388..fd62f428a 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_WidgetCreator.cpp +++ b/src/FeaturesPlugin/FeaturesPlugin_WidgetCreator.cpp @@ -57,6 +57,5 @@ ModuleBase_ModelWidget* FeaturesPlugin_WidgetCreator::createWidgetByType( false); } - return aWidget; } diff --git a/src/FeaturesPlugin/FeaturesPlugin_WidgetFilletMultiRadiuses.cpp b/src/FeaturesPlugin/FeaturesPlugin_WidgetFilletMultiRadiuses.cpp index ca8cfa72b..3c390fd16 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_WidgetFilletMultiRadiuses.cpp +++ b/src/FeaturesPlugin/FeaturesPlugin_WidgetFilletMultiRadiuses.cpp @@ -68,43 +68,38 @@ const char* MYFalse = "False"; class TextFieldDoubleValidator : public QDoubleValidator { public: - TextFieldDoubleValidator (QObject * parent = 0) : QDoubleValidator(parent) {} - TextFieldDoubleValidator (double bottom, double top, int decimals, QObject * parent) : - QDoubleValidator(bottom, top, decimals, parent) {} + TextFieldDoubleValidator (QObject * theParent = 0) : QDoubleValidator(theParent) {} + TextFieldDoubleValidator (double theBottom, double theTop, int theDecimals, QObject * theParent) : + QDoubleValidator(theBottom, theTop, theDecimals, theParent) {} - QValidator::State validate(QString & s, int & pos) const { - if (s.isEmpty() || s.startsWith("0.") || s == "0" ){ + QValidator::State validate(QString & theS, int & thePos) const { + if (theS.isEmpty() || theS.startsWith("0.") || theS == "0" ){//|| s.startsWith("-")) { // allow empty field or minus sign return QValidator::Intermediate; } // check length of decimal places QChar point = locale().decimalPoint(); - if(s.indexOf(point) != -1) { - int lengthDecimals = s.length() - s.indexOf(point) - 1; - if (lengthDecimals > decimals()) { + if(theS.indexOf(point) != -1) { + int alengthDecimals = theS.length() - theS.indexOf(point) - 1; + if (alengthDecimals > decimals()) { return QValidator::Invalid; } } - // check range of value bool isNumber; - double value = locale().toDouble(s, &isNumber); - if (isNumber && bottom() <= value && value <= top()) { + double aValue = locale().toDouble(theS, &isNumber); + if (isNumber && bottom() <= aValue && aValue <= top()) { return QValidator::Acceptable; } return QValidator::Invalid; } - }; - - -DataArrayItemDelegate::DataArrayItemDelegate(bool theTypeMethode) - : QStyledItemDelegate(), myTypeMethodePoint(theTypeMethode) +DataArrayItemDelegate::DataArrayItemDelegate(bool theTypeMethod) + : QStyledItemDelegate(), myTypeMethodPoint(theTypeMethod) { } - QWidget* DataArrayItemDelegate::createEditor(QWidget* theParent, const QStyleOptionViewItem & theOption, const QModelIndex& theIndex ) const @@ -124,7 +119,7 @@ QWidget* DataArrayItemDelegate::createEditor(QWidget* theParent, if (aLineEdt) { if( theIndex.column() == 1 ){ TextFieldDoubleValidator* doubleVal = - new TextFieldDoubleValidator(0.00001 , 0.99, 6, aLineEdt); + new TextFieldDoubleValidator(0.00001 , 0.99, 6, aLineEdt); doubleVal->setNotation(TextFieldDoubleValidator::StandardNotation); aLineEdt->setValidator(doubleVal); } @@ -148,17 +143,14 @@ void DataArrayItemDelegate::onEditItem(const QString& theText) commitData(aWgt); } - -//********************************************************************************** -//********************************************************************************** //********************************************************************************** FeaturesPlugin_WidgetFilletMultiRadiuses:: FeaturesPlugin_WidgetFilletMultiRadiuses(QWidget* theParent, ModuleBase_IWorkshop* theWorkshop, const Config_WidgetAPI* theData, - bool TypeMethodeBypoint): + bool theTypeMethodBypoint): ModuleBase_WidgetSelector(theParent, theWorkshop, theData), myHeaderEditor(0), - myTypeMethodeBypoint(TypeMethodeBypoint),mySetSelection(true), mySortList(false) + myTypeMethodBypoint(theTypeMethodBypoint),mySetSelection(true) { QVBoxLayout* aMainLayout = new QVBoxLayout(this); @@ -173,14 +165,12 @@ ModuleBase_WidgetSelector(theParent, theWorkshop, theData), myHeaderEditor(0), myDataTbl = new QTableWidget(2, 3, aRadiusesFrame); - myDelegate = new DataArrayItemDelegate(myTypeMethodeBypoint); - + myDelegate = new DataArrayItemDelegate(myTypeMethodBypoint); myDataTbl->setItemDelegate(myDelegate); - myDataTbl->verticalHeader()->hide(); myDataTbl->setRowHeight(0, 25); - if(myTypeMethodeBypoint){ + if(myTypeMethodBypoint){ myfirstRowValue.push_back("Start extremity"); myfirstRowValue.push_back("0"); myfirstRowValue.push_back("1"); @@ -196,7 +186,7 @@ ModuleBase_WidgetSelector(theParent, theWorkshop, theData), myHeaderEditor(0), myLastRowValue.push_back("2"); } - if(myTypeMethodeBypoint) + if(myTypeMethodBypoint) myDataTbl->hideColumn(1); else myDataTbl->hideColumn(0); @@ -206,20 +196,19 @@ ModuleBase_WidgetSelector(theParent, theWorkshop, theData), myHeaderEditor(0), aHeaders << "Curvilinear \n Abscissa"; aHeaders << "Radius"; - myDataTbl->setHorizontalHeaderLabels(aHeaders); - QTableWidgetItem* aItem; + QTableWidgetItem* anItem; for(int j =0; j<3;j++) { - aItem = new QTableWidgetItem(myfirstRowValue[j]); + anItem = new QTableWidgetItem(myfirstRowValue[j]); if(j==0 || j== 1) - aItem->setFlags(Qt::NoItemFlags | Qt::ItemIsEnabled); - myDataTbl->setItem(0, j, aItem); - aItem = new QTableWidgetItem(myLastRowValue[j]); + anItem->setFlags(Qt::NoItemFlags | Qt::ItemIsEnabled); + myDataTbl->setItem(0, j, anItem); + anItem = new QTableWidgetItem(myLastRowValue[j]); if(j==0 || j== 1) - aItem->setFlags(Qt::NoItemFlags | Qt::ItemIsEnabled); - myDataTbl->setItem(1, j, aItem); + anItem->setFlags(Qt::NoItemFlags | Qt::ItemIsEnabled); + myDataTbl->setItem(1, j, anItem); } connect(myDataTbl, SIGNAL(cellChanged(int, int)), SLOT(onTableEdited(int, int))); @@ -235,16 +224,16 @@ ModuleBase_WidgetSelector(theParent, theWorkshop, theData), myHeaderEditor(0), aBtnLayout->setContentsMargins(0, 0, 0, 0); QPushButton* aAddBtn = new QPushButton(tr("+"), aBtnWgt); - QFont font = aAddBtn->font(); - font.setPointSize(12); - aAddBtn->setFont(font); + QFont aFont = aAddBtn->font(); + aFont.setPointSize(12); + aAddBtn->setFont(aFont); aBtnLayout->addWidget(aAddBtn); aBtnLayout->addStretch(1); myRemoveBtn = new QPushButton(tr("-"), aBtnWgt); - font = myRemoveBtn->font(); - font.setPointSize(12); - myRemoveBtn->setFont(font); + aFont = myRemoveBtn->font(); + aFont.setPointSize(12); + myRemoveBtn->setFont(aFont); aBtnLayout->addWidget(myRemoveBtn); aRadiusesFrame->setLayout(aRadiusesLayout ) ; @@ -252,7 +241,8 @@ ModuleBase_WidgetSelector(theParent, theWorkshop, theData), myHeaderEditor(0), connect(aAddBtn, SIGNAL(clicked(bool)), SLOT(onAdd())); connect(myRemoveBtn, SIGNAL(clicked(bool)), SLOT(onRemove())); - connect(qApp, SIGNAL(focusChanged(QWidget*, QWidget*)), SLOT(onFocusChanged(QWidget*, QWidget*))); + connect(qApp,SIGNAL(focusChanged(QWidget*, QWidget*)),SLOT(onFocusChanged(QWidget*,QWidget*))); + connect(myDataTbl, SIGNAL(itemSelectionChanged()), SLOT(onListSelection())); } QList FeaturesPlugin_WidgetFilletMultiRadiuses::getControls() const @@ -275,33 +265,31 @@ QIntList FeaturesPlugin_WidgetFilletMultiRadiuses::shapeTypes() const //********************************************************************************** void FeaturesPlugin_WidgetFilletMultiRadiuses::deactivate() { + + myWorkshop->module()->enableCustomModes(); + ModuleBase_WidgetSelector::deactivate(); + + myWorkshop->module()->deactivateCustomPrs(ModuleBase_IModule::CustomizeHighlightedObjects, true); + storeValueCustom(); } //********************************************************************************** bool FeaturesPlugin_WidgetFilletMultiRadiuses::eventFilter(QObject* theObject, QEvent* theEvent) { - if (theEvent->type() == QEvent::FocusIn) { - QTableWidget* aTable = dynamic_cast(theObject); - if (aTable) { - ModuleBase_IPropertyPanel* aPanel = myWorkshop->propertyPanel(); - if (aPanel->activeWidget() != this) { - aPanel->activateWidget(this, false); - } - } - } return ModuleBase_WidgetSelector::eventFilter(theObject, theEvent); } //********************************************************************************** bool FeaturesPlugin_WidgetFilletMultiRadiuses::storeValueCustom() { + DataPtr aData = myFeature->data(); AttributeTablesPtr aTablesAttr; - if(myTypeMethodeBypoint) + if(myTypeMethodBypoint) aTablesAttr = aData->tables(FeaturesPlugin_Fillet::VALUES_ID()); else aTablesAttr = aData->tables(FeaturesPlugin_Fillet::VALUES_CURV_ID()); @@ -319,18 +307,18 @@ bool FeaturesPlugin_WidgetFilletMultiRadiuses::storeValueCustom() } } - if(myTypeMethodeBypoint && mySortList ){ + if(myTypeMethodBypoint && mySortList ){ AttributeSelectionListPtr aSelectionListAttr = aData->selectionList(FeaturesPlugin_Fillet::ARRAY_POINT_RADIUS_BY_POINTS()); if( aSelectionListAttr->isInitialized() ) { - std::map>::iterator itValuesSort; + std::map>::iterator anItValuesSort; QList> alist = getAttributeSelection(); aSelectionListAttr->clear(); - itValuesSort = myValuesSort.begin(); - for(;itValuesSort != myValuesSort.end();++itValuesSort) + anItValuesSort = myValuesSort.begin(); + for(;anItValuesSort != myValuesSort.end();++anItValuesSort) { - std::pair elem = itValuesSort->second; + std::pair elem = anItValuesSort->second; ResultPtr aResult; GeomShapePtr aShape; foreach(ModuleBase_ViewerPrsPtr aPrs, alist) { @@ -346,13 +334,13 @@ bool FeaturesPlugin_WidgetFilletMultiRadiuses::storeValueCustom() } } } - return true; } //********************************************************************************** bool FeaturesPlugin_WidgetFilletMultiRadiuses::restoreValueCustom() { + if ( !mySetSelection) { mySetSelection = true; return false; @@ -361,7 +349,7 @@ bool FeaturesPlugin_WidgetFilletMultiRadiuses::restoreValueCustom() AttributeTablesPtr aTablesAttr; - if(myTypeMethodeBypoint){ + if(myTypeMethodBypoint){ aTablesAttr = aData->tables(FeaturesPlugin_Fillet::VALUES_ID()); } else{ @@ -369,41 +357,41 @@ bool FeaturesPlugin_WidgetFilletMultiRadiuses::restoreValueCustom() } if( aTablesAttr->rows() == 0 ) - { - aTablesAttr->setSize(2,2); - ModelAPI_AttributeTables::Value aVar; - aVar.myDouble = 0.0; - aTablesAttr->setValue(aVar,0,0); - aVar.myDouble = 1; - aTablesAttr->setValue(aVar,0,1); - aTablesAttr->setValue(aVar,1,0); - aVar.myDouble = 2; - aTablesAttr->setValue(aVar,1,1); - } + { + aTablesAttr->setSize(2,2); + ModelAPI_AttributeTables::Value aVar; + aVar.myDouble = 0.0; + aTablesAttr->setValue(aVar,0,0); + aVar.myDouble = 1; + aTablesAttr->setValue(aVar,0,1); + aTablesAttr->setValue(aVar,1,0); + aVar.myDouble = 2; + aTablesAttr->setValue(aVar,1,1); + } AttributeSelectionPtr anEdges = - std::dynamic_pointer_cast( - aData->attribute(FeaturesPlugin_Fillet::EDGE_SELECTED_ID())); + std::dynamic_pointer_cast + (aData->attribute(FeaturesPlugin_Fillet::EDGE_SELECTED_ID())); myValuesSort.clear(); - double res; + double aRes; int aRows = 0; - std::map>::iterator itValuesSort; - if(myTypeMethodeBypoint) + std::map>::iterator anItValuesSort; + if(myTypeMethodBypoint) { if( !anEdges->isInitialized() ) return false; GeomEdgePtr anEdge = GeomEdgePtr(new GeomAPI_Edge( anEdges->value())); - GeomPointPtr first = anEdge->firstPoint(); - GeomPointPtr last = anEdge->lastPoint(); - double taille = first->distance(last); + GeomPointPtr aFirst = anEdge->firstPoint(); + GeomPointPtr aLast = anEdge->lastPoint(); + double taille = aFirst->distance(aLast); std::shared_ptr aCurve(new GeomAPI_Curve(anEdges->value())); // Load points AttributeSelectionListPtr aSelectionListAttr = - aData->selectionList(FeaturesPlugin_Fillet::ARRAY_POINT_RADIUS_BY_POINTS()); + aData->selectionList(FeaturesPlugin_Fillet::ARRAY_POINT_RADIUS_BY_POINTS()); AttributeDoubleArrayPtr aArrayAttr; ListOfShape aPoints; @@ -421,93 +409,95 @@ bool FeaturesPlugin_WidgetFilletMultiRadiuses::restoreValueCustom() aPoints.push_back(aShape); } - int i =0; + + int anI =0; ListOfShape::const_iterator aPointsIt = aPoints.begin(); for (; aPointsIt != aPoints.end(); ++aPointsIt) { - AttributeSelectionPtr attsel = aSelectionListAttr->value(i); + AttributeSelectionPtr attsel = aSelectionListAttr->value(anI); std::shared_ptr aPnt = GeomAlgoAPI_PointBuilder::point(*aPointsIt); std::shared_ptr aPntCurv = aCurve->project(aPnt); - res = (aPntCurv->distance(first) / taille); + aRes = (aPntCurv->distance(aFirst) / taille); QString aName = QString::fromStdWString(attsel->namingName()); - QString aRad = findRadius( QString::number(res) ); - if ( myValuesSort.find( res ) == myValuesSort.end() ) - myValuesSort[ res ] = std::make_pair(aName, aRad ); - i++; + QString aRad = findRadius( QString::number(aRes) ); + if ( myValuesSort.find( aRes ) == myValuesSort.end() ) + myValuesSort[ aRes ] = std::make_pair(aName, aRad ); + anI++; mySortList = true; } - res = 0.0; - myValuesSort[ res ] = std::make_pair (myfirstRowValue[0], findRadius( QString::number(res) )); - res = 1.0; - myValuesSort[ res ] = std::make_pair (myLastRowValue[0], findRadius( QString::number(res) )); + aRes = 0.0; + myValuesSort[ aRes ] = std::make_pair (myfirstRowValue[0], findRadius( QString::number(aRes))); + aRes = 1.0; + myValuesSort[ aRes ] = std::make_pair (myLastRowValue[0], findRadius( QString::number(aRes))); aRows = myValuesSort.size(); }else{ ModelAPI_AttributeTables::Value aVal; if (aTablesAttr->isInitialized()){ + for (int anIndex = 0; anIndex < aTablesAttr->rows(); ++anIndex) { aVal = aTablesAttr->value(anIndex,0); - double curv = getValueText(aVal).toDouble(); - if ( myValuesSort.find( curv ) == myValuesSort.end() ) - myValuesSort[ curv ] = std::make_pair(getValueText(aVal), - findRadius(getValueText(aVal))); + double aCurv = getValueText(aVal).toDouble(); + if ( myValuesSort.find( aCurv ) == myValuesSort.end() ) + myValuesSort[ aCurv ] = + std::make_pair(getValueText(aVal),findRadius(getValueText(aVal))); } aRows = myValuesSort.size(); }else{ - res = 0.0; - myValuesSort[ res ] = std::make_pair (myfirstRowValue[0], myfirstRowValue[2]); - res = 1.0; - myValuesSort[ res ] = std::make_pair (myLastRowValue[0], myLastRowValue[2]); + aRes = 0.0; + myValuesSort[ aRes ] = std::make_pair (myfirstRowValue[0], myfirstRowValue[2]) ; + aRes = 1.0; + myValuesSort[ aRes ] = std::make_pair (myLastRowValue[0], myLastRowValue[2]) ; aRows = 2; } } - QTableWidgetItem* aItem = 0; + QTableWidgetItem* anItem = 0; myDataTbl->blockSignals(true); - aItem = myDataTbl->item( myDataTbl->rowCount() -1, 0 ); - aItem->setFlags(Qt::NoItemFlags - | Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable); - aItem = myDataTbl->item( myDataTbl->rowCount() -1, 1 ); - aItem->setFlags(Qt::NoItemFlags | Qt::ItemIsSelectable - | Qt::ItemIsEnabled | Qt::ItemIsEditable); + anItem = myDataTbl->item( myDataTbl->rowCount() -1, 0 ); + anItem->setFlags(Qt::NoItemFlags | Qt::ItemIsSelectable + | Qt::ItemIsEnabled | Qt::ItemIsEditable); + anItem = myDataTbl->item( myDataTbl->rowCount() -1, 1 ); + anItem->setFlags(Qt::NoItemFlags | Qt::ItemIsSelectable + | Qt::ItemIsEnabled | Qt::ItemIsEditable); myDataTbl->setRowCount(aRows); - itValuesSort = myValuesSort.begin(); + anItValuesSort = myValuesSort.begin(); - for (int k = 0; k < aRows; k++, ++itValuesSort ) { + for (int k = 0; k < aRows; k++, ++anItValuesSort ) { - std::pair elem = itValuesSort->second; - QString aCurv = QString::number(itValuesSort->first); + std::pair elem = anItValuesSort->second; + QString aCurv = QString::number(anItValuesSort->first); - aItem = myDataTbl->item(k, 0); - if (aItem) { - aItem->setText( elem.first); + anItem = myDataTbl->item(k, 0); + if (anItem) { + anItem->setText( elem.first); } else { - aItem = new QTableWidgetItem(elem.first); - myDataTbl->setItem(k, 0, aItem); + anItem = new QTableWidgetItem(elem.first); + myDataTbl->setItem(k, 0, anItem); } - aItem = myDataTbl->item(k, 1); - if (aItem) { - aItem->setText( aCurv); + anItem = myDataTbl->item(k, 1); + if (anItem) { + anItem->setText( aCurv); } else { - aItem = new QTableWidgetItem(aCurv); - myDataTbl->setItem(k, 1, aItem); + anItem = new QTableWidgetItem(aCurv); + myDataTbl->setItem(k, 1, anItem); } - aItem = myDataTbl->item(k, 2); - if (aItem) { - aItem->setText( elem.second); + anItem = myDataTbl->item(k, 2); + if (anItem) { + anItem->setText( elem.second); } else { - aItem = new QTableWidgetItem(elem.second); - myDataTbl->setItem(k, 2, aItem); + anItem = new QTableWidgetItem(elem.second); + myDataTbl->setItem(k, 2, anItem); } } - aItem = myDataTbl->item(myDataTbl->rowCount()-1, 0 ); - aItem->setFlags(Qt::NoItemFlags | Qt::ItemIsEnabled ); - aItem = myDataTbl->item(myDataTbl->rowCount()-1, 1 ); - aItem->setFlags(Qt::NoItemFlags | Qt::ItemIsEnabled ); + anItem = myDataTbl->item(myDataTbl->rowCount()-1, 0 ); + anItem->setFlags(Qt::NoItemFlags | Qt::ItemIsEnabled ); + anItem = myDataTbl->item(myDataTbl->rowCount()-1, 1 ); + anItem->setFlags(Qt::NoItemFlags | Qt::ItemIsEnabled ); myDataTbl->blockSignals(false); return true; @@ -517,8 +507,8 @@ bool FeaturesPlugin_WidgetFilletMultiRadiuses::restoreValueCustom() //********************************************************************************** void FeaturesPlugin_WidgetFilletMultiRadiuses::onAdd() { - QModelIndex index = myDataTbl->currentIndex(); - int i = index.row(); + QModelIndex anIndex = myDataTbl->currentIndex(); + int i = anIndex.row(); if( i != -1 && !(!myDataTbl->currentItem()->isSelected() && myDataTbl->rowCount() >2)) { @@ -532,18 +522,18 @@ void FeaturesPlugin_WidgetFilletMultiRadiuses::onAdd() i = 1; else i= i+1; - myDataTbl->model()->insertRow(i); - QTableWidgetItem* aItem =0; + myDataTbl->model()->insertRow(i); - aItem = myDataTbl->item( i, 0 ); - aItem = new QTableWidgetItem( "" ); - myDataTbl->setItem(i, 0, aItem); - aItem = new QTableWidgetItem("0.1"); - myDataTbl->setItem(i, 1, aItem); + QTableWidgetItem* anItem =0; - aItem = new QTableWidgetItem("0.5"); - myDataTbl->setItem(i, 2, aItem); + anItem = myDataTbl->item( i, 0 ); + anItem = new QTableWidgetItem( "" ); + myDataTbl->setItem(i, 0, anItem); + anItem = new QTableWidgetItem("0.1"); + myDataTbl->setItem(i, 1, anItem); + anItem = new QTableWidgetItem("0.5"); + myDataTbl->setItem(i, 2, anItem); myDataTbl->blockSignals(false); emit valuesChanged(); @@ -554,31 +544,30 @@ void FeaturesPlugin_WidgetFilletMultiRadiuses::onAdd() //********************************************************************************** void FeaturesPlugin_WidgetFilletMultiRadiuses::onRemove() { - QModelIndex index = myDataTbl->currentIndex(); + QModelIndex anIndex = myDataTbl->currentIndex(); if( myDataTbl->currentItem()->isSelected() && myDataTbl->rowCount() >2 - && index.row() != -1 - && index.row() != 0 - && index.row() != myDataTbl->rowCount() -1){ + && anIndex.row() != -1 + && anIndex.row() != 0 + && anIndex.row() != myDataTbl->rowCount() -1){ myDataTbl->blockSignals(true); - if (myTypeMethodeBypoint) + if (myTypeMethodBypoint) { - QString aName = myDataTbl->item( index.row() , 0 )->text(); + QString aName = myDataTbl->item( anIndex.row() , 0 )->text(); AttributeSelectionListPtr aSelList = - myFeature->data() - ->selectionList(FeaturesPlugin_Fillet::ARRAY_POINT_RADIUS_BY_POINTS()); + myFeature->data()->selectionList(FeaturesPlugin_Fillet::ARRAY_POINT_RADIUS_BY_POINTS()); - AttributeSelectionPtr aAttr; + AttributeSelectionPtr anAttr; for (int i = 0; i < aSelList->size(); i++) { - aAttr = aSelList->value(i); - if( aName == QString::fromStdWString( aAttr->namingName()) ) + anAttr = aSelList->value(i); + if( aName == QString::fromStdWString( anAttr->namingName()) ) { aSelList->remove({i}); } } } - myDataTbl->model()->removeRow(index.row()); + myDataTbl->model()->removeRow(anIndex.row()); myDataTbl->blockSignals(false); emit valuesChanged(); @@ -602,7 +591,7 @@ void FeaturesPlugin_WidgetFilletMultiRadiuses::onTableEdited(int theRow, int the AttributeTablesPtr aTablesAttr; - if(myTypeMethodeBypoint) + if(myTypeMethodBypoint) aTablesAttr = myFeature->data()->tables(FeaturesPlugin_Fillet::VALUES_ID()); else aTablesAttr = myFeature->data()->tables(FeaturesPlugin_Fillet::VALUES_CURV_ID()); @@ -632,9 +621,8 @@ bool FeaturesPlugin_WidgetFilletMultiRadiuses::processEnter() bool FeaturesPlugin_WidgetFilletMultiRadiuses:: setSelection(QList>& theValues, const bool theToValidate) { - mySortList = false; - if ( theValues.size() > 1 || !myTypeMethodeBypoint || theValues.size() == 0 ) + if ( theValues.size() > 1 || !myTypeMethodBypoint || theValues.size() == 0 ) { mySetSelection = false; return false; @@ -705,7 +693,7 @@ QString FeaturesPlugin_WidgetFilletMultiRadiuses::findRadius(QString thename) co { AttributeTablesPtr aTablesAttr; - if(myTypeMethodeBypoint) + if(myTypeMethodBypoint) aTablesAttr = myFeature->data()->tables(FeaturesPlugin_Fillet::VALUES_ID()); else aTablesAttr = myFeature->data()->tables(FeaturesPlugin_Fillet::VALUES_CURV_ID()); @@ -724,8 +712,71 @@ QString FeaturesPlugin_WidgetFilletMultiRadiuses::findRadius(QString thename) co //********************************************************************************** QString FeaturesPlugin_WidgetFilletMultiRadiuses:: - getValueText(ModelAPI_AttributeTables::Value& theVal) const + getValueText(ModelAPI_AttributeTables::Value& theVal) const { - return QString::number(theVal.myDouble); } + +//******************************************************************** +void FeaturesPlugin_WidgetFilletMultiRadiuses:: + getHighlighted(QList& theValues) +{ + std::set anAttributeIds; + getSelectedAttributeIndices(anAttributeIds); + if (!anAttributeIds.empty()) + convertIndicesToViewerSelection(anAttributeIds, theValues); +} + +//******************************************************************** +void FeaturesPlugin_WidgetFilletMultiRadiuses:: + getSelectedAttributeIndices(std::set& theAttributeIds) +{ + QModelIndexList indexList = myDataTbl->selectionModel()->selectedIndexes(); + int aRow; + foreach (QModelIndex index, indexList) { + aRow = index.row(); + theAttributeIds.insert(aRow-1); + } +} + +void FeaturesPlugin_WidgetFilletMultiRadiuses:: + convertIndicesToViewerSelection(std::set theAttributeIds, + QList& theValues) const +{ + if(myFeature.get() == NULL) + return; + + DataPtr aData = myFeature->data(); + AttributePtr anAttribute = + aData->attribute(FeaturesPlugin_Fillet::ARRAY_POINT_RADIUS_BY_POINTS()); + + AttributeSelectionListPtr aSelectionListAttr = + aData->selectionList(FeaturesPlugin_Fillet::ARRAY_POINT_RADIUS_BY_POINTS()); + for (int i = 0; i < aSelectionListAttr->size(); i++) { + // filter by attribute indices only if the container is not empty otherwise return all items + if (!theAttributeIds.empty() && theAttributeIds.find(i) == theAttributeIds.end()) + continue; + AttributeSelectionPtr anAttr = aSelectionListAttr->value(i); + ObjectPtr anObject = anAttr->contextObject(); + if (anObject.get()) + theValues.append(std::shared_ptr( + new ModuleBase_ViewerPrs(anObject, anAttr->value(), NULL))); + } +} + +//******************************************************************** +void FeaturesPlugin_WidgetFilletMultiRadiuses::onListSelection() +{ + myWorkshop->module()->customizeFeature(myFeature,ModuleBase_IModule::CustomizeHighlightedObjects, + true); +} + +//******************************************************************** +void FeaturesPlugin_WidgetFilletMultiRadiuses::activateCustom() +{ + ModuleBase_WidgetSelector::activateCustom(); + + ModuleBase_IModule* aModule = myWorkshop->module(); + aModule->activateCustomPrs(myFeature, + ModuleBase_IModule::CustomizeHighlightedObjects, true); +} diff --git a/src/FeaturesPlugin/FeaturesPlugin_WidgetFilletMultiRadiuses.h b/src/FeaturesPlugin/FeaturesPlugin_WidgetFilletMultiRadiuses.h index 4de9debbf..4d60f3389 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_WidgetFilletMultiRadiuses.h +++ b/src/FeaturesPlugin/FeaturesPlugin_WidgetFilletMultiRadiuses.h @@ -41,7 +41,7 @@ class DataArrayItemDelegate : public QStyledItemDelegate { Q_OBJECT public: - DataArrayItemDelegate(bool theTypeMethode); + DataArrayItemDelegate(bool theTypeMethod); virtual QWidget* createEditor(QWidget* theParent, const QStyleOptionViewItem & theOption, @@ -51,7 +51,7 @@ private slots: void onEditItem(const QString& theText); private: - bool myTypeMethodePoint; + bool myTypeMethodPoint; }; @@ -66,7 +66,7 @@ public: FeaturesPlugin_WidgetFilletMultiRadiuses(QWidget* theParent, ModuleBase_IWorkshop* theWorkshop, const Config_WidgetAPI* theData, - bool TypeMethodeBypoint); + bool TypeMethodBypoint); virtual ~FeaturesPlugin_WidgetFilletMultiRadiuses() {} @@ -81,7 +81,15 @@ public: /// \return a boolean value virtual bool isValidSelectionCustom(const std::shared_ptr& theValue); + /// Returns values which should be highlighted when the whidget is active + /// \param theValues a list of presentations + virtual void getHighlighted(QList>& theValues); + protected: + /// The methiod called when widget is activated + virtual void activateCustom(); + + /// Saves the internal parameters to the given feature /// \return True in success virtual bool storeValueCustom(); @@ -112,6 +120,16 @@ protected: /// a shape. If the attribute do not uses the shape, it is empty virtual QList> getAttributeSelection() const; + /// Returns attribute indices selected in the widget selection list + /// \param theIndices a list of indices + void getSelectedAttributeIndices(std::set& theIndices); + + /// Gets the feature attribute and fill a list of viewer presentation for the attribute + /// indices. If the the container of indices is empty, it returns all objects. + /// \param theAttributeIds indices in attribute list to be returned + /// \param theValues the result presentations, filled with object and shape of an attribute item + void convertIndicesToViewerSelection(std::set theAttributeIds, + QList>& theValues) const; private slots: /// Slot called on add a row @@ -129,6 +147,8 @@ private slots: /// \param theCol a column of the cell void onTableEdited(int theRow, int theCol); + /// Slot is called on selection of list of selected items + void onListSelection(); private: @@ -153,16 +173,20 @@ private: /// Editor for table header QLineEdit* myHeaderEditor; - bool myTypeMethodeBypoint; + // Choice of the method + bool myTypeMethodBypoint; + //Sort the selection bool mySetSelection; bool mySortList; DataArrayItemDelegate* myDelegate; + // Label for first and last row std::vector myfirstRowValue; std::vector myLastRowValue; + // map to sort std::map> myValuesSort; }; diff --git a/src/FeaturesPlugin/FeaturesPlugin_msg_fr.ts b/src/FeaturesPlugin/FeaturesPlugin_msg_fr.ts index aeebd768d..9eb3e05e6 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_msg_fr.ts +++ b/src/FeaturesPlugin/FeaturesPlugin_msg_fr.ts @@ -971,7 +971,26 @@ Rayon du congé au point final. - + + Fillet:multiple_radiuses + + Radii + Rayons + + + Radius + Rayon + + + Curvilinear \n Abscissa + Abscisse \n curviligne + + + Edges or/and faces + Arêtes et/ou faces + + + Fillet1D diff --git a/src/FeaturesPlugin/doc/TUI_filletvariableFeature.rst b/src/FeaturesPlugin/doc/TUI_filletvariableFeature.rst index 36311a584..a2b47959c 100644 --- a/src/FeaturesPlugin/doc/TUI_filletvariableFeature.rst +++ b/src/FeaturesPlugin/doc/TUI_filletvariableFeature.rst @@ -9,3 +9,25 @@ Create Fillet by variable radius :language: python :download:`Download this script ` + + .. _tui_create_fillet_MultiRadiusBycurvAbs: + +Create Fillet with multiple radiuses by curvilinear abscissa +============================================================ + +.. literalinclude:: examples/filletMultiRadiusBycurvAbs.py + :linenos: + :language: python + +:download:`Download this script ` + + .. _tui_create_filletMultiRadiusByPoints: + +Create Fillet with multiple radiuses by points +============================================== + +.. literalinclude:: examples/filletMultiRadiusByPoints.py + :linenos: + :language: python + +:download:`Download this script ` diff --git a/src/FeaturesPlugin/doc/examples/filletMultiRadiusByPoints.py b/src/FeaturesPlugin/doc/examples/filletMultiRadiusByPoints.py new file mode 100644 index 000000000..d3f3ca65c --- /dev/null +++ b/src/FeaturesPlugin/doc/examples/filletMultiRadiusByPoints.py @@ -0,0 +1,17 @@ +from salome.shaper import model + +model.begin() +partSet = model.moduleDocument() +Part_1 = model.addPart(partSet) +Part_1_doc = Part_1.document() +Box_1 = model.addBox(Part_1_doc, 10, 10, 10) +### Create Point +Point_1 = model.addPoint(Part_1_doc, model.selection("EDGE", "[Box_1_1/Left][Box_1_1/Top]"), 0.5, True, False) +Point_2 = model.addPoint(Part_1_doc, model.selection("EDGE", "[Box_1_1/Left][Box_1_1/Top]"), 0.2, True, False) +Fillet_1 = model.addFilletMultiRadiusByPoints(Part_1_doc, + model.selection("EDGE", "[Box_1_1/Left][Box_1_1/Top]"), + [model.selection("VERTEX", "Point_1"), model.selection("VERTEX", "Point_2")], + [1, 0.5, 0.5, 2], keepSubResults = True) + +model.do() +model.end() diff --git a/src/FeaturesPlugin/doc/examples/filletMultiRadiusBycurvAbs.py b/src/FeaturesPlugin/doc/examples/filletMultiRadiusBycurvAbs.py new file mode 100644 index 000000000..02456d833 --- /dev/null +++ b/src/FeaturesPlugin/doc/examples/filletMultiRadiusBycurvAbs.py @@ -0,0 +1,12 @@ +from salome.shaper import model + +model.begin() +partSet = model.moduleDocument() +Part_1 = model.addPart(partSet) +Part_1_doc = Part_1.document() +Box_1 = model.addBox(Part_1_doc, 10, 10, 10) +Fillet_1 = model.model.addFilletMultiRadiusBycurvAbs + (Part_1_doc, [model.selection("EDGE", "[Box_1_1/Front][Box_1_1/Top]")], + [0, 0.5, 1],[1, 0.5, 1], keepSubResults = True) +model.do() +model.end() diff --git a/src/FeaturesPlugin/doc/filletFeature.rst b/src/FeaturesPlugin/doc/filletFeature.rst index b41c2e16b..c501ed4fe 100644 --- a/src/FeaturesPlugin/doc/filletFeature.rst +++ b/src/FeaturesPlugin/doc/filletFeature.rst @@ -12,7 +12,7 @@ To create a Fillet in the active part: #. select in the Main Menu *Feature - > Fillet* item or #. click |fillet.icon| **Fillet** button in the toolbar -There are 2 types of fillet: +There are 3 types of fillet: .. figure:: images/fillet_fixed_radius.png :align: left @@ -26,6 +26,12 @@ fillet by fixed radius fillet by variable radius +.. figure:: images/fillet_var_multiple_radiuses.png + :align: left + :height: 24px + +fillet by multiple radius + -------------------------------------------------------------------------------- Fillet by fixed radius @@ -40,15 +46,15 @@ The property panel is shown below. Input fields: -- **Faces or/and edges** panel contains filleted faces and edges. All edges of a face are subject to fillet operation. Faces and edges are selected in 3D OCC viewer; +- **Faces, edges or/and solids** panel contains filleted faces, edges and solids. All edges of a face or solid are subject to fillet operation. Faces, edges and solids are selected in 3D OCC viewer; - **Radius** defines fillet radius. **TUI Command**: -.. py:function:: model.addFillet(Part_doc, [face,edge], radius) +.. py:function:: model.addFillet(Part_doc, [face,edge,solid], radius) :param part: The current part object. - :param list: A list of faces and edges subject to fillet operation in format *model.selection(TYPE, shape)*. + :param list: A list of faces, edges and solids subject to fillet operation in format *model.selection(TYPE, shape)*. :param number: Radius value. :return: Created object. @@ -101,3 +107,104 @@ Result of **Fillet by variable radius** is shown below. Fillet by variable radius **See Also** a sample TUI Script of :ref:`tui_create_fillet2` operation. + +Fillet by multiple radius +------------------------- + +There is a possibility to create a fillet with multiple radius define along an edge. + +.. figure:: images/FilletMultipleRadius.png + :align: center + + Fillet by multiple radius + +There are two methods for creating a fillet by multiple radius : + +.. figure:: images/fillet_multiradius_by_curv.png + :align: left + :height: 24px + +Fillet with multiple radiuses by curvilinear abscissa + +.. figure:: images/fillet_multiradius_by_point.png + :align: left + :height: 24px + +Fillet with multiple radiuses by points + +Fillet with multiple radiuses by curvilinear abscissa +""""""""""""""""""""""""""""""""""""""""""""""""""""" +The property panel is shown below. + +.. figure:: images/FilletMultiplebycurv.png + :align: center + + Fillet with multiple radiuses by curvilinear abscissa property panel + +Input fields: + +- **Edges or/and faces** panel contains filleted faces and edges. All edges of a face are subject to fillet operation. Faces and edges are selected in 3D OCC viewer; +- **Radii** table allows to define a radius for each selected abscissa along the selected edge(s); + - **Curvilinea Abscissa** contains the curvilinear abscissa of points on edge; + - **Radius** contains the radius for each point. + +**TUI Command**: + +.. py:function:: model.addFilletMultiRadiusBycurvAbs(Part_doc, shapes, listAbsc, listRadius) + + :param document Part_doc: The current part object. + :param list shapes: A list of faces and edges subject to fillet operation in format *model.selection(TYPE, shape)*. + :param listAbsc: list of curvilinea abscissa. + :param listRadius: list of radius value. + :return: Created object. + +Result +"""""" + +Result of **Fillet with multiple radiuses by curvilinear abscissa** is shown below. + +.. figure:: images/filletmultiRadiusCurvResult.png + :align: center + + Fillet with multiple radiuses by curvilinear abscissa + +**See Also** a sample TUI Script of :ref:`tui_create_fillet_MultiRadiusBycurvAbs` operation. + +Fillet with multiple radiuses by points +""""""""""""""""""""""""""""""""""""""" +The property panel is shown below. + +.. figure:: images/FilletMultiplebypoint.png + :align: center + + Fillet with multiple radiuses by points property panel + +Input fields: + +- Selection panel contains one edge which has to be selected in 3D OCC viewer; +- **Radii** defines the radius along the selected edge; + - **Point** column contains points on edge. These points have to selected in 3D OCC viewer; + - **Radius** column contains the radius for each selected point. + +**TUI Command**: + +.. py:function:: model.addFilletMultiRadiusByPoints(Part_doc, edge, Points, ListRadius) + + :param document Part_doc: The current part object. + :param edge: An edge subject to fillet operation in format *model.selection(TYPE, shape)*. + :param Points: list of point in format *model.selection(TYPE, shape)*. + :param ListRadius: list of radius value. + :return: Created object. + +Result +"""""" + +Result of **Fillet with multiple radiuses by points** is shown below. + +.. figure:: images/filletmultiRadiuspointResult.png + :align: center + + Fillet with multiple radiuses by points + +**See Also** a sample TUI Script of :ref:`tui_create_filletMultiRadiusByPoints` operation. + diff --git a/src/FeaturesPlugin/doc/images/FilletFixed.png b/src/FeaturesPlugin/doc/images/FilletFixed.png index 9b2b15d3e9e8a34060c51e0b2030e07233c446c1..11e5d3e1eb54f4b0f5944f4d26e395fa702f380b 100644 GIT binary patch literal 18560 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 J);T3K0RTEsBLDyZ literal 12533 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 QuL)0NrIbKr62<}l3rtrD$N&HU diff --git a/src/FeaturesPlugin/doc/images/FilletMultipleRadius.png b/src/FeaturesPlugin/doc/images/FilletMultipleRadius.png new file mode 100644 index 0000000000000000000000000000000000000000..76adbb1e8659ba69e9585257662ae9bf48402aa3 GIT binary patch literal 18454 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 literal 0 HcmV?d00001 diff --git a/src/FeaturesPlugin/doc/images/FilletMultiplebycurv.png b/src/FeaturesPlugin/doc/images/FilletMultiplebycurv.png new file mode 100644 index 0000000000000000000000000000000000000000..6664adc23c71ac22e4e6b4a56cbec662fef79909 GIT binary patch literal 19421 zcmd43b97}-yEPiKV>{{C9oy>IX23QMZM zd|h5J#$jLgI8I_3PRh2XPOiTkOhC+RY=4{3I~qBdnAkX)+d5r=1NgsQ1(6gLQgO>X z-*EO)eIOdTS&DY92QAQKYEy1gEEE-j0EMIz6r@I>1{H%yL@hjkrZM!7m?ep3jaohq zsjcmD_wl9s8@=(c?Ul_xDdKV!J{5h(zjeoVlwF|tG;{?g46`uXFD~{I1}4wYqkx2@ z+6q~CpX9e57IDz9HY%9#-^?ICWSWwx(f;DGG4qvQXv$6A5(MpYQC2gdEzfws`~Xr{ z4(Gy|hUVor32ivZd6-}IMbarKE+1a$Q_#TYnReG|>kNi>4jg@VTM31kVU7X#1QkxC(B7_XSLds&e>%%7j|J@@MH#E@f*VdC0)&g-|IDT zU+MC(%9)mcXJ~`j%DFJYKx}PWC)04U{%Uq& zKD?eEW><>A-bAf^W$MN4qceJKKwN0L@qz$CP3w94nLs2jTXkNUQS~93<3nqYR}+Dj zM{=I67urb#n5Y|5gX{c}@hlsuU^-ll&)Jfb6?wW7hbIOb7yDKBn>-Bny^v^j*(Y;& z;>IB&6C;>@yT88R0RdxZ$U4~$zfDms8-7duu=m~&7MAkuA8z{KJUgel*CFCBbxR;> z+8VSzvkp>-i)sQPyg!EfECd0`c!kjU%XtHx%t7r3HND)bG)-vDv$Z_l$)dQ zKuP&X4U){s0%=KM&@<758l=!V|9JEp=PIFgFB= zrP~tj#LHF2c9Hx2GxoIKcYp!%Zusn4e&1d@2-2leA)7bDJ?ygL`2YtD49=99l}LD# z-vai?vp3$d#~Q@39gU&Hd1(gOPh=QSGD1k8@p(&Po_!$HSG~Q;le^!$e}4Gh?v;+r zjtDo^(SFcKV-4Qiv=FM`pvMgKBq%Mc{@5O)@Iw=Ne^F|5)u(~PwXbgcLmrlquhxef1A>sB1J4m*@*Mt|O*$byg2t-oi|5N@F-9br02la5xln*DNxDjPH@vge zzDl$(uX9C2QW7*~-qPu@&Vlp!y$e^DjF{q&bb8KZlXF*p_E_)tN!`tKZlulvmgsD& zpV1zWOzBZN?e>8yfZql;`Wb0YJ!?R>HnSEtl5943*Qx!Oso(gS_}Gn?-o;I?6v}tc zSHt$~44){Gousxt*MwdCdZjV0m$z)m@)^;gJ%WwuJaa8Kj_izm#T%f3BjY@Chl&N_ z1R;P=P`zxzw{};o_Q%Vfc0o}74?8lGQMKL9lPyDLZEL+2=89Fe_|m5Wd|hST&)T>0z3GFpGD5M-^cBW5s8O zKSS8yeN$war+uzijMn91W5Sg-S+UX$6gQE2lo9aWAG5(@u~ke@5uNNCn_cs+3U~AE z#bHgOY_S}&d!j`f*a~50$?uVc2p-;iZ>NM#LA3IzfgGgQF+P=G_Je63#shuayrq1} zsCsFo1OF?t*O>$|GP3KZVuZIQ8~Qou4k3U`eS7Gdtaa^#xudUv6ty~3H9fcd<8=jA&6(UOz=u88lT++KIn?CjV1b>D^Xk`A`li6;UjaDK8Jk6@Y zp%Dx#>3P#-fsy2lSuigu@KsMwvbbC3bo_V^=xz%KMV96bDThjL^yMELV^F663F(|_ zDP_TNJ>-;&=*5yi%2h{iAcGcE)q64j0ZJZe=Jt`sFK_S?Yqjih&PwF_BmVEPc~`bT z=n42{_t*qmeLed3Ep9hY0q1goAxCGtn#Wm7xed;b={xoB3=T66g!&RhAc$9+Q#BNO zb-$lS=mTy{X!1cGB|!}!`Kh&oV~7w)YE;5yCU}%dY7V!&-@5KVL^kpIFRppUfu@+s zo0mcbWf;t=Uz08?V-dq>w$j0JsbVbiT_2gyk@DafhlfI`QrysNJ88IF<@T?*&{OY< zR$yQP8dTOtp66#e8}2UtxxJ(P$h{W}1{fX^VS#Q2R;^a07oRO=!b_KU!f6t-?pNX) zVS{L#*H<@kx-Ds%@Yq$I`>z!1}bAr{HFN-e?hQDc`I=&oRTL`t= z-sT6vx6c(0l#2SWLjKIu7g2~41VPN<{JEtSIBoG;Kr|)$H53#r7EI&kIwY{r8iTIT z8#t|&1_#=yHq^kSUu%5e3dES$q=-d+Rt?TqHP@{mpq#`9&-L4c-#Q(j))ufQ#kPnZ zq+U(4B)2qMW1iCM=w(bWyFLk&03B7!>l^NI!sbe4T0w?LYkMB9u_5@Ojrt^`lZnsF z0#A}HMIWfYf7&&s)8ZUA8!V+b-uQFWameLk=!pKvc&%<66P~tYa(7Hwf)L)1*@qky zHE{c`I@Rv^G2q(j>A%;p`v!HPJo6$I{G`yENDC$>`C! zh*qy@!@w|aCK@Txa+EM_ZQ}+jlv|| zBGM3b^WwCf_dsGy0pqI6^sKdS;pEO;;%lu}R797-gnxXQf4cS6u4jKAi(Ii>%alw@ zlL<46=$y>fbKab|IdE&?Tw~1^FOXyb$ri1mBMTap{MwBD$7(T(*grb}e_Mx0B1$O9 z#Z4TfK)FKjpBJD1W)@Egv-zoNq#D7WhJ$y)d6BkY2R(d*1NKo$isNAHKd8T zY0@bsw1lA;R8sNEmi`VbPT(ndUs_b)7+9G*F{s@c%Ytp(wn4;wb-VxdwH2dQS+ZLTYe2~#>-_SfX$?$%bVZo|}8YNzVN$XmW--?GZ zG2(~?G=0E5Rjult_qSCn`$=JAZfG=7!k}0DdMvpf5mx9|LMay$Q#vjoq$pTR@v#+= z^aX8nnD9(DH<@jA;mTMHHxs99tfh*N7OPMiaOI6n^=ZxV|ZJ{Nhlrf00 z>w6^8S_MXiHClB2c&II27jP-ny1y<$oK>jx!#Ua>3;#6BH!aa*>y=hDMj)&$uzaD% z>hZ{W8=g>xIKuIxCDM2@rF;Pk9?;}YTuvVl-Ki%}f`pZMe%_5dwE6y7`+5wkbx$<7 z|6zOUa5sqKLDDquwQr4G9s8U)e2lHRIt4z#99M8a0 z3CjL^Z7>#4WeDt#J$co##houp`P~>%qJ0_)lSGLmF_pcS6o=O0%n>kIsXbG9c6I{g zH)w3I9%UgqFaU1An$e2t6I;)5X~+IOCbz87e6a=;R-Ba7lz!js_<1Pho$O@3<46N$ zLtOSdGj|BTZrgO7EYBJkNQ>hIYW8FdmDDZ*3B!8$_VC2dQ#MPPG4XIVq?~8^5=Na# zjR^}FSiXt1K^UMrQZ4$=5I`*8voUj-nuiS7X?@ zZKO@3mE(0(LhvsXH!b_T;IfZbmyjjF<*c>9{Ei3)aMdIkRcL@J)r}t8t!6 zQ?WK8e(_N%b$|cRo!*lT>+eN4Y3|qEWT3gYH-8#L;7swxQv6gyx*2qaFuwc_XFG%qvg~?0-`B`H zLdwRdcgOKHcKgeyyq<5UB9bS8JGGv!whAq7uoWlgmmuc%E+FUJ9=(t02^DK~{*bgO z2CC?T-`>OOdU|lGFa!%0@(Y#A3*O&Jzfn#G8C!DguEY<{_`j~zTz%+FwLp$3q6fnU zZk4DQJUfARTZb8atO`);74z<}e;Ib@Nq?}xnCxM3Hqk&*J5M=^D>b6U3x2I0$KE{B z$L-*d(4{uz>d~w zPxx?0;?K@bl?iW$gN41p(T;JWDDuu0oW-*D`eHbuo-K0U;qIcM zGB==BzwBWV*Dl^DQ<@d2ctxTY$h5+(M@2|EX4Vx+Q*JbA1@@Q^&))XelRPB*&yqhHMl#h}MM6|Y*(X@B_bh(WLL z*WRE`N5*6F=-3Jh5eF8-sZ;6%&Y85^e9+8ZJu9Ez0P<9ndp#_dcZgc0R?&Rb+)0fF zokp+ibfKx$8`ziaXJl2J!eTKVM7M;Cg*P;Adt}FcPWO=Uva_cP0y%Br41vxlXIH9Z z-l)a9!R*Xpc@rfCFq(#n0Hc8Xh8fJ6kYxVPFF?{vUJ+n07=_)}t;ZL}femzhb&+~? zE8-`O4mmrTypT?A!DBL$M?S~n z;V&|FSc&{nC}JFc%Xx>jiKiRcqQ}W>FmHu0uWVfrxj{L%GoDiaP=*Ml{I34-$48@H z3Hg0L%1e_~XhEdeq2}k7@c8$1+p^I#4E2cMLGbe%a(bH+k4lm`xApuQm}KkJ%?NlK zF5d8@KG6;nD+no^&#NVY_@`kpZ99%x0h)kr=je3UtzY;AV)Nc}>sWCoq zcqICWMHP!=+3iHS&1Hz&+8@Co)!Nwe2Gfe}-TJIBnK-OOzj-t~IVM5Bcak?b<-H&F zC|WQF{+^JxUT=+55`(J;?jc>ob@p6Unx*k}tU`T(NYB5`2G;tDHXfgvsZA##BxbVFjrUA~^u@>y%4W@->e7#!+j zGh#c+m55EOct1n>SgAv?tpI%ah)c7N@!2aD11S?k=;^Tp*taI;+3BF&pPu3%XQsM zO;!iwB5!!pszaR`qbIqpPZJD=$w{wyUn(&;lif?X-L&L0N_ajhx_xBjL+{AWtn5~i ztpbN!{q(WM2WU|)Nk#NYe1YNftB=t70`RREd_jc~!?Y?cO6rK-yuMJ)ItQ*8M8v4` zPZIJ-lQ*r%-4(Mti#~4h8(fbS5_j()w;QrdIu|# zH<}RM$BGU13vK726p>S^(s}N;`ZQBEGdQHyzzF`6K;q`+R>(a#r@w_?JBoi*z3U#jolzu)E;54pL!@9gXd83?ZOt^X@g=+Y2BWMRJj`1*fy{gfoc z|H%aX7yX}d7=6m;?d4eiWrwnBx4D55tTju!cCd;NyHf~%A@3E(>k98Bng~b@wPX;o zJmU%4myJ668X-cEkX3eUg7r zQT-^ki-yz6)`mRQf{)-2VE^o!RsHllziDH$T;WfkTQ_IzF_3v~&iW#e+HYYxL$|(l4^!5$Z7hrv2L`k9)c+e@0KQe28MZ*EQ)KsxU8=gf`faa7_Jf z3K8~lvj8M7JcvTG$Hlh^5yc7|+{Y}KovbO-AGZ6%mPznZj=UtI`S@0__m;eQ3q&ut0Nq}%)t)$5cp0@t3_eF#I-Uk(4iSBG(hma2K!R!%n?k$e5+u?Z-3a?O3F1*f zG~?WSrV`YT-$~4lKL_XzzY&=mfehb(lEj->!QgZI1aV0pvAlI6QSA|>^0CPB&oLsr zicC)Xo?0J%!xOBm6JpO+Ca#3|imnZV&+C)gDh-&}1R*{l478|Nh8CWj{Ty2v$Km!% zH({xP&y7Py{;t^+)ZJqwk=lN)Eq?#`hZx{@o@x@&@B)Dtlxfo4urmH(2f{WAWm$&^bJ4x)Bq z-MT)vs|cu0wEukP-~4v6%0CC7{gdp6{AAKbu261?V5wRem(^H!+LP3zH{f6mw44>0 zGI7Zk4ijzlP>hSZy}j+VY|NiAuhFVM^75@zi(IfA7#pM2KBVlQW6;;v8}Hl5N+6-E zp;2SiLcpzLj|_w=H$2!MNpR!6MKdFrrxBs|Z(x8)R|W$I=fuMu?D_m4{X!7!!;^!9 z;LuQLf6$K=W&x6H7xqv=trUnU3n70l$74m9I4b=sL>Ll>?0>w5{|%D-AA@wNg8dv^ zNvG6*4-vV}yR%HEg1`S=z1L>IR`y&RzwqVXdA2;D(rw~05cWgZZaRI&mTF_OLp0_%PILIjGm=BXkzzAgid@(DQ)a)7 z&iClwe!@Sz%ajwdPLaM8PDNS@I00qNM$<@GKYzA%l_aI^MINs;z>x=*DK@_vV38BMRh>iJ=aiU~6J>T6qT4;3QISP2DJWe$ix;%(GWp(9vN>&m}@9PzJ zZiWd0ZdJ@55$|G#3VopamyNuptFQq2h$b#2FDh0KOhbm>SGb;K)77efmd*+#T1*GR zp4rBE^*ED%;0t)qMz$`6eH~)?e=1BQjj|N4vkm%KzpVDMFoFqASw95rq0^OAtAu zR2-2E6j8wH(reCfJc_wK`UCdH>x8X+r6m+@`ngOP#jg{}$WCzNaO|@vdnrf_jey;o zdY495V*7t<0bUf?6Q6@7NX%e#1>%*g_zk+ZnrlUgcJ{(~N(Ef8e&vy5uGR+SA#{%P z@Q8<%h+>Kmhlsr6A*1VL`)%JsK&Tgu6wZ-pT-BMK;CMkJ=BqM!HpqcG;cf=UKZYw0 zfH>NrD-Te2Z z7ilfu%>`Rs<1v<`XFIKT8_@|O8Vei)XWdpUYVS%#a(0A7ZMmh4cg3-yB{2BCxUeY^ zj=e2!lzL#AbY%TfmFbqxM3>?SU>#<66)L!hzQOgcEYfD3@&0|5!lS`*5iW72I3Dot z*hLxDS4ShJ2+}-bbIQJDkB(R_nBm^hu0<58(n6hlk4r<#fHA;LWD zk4IY<2?ehW`dUPl5+Qly1Oa$i4X=$ik6TcH`bx@pGm!Ix>k% z^e{gGj9v7SuIsiC{iq*NVJ9DMWb|Cw9)ZBte07lVbsn^VPP9F9ZC?i|{Xp_b8UJ+H z<3OkygJl)|ob~9FUus|(fJupj*SU`EJ|TmM&aj?V_D$;c$49p$*MWOavJrxNj}+7v z-fKkBoM(T>;C7_}QtB8R8^b|Lmgnbg6GIFFTqDl7;8nw)tNB(J9d^>$dIf!o(BcJ< zj=i#%RD>$`QdN?%+6E|@*3mjv--gs>OyA<^gMu=qPwD#CmCTK645I-(2$4LD9xDRu zY1F6R;+m1}Y|5dQDLd^WxS(Xi?Y_w&q%t4TQ;Y*su?BSqN)7Q|qH(6Q8+i-aave0k zfg-r*b)i$AzS|}A?g~q))B5Vg4n^Q;b>n-6YdG%CxiFC1N5PZNLM($v#PJ*%{Ya6c z8=2T5xY8=n{PafaVC5}#h=r{ceW@lV59Uh7t#B>s^PZ}`wyj)EXGRowZT9jCyv{9f}$H1%OFiGw!QX{_|8 z?hF@ZuLRaqkp_HtG(GJNM<3BKnmcn}uviDn1-`f1+r$$F?=+t9bA>yH9Jm&xzL&Ei zekAKm<8WVj_2vZ8)b}p0b_?7E9i=q;P9HDTYNCi63Qw#qv1%bli>3q80LNM+m3;xt zOSGEwZ`cS>-$nvw0`h4EJF|t>Q=8N0Zs0TuI2+D+dgBp&d7e9^ST58ke0&42Bh$jb zrPJ=WIt#s>c_KQ2P@p7x&(^=GW-x1TNx1;F;M%qsKXl#`8a)}&Ow^{^UlgYM2(z-1 zCF*-eKG{||&yCOHKf``xw7R-M8hwVC+Cpt-uEI;U^fN-^pG@Z(7&6nC8Wy0hgMm}+ z=L$)}>@8^yg*P3@+S5yK;WBxBZjj_x zovYCF4LY;OWOX4#zjx`AEB8G2MmtRyKn^<;%)v#c*2CQ@%yXJc3&MRsKjBTFc5b>6 zA3Jj2De|G4?-UihT|H7tV}jr8vwAL1q}7f*0z~X2sfpDrQQD+kL;yx-gR4<^0MM#n zf!F2h@p>#xj$<%V>o{uB9^sZI0o1xX?iAuqrmHOxyiGffRl~xQ&;hL)mjJ^Tfy;+KafAShB^F z+eP(6Gx=hks}I2VjNddnCPwXROxJvaO>M)uYV;NxwRrDK9@DJPe~Jd9wa}7Ty50ca zEL5^lh1lGE=C5?56uOzhdT5L1n4RDlRp5$6(^eaBTf*MsOl#Knw&O`ytCf=D{TGf~ zrlXt9Iz)0Cz*OYX>|Z^~)+oQckN;MbICR00$J1|UF?TIgTf5bB#=71eu%e}4y5^px zm0EvvfXTIXd6Cqqi!W~Ra&rvG05@gv+e}0iW!6`ja$tvekEaV22q8fHFa|Ejp#XSP zpu{Sau`$Th{h?Kc200%(Y*fb`G}Ai?w(d(;H-uN~JA$R^FG@7A$qb@;qXoz{1#VBz zZ)<$E$qYd)@^Y$J|5*St=MCohbTKu_9fX{wP~uWaH$^H<5Ll@{9P9`agk1V^RNc73 zO!RNZr9)JjwiWbDO(KV0aM_PHH%lyjl%-K^hLU_RUFP1Zgp zD$fLzmYU)8bL1c3@+?^N3{EJmsNXJddTj}I;6D{Y5^2Y}N$pSMX+;@E50m|P9(=k& zW{k-$AB7ItxW-F1C>@wf*aJM|N1MHKa3U!bm>P2?i-pd1?QLJm&*>3RVK?UB!Ggfqmn7fn zC4h8ntW#|-`E_j(l8S>?#98|S=!&?jw$pJG3^_U5Xa+LIzn{Zm^~}Ap7Rzr{HT>1X zm&ni$$9yX5bT5Csn@6;hd=J27GShTfk0f;N$a#a(EZ}1Pq{oGP*}gmt*6(xG^x#G$ zKP0|lJ?%b)FG*XZOZ8i|y#sKx)p4HVkLgiKoXj3rwC~cGYD;5&hdx*qAI0@e(%t$T z=|sJ_b_6v-*vP$ORBin6J`J?H$bmY!&yJDc--3N43ZOs&Vb z-2-PIkzHL#00SH*r`=G%<&>cXs_IWetua)>^;8PDCTX*~G+5rN!Da^cy8(v1@4u zP$Oo{5TR_zSIJKQ1P+z&tU`yctV z2a73wAunfR2g;d;li?;LX>qC}whoQL50kM=L4PTmRE7=Nw!<8#r3l+w@fj=pMS-c~ zn1S0vvw`BX3Vo~m8EJC&U3$TB#mrVbvEznC6&mg2I+HP_CJ(HSutht{o_OsAxHuE8 zCZ62dJK`EK+f~jSXdUY6|8!}b^H0>AmkZU)~vTShoS)8R%if-c{f4(kO>>s-#dpi%UY`-9+kwT1=&}E(&YOksV zS~6ER{U+0P5$!Yih!TuKWrByJtgq0PH(IG4T^^U)G51>YJ{4_yY52=e!59`&fn%bh zpEtPvdU`7?Odk}U@bKqi^ zTnn&svMWOZ8~r>+IgjEkdvXHV2(e2nw;U}vqx#6>*vZn3OELFQW)kl^SKU6dkF8q& zdyhz<{Sda=BmpI5Nnsvxv~O3m>zY^v&cO)M#@NoqrDUAc@8{!`AG^x5D_vx|5)HdH zp9XMlm<2QOV-8M&`|xR9gWH?luQ{Dth@uy}jobz10C%)%%((KK$hV6ez+&+;cz($? zZs2pmfN}m!u6+a57c9?{<`9*|99;VqJALe7B0V)*QBONztfkC*9fy!oqfTDCXJDnd z?#w8A>z1;c!3#9gr&_+8bl}}R@~o(|Az-9sGYLG5?R$ z!@sD`|0xz921)Mv#_*l$+RYFFEpnfKm$L=u6PP&qrOm0}0M^HTGF$bRa_=OOg~Wh& zN*&?-nnnYnT6lo!Tt8a86JR{|+mU^I-9LUKl({gD!-KUY(LF=)O08Qr0ihmKIM|_v zd|SMdJhavM0_@0TJa4XY;GU={5{A6|uCYL2F2%hx|7#na*AL&ZSj8Iir6e_$in&BI zck*!Z;L(X#C?2yKUP-15JsVW4{l=04&^Rjr9V7{;e7D<_<}H8k08GY&Hv#l|j|rwZ}s)B>V6<;y&bAG0YaupzUQ#l>Zh^A+{ zsxEsoBW#%PL7oonxtF`Jr`ZZm#5Qkd@Jjz}vHe`r18U1Z&|Gz#uu>T$E5tRg(0fvq zCMf+M=Jet!2F>RTtYj&=$Y$RcA7DgQt7=Q)aODNnF&{;vTBcm;Vbu2N9U1hKG=eKR zl8GBG*{_uWa(AR3-}URQfm1 ziL@p(HOJ@J%P2gxz-Es|!$8|#aKOY8J$j-T@+6hQJDK93Z@baSR#e-2LbY0qDBB(6 z%~BY`s;nr@)g>PLn{z`cMUhz3wchRPRgy4qVmO+`Ic)Vd!@76=tkmIiG>Z--p}NPtrcAi&3|Fm{mj@-SN-xTpLA* z&g(49Jn$4w%NDb^Ju$-cZ8yw*`RkuQF%%l~<}YTG3QHWq16ICyc&9_Iv15^QSYbYk z@teaMgOAZKBIHaQEW!hQWGF4spSnkiKt3MYZck>P=j}sVj6_OR_R!=8DP@g1y2slv zPMR2@!c5IdZdKlmaj%+fg(q<7v7e4$Xi~0*s{ZZ=Q;Ax8X653dab+R*buG~ z98#=mjZG_e{CA<60Z>=yNNX~FDh;m9450*iF>QD6?+3BJdc!a zhOvpc4x8`g7Q+I!yb$pjxtch1uscE8nN%lbzPoO`FW65+;LuVX%zrSuT*7^MfHR%- z@UMr26uofC*YD%pr;<;TUlrHy=>IO5V93 zdSo=8dF07@&};fI)}P${A$cbe7`fvIts}u`M1;Iv9B`ywh2UIm>45&M2I1C`Zsnbx zF_SN4(6zJThz*RJQgnaPkpp&2E|H&u^pVcRk8X{8F79d!qx_!T!_6YqlIArX5Pd8C zc}YMZc6YibxtY=2pGK`fNeFM6@9Nzb7EZf@iR-UgGJtQ7mC_5Vk#Jb#N*`X%-`=GN z7YiWFgL2BqC_3@}{F1IOpfQ^OhfCerZhR5*y%tCL)zKHWy5ixGoF%A?^QP|jiCg(8VT}_cT zYMn>Sbd_*O49XiBnlrsL(nRqexNrO0?|kgRA@M#fdr9Ih#TXL2pt$WC@xMQ?K8?dA z2ek)X=nWNTh@)Ha?ogOXrBDY%s`a=z^Xc1mMRU3PNRD+cK2hZ$9pVYh)zm=8Fc5OK zK5y@-hdz?}9tsPa9zAzIjaB_%L?jxN7JG32;J)(Jzm4TZ@;}e(Y3(&w{9sCklPH-h zQbX?Yakk(vL^#B>MLP%6%At@UQuJS7Tqu#7!#a62Ls?D!X}i=DWBA*1&-25qD&@MZN9?7!{o=WP0`_H}0pvl7x zjRetNy6j_%A~Wi3&OCvdayRyUOX2!;Stl6z&y^<1rqRnigKCh|Ac~&tim!pDZ}p8t zUcI9E4PWe;Dx#g32|`OBfrj$y>Aev)>=q#47u}C$se%L+CHv7~LZ8D=!@;B>5#o9}T7{w%=lSw>rQ;bt&JRPHntJ`67v3a98SV z%LQ4t_|agZh%?vzrgb)rA46N)O}j#3)%!651UCL+ zcC(u~0!TLR%G_oNDOqpL*@o4VW=eZMOuIhteN6CXoX@Lu#+{CgS4Di{k4XO5_7ffT ztv=wma+743{6 zhVM0c$tUnnFCf}*d(kfYAXdSdBv;fr&l5*qiuV(3sc!w^jSM$4aBFApBgrnI?-{4$ zE^lCnp!SV38(^zhgZur*3RaN}EYiJ3OS>7hfUXp`#aJWVyXC<3dtIQYrck)RL@bLu zYJw$9i_$5Vy3LzM7z{1djTz8l5Ej+Li zj;&Hgo^X^?JQ4O0^?M`sDT8C6{U>Ng!0Bv7DtI#nq}ZO=9wVSw`E!TW_Ebu!T3E$O z8K;^JsiUeem@0w~^vY+D_B~{-;RD?Z{&}WGR+CqaGA70D#Fn3cJ@F3@1#3+3-^W`B zQ#QIkoWHX>ShyIckWdyYzqGe^Q>%G+gG@G!s|&Nk?Va&0k8sXt0zx51=Ce>n^Yfwsw|Amq#Lvvn z3r_il$;j;={@Zz_go-veEoi~e*MKdq98iwq)dp+|(i$*QEEPmOv+}!h=R=4r&jrIfNUlBU% zx2aX{6CEssPU(w&>H*R}%s!BGj(Gx@5ha~dt7;x8vD7}?!?a%Zyygm^`6!o+*Gf!U z-rs*>;z89g6rvSfpthi(1`MEt2@Kq;ht^c>ur5y6ic$ZDC_&Qi6Du%~J@pf2vg3+A zL6h?x7y@AYx_wM&peiIkytNnBamuAK&n&;5?CoKNxh38Ky566$`_&>eUpqT5o%=c_ zdcB-s#_ip9$P11%_6#3vVLEQMv*=2<@2*hupDl`5Cnmvs>-c zS2*}<{B+}wADrwl`-dw7PB%V*c!x9>95;XI8P&xJLBOV2&o%RT+I-UK*HPL0D<}31 zc2LakPhNd~G0~+;r8G%p?1isw+GL{GcN-}`c{gtPAqcHQ4!4ngU2w`7#O-a=v}uwm z1?_?lqj+%#q95+K9H!Dav$@i1cwi-m;xS}gr%^NE%_a zONK54-2Js8Ynm%f#H;w8u?|=De}qQ%k}iL_6M{)qePhbhxyDjdkogURx#L~x#=49lLg7Tb}oCymg$fK45YInn<3<$wjLM z7lwmJk^3*qB=--!t^UkPSJWw&gq>2NTQpUtZ!}La%&zrmN2U!09o0+k`?Sl6zZf}Z ze_t|O&NINe47lwS{p_;V&U#zpJ zh=OZr(ZJ@YfU^GfL;6RR1oMf zIs#_BDnAm&=pFKM>)lodgAnib;l!D{ZU9Y7YwLkCEcMqeKLU$UZsWxvy!OptYVzV% zb3fkqLn~v6ym0vL4k8HIUHX4#0N?7uXcQnZ*GtexwDRoeRj^l2@yp!TdvzXp(Pt~? zJmrfy3v`@cP|Z3s&baHw54$|mLL_>g6TZOZY#dKsVUe~1U#)a<=F{@puMXO`49Wwc zh72Fvyw|G-?;h4Qy2Z8Cl~#8E0fATl=eqy{$iF~B!8rHJ zrGnjD_RCerHrpwLTsT&|==o3L+^T+eg!BK!+11A5Oh$B1Wy z@wY|A`h;Tf|Bdq0TPjwHSP3KP@$1R=Bfr@aug5QUPu{Oao_4!lPZ411=r&wMf5=_F zlfK4jO=moF=bdv6o&cb7vXsJQ%Wcl<+GURkaOCGE@R$hjitFg5P}IqG@mzkv-()TZ zG#m zHg0hO!xIt?vFl!GeJKu^jqClqx`q)*7mQ6AjapkTJgV~$=Vl#m$e z@981z)QMw#{o*g+zB-H95wFgZXRA;vd>5!{Gnp~hWVe=Sb-;hOf2R=Ybwk^0jMI*g zhB(zmRJ;EqIGSSj{q{OG3h$bkQR}JBTZ0&}Rp+(-CqI(&usX^0_3z;Z-e-1Wt@ZK_ znW24wcZr*e&c^xF+T`-UkZnd+x>4q5-gy%J3q<1!c4J&8#4jkR9Yt`c3-%&B{ZlPW z+`0BA&8Fhu&fXCw9Fop;<-HI0F=&&R`Gw)gb^NGL(Tr;OMl3>djm7g{#ixasZAD0X zepJJpeD`;}fuj<)vB{9T3h6|w`l8JKuWHUSs0lQU;{oD<3lg}Mc=Sa@z*SHb1Y`|M3Bn>QphTLe2pqll5)cp@ z;L%Gc0Yaz=hEC{ZSyUD&2~COwLP!V*31AXPF5WnMdoy?Y{XV_(pZA%0|L-&NpWlaP z=80a#3>rR-G5W8$KJ4j=evwM6>DS@PPd_Vo;h||637D#CFU|N1FhK`-AR+Zk_-w`L zLE9^3GNS?O&d(v&)AD7#*^uLqBr)f+D zdX{ znDHi;?)l^{;xHDdqS$sz-_7ifN*%IohG@dTam$Qu z0Fy3-+vnKlHt09qeW9k@wS&FJ>=go0@m6tY&!?^JtxLz>-5e1T23a06s2!Fy^Ws`` zi22=Zv-5uaARyppVR3~J$N~9!LY8}FRi$rk0jR@b3+SF^WZhkyYF<0!fas3%updZk zn?J74VA|H$o!=Y4)Q1Z`ROz+sO$9R?T<`>QlQI3HEY6pwR;$(2_^TO6Y_jXpM9)}> zzuvjhI$up^$CpL|`H@@=(fa9!6HjFQr=}Hjr#j=5!-M@51-*)1rpra$g+y(!$iui0 zLSSC`%XYk-J7x$Yf1NqRIT-7{QS_x-6){8)X6ymoH}1kMZeVj@o{$TzVX$C&<%o0O z9P6uB7%i;y^C#&aP;7gLO(3}92AnmR6snBU#x_%Y779}0ZO-p^Z>)YKu8=M{|6md9 zA&LtjH-d{s+apB~I)M+(h97iXSy&({XWg5fF7p)GoSSuHEeX9!WB>s(r@v2~XL+bv2F1mCk*y+~VqoQu#ns)yLn71Nq*1|a zESBQ5O`G%Sd_`G0jM#8V+<2St5&6KE7Xc#)6?`rrP4CM)%gD&!eB_TDdvkNST6tSQ zHix6jgBSCU`kzYSqRUA53Gy&-Q0DwKHY|#)bct2iS65*uceHZys8HDSC{r%UfOMwt za(H)+#L@R}U_5=kh9z2CGO^5eM!oAPiDy&O#b|V&)brk$M)hB`N{);qlMKH1H0a@M zYSXt5^E=?UpQLC}a>28ZlMnfG#MVsPJ)OEy+4LhLC9={hCxyFSw^tkWtn!e%jUWNg z{0KAciMrTEQ8nmkS1EF*B4p$7B9%6YVt3iko8KXZRxQkbbT(3FryL8E5Y%)ruI9Nd za6XRF9!=&WN+yXXa(UT=eM-c^SSX(LqaZ|W6$zhQJ*B0oS@{fVW{)R^)CGb+V4lAQ z2@o`9AF0u1kScM9q9@X>ZAp)Br1X@jT<^xXruY%5zZ}$4rc&%iI`6^cnA_&%9^FXC zZEkVYFg5(P|Fninv~{#srCYnZf}ojrOD4T&E^c`1EzeR&2HWE8wjQ?79*x$kj19&? z#L1LzwAI<+$=R|!b?fjwX=k6#CT}byr&&BIOqt)~&ZKxW`mbhOkQlrA*Lg9wT5U=> zUi)3!v~6+*nrkL**t_Ov0V9&?wMSsL6gcZejjSL^!Qz(8463N3ZL@BzWj>m$znX6>}rWa?|b@V{#DlEGg}AW zM@(+OTnN3r@os7;>srF?db?&f#yOe|Wl2AR>XOL1oB;Bf^>G#i$8)n4Pn|vXJ1+l# zny(=88@B}O?Y(gU(@cfho`98sVf0Ohmx`kIB|ioIPfYze#4zkgLC!whvziLH|A;6N zv6V8MgA)fpaS1%`@GN0M;DU16@!ui)=P3KY6F@E)leV)nlKK0&0A?nZ#u&r{1Ox;pDIuZ+1OyBU1O!3?3I1J!^;>TF`|!g_NKysz z`{fO3682rjbQaZcR<<*9b~AJ|1p?UG*_hHg89SPq+B%urIbVTx^8o=707;4ns<>yK zZvfm;RIx*Eyxiuzh)L#AAQ3&UL=k@gqlyRu3l>t$a)&`ubrC5QmZ~Vy_!|JD6hT5t zTp@az2L#9ei2rSJ)`4G_S7h@ll%2Dr7k{1zaIOF11em$Toa*UR1R~}S*Uwlaz_f!C z2BRvVy8;VAo)H)l1Ot)41|yoWab_v{J!ornw}e=%br*D9V3P5_p@qY+-DsLZ7&Uc> z)MI|U0DQc>No|8`mg`Kn9CvmHU~>@QVGG@^^gP(M`j`+vH$=^vEk_dP5O7TzsD-$1Uq>{()h1)&m%#vx} z9^)(=xwiIb%rRS(03&pZyhqW{0!3oRR*_n&adNuU#WF2^LGmE^T+bllfvDtBZKtUS8)H z7q!jx17b|`H5!{Le9zi|5fE8{Y=7Q(q2 zPiLPiH`W^q2?!(nFSy-qXA(!A@DU({J-_?x_`Cezf|*z~t4_c6@x_D5z9BbxuEybL$kCO?+RfeqgEBl|vs-;1hVZ;Ao+GDvJ+x64xK6DDp$=c!n7hu(2TCc_p1)2A@=UaR(dIcFzM*X`(}^2OX<2WV3&=#&MIE zEB4uwSBl{T8WaK5bBSl%wRFf6LNV2Rcw$b!{6HYn#(_i&4uIB{=YN-W=bw$5)^2fM zB4F=0lQY?qr@dC;{qzPY6^OGFhm50?=9`XngTuSD)L`=C!)LB3G6`je;$sc@s^pgM z_$kxIt+U=7Zqt144=(PfeVNrISob3kQD9Uv=!rko`)j5{5;^kFYN?p@nt(&;E9dpC zV*fdxSb8P-bg*t9yo0?JVj)z_xZx?+dZG#TwF7Kh;>FjeY^I%Fb?n5xyge0{I(;{8 zOBBj5BoGwzWiOWBV(Zf*+vdZ%ZO(eLA#MBbU)Uq7`IZ~vsUmP8&pTc@R4;0!#}Ofo z@ZJs(#a;nO;9>Nn?{$C#E(9s?T{I;7uch&?>aX`qTxhJm;Syo+u=rRq-EI*&ml@Z@ z2Q}i=dd%okU@+pMbQ{$FKGp07JxL~_cNN!b#o-+Vy?RTeat3k#NIFt0$)ii~;=MvK zj66b;@n$c8bh(tZL#LCxiLL3SOHNdA8Z&Bn?eM)l6m0_2gZtO#T=(E$PqCC# zqq8UOQbB&|(;8Xw=L>>YQ4WJq6^; z9p0p3+z_u(7-2cFfVR01{m#i-%scxf%d(XV({y&b#DWLY71`-ixDMVuE6b&-sZ>JZ z>w9~^(dO5)-4$L(XNSApK8FyMn(6j<$T8d?4k}^)+^*U>T+9})%x^nHQeEkI37wc^ zV+O31x_gMv<}d!@_vR!pd>^s-i)EHM-4>*tKV{6RzV7%5eKGbX3)SWiob7oA$%Zu! zSBB@A>*jCP*q>|d8CSl~$>~KM=159``o3>zxb1E?LTiu5s+O*J+-U_w!R}h#T_2#9 zEEO<+qx&;{aH$W^I9jt{H59^1?v_$`J39NN3vl?oP+9S%4GfjU7zG6aqcXCwEw7k6 zHcZm=ZEqPHl8}?%EhWpoHyPqGLv%`Z$Jn?R*hrIguO!)UH-ReT>43##cW3_V3(K0n z`DgpA9LFA{z;d=RtOXz4(Ae3ntv*?(iX=PYq;Aai($~acfwK4|L{Goe!U?M-1C?s} z8;lmo7{l>w2e5AXd@mVgdP>G(iI~Ln$I)YOR*?ym9}rPNK85Z&x40;z;l<^8vvcR&`|(O$4BG*t1%F`)&>&KW|<%^5lK%k}(E7XP2A zDrH>NG8l3SCrF%n`pFQ8XX;e~AEOo-Tsgj9FxUvVfcf@5$ZqGj1b`gl+eH;8od~2= z<94@ZrW9X*Bw)8Fx2gfwBEu~Gg`2-XCn%AiMI33>N=vJ2nr`W=3Iz$aAe6!56^AT` zH=rQ@dZiY0nF88UDJT~_YY2h3MW#%rl3IKTb6lr2`C@45dNa(Se_-ftAn;`z=bkLP zimsJP4ARQ^c+nSY-cqChTvo%)l(nQlj_1}}nO0)x+Eu6z|N%VRjl(*=vc?+YM8zTWlqUV)3RT<y0&wAo=JW-?22K{=bRa1!)?Hn_Pl%6Ds%D1MQf=#kzf>DBW9f8Hyn`F z4y=%u?>YxAv&w^1DLD3uY;{d>6@<%1L7~Ir{HqxYc5?1P|9g^8DFd!=$_mUSEPkd+ zSP;HnEeF8LbDOC*^=*$IK)y$yADxFdslZcA)Vq`)wLubAXfm?%gU@441_-|a+5gQR zmHoqXGnM!5<3M}xF$QeEzfbtOh#Mi6Rj=%I;$i>Fa8MBtmsr*FhFWe+vNspQ8F#@@ zqiB`N=*PD8{)`(ydfP-v65RMlC!cF7>3n#kehB!w?xw$5jgpE@ZUu9babOSQN@Qa8 z;nq6qh)(=^jJ*E&c&8p5wft_k#ju0J79-)71F_DB@a}j?uirrCq?Lnv^~ildh{r-p z{rGRAk9w=~9TRYuDdowo-&gBiJN&K1*^5ULUC_*M?A+1q%SnMnAOT4Ytbi1OH&+IN zJbouWBy!2r&W8p5zIoP)EoRiKBc?RlrBTnX3mKhv1grkU&BpV}%xk%jBd+qdVJ0D_3O8%hT;%^q!rc;NU^9 zf9N8zYo~lg`adJrWx8Z5kmOaCS@p_3#ImdUHdexSao27%TNT7qD-*~dm5RW7hfiJ7 zlq%U|^}N7b;Hw2x1~wy9c)Z_fy5%~+0w@mq^KeSH_iJe$v(2b?5vhFeb<#vg`s$2%SdtsAe)LCk0KI zO*JcvC#5V`?tnw8>YV~sST+IAd6SWFBV zH-6dh+Dr$Z1JzNr-q@nl0u?G=72WfT`&@?_Yqpg_%4(7jQx-WF7gygFpyW_`slffB zGd8@%gZeBSe{c6#qHK4-y;u%TYpGgxV>%*DE=O@9xy|8>O!-Le$W`XCoj>Lg{@MLa zp}}7jy}Jbbsy5`bmH}V9r{dWwY0mp zcx@YeEn}c!&ST~L_8&1Pk<1uhIQ#kUD{ZparFdFN?Co6v)y?wROH|qL7JNMsU~en+ z>O}57yX5Op;YBv}WF3o@5a7m#cjmBKzApe~0Fj*`z&NP7ojIndDOc9y>NDt^&ov&f zg*!oh^_VAJez>v6H@2|OJMsMyxq-yyL<~_&Cn)3Jn zlv{LfF>d>^>or9sc#P5NZ(nE284_()z+vx!eX$Q`La^7<@$#Vumy7#PQB%!r%HK#R zhij(g{i;nw7gJagX!)@h^MJt@e7DPlW8oMjkJ%Y#ob@ zfMmhkS*tW2D{zN!NuXm`aH9MxN4itCBO_!={Q^4L3^qc|665prflLlR#)~%Q1knkv zn4H~4DCJh_?i`%C6qKOaI&HXPGuUqC%N3lJ8AbCvW|Kmb zI&JBl>CE=0@0fgP%vt{i|2j+Ev3vs-83d%n_fC~WRpjzJQ)Yaly)+Bwx z;~7r9T718P<3>dq8T@b%(Drq~i7D0$g^!GlK82mdJyW|kh9Q&omA8uF^8Wk;juVkW zaBC~nHYY+(Voy6F@TNvPgAEIt&X?jfGJ;Ua>6EtcJ{2I`ann;mLPE-TKf!LX-cU4v zuL36~7m{-%rnA~cFS2ncl^@VVtDU=W;&C*$LUPi8wv?GoOdiW*^C=VGFmmtFi9Xe6 zDe4;9$KiU3Q}6d2fVo8v*c?Tr`Mgkn3=MJMy5)kyX6-XzU;vDy9N)L$s8D2^o#;C! zPHwuK1rT>IT3|s*O2VFhVofzz2Qfx=wJ}m=L*@7i)u{m#n?Eh{V~I=NY0$2@So`xEElF0Ls^J+ncC^MhVN7RWwV4@>r6TD9kTo$@kboW z4X$=R#x*$5v-E~?n>X_u`hKnGjr)nm-Y)sIPh;Mn@cAJeKWHITZG`O)ha0cZEAcGM zLIpK=E%CcvAV86qULNCvU6a zYFqeixnd1G_N&?PP7U0L4I-##Se#f~sY*#T(o&*Gt!%mD0e}8?Ws zQN!8N8tXXr3AQcjfWMde)ZRjvUY54nhYUTwV$lngtZpOXPg;EtNGZ}9LyYAVQ zDnYRI7R-@a$g#nks19U^znvswR^ZPU)h-oUUoccj5eQ=PxiTlSE8Xr=MMC9s4j-45i|)pzQUIQ%19o#DD7DWz5^RJ!%9j1yqI47{h|6l8K2&Lm}|h~8&Wd+Bw7a~&lhO@qdqc9Koi z_sixj8PYD7;*vtGJwr=&@DO=ylR=c1kdqo{81Vl+g0k%BM?J3t@38e`i)4+$KeO*IS~JPi2$7-FHegIg} z7zG99ibtFvW2y#UF*clfQ}dGehi!}fUg6`K963(tlQYk00^S{+3P90X!uDlKDiqpi zjat#6R+nO@sPfh02n1RJiUQUCi>1Fy*?(4lztyL$&MAIs1V|c_Gq$KB#5ZWUe!kHI z^JSmVOB4|?z2j6j*anT5jOx*@RIDgrd5QnJ#|8R(0CS{RmRlGJx{Cet-g+U5F-ROy zr54LFBa{wxvP7$HcmKSf+egVV8j^nqWa;3M*$DE3h5$c@nrTVijIOO3k{um#6{ArYG(J;nLscrmC=vLn2NHL z-UPJGiAOHsp~*+i|NF>q9K+1}S8Y;ew(x@b}vsnN#U-;Z)USlcQ3 zYIUYhdf!o0ok{QYn@cGTWYG7c%}XkLi53gEQl|qf^#lbc(v9Rh1kqM=>KExYODWz= z#Ez}_?GqG9CmNmq{TZT=Qey_@`w*^`@R%B)Rdl_yb*Aw)#rEFGtI6iTF~GAvo7RrV z`}m?%uJYdW2w=NW=g($0hm65HFgCT)Z+ zH#B4?#IHUFb+ujVjd<|ezPKEnh3cc+xp**#Tb!14KW0@ZGnm^td$zetPP|TMfW>!9 zIbX<(#pAE9yPSG>?{s0_%+`~^V8L=@r-sooM1{TwGV+YUSssXAD0gsiG#Yu%`;qwV z!#|Ss{8Mu-*}npGzibbOT+VK8>`hO+h_CN%MqMXfPIk1|Z9YP`*ed!qCZeH&hPL;T z9`zuE1d?fk-k%fXE|mLL5<*k&E*x<#E;Lwd5m84IrTk(o!Dxe2LLaY8M*b|caB|n0 ztSf-LM;uffg47s4(fPibqE5=mMftg*e0FhSR7#;>f_cu&^wDKEgoi*M^O1(%bqD*FU^mkl!4UP0N1XEu%%@9< z(Zuo3P6E*xqnU$YEYbr!KMz8e(3hDMn3@^$RNg}T2VrWHO~?^Ze!+)pmeWLpvey{^ zO_j%LV94^?>h-~}TPYe!YI{0!*@AaQ?^`3)3ddxI)>#LszOj|nSShgZ0ZV>Om?&)! zUJ%6LOT;(G`0{##OJDk9Ig`y_euSTMSlMHD)HXP@vTUBpT8Qr=EbORz*LPc>7A@9S z!*_**r9?TELYpm@)&#qri6gmqbg35{%ZwFGa(3Ub)s8*IUSYL@$AV1@icUVHqn4UH zV=huYcXzVZX`xqdxj7HZ!FA|UNmlT)Q*Y|8-ba}x>swH5SU&Y!a!=Ds&f(c8?S_|G ziD?aB=cu)cn!V8k&_+7fJ#ND(w4Wy4`*&^*dB8-dQi->P(t=RAe1U=tIXnAgOX5MY zLKD*JUIL?~z4fOnRg_eckn$kia6!;7&JqJ96uFSB-i;034a)5PbYQJSC)&U1!Ncj_ zfN`JrV#Vo*9uXZ~{M%L27`odD&p?QT)TWX&P0kK2GEKe8exBebPOgWp+Ail zI0E;7!Oo+Rh)y4Gdp8$S3JQjeBi_iDqY+OgBrj?v{S^BCgu#3U4t%^AsiNW+=BdMz zQ3TxOp^)py9{@ziZ#;Q)@~Sk#4jv*gmTxQMt;54=wculqzRTk||3^2arKRP4Q;aYe zjK&gEL|pvH^SQ1MFj;%Kwb4H~z-+bO9!tZ`ADqQIP^Zdoz<_zOQN+CAvhio=&a4uY`h-%|Idv&8y~#Qk&qx5bm@JmZej|xIuc!#;$bDSY+B&O*1WDb ze1qiDekPNtg3lgaz|&odoh)+)Me_t0Gj?G=0uWbBUV!_pSr&#}FRO^C5fe<>{{`1^hc_<-k%M1oRN_`valPw&9*emsb^OVF6xCk@tmjH5E^e~TjjQY;tZ zgsGMs)}nb5x+JsabxxddLaVobSFrr`Lwgfd;eZGB-^I0C`OIn_wiyS< zwa4>s`bvKyC3YHvaPs&P2oi{Fj?JKkdC6y+ow8F;W5caSwT{I<{Zj7qHfTbC|5L~K zkp^?5(YDKdNxDhQ_=0D=iAni=7T&1h*mi=QI-=_dG*BZ|;+P_0A>Eu3|3_Oyq&hvY z!t9j(_sDpX3qZppN7^7@6v~~}*QX}EJ@kE&KC4Y5wHcTN3Ubua{8QfTi{w9)m^qW+JdtR>X=PltDtQKj{m4a(L z(djeygq}qM?>G=Eh+ud3_B@IgoI-SeAZx-k^&|lW%d$|PMlOZE} zI_EhwO2zWf>w*&2k@NF0gE<1-+@W?moI3vaW{v=_vE3;BR3V5fDg=hP3w$jTt(BFk z_cFnVu_I3m9PWo8inWX?aCFk0(};sl-lTV!yKZ-N-Nc(kqjS3n^(04b0rEt1xSwyi zvADT z*W+Nn#`T6%h#~4;_Z(>a{5Tqgn7WR3d}2`38um!m$bz?l);Ct*@xOm9sSquj$a*`9 zi@}PWKXhZH2fxF)+sS4sMOmfVS9UdgX~+|3Qf0l;2Cf=Pd|!+>%z4b)2)VKxijg_4 z)hMF7!wEbA+)|0ylQ;e6s(_9gbmL@Frh{Wzqsi*r!wdRS%;`8?2ZUmW$~W3j`HG_Y zoWmY^d@tQ-MQV%fCGoMp-wJcEvb?GSnWWYEAD|CIjTLB zN7A)gFKFOpf(!r+KTGxDj}PRFz+d(haxwicQZTvg2(Q4o3;AVdMSa(=#;GTKoV@QB5#4@qydhF~>YY zk>xLuB71p)Rd1w^We7jovp-48S>82xZYN1twUb|J%&5CDdaqdrz4 z3vO=i|9u0AXt{2AU+nkfIuGM2mayX-TT9&&`SCX0Dyr&zF)NRFk)*#;Y$3mfl=h`a zC5f)Vc*`ji*}iwG7th7pwJnetzR!$5*LGn&siP$sIt}!vvm=U8m!I%_6|GGLjv%*} zS%$l$v0*n6;TEI%|7Za!8)poRjU$~#eswIC)4bM~gfjzCkYwu({zdC?Z*SX0T@LPo ziA~7$k9UuXJx$C%v35!k_R8j*kXCe>HAG^<#2y+f;k0|W7_D!V+A+A%&jAJI-6~#! zi7q=%69gj5+*?D=zBk_vE$9S=hll4_Udt7W-uTG5m@Z}7BnvYJywwHAWXf#0PFU!0 zCq_&_+{_i7cV^4~;Xw#`hYAd(@Vv~_7z?zAuxz~V!<*Ji?HjwQAa@=lwA~Ch*c0G& zYI`_{)fPJkdAptvFM9rretNljMD;!9PM^z4VY!Wk9mbK&4<_wsQuhj5)M@pHr zHnsM6!owvXd*YX=nOVyyOIPVWZ;9~TY$Kg;lp1;k* z;J+HFK%U7=zXQ)9g)@0+NpI0ujUN@3ME5hwnWJu?$QHGtOt6s}sS)Y*>l&BdvNc@l z5w5sE8*Hh%Yx!-bt8^Auk`ww43!?jM{fDz$q3q(ig3aH@g^Zynj-1L_=i`98D&#Zv z#zxw(+JUg)jlAQcE0h!BGS@)53@`GfVi!x#ql?wJ+V!YC7HdxrV{4RQeSa$nYW@T- z)gy=blOyNLY=0pQ)Iwz(E!qmKO%BU{tQ&^Yi$2y$if6Efz)OXS^|1@igZ>Y#vUteu z50Y%{aXZN=1|NH5Z)=b~ZYt|kzh7Sd#zlnQ?1KTV7u?gf$>}>|;tE9yTyt7g z?@g!^cNfF?JxK>_0k}o&QMpOgaN7bewpWUrj+|D+*`F-K^|2zp&5-ATzZ}l91M@K? zBi>UOS7Y6Mhr8Dm?@5BmcMw&eOXe$U?+Vi)`gK}U9A$b2W1EE2^Z1ZNx32}~ooR!0 z(G4P2hHj4)JVRSd_;ihas9%ZI{u5ZyJOaK%u=Fd9NtC}T_g=5922LtcKX9dU`1@-D%EQO0 zj!}8FY?!pNphOu{ziecVRCWrYxM)YTXu(AVXGjw&7V_1Bb~zjGaeOeA?CQ+z zflX>RbjzXvZjvEB_ajT z`9ig9o0eBOw>9%%q^;j-u0yL58-U*&g*BP0;lzKb3=I|hpzT(`c%DPzdhWgG7N4~f zwlVX2fc|vNX8GDu;>y92{lX_6J}*eHFXcbb!J*u=B#t`*D6P%?tmbkWzGrFN!P;Vf z?3w9=M((q%IV)1);7lqWyX0tbi@A#NnC{G*A_kBXZVme zQ`s18Z;af#)QkEJ0KdDq33ldZvCKh}xjgJ8Z;aSc>|j%t1MJ1;_Zvq+I`l41!jo@d z-G31OjvGV2j!J>fw7R{a$474abQ$&VM0&oJ8kN!NivqXBAo9)KDoyBUamJc*U)fpm z;Bz{&Df}AlZq3r{JG+F>zH{p5tRa81#W6JpW5@B)zJ8k+-z7+^S1#Y%IhG9)MQ?2@ z#vH)eDCM~22p`3b@pVf2%cp8zU-*R7fHWZF?j&wpT#X~snu(L( z(_3m}CtAF+;_>`kYkfkb=b2~R#{7`Vl<-k91&pYY&w*_wGpYJBqxoGprK-B*{kOgU z=7XL=Mo;MPE-MZ0V(;XSzvP0mBaAG^2V?YK(L^mku1ru6Z!>LgYE@)t#@ERHwi@)0Pvri z!M#|*-VdYr9!;ua&N*YJcNuXwF2T-&5H{A@8Ta(SBaA6rG%)Si&0{pq(BQ&gud>$S zCm@zKZS#8lmvabThZf$tJ*7)?-p3}{w8?7(HU2i5ua(?F-S7I!dBchruwF&P_%tt2 zoioEV>fHM-vS7q7G&xNdf0t75?4H^coIceS8|ahe@TCY{*UDMWI{7CKYMP2XZ{Lbz zAzftbOsRCry9aVlJyhCN+lS%=r><{bGh%gd{|ug`slLC-;?AC}VpsW0MOKnK-rh*p z<5DwxRzJW}WPHkr?`>oP+a1Xsi0a1l<|-~oS*L#(>MbeN;0R$fU(oE;u_i!Iq47Jt zD}5&3JKGlzcKGO|rgXMiOFeGK*5JJ;#}BNV-wu(&qdB663{csIonGweE|Wsuh>XNe zMX3e{w3lN;JYCVAGX=X7;VgHfyES+4J6oWtEBycib0mBx(r$jIZ5BW#Lf+)t{3bV$ zQ80cVjWtCu0NuXJRSSik*GAZWs}rv!zp)C?_hxr++Ba4K`Tb2P$gxp$VCijlim*|KO>1gZ(SmD-fnL)@&OnWgIj(h;|hJ;QsKSgfWRv zq=k@sH25m%Y@wF1oog_v;*-qYy*!pRAMkR|{_@sWHBW;t^rD4}*|v)`@+2(sEi~It z@#Ztj&F%C^Wu+!kNP!*bU`UdWY{zj((cciG)3Y@}B6Tw#mnQq?Jy1^QB96cZ2D7=t{wvIt%eNhhtJ z{lVSf9e0~z5*NGTxV_LBN}Z(ts8@?FXic1aF3HAU9V@^-wPfbzX@sqP zki~go{I$P=e!ATi2}UGR2D8r!pe@qFl1|W$Ol{(aA4rsm>WTBe{p7F`z<)uwYu*@y z%)QCq!9ECo^<)Laqc99OJg;4~{LcJRg;tzL9sXNR70VUnyAl3~Uv+r;dMSgaoAKGX zS~F73p~siUQgPPj;Kcb!KV`UDme;Z3Nvp?qnOL!wW>8WIrdW(9`j3q>Nw5FHViJ7{G5S6@ zbjt^8Xhw5512Ub`nR8DynD}jedx#g#pyy`MA=n(hqr9n01w>-nk0lV&z1HUt~||s8=g;RrF`D6fP9Uq zKE%dfWL>t)+^sv?yU}g}K6)5WFewT3=}Xylb}|OeF!(H*Rpi;cy5$N_k&)(=1{wGs zD7$ZQkB!yhLk?Cgi3e6WH+!F3DV6xRLs16@NKGMMSo|s(tntY`eHIrgX;U#`Kk=Q? z_V^$BulFD~b)4XYi|lX3$_@ipcRPg)?aCW@@q90;k(!G6o2bQa7OR))-7jd} zzd`x+DK*Q@tVWM3-#fd34|J<(uEqkWK#^iWtwV2hj}>fn?(S$+1_?FUW!6go;gsso zR`Um{hoYkzGw_T;rQoJ=Z;d{bGbnJoji8am| zQyg#Z_>djX2p5gv_+-*jhF64`ES|xxE36$eu(hmPiuI?xPb<6GpFa2OU3`H4=4A4w zh(IHdx7+HQgF|Bx9sa)J8NCWDu0-1AXo^9MPt3*G0XE@f#~mDUHD^M{O}u>BSh}~J zi~ZUQIS;+DgDdfR3GPH$bh@7&FBo6rzFCfs9$#%5Q9oKtcle^GMZy`1UFWN0(AUlU7;s1KzO+>UI7S2apDCdRq47F zL!C6FD;cu;LV;7QMpt+Ia1GD{@toFJns@ya%E>-t5X7b0JhCcQqG=eMX-G^$y zmZ4IxC7w3mrex2Of{mww%?Jf~0?>r>E62PD|`5>JT2Rc-R2+}-pKJPP`- z$(h#5^Yq!+oHlS7^&!mQ?`5YtA*wm|dlwt!%{HbZ4!@@5lBUyGwd>s{+p?qU6 z0EEVsQjmnw=YQS9@bKFqi_7C2K6kO+Bh-M33ff#n#*)R2-FV*BMUjY!W=t*exPK_3 zpv*6?`BRRV^O+e4xv}H%X?{>=?TrZkOd31Cx{;}8o6XK)5 z-Wk+!^1jJf%58JucH0vV+J6eS&fAeGiJfbj<)HVK>2Jl6p@S(v^$ayQMz2F5HotD**l_MO|;0Oo~@Px;rH=MIW#=NYqeKQWwL(1 zc-D~U{p34@u&!k!y=)6|OL;9mU(lVgSbnKh>Rdlu7n!wNx>xz!XUV)Yp&YW@^|yU0-NpXLPhQ+#-x#mV zigw%!4O!FMUv+(;`S3b@ALgs|`PatKJ>)AF?GMK-MpNkZmy1xKyq+!_-!ZEF?FjOHF zrvFxadHo|2V7FvoIo{&0Lq&2Mh#C?Qx17c7UZ9Am7vsv|kyL23r=He8jD}2R`>~li z8@*^xJjA{?5^0JuSjW68AdoW>Wv2?8;jQV1RKkBTP~Ql0(@;OqeYTlc{Tfk{yb$~y zw}$v`6eBNqP>S1IDK%T7YRTq| zmRlsp$>A=2?FY%RQta$RXy5$lxZgpu#TJm{85DPsnsI*Aj0bKwN}KCIVI{{UBjf3O z-CbVkqDdP1hz+ngQ|@#$F3yx1wSOsNO{scf)rU2g!ITGh3$W{l93eNy`J+jWKZYfop-!#V}I0Y>yhP-qD+!#-^OqtPT$#hc21{8WQTB* zlu%%(A%na6(pntb2Qv134LxBa*z;+*b&DFHbNo(nvf5KWqkat4-|g*cowo;1a>D&p z#UUYbj!Rd0Cf&Qf8O8gY%ZTlFh`qa|F_FDTzQSiqR6eUYNE|=Kus7iQj`@oDX1jiH z*j4u9^Bv8{w>w~@467g+Vc^+A-YhHZa6Xg$nZ|-(Y-pjMn&RV?AnrP6a>ndLF6P(8 zPC+g;Cf!!5meaD%WRvb>n)cFj!5Jr?)x`XgEv_2>TCRn>d-Bp%}=i zwjW~^djpu)Qkds;+1elQ#i+K#A0*A-Bcu&}gK~kU;YwNsEIgDENr@3-H(Q$S$F~@xY+g1q}aIaVE|XXX*r(C@0VLy5!2fU6S|LwwdZDI^J#JK+8fB~iEfeW z>!xSz6K*=_oCRm(`z7DQkFu>g-g7KB7th`5_px~S$9x3un0R=q^Ue;%4bI-^dA%UY zH1kemK~(A8eBh5pxbbyoWZ_>{5&+Ct2dXbNUY<{*;fC&(L~{^jq-HrA*0vIxOY zHqFSzQh&ySt+rl1YU11IZv(bEgU~F^&sd?0`kwi{1v3+gDhI03bP6Z67HHM@bb{Uz zkxa^SUGA=oIze%GEH)4~BsuQV*o%dFx)Harv2pMV>xGsw z3aXLY{^YFheR`a?Z?DwRDIxIgDd%keayUOXEo_r9OSL%WU59&*01>33G=tza^%FWW zJ&~YB9m577SE#i*$0)=jqy;Wdy~cFEhAGZdYN(ZY2URL*$7&12Q+EsdEK% zq#HO6)S9u`cQJ@Lw%ezzb-8GCRH~zIB}#dY6hp&%l3==Z!(iXn2U<68IppHfMPiSo z%j-*`Kjt-{X4G5{n#;2Wc)CFiGRoT>DEEh=D__=m%~QYA|KaY|@9I0)(kFL39gAA^ zVGr85RB>xuY zgSC;95Exj+%Z1yGsiH6pfga5*Q`3*CgQ1e%h3Dd?VlLK#p6Z?R48s9)JYQ*TXM6ki zZB28Z*k%2rNNpQ~L=j20Vc(zfQfc)*Ww&6-tU-suhvv-i@Ppn_Ii2TR`D?d9dE@WgBpWW{0xA9Ir<^%J`f8rbk?FF^okC$)0#6gqv5 zr?>l+shRHr_z_Ix3+)MJF@kMiY$aUw1NgOvcnI9x)bGjVvQnPYYrUsYj^iJI@8NgV-hi7IZg-Hb)`a zr^#h39F_tltoa(+kD82)o$QatVKZqGD}dDLLCc;^m^T*s0<7j!U3bcdpW#-(U9X8YyrOpQNQ&sSg zxB`lq`-&^ExwD6VNm*M(QfJE>G~?FgX7W~4J+D?hNHSDX?~MFcQi$Md=4iL5cxYwR zhb00dIH(&ujnTN4IdhE=7igWCSdcQMHj)-G1*Z zh(NbqX!g`L?JS(1;{ug)`%?r{m~+{TPH)JIu@mNCRQbriO#^{|;CZQd#(d5Lq=n<{r+ZkMYFy=RWM?R^d#9g zxyzaHFN^8B8suNwF5`b$w?~xVfT&&?5xtshhMFeDROG1|dkOJVaQ9vFqbR#$C)l^0 zOwncyKdoVkanZRK}i=JD)QFY#D2My@$q%+u zuuBLlJngKT={Ppa$l_v#beZo_C6=%Kw=e|C74tKN_TSO1K~rxhVLe*=b`QU*rPv=+9gA zdHCbus;EI0WTIFNc?=#N=sRHqH!Cbl-W!fSYE_f#nZQVlXm#a5-)FWSc(4v%%#gO> z+H3}(ztQ03RlifY;_Z}>*qdGQTar}MFcbLf5~MG*Le#g+WA%Y!rBwFC^XLLAE{%(u zoc{8;kmy4|oL?yYdW`trpk}^VYpztzG;ox^uaw^|o~fxssJHgzzVslrT^&k@+jsae zRYr`Palpx0&@Vmdu4iH(;cxL(&AAK_^tY>-jrPCwS;4RYk?FU_6L_hkuV-RP_W5Y5 zyBFfv;?ocJ_g7f`vX2(IE1hB{cP+4}RQS_X6K-xSHU@zddu=-q0jt3fhb|nscd8aq z+_&iXFnSf`*@VM4dHJIuyFX?*QNd$cHcY<#^D4HkO;+=Cy!+mO24cgbc!@$fl;7^? zf3lEuOZAtr83zwCSp={qLA!^ zu~QNnvWy5JO_o{A4DS5zeRJBGv8%oi6;d4pVP<7vv+hdcX0NsZ2^^nUd`Vw8?WnQTU1A`*|JspVqlUEp@{;Oh@*$EW1)H z1?dKG#_XY!{RS6@UQIk6&~*M7vpZ4BZZYH5CZc$yuPfu?HnlNAI-#V23Ep}(%u_Y7 zGm&-nY?i9H;Hec~UW18Ir0+1Fnf#Rd)J#NAHMRz)Rf9u}_^9UJYp(ieYUJ@qCI)t4 zrW$vp_MnGHZ1gpMku02-hpRmXo@Msvz9#yu7KyVi-FTW*MXE~qu~xPospFMsbEdwW z!6;#7uVq*Ae{zrb#cq4gdr4PRhR9`VXClhlv%E{Lnj0n$v;IKV{hSZ8aXlU%AFreL z!MXc0VtsSZdyGFsKK)=<@=N?mCvNffBLZxkHqgkJ8~8aKIh$&tejW9-w8Ws($7FY& zjs3|Z-)dnL=g)KH{uBL&y5{9=18F{`%Xl*NcB4%3VRR4&TFYyfuf6$REZboN8|kxL z5AbXp&h=FuD|0kLiR9AY24{bQtS73IXDbW9%MS_`qSvv(iJbeXT z3jrdi8`vd9ef_jI;m5ZYdflBp>l5#&?b{-+;z9l=imc8+jilFAy=bSpoaO(nz>@wokqFp8C~5U*4#WnTer*`>jO3 zyt;g;gsc~JSQlw8BcgV>NmY8n;kaFujs|FMjXKiKf^k+N#_DRBIY+FKT!Y0}MzEXe z!pWgj3peK^a0pxBgFdHpM?L6*Ql426&c$$EzKU~}S<%<&f%rvGK)!2}p7+9KSWUHR z3z7)vP_u3u!OQIxD?I~Sni~GqT|fLyHM+qq8D{ns+ctgoUrdkH4>!8}6OkmD9V!%R zERlfKTy!9c_^}Q5Ep}_hDR{TBncaO}kwdE2!NqR%3fk}Lw?aP+j~ZiZLPC_Z zS9hzPxyD9Cvw?Z^tj1!I3+aQZ3;G)=uc^fPljl zV3k}KFY5)KV*x1QnESW)$AKijgnfn1UqiSW+OopLSiAk^)f{Nv)|F&!0w-vFye=j$ zz1-=&Fb5`*rEsNO>_$6UiKi#+m(^aDsO@xX0)(GSkq+qPa0V^BT{*AlfrJ^Q)n?Qh z*&s;SertL#csyK@BfzSeX7zSfW8RNZ@Y+(9AHEhd75>0N47pra#AQP9JY}*iWa)6& z+i*RKExj$Q;f^`as!&bY#yNX$oM8Q{E@-rgguTH9%_q7%GD5O{^aUKenPrd_vC%uW zO$^UOwqodU!|Ipxq6-7xZigunt&!*Jrit*?rJz{&&XZE@;6i_0lh6u||L0d9FHSkf zoM;9o9RP@>{6;%_%?V&6A}MNoZmvMqVFP;PvrAyFj%0(tDmA$TY!a8@d~_FB^2E;A z=zq}@{eMx^_?Ej-rUOevqE!+!ein4ww8OF`NW0gVeCO5yeTXA#j%);=hsHht){Yt^u9znylVL zQG5Vb>u60?Q84YMU(-`e*3A`-cWZjB^7|6I;!cNw47U6G*YcLffE7##!t}ZA3B|o> znFP-6s_JTyBw0Q)M#cD3y`QxUEFP0`0u6O`Q9mU+s52W+XH3myLW4LCgwr0WWWK=+ z?cP?=MiDC0?Dum;Opc1zTzRR?RQ?;Ft}I_TYgMS6EM`I|XMa$N*T>=y!}SO2v0#5# z8gSC4AnuwAh^<5|0ML@-Jo~36{l+iklxdj`k|rU|2vLsY3yT+yv=Pmr;Q%J|XHj8O z|E>P#)8n*5T-|PS^W#a9O{R*ZA*maG7Z*P75K(~bWteT=zp7~n2LoF@I$YYKvT*=7XFLcS3}bP6vJq%#&NM3b z4H*ppQG?Oe=9)$K!uo@Z&b$S{Y4WV0i#75^H9ke9!Gcxr9bF)Zy#VfrH+sP9n zMmg1_{QR{_UkRtpo`d$AVm%;9wk|aFguXT2Da0C8Xr#Rz2IXfuy58sz?cv3nfmlG5 zO4_~SK9_B)+|Ug1%Nx3_<(Ev-2R?r$S&f!5092PEM~$b;a#dAT+^rZ3PaLkhZr5i& zNtZ%L4LK@Qc@RstMN@aF%=AN!E<$}TYP^7Yps5xQ3-O}v_1L`$FLeR~q*R3YD>aLB z$2mV|c3NJHus*NCVEo%-qXitYb-+zE1X5DrYdSPtN-^vO1Jn_1$j!w|-X2^STfhoj ztnf8&dm)tG)9yu^RjIXBx2tyWa6=W_!QZ~CKIhpTz%IGCNTWbURC7B$VB;NcWRyH2 z$ko|Ts`y|(CAd*&4YV7T=WDIGK`yx4|5|;qARsjWkhI}+#XftEmLBS?K0dew3f>3j?XVHK`4v zGX}p5hML2)8G$mP!}w%Hdxl8}qaTHvnwE2$oGiR}m6{sT5C}|v#Xa-h;cG(cLHH_j zySbQWnrU^af&%H{rKvEQUjS{I)|l&i5%=Mi^0F&iY3bL-m=6Yj%=aF%OIC~HWw|YG zKr7Y;-UhQ3S7(=MUaQ7rWPx7rq@F|p+SWgbv>~Gb=0umJ9JdaPtQG|}HA%MnLHSj|mR7Us~m+>K%hMYLXvU$uRVy?5~n=OfV`&@=+ z_@m-#BxRzp>E=P~=Co`O!MzE)cg@%GiOZt)l1rN+N7uPn}P}obRK1cPi(RWy4u%HW~*c(9jNEnr0aqeqaYI-`Ruh-6YYTS zA9G4GEG+&Ue?X#-LVprsS;|mvyH34!TKK`#F9=5)G_lmDJ?Ex6k6-`gjU zXB4G@3p$56U|ak`#R}fY7<=czu78B*f6D-;hy4&+s`JcK?+3Y$(yoT_#NA`_1^0*~PN+PBDK4XAcY< literal 0 HcmV?d00001 diff --git a/src/FeaturesPlugin/doc/images/FilletVarious.png b/src/FeaturesPlugin/doc/images/FilletVarious.png index fbcdf4c82779cdda3ba7db2328e0236024cc2697..88545bbea3c7580332a5e44e1a0f058d7e487448 100644 GIT binary patch literal 25598 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 Q0groX%GydbudPD=4P2w^LI3~& literal 13211 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 Fe*xGGjmZE2 diff --git a/src/FeaturesPlugin/doc/images/fillet_multiradius_by_curv.png b/src/FeaturesPlugin/doc/images/fillet_multiradius_by_curv.png new file mode 100644 index 0000000000000000000000000000000000000000..015d270bf903df722969fc04095d01e7464170f5 GIT binary patch literal 424 zcmV;Z0ayNsP)ZyQB{&gHt)}APb$D<$`;Bw z<=IGd6|@2}jR44nl_2W{>niLGG(>C0M$qk=5VZZb{NCl#O7PqW?}1Gq`l)LDrE&IZ zCCIwI1G24R)<7Qm+e;1LUqQwxxr!Vkru1|bo{U8@5A4772>YU#H)g!RL#YyJ(5as{ zhs})KAmjRZl%qI!q#(T*EP+%}DaOG=1!>POh~W^GV&~?x6$cLprrh$fs2m7p#RdkD zwBs)Ty8`11Il&a#*Ws-V43GkLfSIpfG?T#4KVjlm{*eU!7Hj~Iz#XuaRPYHVD`q^4 SbHEe;00002?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4f%C91l5uNKibeP{t#q*Ko9uk%z7GxX%ZHx0BQk zTst1T-glqzopr0JVg2 AkZV=Qe$PlzzhHYtA@I=F7*jIx|ohp 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 literal 0 HcmV?d00001 diff --git a/src/FeaturesPlugin/doc/images/filletmultiRadiusCurvResult.png b/src/FeaturesPlugin/doc/images/filletmultiRadiusCurvResult.png new file mode 100644 index 0000000000000000000000000000000000000000..d167d17257c1dee4e5da38bfe2ae8a7f1a773135 GIT binary patch literal 20342 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 literal 0 HcmV?d00001 diff --git a/src/FeaturesPlugin/fillet_widget.xml b/src/FeaturesPlugin/fillet_widget.xml index 2a756d3f7..b634ce52b 100644 --- a/src/FeaturesPlugin/fillet_widget.xml +++ b/src/FeaturesPlugin/fillet_widget.xml @@ -55,8 +55,8 @@ title="Multiple radiuses" tooltip="Fillet with multiple radiuses" icon="icons/Features/fillet_var_multiple_radiuses.png"> - - + diff --git a/src/FeaturesPlugin/plugin-Features.xml b/src/FeaturesPlugin/plugin-Features.xml index 74b60d59a..ba80beedd 100644 --- a/src/FeaturesPlugin/plugin-Features.xml +++ b/src/FeaturesPlugin/plugin-Features.xml @@ -126,7 +126,7 @@ + icon="icons/Features/fillet.png" auto_preview="true" helpfile="filletFeature.html"> ::const_iterator itCurv = theCurvCoord.begin(); - std::list::const_iterator itRadius = theRadiuses.begin(); + std::list::const_iterator anItCurv = theCurvCoord.begin(); + std::list::const_iterator anItRadius = theRadiuses.begin(); - for( ; itCurv != theCurvCoord.end(); ++itCurv, ++itRadius ) + for( ; anItCurv != theCurvCoord.end(); ++anItCurv, ++anItRadius ) { - array.SetValue(i, gp_Pnt2d( (*itCurv) , (*itRadius))); + array.SetValue(i, gp_Pnt2d( (*anItCurv) , (*anItRadius))); i++; } // assign fillet radii for each contour of filleting edges -- 2.39.2