X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FSketchAPI%2FSketchAPI_Rotation.cpp;h=5215bbf5b18cf056ee38ad1282a8e87c48d72c64;hb=ff4d5d0f42cf5d24b86b2bd2b6e1f58e74f52032;hp=87f7e805b366a896c91dcd5d52ce0811ed030fb1;hpb=7f5dc7b3060b604deee464cde8bd1d25c4749699;p=modules%2Fshaper.git diff --git a/src/SketchAPI/SketchAPI_Rotation.cpp b/src/SketchAPI/SketchAPI_Rotation.cpp index 87f7e805b..5215bbf5b 100644 --- a/src/SketchAPI/SketchAPI_Rotation.cpp +++ b/src/SketchAPI/SketchAPI_Rotation.cpp @@ -1,14 +1,18 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D // Name : SketchAPI_Rotation.cpp -// Purpose: +// Purpose: // // History: // 16/06/16 - Sergey POKHODENKO - Creation of the file //-------------------------------------------------------------------------------------- #include "SketchAPI_Rotation.h" +#include //-------------------------------------------------------------------------------------- #include #include + +#include //-------------------------------------------------------------------------------------- SketchAPI_Rotation::SketchAPI_Rotation( const std::shared_ptr & theFeature) @@ -42,6 +46,21 @@ SketchAPI_Rotation::~SketchAPI_Rotation() } +std::list > SketchAPI_Rotation::rotated() const +{ + std::list aList = rotatedObjects()->list(); + // remove all initial features + std::list anIntermediate; + std::list::const_iterator anIt = aList.begin(); + for (; anIt != aList.end(); ++anIt) { + FeaturePtr aFeature = ModelAPI_Feature::feature(*anIt); + AttributeBooleanPtr isCopy = aFeature->boolean(SketchPlugin_SketchEntity::COPY_ID()); + if (isCopy.get() && isCopy->value()) + anIntermediate.push_back(aFeature); + } + return SketchAPI_SketchEntity::wrap(anIntermediate); +} + //-------------------------------------------------------------------------------------- void SketchAPI_Rotation::dump(ModelHighAPI_Dumper& theDumper) const @@ -60,4 +79,35 @@ void SketchAPI_Rotation::dump(ModelHighAPI_Dumper& theDumper) const if (isFullValue) theDumper << ", " << isFullValue; theDumper << ")" << std::endl; + + // Dump variables for a list of rotated features + theDumper << "["; + std::list > aList = rotated(); + std::list >::const_iterator anIt = aList.begin(); + for (; anIt != aList.end(); ++anIt) { + if (anIt != aList.begin()) + theDumper << ", "; + theDumper << (*anIt)->feature(); + } + theDumper << "] = " << theDumper.name(aBase) << ".rotated()" << std::endl; + + // Set necessary "auxiliary" flag for rotated features + // (flag is set if it differs to base entity) + std::list aRotList = aRotObjects->list(); + std::list::const_iterator aRIt = aRotList.begin(); + anIt = aList.begin(); + for (; aRIt != aRotList.end(); ++aRIt) { + FeaturePtr aFeature = ModelAPI_Feature::feature(*aRIt); + if (!aFeature) + continue; + bool aBaseAux = aFeature->boolean(SketchPlugin_SketchEntity::AUXILIARY_ID())->value(); + + for (int i = 1; i < aNbCopies->value(); ++i, ++anIt) { + aFeature = (*anIt)->feature(); + bool aFeatAux = aFeature->boolean(SketchPlugin_SketchEntity::AUXILIARY_ID())->value(); + if (aFeatAux != aBaseAux) + theDumper << theDumper.name((*anIt)->feature(), false) + << ".setAuxiliary(" << aFeatAux << ")" <