From ce8009fe714b4f98375ae71256d02e4f1ba49e78 Mon Sep 17 00:00:00 2001 From: rnc Date: Tue, 21 Feb 2012 10:54:15 +0000 Subject: [PATCH] Fixed a bug that the Local Coordiante Systems normal was wrong when they were built on faces with reversed orientation --- src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx b/src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx index 1559dd62b..1d04c2844 100644 --- a/src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx @@ -788,6 +788,15 @@ gp_Ax3 GEOMImpl_IMeasureOperations::GetPosition (const TopoDS_Shape& theShape) Handle(Geom_Plane) aGPlane = Handle(Geom_Plane)::DownCast(aGS); gp_Pln aPln = aGPlane->Pln(); aResult = aPln.Position(); + // In case of reverse orinetation of the face invert the plane normal + // (the face's normal does not mathc the plane's normal in this case) + if(theShape.Orientation() == TopAbs_REVERSED) + { + gp_Dir Vx = aResult.XDirection(); + gp_Dir N = aResult.Direction().Mirrored(Vx); + gp_Pnt P = aResult.Location(); + aResult = gp_Ax3(P, N, Vx); + } } } -- 2.39.2