TechDraw: Enable App::Links to work with TechDraw views.

This commit is contained in:
PaddleStroke
2024-03-29 11:44:01 +01:00
committed by WandererFan
parent 5ed00d52dc
commit fc32946149
15 changed files with 380 additions and 189 deletions

View File

@@ -405,27 +405,23 @@ std::vector<App::DocumentObject*> ViewProviderPage::claimChildren(void) const
// any FeatuerView in a DrawViewClip
// DrawHatch
const std::vector<App::DocumentObject*>& views = getDrawPage()->Views.getValues();
try {
for (std::vector<App::DocumentObject*>::const_iterator it = views.begin();
it != views.end(); ++it) {
TechDraw::DrawView* featView = dynamic_cast<TechDraw::DrawView*>(*it);
for (auto* obj : getDrawPage()->Views.getValues()) {
auto* featView = dynamic_cast<TechDraw::DrawView*>(obj);
// If the child view appoints a parent, skip it
if (featView && featView->claimParent()) {
continue;
}
App::DocumentObject* docObj = *it;
// Don't collect if dimension, balloon, hatch or member of ClipGroup as these should be grouped elsewhere
if (docObj->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())
|| docObj->isDerivedFrom(TechDraw::DrawHatch::getClassTypeId())
|| docObj->isDerivedFrom(TechDraw::DrawViewBalloon::getClassTypeId())
if (obj->isDerivedFrom<TechDraw::DrawViewDimension>()
|| obj->isDerivedFrom<TechDraw::DrawHatch>()
|| obj->isDerivedFrom<TechDraw::DrawViewBalloon>()
|| (featView && featView->isInClip()))
continue;
else
temp.push_back(*it);
temp.push_back(obj);
}
return temp;
}
@@ -455,7 +451,7 @@ void ViewProviderPage::setTemplateMarkers(bool state)
templateFeat = getDrawPage()->Template.getValue();
Gui::Document* guiDoc = Gui::Application::Instance->getDocument(templateFeat->getDocument());
Gui::ViewProvider* vp = guiDoc->getViewProvider(templateFeat);
ViewProviderTemplate* vpt = dynamic_cast<ViewProviderTemplate*>(vp);
auto* vpt = dynamic_cast<ViewProviderTemplate*>(vp);
if (vpt) {
vpt->setMarkers(state);
QGITemplate* t = vpt->getQTemplate();
@@ -570,7 +566,7 @@ void ViewProviderPage::fixSceneDependencies()
if (!vp) {
continue;// can't fix this one
}
TechDrawGui::ViewProviderViewPart* vpvp = dynamic_cast<TechDrawGui::ViewProviderViewPart*>(vp);
auto* vpvp = dynamic_cast<TechDrawGui::ViewProviderViewPart*>(vp);
if (!vpvp) {
continue;// can't fix this one
}