+ fix design flaw to reduce side effects

This commit is contained in:
wmayer
2016-06-09 19:58:22 +02:00
parent cb434e517b
commit c02c90adb2
9 changed files with 152 additions and 157 deletions

View File

@@ -41,8 +41,6 @@ using namespace Surface;
PROPERTY_SOURCE(Surface::Cut, Part::Feature)
//Initial values
Cut::Cut()
{
ADD_PROPERTY(ShapeList,(0,"TopoDS_Shape"));
@@ -59,44 +57,32 @@ short Cut::mustExecute() const
App::DocumentObjectExecReturn *Cut::execute(void)
{
#if 0
//Perform error checking
//Begin Construction
try{
if((aShapeList.getSize()>2) || (aShapeList.getSize()<2)){
try {
std::vector<App::DocumentObject*> shapes = ShapeList.getValues();
if (shapes.size() != 2){
return new App::DocumentObjectExecReturn("Two shapes must be entered at a time for a cut operation");
}
//Initialize variables for first toposhape from document object
Part::TopoShape ts1;
TopoDS_Shape sub1;
App::PropertyLinkSubList::SubSet set1 = aShapeList[0];
//Initialize variables for second toposhape from document object
Part::TopoShape ts2;
TopoDS_Shape sub2;
App::PropertyLinkSubList::SubSet set2 = aShapeList[1];
//Get first toposhape
printf("Get first toposhape\n");
if(set1.obj->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) {
ts1 = static_cast<Part::Feature*>(set1.obj)->Shape.getShape(); //Part::TopoShape 1
if (shapes[0]->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) {
ts1 = static_cast<Part::Feature*>(shapes[0])->Shape.getShape(); //Part::TopoShape 1
}
else {
return new App::DocumentObjectExecReturn("Shape1 not from Part::Feature");
}
else{return new App::DocumentObjectExecReturn("Shape1 not from Part::Feature");}
//Get second toposhape
printf("Get second toposhape\n");
if(set2.obj->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) {
ts2 = static_cast<Part::Feature*>(set2.obj)->Shape.getShape();
if (shapes[1]->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) {
ts2 = static_cast<Part::Feature*>(shapes[1])->Shape.getShape();
}
else {
return new App::DocumentObjectExecReturn("Shape2 not from Part::Feature");
}
else{return new App::DocumentObjectExecReturn("Shape2 not from Part::Feature");}
//Cut Shape1 by Shape2
TopoDS_Shape aCutShape;
@@ -106,14 +92,12 @@ App::DocumentObjectExecReturn *Cut::execute(void)
if (aCutShape.IsNull()){
return new App::DocumentObjectExecReturn("Resulting shape is null");
}
this->Shape.setValue(aCutShape);
return 0;
} //End Try
}
catch (Standard_Failure) {
Handle_Standard_Failure e = Standard_Failure::Caught();
return new App::DocumentObjectExecReturn(e->GetMessageString());
} //End Catch
#endif
return 0;
}
}