From e77e6aa115dd6468f2f78caba84ff2d03919e418 Mon Sep 17 00:00:00 2001 From: sergo Date: Fri, 10 Mar 2017 17:24:50 -0500 Subject: [PATCH] fix getAxis for faces --- src/Mod/PartDesign/App/FeatureSketchBased.cpp | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureSketchBased.cpp b/src/Mod/PartDesign/App/FeatureSketchBased.cpp index 058f8e444836..23538630ec67 100644 --- a/src/Mod/PartDesign/App/FeatureSketchBased.cpp +++ b/src/Mod/PartDesign/App/FeatureSketchBased.cpp @@ -914,20 +914,27 @@ void ProfileBased::getAxis(const App::DocumentObject *pcReferenceAxis, const std App::DocumentObject* profile = Profile.getValue(); Part::Part2DObject* sketch; + gp_Pln sketchplane; + Base::Placement SketchPlm; + if (profile->getTypeId().isDerivedFrom(Part::Part2DObject::getClassTypeId())) { sketch = getVerifiedSketch(); + SketchPlm = sketch->Placement.getValue(); + Base::Vector3d SketchPos = SketchPlm.getPosition(); + Base::Rotation SketchOrientation = SketchPlm.getRotation(); + Base::Vector3d SketchVector(0, 0, 1); + SketchOrientation.multVec(SketchVector, SketchVector); + sketchplane = gp_Pln(gp_Pnt(SketchPos.x, SketchPos.y, SketchPos.z), gp_Dir(SketchVector.x, SketchVector.y, SketchVector.z)); } else if (profile->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) { - sketch = static_cast(getVerifiedObject()); + Base::Placement SketchPos = getVerifiedObject()->Placement.getValue(); + Base::Vector3d SketchVector = getProfileNormal(); + TopoDS_Shape sketchshape = getVerifiedFace(); + gp_XYZ facePos = sketchshape.Location().Transformation().TranslationPart(); + //sketchshape.Location().Transformation().TranslationPart()) + sketchplane = gp_Pln(gp_Pnt(SketchPos.getPosition().x, SketchPos.getPosition().y, SketchPos.getPosition().z), gp_Dir(SketchVector.x, SketchVector.y, SketchVector.z)); } - Base::Placement SketchPlm = sketch->Placement.getValue(); - Base::Vector3d SketchPos = SketchPlm.getPosition(); - Base::Rotation SketchOrientation = SketchPlm.getRotation(); - Base::Vector3d SketchVector(0,0,1); - SketchOrientation.multVec(SketchVector,SketchVector); - gp_Pln sketchplane(gp_Pnt(SketchPos.x, SketchPos.y, SketchPos.z), gp_Dir(SketchVector.x, SketchVector.y, SketchVector.z)); - // get reference axis if (pcReferenceAxis->getTypeId().isDerivedFrom(PartDesign::Line::getClassTypeId())) { const PartDesign::Line* line = static_cast(pcReferenceAxis);