-// Copyright (C) 2014-2020 CEA/DEN, EDF R&D
+// Copyright (C) 2014-2021 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include <GeomAPI_PlanarEdges.h>
#include <GeomAPI_ShapeIterator.h>
+#include <GeomValidators_ShapeType.h>
+
//==================================================================================================
void FeaturesPlugin_Tools::loadModifiedShapes(ResultBodyPtr theResultBody,
const ListOfShape& theBaseShapes,
theError = "Error: Selected sketches does not have results.";
return false;
}
- int aFacesNum = aConstruction->facesNum();
+ GeomValidators_ShapeType::TypeOfShape aSelType =
+ GeomValidators_ShapeType::shapeType(theSelectionList->selectionType());
+ int aFacesNum = 0;
+ if (aSelType != GeomValidators_ShapeType::Vertex &&
+ aSelType != GeomValidators_ShapeType::Edge)
+ aFacesNum = aConstruction->facesNum();
if(aFacesNum == 0) {
// Probably it can be construction.
aBaseShape = aConstruction->shape();
if(aBaseShape.get() && !aBaseShape->isNull()) {
GeomAPI_Shape::ShapeType aST = aBaseShape->shapeType();
- if(aST != GeomAPI_Shape::VERTEX && aST != GeomAPI_Shape::EDGE &&
- aST != GeomAPI_Shape::WIRE &&
- aST != GeomAPI_Shape::FACE && aST != GeomAPI_Shape::SHELL) {
+ if(aST == GeomAPI_Shape::SOLID || aST == GeomAPI_Shape::COMPSOLID) {
theError = "Error: Selected shapes has unsupported type.";
return false;
}
const std::shared_ptr<ModelAPI_AttributeSelectionList> theSelectionList,
const bool theStoreFullHierarchy,
GeomAPI_ShapeHierarchy& theHierarchy,
- std::list<ResultPtr>& theParts)
+ std::list<ResultPtr>& theParts, ResultPtr& theTextureSource)
{
int aSize = theSelectionList->size();
+ if (aSize == 1) {
+ auto anObjectAttr = theSelectionList->value(0);
+ if (anObjectAttr.get()) {
+ FeaturePtr aFeature = anObjectAttr->contextFeature();
+ if (aFeature.get() && aFeature->results().size() == 1) {
+ theTextureSource = aFeature->firstResult();
+ }
+ else {
+ if (!aFeature.get()) {
+ auto aResult = anObjectAttr->context();
+ if (aResult.get()) {
+ theTextureSource = aResult;
+ }
+ }
+ }
+ }
+ }
for (int anObjectsIndex = 0; anObjectsIndex < aSize; anObjectsIndex++) {
AttributeSelectionPtr anObjectAttr = theSelectionList->value(anObjectsIndex);
std::shared_ptr<GeomAPI_Shape> anObject = anObjectAttr->value();