From fa21e3129fc455bf85bd054e9a4e31ef0d836814 Mon Sep 17 00:00:00 2001 From: Uwe Date: Sat, 5 Nov 2022 19:59:47 +0100 Subject: [PATCH] [Part] SectionCutting: cut long lines - following our latest Clang coding style --- src/Mod/Part/Gui/SectionCutting.cpp | 158 +++++++++++++++++----------- 1 file changed, 99 insertions(+), 59 deletions(-) diff --git a/src/Mod/Part/Gui/SectionCutting.cpp b/src/Mod/Part/Gui/SectionCutting.cpp index 67dd0ed3b2..4c5b4828cf 100644 --- a/src/Mod/Part/Gui/SectionCutting.cpp +++ b/src/Mod/Part/Gui/SectionCutting.cpp @@ -126,7 +126,8 @@ SectionCut::SectionCut(QWidget* parent) cutTransparency = vpBox->Transparency.getValue(); ui->CutColor->setColor(cutColor.asValue()); ui->CutTransparency->setValue(cutTransparency); - ui->CutTransparency->setToolTip(QString::number(cutTransparency) + QString::fromLatin1(" %")); + ui->CutTransparency->setToolTip(QString::number(cutTransparency) + + QString::fromLatin1(" %")); } }; @@ -141,7 +142,8 @@ SectionCut::SectionCut(QWidget* parent) auto compoundObject = doc->getObject(CompoundName); Part::Compound* pcCompound = dynamic_cast(compoundObject); if (!pcCompound) { - Base::Console().Error("SectionCut error: compound is incorrectly named, cannot proceed\n"); + Base::Console().Error( + "SectionCut error: compound is incorrectly named, cannot proceed\n"); return; } BoundCompound = pcCompound->Shape.getBoundingBox(); @@ -150,7 +152,8 @@ SectionCut::SectionCut(QWidget* parent) if (doc->getObject(BoxZName)) { Part::Box* pcBox = dynamic_cast(doc->getObject(BoxZName)); if (!pcBox) { - Base::Console().Error("SectionCut error: cut box is incorrectly named, cannot proceed\n"); + Base::Console().Error( + "SectionCut error: cut box is incorrectly named, cannot proceed\n"); return; } hasBoxZ = true; @@ -158,12 +161,13 @@ SectionCut::SectionCut(QWidget* parent) // if z of cutbox bounding is greater than z of compound bounding // we know that the cutbox is in flipped state BoundCutBox = pcBox->Shape.getBoundingBox(); - if (BoundCutBox.MinZ > BoundCompound.MinZ){ + if (BoundCutBox.MinZ > BoundCompound.MinZ) { ui->cutZ->setValue(pcBox->Placement.getValue().getPosition().z); ui->flipZ->setChecked(true); } else { - ui->cutZ->setValue(pcBox->Height.getValue() + pcBox->Placement.getValue().getPosition().z); + ui->cutZ->setValue(pcBox->Height.getValue() + + pcBox->Placement.getValue().getPosition().z); ui->flipZ->setChecked(false); } // set color and transparency @@ -172,7 +176,8 @@ SectionCut::SectionCut(QWidget* parent) if (doc->getObject(BoxYName)) { Part::Box* pcBox = dynamic_cast(doc->getObject(BoxYName)); if (!pcBox) { - Base::Console().Error("SectionCut error: cut box is incorrectly named, cannot proceed\n"); + Base::Console().Error( + "SectionCut error: cut box is incorrectly named, cannot proceed\n"); return; } hasBoxY = true; @@ -183,7 +188,8 @@ SectionCut::SectionCut(QWidget* parent) ui->flipY->setChecked(true); } else { - ui->cutY->setValue(pcBox->Width.getValue() + pcBox->Placement.getValue().getPosition().y); + ui->cutY->setValue(pcBox->Width.getValue() + + pcBox->Placement.getValue().getPosition().y); ui->flipY->setChecked(false); } setColorTransparency(pcBox); @@ -191,7 +197,8 @@ SectionCut::SectionCut(QWidget* parent) if (doc->getObject(BoxXName)) { Part::Box* pcBox = dynamic_cast(doc->getObject(BoxXName)); if (!pcBox) { - Base::Console().Error("SectionCut error: cut box is incorrectly named, cannot proceed\n"); + Base::Console().Error( + "SectionCut error: cut box is incorrectly named, cannot proceed\n"); return; } hasBoxX = true; @@ -202,7 +209,8 @@ SectionCut::SectionCut(QWidget* parent) ui->flipX->setChecked(true); } else { - ui->cutX->setValue(pcBox->Length.getValue() + pcBox->Placement.getValue().getPosition().x); + ui->cutX->setValue(pcBox->Length.getValue() + + pcBox->Placement.getValue().getPosition().x); ui->flipX->setChecked(false); } setColorTransparency(pcBox); @@ -233,9 +241,12 @@ SectionCut::SectionCut(QWidget* parent) connect(ui->groupBoxX, &QGroupBox::toggled, this, &SectionCut::onGroupBoxXtoggled); connect(ui->groupBoxY, &QGroupBox::toggled, this, &SectionCut::onGroupBoxYtoggled); connect(ui->groupBoxZ, &QGroupBox::toggled, this, &SectionCut::onGroupBoxZtoggled); - connect(ui->cutX, qOverload(&QDoubleSpinBox::valueChanged), this, &SectionCut::onCutXvalueChanged); - connect(ui->cutY, qOverload(&QDoubleSpinBox::valueChanged), this, &SectionCut::onCutYvalueChanged); - connect(ui->cutZ, qOverload(&QDoubleSpinBox::valueChanged), this, &SectionCut::onCutZvalueChanged); + connect(ui->cutX, qOverload(&QDoubleSpinBox::valueChanged), this, + &SectionCut::onCutXvalueChanged); + connect(ui->cutY, qOverload(&QDoubleSpinBox::valueChanged), this, + &SectionCut::onCutYvalueChanged); + connect(ui->cutZ, qOverload(&QDoubleSpinBox::valueChanged), this, + &SectionCut::onCutZvalueChanged); connect(ui->cutXHS, &QSlider::sliderMoved, this, &SectionCut::onCutXHSsliderMoved); connect(ui->cutYHS, &QSlider::sliderMoved, this, &SectionCut::onCutYHSsliderMoved); connect(ui->cutZHS, &QSlider::sliderMoved, this, &SectionCut::onCutZHSsliderMoved); @@ -247,7 +258,8 @@ SectionCut::SectionCut(QWidget* parent) connect(ui->flipZ, &QPushButton::clicked, this, &SectionCut::onFlipZclicked); connect(ui->RefreshCutPB, &QPushButton::clicked, this, &SectionCut::onRefreshCutPBclicked); connect(ui->CutColor, &QPushButton::clicked, this, &SectionCut::onCutColorclicked); - connect(ui->CutTransparency, &QSlider::sliderMoved, this, &SectionCut::onTransparencySliderMoved); + connect(ui->CutTransparency, &QSlider::sliderMoved, this, + &SectionCut::onTransparencySliderMoved); connect(ui->CutTransparency, &QSlider::valueChanged, this, &SectionCut::onTransparencyChanged); // if there is a cut, perform it @@ -293,8 +305,9 @@ void SectionCut::startCutting(bool isInitial) auto deleteObject = [&](const char* objectName) { anObject = doc->getObject(objectName); // the deleted object might have been visible before, thus check and delete it from the list - auto found = std::find_if(ObjectsListVisible.begin(), ObjectsListVisible.end(), [anObject](const App::DocumentObjectT& obj) { - return (obj.getObject() == anObject); + auto found = std::find_if( + ObjectsListVisible.begin(), ObjectsListVisible.end(), + [anObject](const App::DocumentObjectT &obj) { return (obj.getObject() == anObject); }); if (found != ObjectsListVisible.end()) ObjectsListVisible.erase(found); @@ -323,24 +336,28 @@ void SectionCut::startCutting(bool isInitial) auto compoundObject = doc->getObject(CompoundName); Part::Compound* pcCompoundDel = dynamic_cast(compoundObject); if (!pcCompoundDel) { - Base::Console().Error("SectionCut error: compound is incorrectly named, cannot proceed\n"); + Base::Console().Error( + "SectionCut error: compound is incorrectly named, cannot proceed\n"); return; } std::vector compoundObjects; pcCompoundDel->Links.getLinks(compoundObjects); // first delete the compound - auto foundObj = std::find_if(ObjectsListVisible.begin(), ObjectsListVisible.end(), [anObject](const App::DocumentObjectT& obj) { - return (obj.getObject() == anObject); + auto foundObj = std::find_if( + ObjectsListVisible.begin(), ObjectsListVisible.end(), + [anObject](const App::DocumentObjectT &obj) { return (obj.getObject() == anObject); }); if (foundObj != ObjectsListVisible.end()) ObjectsListVisible.erase(foundObj); doc->removeObject(CompoundName); // now delete the objects that have been part of the compound - for (auto itCompound = compoundObjects.begin(); itCompound != compoundObjects.end(); itCompound++) { + for (auto itCompound = compoundObjects.begin(); itCompound != compoundObjects.end(); + itCompound++) { anObject = doc->getObject((*itCompound)->getNameInDocument()); - auto foundObjInner = std::find_if(ObjectsListVisible.begin(), ObjectsListVisible.end(), [anObject](const App::DocumentObjectT& objInner) { - return (objInner.getObject() == anObject); - }); + auto foundObjInner = std::find_if(ObjectsListVisible.begin(), ObjectsListVisible.end(), + [anObject](const App::DocumentObjectT &objInner) { + return (objInner.getObject() == anObject); + }); if (foundObjInner != ObjectsListVisible.end()) ObjectsListVisible.erase((foundObjInner)); doc->removeObject((*itCompound)->getNameInDocument()); @@ -385,11 +402,15 @@ void SectionCut::startCutting(bool isInitial) // get all shapes that are also Part::Features if (it->getObject()->getPropertyByName("Shape") && it->getObject()->getTypeId().isDerivedFrom(Base::Type::fromName("Part::Feature"))) { - // sort out 2D objects, datums, App:Parts, compounds and objects that are part of a PartDesign body - if (!it->getObject()->getTypeId().isDerivedFrom(Base::Type::fromName("Part::Part2DObject")) + // sort out 2D objects, datums, App:Parts, compounds and objects that are + // part of a PartDesign body + if (!it->getObject()->getTypeId().isDerivedFrom( + Base::Type::fromName("Part::Part2DObject")) && !it->getObject()->getTypeId().isDerivedFrom(Base::Type::fromName("Part::Datum")) - && !it->getObject()->getTypeId().isDerivedFrom(Base::Type::fromName("PartDesign::Feature")) - && !it->getObject()->getTypeId().isDerivedFrom(Base::Type::fromName("Part::Compound")) + && !it->getObject()->getTypeId().isDerivedFrom( + Base::Type::fromName("PartDesign::Feature")) + && !it->getObject()->getTypeId().isDerivedFrom( + Base::Type::fromName("Part::Compound")) && it->getObject()->getTypeId() != Base::Type::fromName("App::Part")) ObjectsListCut.push_back(it->getObject()); } @@ -397,7 +418,8 @@ void SectionCut::startCutting(bool isInitial) if (it->getObject()->getTypeId() == Base::Type::fromName("App::Link")) { App::Link* pcLink = static_cast(it->getObject()); auto linkedObject = doc->getObject(pcLink->LinkedObject.getObjectName()); - if (linkedObject && linkedObject->getTypeId().isDerivedFrom(Base::Type::fromName("Part::Feature"))) + if (linkedObject + && linkedObject->getTypeId().isDerivedFrom(Base::Type::fromName("Part::Feature"))) ObjectsListCut.push_back(it->getObject()); } } @@ -419,11 +441,12 @@ void SectionCut::startCutting(bool isInitial) std::vector::iterator it3; // check list of visible objects and not cut list because we want to repove from the cut list for (it = ObjectsListVisible.begin(); it != ObjectsListVisible.end(); ++it) { - if ( it->getObject()->getTypeId().isDerivedFrom(Base::Type::fromName("Part::Boolean")) + if (it->getObject()->getTypeId().isDerivedFrom(Base::Type::fromName("Part::Boolean")) || it->getObject()->getTypeId().isDerivedFrom(Base::Type::fromName("Part::MultiCommon")) || it->getObject()->getTypeId().isDerivedFrom(Base::Type::fromName("Part::MultiFuse")) || it->getObject()->getTypeId().isDerivedFrom(Base::Type::fromName("Part::Thickness")) - || it->getObject()->getTypeId().isDerivedFrom(Base::Type::fromName("Part::FilletBase")) ) { + || it->getObject()->getTypeId().isDerivedFrom( + Base::Type::fromName("Part::FilletBase"))) { // get possible links auto subObjectList = it->getObject()->getOutList(); // if there are links, delete them @@ -445,7 +468,8 @@ void SectionCut::startCutting(bool isInitial) if (isInitial) Base::Console().Error("SectionCut error: there are no visible objects to be cut\n"); else - Base::Console().Error("SectionCut error: there are no objects in the document that can be cut\n"); + Base::Console().Error( + "SectionCut error: there are no objects in the document that can be cut\n"); // block signals to be able to reset the cut group boxes without calling startCutting again ui->groupBoxX->blockSignals(true); ui->groupBoxY->blockSignals(true); @@ -501,7 +525,8 @@ void SectionCut::startCutting(bool isInitial) for (auto itCuts = ObjectsListCut.begin(); itCuts != ObjectsListCut.end(); ++itCuts, count++) { // first create a link with a unique name std::string newName; - // since links to normal Part objects all have the document name "Link", use their label text instead + // since links to normal Part objects all have the document name "Link", + // use their label text instead if ((*itCuts)->getTypeId() == Base::Type::fromName("App::Link")) newName = (*itCuts)->Label.getValue(); else @@ -519,7 +544,8 @@ void SectionCut::startCutting(bool isInitial) // we want to get the link at the same position as the original pcLink->LinkTransform.setValue(true); - // if the object is part of an App::Part container, the link needs to get the container placement + // if the object is part of an App::Part container, + // the link needs to get the container placement auto parents = (*itCuts)->getInList(); if (!parents.empty()) { for (auto itParents = parents.begin(); itParents != parents.end(); ++itParents) { @@ -602,7 +628,8 @@ void SectionCut::startCutting(bool isInitial) if (autoTransparency) { ui->CutTransparency->blockSignals(true); ui->CutTransparency->setValue(cutTransparency); - ui->CutTransparency->setToolTip(QString::number(cutTransparency) + QString::fromLatin1(" %")); + ui->CutTransparency->setToolTip(QString::number(cutTransparency) + + QString::fromLatin1(" %")); ui->CutTransparency->blockSignals(false); } } @@ -683,8 +710,9 @@ void SectionCut::startCutting(bool isInitial) if (hasBoxX) { CutBoundingBox = getViewBoundingBox(); // refresh the Y cut limits according to the new bounding box - refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::notYValue, Refresh::notZValue, - Refresh::notXRange, Refresh::YRange, Refresh::notZRange); + refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::notYValue, + Refresh::notZValue, Refresh::notXRange, Refresh::YRange, + Refresh::notZRange); } auto CutBox = doc->addObject("Part::Box", BoxYName); if (!CutBox) { @@ -744,8 +772,9 @@ void SectionCut::startCutting(bool isInitial) if (ui->groupBoxZ->isChecked()) { if (hasBoxX || hasBoxY) { CutBoundingBox = getViewBoundingBox(); - refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::notYValue, Refresh::notZValue, - Refresh::notXRange, Refresh::notYRange, Refresh::ZRange); + refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::notYValue, + Refresh::notZValue, Refresh::notXRange, Refresh::notYRange, + Refresh::ZRange); } auto CutBox = doc->addObject("Part::Box", BoxZName); if (!CutBox) { @@ -812,7 +841,8 @@ SectionCut* SectionCut::makeDockWidget(QWidget* parent) SectionCut* sectionCut = new SectionCut(parent); Gui::DockWindowManager* pDockMgr = Gui::DockWindowManager::instance(); // the dialog is designed that you can see the tree, thus put it to the right side - QDockWidget* dw = pDockMgr->addDockWindow("Section Cutting", sectionCut, Qt::RightDockWidgetArea); + QDockWidget *dw = + pDockMgr->addDockWindow("Section Cutting", sectionCut, Qt::RightDockWidgetArea); dw->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable); //dw->setFloating(true); dw->show(); @@ -988,26 +1018,31 @@ void SectionCut::onCutXvalueChanged(double val) auto CutBoundingBox = getViewBoundingBox(); // refresh Y and Z limits if (hasBoxY) { - refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::notYValue, Refresh::notZValue, - Refresh::notXRange, Refresh::YRange, Refresh::ZRange); + refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::notYValue, + Refresh::notZValue, Refresh::notXRange, Refresh::YRange, + Refresh::ZRange); // the value of Y or Z can now be outside or at the limit, in this case reset the value too if ((ui->cutY->value() >= ui->cutY->maximum()) || (ui->cutY->value() <= ui->cutY->minimum())) - refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::YValue, Refresh::notZValue, - Refresh::notXRange, Refresh::YRange, Refresh::ZRange); + refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::YValue, + Refresh::notZValue, Refresh::notXRange, Refresh::YRange, + Refresh::ZRange); if ((ui->cutZ->value() >= ui->cutZ->maximum()) || (ui->cutZ->value() <= ui->cutZ->minimum())) - refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::notYValue, Refresh::ZValue, - Refresh::notXRange, Refresh::YRange, Refresh::ZRange); + refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::notYValue, + Refresh::ZValue, Refresh::notXRange, Refresh::YRange, + Refresh::ZRange); } - else { // there is no Y cut yet so we can set the Y value too - refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::YValue, Refresh::notZValue, - Refresh::notXRange, Refresh::YRange, Refresh::ZRange); + else {// there is no Y cut yet so we can set the Y value too + refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::YValue, + Refresh::notZValue, Refresh::notXRange, Refresh::YRange, + Refresh::ZRange); // the value of Z can now be outside or at the limit, in this case reset the value too if ((ui->cutZ->value() >= ui->cutZ->maximum()) || (ui->cutZ->value() <= ui->cutZ->minimum())) - refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::YValue, Refresh::ZValue, - Refresh::notXRange, Refresh::YRange, Refresh::ZRange); + refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::YValue, + Refresh::ZValue, Refresh::notXRange, Refresh::YRange, + Refresh::ZRange); } // make the SectionCutZ visible again CutFeatureZ->Visibility.setValue(true); @@ -1108,12 +1143,13 @@ void SectionCut::onCutYvalueChanged(double val) auto CutBoundingBox = getViewBoundingBox(); // refresh Z limits refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::notYValue, Refresh::notZValue, - Refresh::notXRange, Refresh::notYRange, Refresh::ZRange); + Refresh::notXRange, Refresh::notYRange, Refresh::ZRange); // the value of Z can now be outside or at the limit, in this case reset the value too if ((ui->cutZ->value() >= ui->cutZ->maximum()) || (ui->cutZ->value() <= ui->cutZ->minimum())) - refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::notYValue, Refresh::ZValue, - Refresh::notXRange, Refresh::notYRange, Refresh::ZRange); + refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::notYValue, + Refresh::ZValue, Refresh::notXRange, Refresh::notYRange, + Refresh::ZRange); // make the SectionCutZ visible again CutFeatureZ->Visibility.setValue(true); // make SectionCutX invisible again @@ -1153,8 +1189,9 @@ void SectionCut::onCutYvalueChanged(double val) CutBoxX->Visibility.setValue(true); // set new XRange auto CutBoundingBox = getViewBoundingBox(); - refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::notYValue, Refresh::notZValue, - Refresh::XRange, Refresh::notYRange, Refresh::notZRange); + refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::notYValue, + Refresh::notZValue, Refresh::XRange, Refresh::notYRange, + Refresh::notZRange); // hide cutting box and compare resultwith stored value CutBoxX->Visibility.setValue(false); if (!ui->flipX->isChecked()) { @@ -1248,7 +1285,7 @@ void SectionCut::onCutZvalueChanged(double val) // set new XRange CutBoundingBox = getViewBoundingBox(); refreshCutRanges(CutBoundingBox, Refresh::notXValue, Refresh::notYValue, Refresh::notZValue, - Refresh::XRange, Refresh::notYRange, Refresh::notZRange); + Refresh::XRange, Refresh::notYRange, Refresh::notZRange); // hide cutting box and compare resultwith stored value CutBoxX->Visibility.setValue(false); if (!ui->flipX->isChecked()) { @@ -1385,9 +1422,10 @@ void SectionCut::onFlipXclicked() if (hasBoxY && !hasBoxZ) { // only Y auto CutFeatureY = doc->getObject(CutYName); if (!CutFeatureY) { - Base::Console().Warning( - (std::string("SectionCut warning: the expected ") - + std::string(CutYName) + std::string(" is missing, trying to recreate it\n")).c_str()); + Base::Console().Warning((std::string("SectionCut warning: the expected ") + + std::string(CutYName) + + std::string(" is missing, trying to recreate it\n")) + .c_str()); // recreate the box startCutting(); return; @@ -1405,7 +1443,9 @@ void SectionCut::onFlipXclicked() auto CutFeatureZ = doc->getObject(CutZName); if (!CutFeatureZ) { Base::Console().Warning((std::string("SectionCut warning: the expected ") - + std::string(CutZName) + std::string(" is missing, trying to recreate it\n")).c_str()); + + std::string(CutZName) + + std::string(" is missing, trying to recreate it\n")) + .c_str()); // recreate the box startCutting(); return;