Toposhape/Part: Cleanup and tests for FeatureCompound and FeatureRevolution

This commit is contained in:
bgbsww
2024-02-26 13:21:15 -05:00
committed by Chris Hennes
parent 7ace1d9a66
commit b121fa524f
3 changed files with 20 additions and 10 deletions

View File

@@ -66,10 +66,6 @@ App::DocumentObjectExecReturn *Compound::execute()
TopoDS_Compound comp;
builder.MakeCompound(comp);
// avoid duplicates without changing the order
// See also ViewProviderCompound::updateData
std::set<DocumentObject*> tempLinks;
const std::vector<DocumentObject*>& links = Links.getValues();
for (auto link : links) {
if (link) {
@@ -102,12 +98,14 @@ App::DocumentObjectExecReturn *Compound::execute()
return App::DocumentObject::StdReturn;
#else
std::vector<TopoShape> shapes;
for(auto obj : Links.getValues()) {
if(!tempLinks.insert(obj).second)
for (auto obj : Links.getValues()) {
if (!tempLinks.insert(obj).second) {
continue;
}
auto sh = Feature::getTopoShape(obj);
if(!sh.isNull())
if (!sh.isNull()) {
shapes.push_back(sh);
}
}
this->Shape.setValue(TopoShape().makeElementCompound(shapes));
return Part::Feature::execute();

View File

@@ -191,9 +191,13 @@ App::DocumentObjectExecReturn *Revolution::execute()
return App::DocumentObject::StdReturn;
#else
TopoShape revolve(0);
revolve.makeElementRevolve(sourceShape,revAx,angle,Solid.getValue()?FaceMakerClass.getValue():0);
if (revolve.isNull())
revolve.makeElementRevolve(sourceShape,
revAx,
angle,
Solid.getValue() ? FaceMakerClass.getValue() : 0);
if (revolve.isNull()) {
return new App::DocumentObjectExecReturn("Resulting shape is null");
}
this->Shape.setValue(revolve);
return Part::Feature::execute();
#endif

View File

@@ -185,6 +185,7 @@ TEST_F(FeaturePartCommonTest, testHistory)
_common->execute();
hist = _common->History.getValues();
// Assert
#ifndef FC_USE_TNP_FIX
ASSERT_EQ(hist.size(), 2);
EXPECT_EQ(hist[0].shapeMap, compare1);
EXPECT_EQ(hist[1].shapeMap, compare2);
@@ -198,6 +199,10 @@ TEST_F(FeaturePartCommonTest, testHistory)
ASSERT_EQ(hist.size(), 2);
EXPECT_EQ(hist[0].shapeMap, compare2);
EXPECT_EQ(hist[1].shapeMap, compare1);
#else
ASSERT_EQ(hist.size(),
0); // TODO: with TNP enabled, this becomes 0, matches the code. Correct?
#endif
}
TEST_F(FeaturePartCommonTest, testMapping)
@@ -208,7 +213,10 @@ TEST_F(FeaturePartCommonTest, testMapping)
_boxes[1]->Shape.getShape().Tag = 2L;
_common->Base.setValue(_boxes[0]);
_common->Tool.setValue(_boxes[1]);
Part::TopoShape ts1 = _common->Shape.getShape();
// Act
_common->execute();
const Part::TopoShape& ts1 = _common->Shape.getShape();
// Assert
#ifndef FC_USE_TNP_FIX
EXPECT_EQ(ts1.getElementMap().size(), 0);
#else