diff --git a/src/Mod/TechDraw/App/Geometry.cpp b/src/Mod/TechDraw/App/Geometry.cpp index 54ae761456..b81e6741e0 100644 --- a/src/Mod/TechDraw/App/Geometry.cpp +++ b/src/Mod/TechDraw/App/Geometry.cpp @@ -182,6 +182,7 @@ BaseGeom::BaseGeom() : { occEdge = TopoDS_Edge(); cosmeticTag = std::string(); + tag = boost::uuids::nil_uuid(); } BaseGeomPtr BaseGeom::copy() diff --git a/src/Mod/TechDraw/Gui/CommandExtensionDims.cpp b/src/Mod/TechDraw/Gui/CommandExtensionDims.cpp index f17658bb5e..f97a2535d2 100644 --- a/src/Mod/TechDraw/Gui/CommandExtensionDims.cpp +++ b/src/Mod/TechDraw/Gui/CommandExtensionDims.cpp @@ -105,7 +105,7 @@ void execInsertPrefixChar(Gui::Command* cmd, std::string prefixChar) { for (auto selected : selection) { auto object = selected.getObject(); if (object->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) { - auto dim = dynamic_cast(selected.getObject()); + auto dim = static_cast(selected.getObject()); std::string formatSpec = dim->FormatSpec.getStrValue(); formatSpec = prefixChar + formatSpec; dim->FormatSpec.setValue(formatSpec); @@ -190,7 +190,7 @@ void execRemovePrefixChar(Gui::Command* cmd) { { auto object = selected.getObject(); if (object->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) { - auto dim = dynamic_cast(selected.getObject()); + auto dim = static_cast(selected.getObject()); std::string formatSpec = dim->FormatSpec.getStrValue(); int pos = formatSpec.find("%."); if (pos != 0) @@ -360,7 +360,7 @@ void execIncreaseDecreaseDecimal(Gui::Command* cmd, int delta) { for (auto selected : selection) { auto object = selected.getObject(); if (object->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) { - auto dim = dynamic_cast(selected.getObject()); + auto dim = static_cast(selected.getObject()); std::string formatSpec = dim->FormatSpec.getStrValue(); std::string searchStr("%."); int numFound = formatSpec.find(searchStr) + 2; @@ -2343,7 +2343,7 @@ namespace TechDrawGui { for (auto selected : selection) { auto object = selected.getObject(); if (object->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) { - auto dim = dynamic_cast(selected.getObject()); + auto dim = static_cast(selected.getObject()); std::string dimType = dim->Type.getValueAsString(); if (dimType == needDimType) validDimension.push_back(dim); diff --git a/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp b/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp index 33a21b82d3..dc1d4ab0e5 100644 --- a/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp +++ b/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp @@ -1403,7 +1403,6 @@ void CmdTechDrawExtensionLockUnlockView::activated(int iMsg) { return; Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Lock/Unlock View")); if (objFeat->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) { - auto objFeat = dynamic_cast(selection[0].getObject()); bool lockPosition = objFeat->LockPosition.getValue(); lockPosition = !lockPosition; objFeat->LockPosition.setValue(lockPosition); @@ -1819,8 +1818,11 @@ void CmdTechDrawExtensionAreaAnnotation::activated(int iMsg) QString qUserString = asQuantity.getUserString(); std::string sUserString = Base::Tools::toStdString(qUserString); - xCenter = (xCenter/totalPoints)/scale; - yCenter = (yCenter/totalPoints)/scale; + if (totalPoints != 0 && scale != 0.0) { + xCenter = (xCenter/totalPoints)/scale; + yCenter = (yCenter/totalPoints)/scale; + } + // set the attributes in the data tab's fields balloon->SourceView.setValue(objFeat); balloon->BubbleShape.setValue("Rectangle"); @@ -1871,17 +1873,20 @@ namespace TechDrawGui { std::string _createBalloon(Gui::Command* cmd, TechDraw::DrawViewPart* objFeat) // create a new balloon, return it's name as string { + std::string featName; TechDraw::DrawPage* page = objFeat->findParentPage(); page->balloonParent = objFeat; Gui::Document* guiDoc = Gui::Application::Instance->getDocument(page->getDocument()); ViewProviderPage* pageVP = dynamic_cast(guiDoc->getViewProvider(page)); - QGVPage* viewPage = pageVP->getGraphicsView(); - std::string featName = viewPage->getDrawPage()->getDocument()->getUniqueObjectName("Balloon"); - std::string pageName = viewPage->getDrawPage()->getNameInDocument(); - cmd->doCommand(cmd->Doc, "App.activeDocument().addObject('TechDraw::DrawViewBalloon','%s')", - featName.c_str()); - cmd->doCommand(cmd->Doc, "App.activeDocument().%s.addView(App.activeDocument().%s)", - pageName.c_str(), featName.c_str()); + if (pageVP) { + QGVPage* viewPage = pageVP->getGraphicsView(); + featName = viewPage->getDrawPage()->getDocument()->getUniqueObjectName("Balloon"); + std::string pageName = viewPage->getDrawPage()->getNameInDocument(); + cmd->doCommand(cmd->Doc, "App.activeDocument().addObject('TechDraw::DrawViewBalloon','%s')", + featName.c_str()); + cmd->doCommand(cmd->Doc, "App.activeDocument().%s.addView(App.activeDocument().%s)", + pageName.c_str(), featName.c_str()); + } return featName; } diff --git a/src/Mod/TechDraw/Gui/TaskCustomizeFormat.cpp b/src/Mod/TechDraw/Gui/TaskCustomizeFormat.cpp index 0e9b7b71b0..9fbbdef103 100644 --- a/src/Mod/TechDraw/Gui/TaskCustomizeFormat.cpp +++ b/src/Mod/TechDraw/Gui/TaskCustomizeFormat.cpp @@ -108,17 +108,15 @@ void TaskCustomizeFormat::changeEvent(QEvent *e) void TaskCustomizeFormat::setUiEdit() { setWindowTitle(tr("Customize Format")); - if (selectedObject->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) + if (auto dim = dynamic_cast(selectedObject)) { - auto dim = dynamic_cast(selectedObject); isDimension = true; std::string dimText = dim->FormatSpec.getStrValue(); dimRawValue = dim->getDimValue(); ui->leFormat->setText(Base::Tools::fromStdString(dimText)); } - else + else if (auto balloon = dynamic_cast(selectedObject)) { - auto balloon = dynamic_cast(selectedObject); isDimension = false; std::string balloonText = balloon->Text.getStrValue(); ui->leFormat->setText(Base::Tools::fromStdString(balloonText)); @@ -191,9 +189,12 @@ void TaskCustomizeFormat::onSymbolClicked() { // Slot: a symbol PushButton has been clicked QObject* senderObj(this->sender()); - QPushButton* pressedButton = dynamic_cast(senderObj); - QString pbText = pressedButton->text(); - ui->leFormat->insert(pbText); + QPushButton* pressedButton = qobject_cast(senderObj); + if (pressedButton) + { + QString pbText = pressedButton->text(); + ui->leFormat->insert(pbText); + } } void TaskCustomizeFormat::onFormatChanged()