X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModelHighAPI%2FModelHighAPI_Dumper.cpp;h=e7b03dd00fde6d212038676d32fbe982893f0f71;hb=b73fb7468bea81901dbeed8e229d742f788ec282;hp=304a95b97e1b0c588d953123ee8f8c8c8414dec2;hpb=9fc847fd03b8e9b615c6ecc7aa655aae9167cc68;p=modules%2Fshaper.git diff --git a/src/ModelHighAPI/ModelHighAPI_Dumper.cpp b/src/ModelHighAPI/ModelHighAPI_Dumper.cpp index 304a95b97..e7b03dd00 100644 --- a/src/ModelHighAPI/ModelHighAPI_Dumper.cpp +++ b/src/ModelHighAPI/ModelHighAPI_Dumper.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -164,6 +165,17 @@ const std::string& ModelHighAPI_Dumper::name(const EntityPtr& theEntity, if (aNbFeatures.first == anId && aNbFeatures.second < anId) { // name is not user-defined isDefaultName = true; + + // check there are postponed features of this kind, + // dump their names, because the sequence of features may be changed + for (std::list::const_iterator aPpIt = myPostponed.begin(); + aPpIt != myPostponed.end(); ++aPpIt) { + FeaturePtr aCurFeature = std::dynamic_pointer_cast(*aPpIt); + if (aCurFeature && aCurFeature->getKind() == aKind) { + myNames[*aPpIt].myIsDefault = false; + isDefaultName = false; + } + } } if (anId > aNbFeatures.second) @@ -565,12 +577,28 @@ bool ModelHighAPI_Dumper::isDumped(const AttributeRefListPtr& theRefList) const return true; } +static bool isSketchSub(const FeaturePtr& theFeature) +{ + static const std::string SKETCH("Sketch"); + CompositeFeaturePtr anOwner = ModelAPI_Tools::compositeOwner(theFeature); + return anOwner && anOwner->getKind() == SKETCH; +} + bool ModelHighAPI_Dumper::isDefaultColor(const ResultPtr& theResult) const { AttributeIntArrayPtr aColor = theResult->data()->intArray(ModelAPI_Result::COLOR_ID()); if (!aColor || !aColor->isInitialized()) return true; + // check the result belongs to sketch entity, do not dump color in this way + ResultConstructionPtr aResConstr = + std::dynamic_pointer_cast(theResult); + if (aResConstr) { + FeaturePtr aFeature = ModelAPI_Feature::feature(theResult->data()->owner()); + if (isSketchSub(aFeature)) + return true; + } + std::string aSection, aName, aDefault; theResult->colorConfigInfo(aSection, aName, aDefault); @@ -1040,6 +1068,7 @@ ModelHighAPI_Dumper& ModelHighAPI_Dumper::operator<<( } myDumpBuffer << "\"" << aShape->shapeTypeStr(); + bool aStandardDump = true; if (isDumpByGeom) { // check the selected item is a ResultPart; // in this case it is necessary to get shape with full transformation @@ -1064,8 +1093,18 @@ ModelHighAPI_Dumper& ModelHighAPI_Dumper::operator<<( myDumpBuffer << anIndex << "\", "; *this << aMiddlePoint; + aStandardDump = false; + } if (theAttrSelect->isWeakNaming() || + (myWeakNamingSelection && aShape.get() && theAttrSelect->context().get() && + aShape != theAttrSelect->context()->shape())) { // weak naming for local selection only + GeomAlgoAPI_NExplode aNExplode(theAttrSelect->context()->shape(), aShape->shapeType()); + int anIndex = aNExplode.index(aShape); + if (anIndex != 0) { // found a week-naming index, so, export it + myDumpBuffer<<"\", \""<context()->data()->name()<<"\", "<namingName() << "\""; myDumpBuffer << ")"; return *this;