Version: 8.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
MeasureGUI_DimensionCreateTool.cxx File Reference
#include "MeasureGUI_DimensionCreateTool.h"
#include <GEOMBase.h>
#include <SalomeApp_Application.h>
#include <OCCViewer_ViewModel.h>
#include <OCCViewer_ViewManager.h>
#include <OCCViewer_ViewWindow.h>
#include <OCCViewer_ViewPort3d.h>
#include <Adaptor3d_CurveOnSurface.hxx>
#include <BRep_Tool.hxx>
#include <BRepTools.hxx>
#include <BRepAdaptor_Curve.hxx>
#include <BRepAdaptor_Surface.hxx>
#include <BRepBndLib.hxx>
#include <ElCLib.hxx>
#include <gp_Pnt.hxx>
#include <gp_Circ.hxx>
#include <gp_Sphere.hxx>
#include <gp_Cone.hxx>
#include <gp_Torus.hxx>
#include <gce_MakeDir.hxx>
#include <gce_MakePln.hxx>
#include <gce_MakeCirc.hxx>
#include <GC_MakePlane.hxx>
#include <Geom_Circle.hxx>
#include <Geom_Plane.hxx>
#include <Geom_ElementarySurface.hxx>
#include <Geom_Surface.hxx>
#include <Geom_ConicalSurface.hxx>
#include <Geom_SphericalSurface.hxx>
#include <Geom_ToroidalSurface.hxx>
#include <Geom_TrimmedCurve.hxx>
#include <GeomLib.hxx>
#include <GeomLib_Tool.hxx>
#include <TopoDS_Shape.hxx>
#include <TopoDS_Vertex.hxx>
#include <TopoDS_Edge.hxx>
#include <TopExp.hxx>
#include <TopExp_Explorer.hxx>
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
#include <TopTools_ListOfShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <TColgp_SequenceOfDir.hxx>
#include <V3d_View.hxx>

Classes

struct  PlaneAndSegment
 

Typedefs

typedef NCollection_Sequence
< PlaneAndSegment
SeqOfPlnsAndSegments
 

Functions

 if (!GEOMBase::GetShape(theMeasuredObj.operator->(), aMeasuredShape))
 
 if (!GEOMBase::GetShape(GetMainShape(theMeasuredObj).get(), aMainShape))
 
 if (aPnt1.Distance(aPnt2)<=Precision::Confusion())
 
gp_Vec aFaceN1 (gp::Origin(), gp::Origin())
 
gp_Vec aFaceN2 (gp::Origin(), gp::Origin())
 
gp_Vec aFaceS1 (gp::Origin(), gp::Origin())
 
gp_Vec aFaceS2 (gp::Origin(), gp::Origin())
 
TopTools_ListIteratorOfListOfShape aFaceIt (aRelatedFaces)
 
 if (aFaceIt.More())
 
 PositionLength (aBnd, aFaceN1, aFaceN2, aFaceS1, aFaceS2, aPnt1, aPnt2, aPln)
 
 Handle (AIS_LengthDimension) aDimension
 
aDimension SetFlyout (Settings.DefaultFlyout)
 
 if (!aDimension->IsValid())
 
 if (!GEOMBase::GetShape(theMeasuredObj1.operator->(), aMeasuredShape1))
 
 if (!GEOMBase::GetShape(theMeasuredObj2.operator->(), aMeasuredShape2))
 
 if (!GEOMBase::GetShape(GetMainShape(theMeasuredObj1).get(), aMainShape))
 
TopExp_Explorer anEdgeExp (aMainShape, TopAbs_EDGE, TopAbs_EDGE)
 
 for (;anEdgeExp.More();anEdgeExp.Next())
 
 if (anEdgeExp.More())
 
Handle(AIS_LengthDimension)
MeasureGUI_DimensionCreateTool 
if (!GEOMBase::GetShape(theEdge1.operator->(), aFirstSh))
 
 if (!GEOMBase::GetShape(theEdge2.operator->(), aSecondSh))
 
 if (aFirstSh==aSecondSh) return NULL
 
BRepAdaptor_Curve aCurve1 (aFirstEdge)
 
BRepAdaptor_Curve aCurve2 (aSecondEdge)
 
GC_MakePlane aMkPlane (aPnt1, aPnt2, aPnt3)
 
 Handle (Geom_Plane) aPlane
 
 Handle (Geom_Circle) aCircle
 
gp_Vec aFaceN (gp_Pnt(0.0, 0.0, 0.0), gp_Pnt(0.0, 0.0, 0.0))
 
 switch (aMeasuredShape.ShapeType())
 
 if (aCircle.IsNull())
 
 if (Abs((aPmax-aPmin)-M_PI *2)<=Precision::PConfusion())
 
else if (Abs(aPmax-aPmin) > M_PI)
 
 PositionDiameter (aBnd, aFaceN, aCircle->Circ(), anAnchor, aPln)
 
 Handle (AIS_DiameterDimension) aDimension
 
aDimension SetFlyout (aFlyout)
 
 if (!GEOMBase::GetShape(theEdge1.get(), aShapeEdge1))
 
 if (!GEOMBase::GetShape(GetMainShape(theEdge1).get(), aShapeMain1))
 
 if (!GEOMBase::GetShape(theEdge2.get(), aShapeEdge2))
 
 if (!GEOMBase::GetShape(GetMainShape(theEdge2).get(), aShapeMain2))
 
 Handle (AIS_AngleDimension) aDimension
 
gp_Vec aVec1 (aCenterPoint, aFirstPoint)
 
gp_Vec aVec2 (aCenterPoint, aSecondPoint)
 
 if (anAngle< 0.0)
 
Handle(AIS_AngleDimension)
MeasureGUI_DimensionCreateTool 
if (!GEOMBase::GetShape(thePoint1.operator->(), aFirstSh))
 
 if (!GEOMBase::GetShape(thePoint2.operator->(), aSecondSh))
 
 if (!GEOMBase::GetShape(thePoint3.operator->(), aThirdSh))
 

Variables

Handle(AIS_LengthDimension)
MeasureGUI_DimensionCreateTool
TopoDS_Shape 
aMainShape
 
TopoDS_Edge anEdge = TopoDS::Edge( aMeasuredShape )
 
TopoDS_Vertex aVertex1 = TopoDS::Vertex( aMeasuredShape1 )
 
TopoDS_Vertex aVertex2 = TopoDS::Vertex( aMeasuredShape2 )
 
gp_Pnt aPnt1 = BRep_Tool::Pnt( aVertex1 )
 
gp_Pnt aPnt2 = BRep_Tool::Pnt( aVertex2 )
 
Bnd_Box aBnd
 
TopTools_IndexedDataMapOfShapeListOfShape aRelationMap
 
const TopTools_ListOfShape & aRelatedFaces = aRelationMap.FindFromKey( anEdge )
 
gp_Pnt aMiddlePnt = gp_Pnt( ( aPnt1.XYZ() + aPnt2.XYZ() ) * 0.5 )
 
gp_Pln aPln
 
return aDimension
 
Handle(AIS_LengthDimension)
MeasureGUI_DimensionCreateTool
TopoDS_Shape 
aMeasuredShape2
 
TopoDS_Shape aSecondSh
 
TopoDS_Edge aFirstEdge = TopoDS::Edge( aFirstSh )
 
TopoDS_Edge aSecondEdge = TopoDS::Edge( aSecondSh )
 
gp_Pnt aPnt3 = aCurve2.Value( 0.5 )
 
Standard_Real aPmin = 0
 
Standard_Real aPmax = 2 * M_PI
 
else Standard_Real anAnchor = aPmin + ( aPmax - aPmin ) * 0.5
 
gp_Pnt aCircP = aCircle->Circ().Location()
 
gp_Dir aCircN = aCircle->Circ().Axis().Direction()
 
gp_Dir aCircX = gce_MakeDir( aPnt1, aPnt2 )
 
Standard_Real aCircR = aCircle->Circ().Radius()
 
Standard_Boolean isReversed = ( ( aPln.Axis().Direction() ^ aCircX ) * aCircN ) < 0.0
 
gp_Circ aRuledCirc = gce_MakeCirc( gp_Ax2( aCircP, isReversed ? -aCircN : aCircN, aCircX ), aCircR )
 
Standard_Real aFlyout = aCircN.IsParallel( aPln.Axis().Direction(), Precision::Angular() ) ? 0.0 : Settings.DefaultFlyout
 
Handle(AIS_AngleDimension)
MeasureGUI_DimensionCreateTool
TopoDS_Shape 
aShapeMain1
 
TopoDS_Shape aShapeEdge2
 
TopoDS_Shape aShapeMain2
 
const gp_Pnt & aFirstPoint = aDimension->FirstPoint()
 
const gp_Pnt & aSecondPoint = aDimension->SecondPoint()
 
const gp_Pnt & aCenterPoint = aDimension->CenterPoint()
 
Standard_Real anAngle = aVec2.AngleWithRef( aVec1, aDimension->GetPlane().Axis().Direction() )
 
TopoDS_Shape aThirdSh
 
TopoDS_Vertex aFirstVertex = TopoDS::Vertex( aFirstSh )
 
TopoDS_Vertex aSecondVertex = TopoDS::Vertex( aSecondSh )
 
TopoDS_Vertex aThirdVertex = TopoDS::Vertex( aThirdSh )
 

Typedef Documentation

typedef NCollection_Sequence<PlaneAndSegment> SeqOfPlnsAndSegments

Function Documentation

BRepAdaptor_Curve aCurve1 ( aFirstEdge  )
BRepAdaptor_Curve aCurve2 ( aSecondEdge  )
TopTools_ListIteratorOfListOfShape aFaceIt ( aRelatedFaces  )
gp_Vec aFaceN ( gp_Pnt(0.0, 0.0, 0.0)  ,
gp_Pnt(0.0, 0.0, 0.0)   
)
gp_Vec aFaceN1 ( gp::  Origin(),
gp::  Origin() 
)
gp_Vec aFaceN2 ( gp::  Origin(),
gp::  Origin() 
)
gp_Vec aFaceS1 ( gp::  Origin(),
gp::  Origin() 
)
gp_Vec aFaceS2 ( gp::  Origin(),
gp::  Origin() 
)
GC_MakePlane aMkPlane ( aPnt1  ,
aPnt2  ,
aPnt3   
)
TopExp_Explorer anEdgeExp ( aMainShape  ,
TopAbs_EDGE  ,
TopAbs_EDGE   
)
gp_Vec aVec1 ( aCenterPoint  ,
aFirstPoint   
)
gp_Vec aVec2 ( aCenterPoint  ,
aSecondPoint   
)
for ( ;anEdgeExp.  More);anEdgeExp.Next()

References anEdgeExp(), and GEOM::Vertices.

Handle ( AIS_LengthDimension  )

References anIO, and Handle().

Handle ( Geom_Plane  )
Handle ( Geom_Circle  )
Handle ( AIS_DiameterDimension  )
Handle ( AIS_AngleDimension  )

References anIO, Handle(), and NULL.

if ( !GEOMBase::  GetShapetheMeasuredObj.operator->(), aMeasuredShape)

References NULL.

if ( !GEOMBase::  GetShapeGetMainShape(theMeasuredObj).get(), aMainShape)

References NULL.

if ( aPnt1.  DistanceaPnt2)<=Precision::Confusion()

References NULL.

if ( aFaceIt.  More())

References aFaceIt(), aFaceN1(), aFaceS1(), and Handle().

if ( !aDimension->  IsValid())

References NULL.

if ( !GEOMBase::  GetShapetheMeasuredObj1.operator->(), aMeasuredShape1)

References NULL.

if ( !GEOMBase::  GetShapetheMeasuredObj2.operator->(), aMeasuredShape2)

References NULL.

if ( !GEOMBase::  GetShapeGetMainShape(theMeasuredObj1).get(), aMainShape)

References NULL.

if ( anEdgeExp.  More())
Handle (AIS_LengthDimension) MeasureGUI_DimensionCreateTool if ( !GEOMBase::  GetShapetheEdge1.operator->(), aFirstSh)

References NULL.

if ( !GEOMBase::  GetShapetheEdge2.operator->(), aSecondSh)

References NULL.

if ( aFirstSh  = =aSecondSh)
if ( aCircle.  IsNull())

References NULL.

if ( Abs((aPmax-aPmin)-M_PI *2)<=Precision::PConfusion()  )
else if ( Abs(aPmax-aPmin ,
M_PI   
)
if ( !GEOMBase::  GetShapetheEdge1.get(), aShapeEdge1)

References NULL.

if ( !GEOMBase::  GetShapeGetMainShape(theEdge1).get(), aShapeMain1)

References NULL.

if ( !GEOMBase::  GetShapetheEdge2.get(), aShapeEdge2)

References NULL.

if ( !GEOMBase::  GetShapeGetMainShape(theEdge2).get(), aShapeMain2)

References NULL.

if ( )

References aDimension.

Handle (AIS_AngleDimension) MeasureGUI_DimensionCreateTool if ( !GEOMBase::  GetShapethePoint1.operator->(), aFirstSh)

References NULL.

if ( !GEOMBase::  GetShapethePoint2.operator->(), aSecondSh)

References NULL.

if ( !GEOMBase::  GetShapethePoint3.operator->(), aThirdSh)

References NULL.

PositionDiameter ( aBnd  ,
aFaceN  ,
aCircle->  Circ(),
anAnchor  ,
aPln   
)
PositionLength ( aBnd  ,
aFaceN1  ,
aFaceN2  ,
aFaceS1  ,
aFaceS2  ,
aPnt1  ,
aPnt2  ,
aPln   
)
aDimension SetFlyout ( Settings.  DefaultFlyout)
aDimension SetFlyout ( aFlyout  )
switch ( aMeasuredShape.  ShapeType())

References aFaceIt(), aFaceN(), aPmax, Handle(), and NULL.

Variable Documentation

Bnd_Box aBnd
const gp_Pnt& aCenterPoint = aDimension->CenterPoint()
gp_Dir aCircN = aCircle->Circ().Axis().Direction()
gp_Pnt aCircP = aCircle->Circ().Location()
Standard_Real aCircR = aCircle->Circ().Radius()
gp_Dir aCircX = gce_MakeDir( aPnt1, aPnt2 )
return aDimension
TopoDS_Edge aFirstEdge = TopoDS::Edge( aFirstSh )
const gp_Pnt& aFirstPoint = aDimension->FirstPoint()
TopoDS_Vertex aFirstVertex = TopoDS::Vertex( aFirstSh )
Standard_Real aFlyout = aCircN.IsParallel( aPln.Axis().Direction(), Precision::Angular() ) ? 0.0 : Settings.DefaultFlyout
TopoDS_Shape aMainShape
Handle (AIS_LengthDimension) MeasureGUI_DimensionCreateTool TopoDS_Shape aMeasuredShape2
gp_Pnt aMiddlePnt = gp_Pnt( ( aPnt1.XYZ() + aPnt2.XYZ() ) * 0.5 )
else Standard_Real anAnchor = aPmin + ( aPmax - aPmin ) * 0.5
Standard_Real anAngle = aVec2.AngleWithRef( aVec1, aDimension->GetPlane().Axis().Direction() )
TopoDS_Edge anEdge = TopoDS::Edge( aMeasuredShape )
gp_Pln aPln
Standard_Real aPmax = 2 * M_PI
Standard_Real aPmin = 0
gp_Pnt aPnt1 = BRep_Tool::Pnt( aVertex1 )
gp_Pnt aPnt2 = BRep_Tool::Pnt( aVertex2 )
gp_Pnt aPnt3 = aCurve2.Value( 0.5 )
const TopTools_ListOfShape& aRelatedFaces = aRelationMap.FindFromKey( anEdge )
TopTools_IndexedDataMapOfShapeListOfShape aRelationMap
gp_Circ aRuledCirc = gce_MakeCirc( gp_Ax2( aCircP, isReversed ? -aCircN : aCircN, aCircX ), aCircR )
TopoDS_Edge aSecondEdge = TopoDS::Edge( aSecondSh )
const gp_Pnt& aSecondPoint = aDimension->SecondPoint()
TopoDS_Shape aSecondSh
TopoDS_Vertex aSecondVertex = TopoDS::Vertex( aSecondSh )
TopoDS_Shape aShapeEdge2
TopoDS_Shape aShapeMain2
TopoDS_Shape aThirdSh
TopoDS_Vertex aThirdVertex = TopoDS::Vertex( aThirdSh )
TopoDS_Vertex aVertex1 = TopoDS::Vertex( aMeasuredShape1 )
TopoDS_Vertex aVertex2 = TopoDS::Vertex( aMeasuredShape2 )
Standard_Boolean isReversed = ( ( aPln.Axis().Direction() ^ aCircX ) * aCircN ) < 0.0