Part: fix TaskAttacher external editing

This commit is contained in:
Zheng, Lei
2019-08-23 11:40:38 +08:00
committed by wmayer
parent c7d4e240e8
commit a06e0b7c2d

View File

@@ -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();