Salome HOME
projects
/
modules
/
shaper.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Issue #2361 sketch line color is wrong after delete and undo
[modules/shaper.git]
/
src
/
ModelAPI
/
ModelAPI_Tools.cpp
diff --git
a/src/ModelAPI/ModelAPI_Tools.cpp
b/src/ModelAPI/ModelAPI_Tools.cpp
index 7956c4dbb91966ec0a54917e62e6c7d0777b0e2b..1e57d36b76113351ad2aff3d4c04837c88fd2837 100755
(executable)
--- a/
src/ModelAPI/ModelAPI_Tools.cpp
+++ b/
src/ModelAPI/ModelAPI_Tools.cpp
@@
-382,6
+382,7
@@
bool removeFeaturesAndReferences(const std::set<FeaturePtr>& theFeatures,
return ModelAPI_Tools::removeFeatures(aFeatures, false);
}
return ModelAPI_Tools::removeFeatures(aFeatures, false);
}
+//***********************************************************************
bool removeFeatures(const std::set<FeaturePtr>& theFeatures,
const bool theFlushRedisplay)
{
bool removeFeatures(const std::set<FeaturePtr>& theFeatures,
const bool theFlushRedisplay)
{
@@
-406,6
+407,7
@@
bool removeFeatures(const std::set<FeaturePtr>& theFeatures,
return true;
}
return true;
}
+//***********************************************************************
// Fills the references list by all references of the feature from the references map.
// This is a recusive method to find references by next found feature in the map of references.
// \param theFeature a feature to find references
// Fills the references list by all references of the feature from the references map.
// This is a recusive method to find references by next found feature in the map of references.
// \param theFeature a feature to find references
@@
-623,8
+625,9
@@
void getConcealedResults(const FeaturePtr& theFeature,
}
}
}
}
-std::string getDefaultName(const std::shared_ptr<ModelAPI_Result>& theResult,
- const int theResultIndex)
+std::pair<std::string, bool> getDefaultName(
+ const std::shared_ptr<ModelAPI_Result>& theResult,
+ const int theResultIndex)
{
typedef std::list< std::pair < std::string, std::list<ObjectPtr> > > ListOfReferences;
{
typedef std::list< std::pair < std::string, std::list<ObjectPtr> > > ListOfReferences;
@@
-646,7
+649,7
@@
std::string getDefaultName(const std::shared_ptr<ModelAPI_Result>& theResult,
if (aCompSolidRes == *anIt)
break;
aDefaultName << "_" << (aCompSolidResultIndex + 1) << "_" << (theResultIndex + 1);
if (aCompSolidRes == *anIt)
break;
aDefaultName << "_" << (aCompSolidResultIndex + 1) << "_" << (theResultIndex + 1);
- return
aDefaultName.str(
);
+ return
std::pair<std::string, bool>(aDefaultName.str(), false
);
}
DataPtr aData = anOwner->data();
}
DataPtr aData = anOwner->data();
@@
-658,14
+661,20
@@
std::string getDefaultName(const std::shared_ptr<ModelAPI_Result>& theResult,
ListOfReferences::const_iterator aFoundRef = aReferences.end();
for (ListOfReferences::const_iterator aRefIt = aReferences.begin();
aRefIt != aReferences.end(); ++aRefIt) {
ListOfReferences::const_iterator aFoundRef = aReferences.end();
for (ListOfReferences::const_iterator aRefIt = aReferences.begin();
aRefIt != aReferences.end(); ++aRefIt) {
- if (aSession->validators()->isConcealed(anOwner->getKind(), aRefIt->first)) {
+ bool isConcealed = aSession->validators()->isConcealed(anOwner->getKind(), aRefIt->first);
+ bool isMainArg = isConcealed &&
+ aSession->validators()->isMainArgument(anOwner->getKind(), aRefIt->first);
+ if (isConcealed) {
// check the referred object is a Body
// (for example, ExtrusionCut has a sketch as a first attribute which is concealing)
bool isBody = aRefIt->second.size() > 1 || (aRefIt->second.size() == 1 &&
aRefIt->second.front()->groupName() == ModelAPI_ResultBody::group());
// check the referred object is a Body
// (for example, ExtrusionCut has a sketch as a first attribute which is concealing)
bool isBody = aRefIt->second.size() > 1 || (aRefIt->second.size() == 1 &&
aRefIt->second.front()->groupName() == ModelAPI_ResultBody::group());
- if (isBody && (aFoundRef == aReferences.end() ||
+ if (isBody && (
isMainArg ||
aFoundRef == aReferences.end() ||
aData->isPrecedingAttribute(aRefIt->first, aFoundRef->first)))
aFoundRef = aRefIt;
aData->isPrecedingAttribute(aRefIt->first, aFoundRef->first)))
aFoundRef = aRefIt;
+
+ if (isMainArg)
+ break;
}
}
}
}
@@
-687,7
+696,11
@@
std::string getDefaultName(const std::shared_ptr<ModelAPI_Result>& theResult,
ResultCompSolidPtr aParentCompSolid = ModelAPI_Tools::compSolidOwner(anObjRes);
if (aParentCompSolid)
anObjRes = aParentCompSolid;
ResultCompSolidPtr aParentCompSolid = ModelAPI_Tools::compSolidOwner(anObjRes);
if (aParentCompSolid)
anObjRes = aParentCompSolid;
- return anObjRes->data()->name();
+
+ // return name of reference result only if it has been renamed by the user,
+ // in other case compose a default name
+ if (anObjRes->data()->hasUserDefinedName())
+ return std::pair<std::string, bool>(anObjRes->data()->name(), true);
}
}
}
}
@@
-698,7
+711,7
@@
std::string getDefaultName(const std::shared_ptr<ModelAPI_Result>& theResult,
// add unique prefix starting from second
if (theResultIndex > 0 || theResult->groupName() == ModelAPI_ResultBody::group())
aDefaultName << "_" << theResultIndex + 1;
// add unique prefix starting from second
if (theResultIndex > 0 || theResult->groupName() == ModelAPI_ResultBody::group())
aDefaultName << "_" << theResultIndex + 1;
- return
aDefaultName.str(
);
+ return
std::pair<std::string, bool>(aDefaultName.str(), false
);
}
} // namespace ModelAPI_Tools
}
} // namespace ModelAPI_Tools