]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
21854: Add persistent dimensions
authorapl <apl@opencascade.com>
Tue, 21 Jan 2014 16:42:20 +0000 (16:42 +0000)
committerapl <apl@opencascade.com>
Tue, 21 Jan 2014 16:42:20 +0000 (16:42 +0000)
- Minor remarks: LCS from TopLoc_Location for quickness

src/GEOMGUI/GEOM_Displayer.cxx
src/MeasureGUI/MeasureGUI_CreateDimensionDlg.cxx
src/MeasureGUI/MeasureGUI_DimensionCreateTool.cxx
src/MeasureGUI/MeasureGUI_ManageDimensionsDlg.cxx

index 0272d8ef73c88304d98cf542791da9bf0196b710..252880f563a82a3cb09092eaae8149dd284f3e96 100644 (file)
@@ -1021,6 +1021,11 @@ void GEOM_Displayer::updateDimensions( const Handle(SALOME_InteractiveObject)& t
     }
 
     aListOfIO.Remove( aIterateIO );
+
+    if ( !aIterateIO.More() )
+    {
+      break;
+    }
   }
 
   // prepare dimension styling
@@ -1333,7 +1338,7 @@ void GEOM_Displayer::Update( SALOME_OCCPrs* prs )
       }
     }
 
-    updateDimensions( myIO, occPrs, GEOMUtils::GetPosition( myShape ) );
+    updateDimensions( myIO, occPrs, gp_Ax3().Transformed( myShape.Location().Transformation() ) );
   }
 }
 
index 5da50d8a3aae1591d6aced753dc6767c56e7fa0d..160abfb68046742f48942dbf9e04e1e946fceed9 100644 (file)
@@ -635,7 +635,7 @@ bool MeasureGUI_CreateDimensionDlg::AddDimensionToOwner()
   TopoDS_Shape anParentSh;
   if ( GEOMBase::GetShape( myParentObj.get(), anParentSh ) )
   {
-    aLCS = GEOMUtils::GetPosition( anParentSh );
+    aLCS = gp_Ax3().Transformed( anParentSh.Location().Transformation() );
   }
 
   QString aName = getNewObjectName();
index 38b7c98b9b8d23571e464cc4cebbf04f055d8452..0e3c9e1b9650dfbaccc79eb33669d03db75eaa98 100644 (file)
@@ -602,7 +602,9 @@ Handle(AIS_DiameterDimension) MeasureGUI_DimensionCreateTool::Diameter( const GE
       TopTools_ListIteratorOfListOfShape aFaceIt( aFaces );
       for ( ; aFaceIt.More(); aFaceIt.Next() )
       {
-        Handle(Geom_Surface) aSurface = BRep_Tool::Surface( TopoDS::Face( aFaceIt.Value() ) );
+        TopoDS_Face aFace = TopoDS::Face( aFaceIt.Value() );
+
+        Handle(Geom_Surface) aSurface = BRep_Tool::Surface( TopoDS::Face( aFace ) );
 
         gp_Pnt aCircCenter = aCircle->Circ().Location();
         Standard_Real aCircU = 0.0, aCircV = 0.0;
@@ -619,7 +621,7 @@ Handle(AIS_DiameterDimension) MeasureGUI_DimensionCreateTool::Diameter( const GE
           continue;
         }
 
-        aFaceN = gp_Vec( aNorm );
+        aFaceN = gp_Vec( aFace.Orientation() == TopAbs_REVERSED ? -aNorm : aNorm );
       }
     }
     break;
@@ -676,7 +678,9 @@ Handle(AIS_DiameterDimension) MeasureGUI_DimensionCreateTool::Diameter( const GE
   Standard_Real aCircR = aCircle->Circ().Radius();
 
   // construct closed circle as base for the diameter dimension
-  gp_Circ aRuledCirc = gce_MakeCirc( gp_Ax2( aCircP, aCircN, aCircX ), aCircR );
+  Standard_Boolean isReversed = ( ( aPln.Axis().Direction() ^ aCircX ) * aCircN ) < 0.0;
+
+  gp_Circ aRuledCirc = gce_MakeCirc( gp_Ax2( aCircP, isReversed ? -aCircN : aCircN, aCircX ), aCircR );
 
   Handle(AIS_DiameterDimension) aDimension = new AIS_DiameterDimension( aRuledCirc, aPln );
 
index fb739349e8815c38e7768cc448b371a8dce237e6..9433464b1604e878c7c4785a720d34caf649f569 100644 (file)
@@ -643,7 +643,7 @@ void MeasureGUI_ManageDimensionsDlg::OnInteractionFinished( Handle(AIS_Interacti
   TopoDS_Shape anParentSh;
   if ( GEOMBase::GetShape( myEditObject.get(), anParentSh ) )
   {
-    aLCS = GEOMUtils::GetPosition( anParentSh );
+    aLCS = gp_Ax3().Transformed( anParentSh.Location().Transformation() );
   }
 
   int aDimensionId = IdFromPrs( theIO );