diff --git a/src/Mod/PartDesign/App/FeatureChamfer.cpp b/src/Mod/PartDesign/App/FeatureChamfer.cpp index bcda59bcb..e14406e92 100644 --- a/src/Mod/PartDesign/App/FeatureChamfer.cpp +++ b/src/Mod/PartDesign/App/FeatureChamfer.cpp @@ -78,16 +78,19 @@ App::DocumentObjectExecReturn *Chamfer::execute(void) float size = Size.getValue(); this->positionByBase(); + // create an untransformed copy of the base shape + Part::TopoShape baseShape(TopShape); + baseShape.setTransform(Base::Matrix4D()); try { - BRepFilletAPI_MakeChamfer mkChamfer(base->Shape.getValue()); + BRepFilletAPI_MakeChamfer mkChamfer(baseShape._Shape); TopTools_IndexedMapOfShape mapOfEdges; TopTools_IndexedDataMapOfShapeListOfShape mapEdgeFace; - TopExp::MapShapesAndAncestors(base->Shape.getValue(), TopAbs_EDGE, TopAbs_FACE, mapEdgeFace); - TopExp::MapShapes(base->Shape.getValue(), TopAbs_EDGE, mapOfEdges); + TopExp::MapShapesAndAncestors(baseShape._Shape, TopAbs_EDGE, TopAbs_FACE, mapEdgeFace); + TopExp::MapShapes(baseShape._Shape, TopAbs_EDGE, mapOfEdges); - for (std::vector::const_iterator it= SubVals.begin();it!=SubVals.end();++it) { - TopoDS_Edge edge = TopoDS::Edge(TopShape.getSubShape(it->c_str())); + for (std::vector::const_iterator it=SubVals.begin(); it != SubVals.end(); ++it) { + TopoDS_Edge edge = TopoDS::Edge(baseShape.getSubShape(it->c_str())); const TopoDS_Face& face = TopoDS::Face(mapEdgeFace.FindFromKey(edge).First()); mkChamfer.Add(size, edge, face); } @@ -100,9 +103,7 @@ App::DocumentObjectExecReturn *Chamfer::execute(void) if (shape.IsNull()) return new App::DocumentObjectExecReturn("Resulting shape is null"); - Part::TopoShape newShape(shape); - newShape.transformGeometry(this->Placement.getValue().inverse().toMatrix()); - this->Shape.setValue(newShape); + this->Shape.setValue(shape); return App::DocumentObject::StdReturn; } catch (Standard_Failure) { diff --git a/src/Mod/PartDesign/App/FeatureFillet.cpp b/src/Mod/PartDesign/App/FeatureFillet.cpp index b5aaddcd2..3b9470c51 100644 --- a/src/Mod/PartDesign/App/FeatureFillet.cpp +++ b/src/Mod/PartDesign/App/FeatureFillet.cpp @@ -23,7 +23,6 @@ #include "PreCompiled.h" #ifndef _PreComp_ -# include # include # include # include @@ -74,18 +73,16 @@ App::DocumentObjectExecReturn *Fillet::execute(void) return new App::DocumentObjectExecReturn("No edges specified"); float radius = Radius.getValue(); - + this->positionByBase(); + // create an untransformed copy of the base shape + Part::TopoShape baseShape(TopShape); + baseShape.setTransform(Base::Matrix4D()); try { - BRepBuilderAPI_Copy copy(base->Shape.getValue()); - TopoDS_Shape myShape = copy.Shape(); - TopLoc_Location aLoc; - myShape.Location(aLoc); - Part::TopoShape myTopShape(myShape); - BRepFilletAPI_MakeFillet mkFillet(myShape); + BRepFilletAPI_MakeFillet mkFillet(baseShape._Shape); - for (std::vector::const_iterator it= SubVals.begin();it!=SubVals.end();++it) { - TopoDS_Edge edge = TopoDS::Edge(myTopShape.getSubShape(it->c_str())); + for (std::vector::const_iterator it=SubVals.begin(); it != SubVals.end(); ++it) { + TopoDS_Edge edge = TopoDS::Edge(baseShape.getSubShape(it->c_str())); mkFillet.Add(radius, edge); } @@ -97,8 +94,7 @@ App::DocumentObjectExecReturn *Fillet::execute(void) if (shape.IsNull()) return new App::DocumentObjectExecReturn("Resulting shape is null"); - Part::TopoShape newShape(shape); - this->Shape.setValue(newShape); + this->Shape.setValue(shape); return App::DocumentObject::StdReturn; } catch (Standard_Failure) { diff --git a/src/Mod/PartDesign/App/FeaturePad.cpp b/src/Mod/PartDesign/App/FeaturePad.cpp index a777d1ae3..1a12c4556 100644 --- a/src/Mod/PartDesign/App/FeaturePad.cpp +++ b/src/Mod/PartDesign/App/FeaturePad.cpp @@ -119,7 +119,7 @@ App::DocumentObjectExecReturn *Pad::execute(void) return new App::DocumentObjectExecReturn("Creating a face from sketch failed"); // lengthen the vector - SketchOrientationVector *= Length.getValue(); + SketchOrientationVector *= L; this->positionBySketch(); TopLoc_Location invObjLoc = this->getLocation().Inverted();