Part: fix TaskAttacher external editing
This commit is contained in:
@@ -940,25 +940,37 @@ void TaskAttacher::visibilityAutomation(bool opening_not_closing)
|
|||||||
return;
|
return;
|
||||||
if (!ViewProvider->getObject()->getNameInDocument())
|
if (!ViewProvider->getObject()->getNameInDocument())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
auto editDoc = Gui::Application::Instance->editDocument();
|
||||||
|
App::DocumentObject *editObj = ViewProvider->getObject();
|
||||||
|
std::string editSubName;
|
||||||
|
ViewProviderDocumentObject *editVp = 0;
|
||||||
|
if(editDoc) {
|
||||||
|
editDoc->getInEdit(&editVp,&editSubName);
|
||||||
|
if(editVp)
|
||||||
|
editObj = editVp->getObject();
|
||||||
|
}
|
||||||
try{
|
try{
|
||||||
QString code = QString::fromLatin1(
|
QString code = QString::fromLatin1(
|
||||||
"import Show\n"
|
"import Show\n"
|
||||||
"from Show.DepGraphTools import getAllDependent, isContainer\n"
|
|
||||||
"tv = Show.TempoVis(App.ActiveDocument)\n"
|
"tv = Show.TempoVis(App.ActiveDocument)\n"
|
||||||
"dep_features = [o for o in getAllDependent(%1) if not isContainer(o)]\n"
|
"tvObj = %1\n"
|
||||||
"if %1.isDerivedFrom('PartDesign::CoordinateSystem'):\n"
|
"dep_features = tv.get_all_dependent(%2, '%3')\n"
|
||||||
"\tvisible_features = [feat for feat in %1.InList if feat.isDerivedFrom('PartDesign::FeaturePrimitive')]\n"
|
"if tvObj.isDerivedFrom('PartDesign::CoordinateSystem'):\n"
|
||||||
|
"\tvisible_features = [feat for feat in tvObj.InList if feat.isDerivedFrom('PartDesign::FeaturePrimitive')]\n"
|
||||||
"\tdep_features = [feat for feat in dep_features if feat not in visible_features]\n"
|
"\tdep_features = [feat for feat in dep_features if feat not in visible_features]\n"
|
||||||
|
"\tdel(visible_features)\n"
|
||||||
"tv.hide(dep_features)\n"
|
"tv.hide(dep_features)\n"
|
||||||
"if not %1.isDerivedFrom('PartDesign::CoordinateSystem'):\n"
|
"del(dep_features)\n"
|
||||||
"\t\tif len(%1.Support) > 0:\n"
|
"if not tvObj.isDerivedFrom('PartDesign::CoordinateSystem'):\n"
|
||||||
"\t\t\ttv.show([lnk[0] for lnk in %1.Support])"
|
"\t\tif len(tvObj.Support) > 0:\n"
|
||||||
);
|
"\t\t\ttv.show([lnk[0] for lnk in tvObj.Support])\n"
|
||||||
QByteArray code_2 = code.arg(
|
"del(tvObj)"
|
||||||
QString::fromLatin1("App.ActiveDocument.") +
|
).arg(
|
||||||
QString::fromLatin1(ViewProvider->getObject()->getNameInDocument())
|
QString::fromLatin1(Gui::Command::getObjectCmd(ViewProvider->getObject()).c_str()),
|
||||||
).toLatin1();
|
QString::fromLatin1(Gui::Command::getObjectCmd(editObj).c_str()),
|
||||||
Base::Interpreter().runString(code_2.constData());
|
QString::fromLatin1(editSubName.c_str()));
|
||||||
|
Gui::Command::runCommand(Gui::Command::Gui,code.toLatin1().constData());
|
||||||
}
|
}
|
||||||
catch (const Base::Exception &e){
|
catch (const Base::Exception &e){
|
||||||
e.ReportException();
|
e.ReportException();
|
||||||
|
|||||||
Reference in New Issue
Block a user