#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 NCollection_Sequence<PlaneAndSegment> SeqOfPlnsAndSegments |
| 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() | ||
| ) |
| 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 | ( | Geom_Plane | ) |
| Handle | ( | Geom_Circle | ) |
| Handle | ( | AIS_DiameterDimension | ) |
| Handle | ( | AIS_AngleDimension | ) |
| if | ( | !GEOMBase:: | GetShapetheMeasuredObj.operator->(), aMeasuredShape | ) |
References NULL.
| if | ( | !GEOMBase:: | GetShapeGetMainShape(theMeasuredObj).get(), aMainShape | ) |
References NULL.
| if | ( | aPnt1. | DistanceaPnt2)<=Precision::Confusion( | ) |
References NULL.
| 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() | ) |
References aFaceIt(), aFaceN1(), aFaceN2(), aFaceS1(), aFaceS2(), anEdgeExp(), aRelationMap, and Handle().
| 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.
References aFaceN(), aPln, aPnt1, aPnt2, and PositionDiameter().
| 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.
| aDimension SetFlyout | ( | Settings. | DefaultFlyout | ) |
| aDimension SetFlyout | ( | aFlyout | ) |
| 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() |
| 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 ) |
| 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 |
| Handle (AIS_AngleDimension) MeasureGUI_DimensionCreateTool TopoDS_Shape aShapeMain1 |
| TopoDS_Shape aShapeMain2 |
| TopoDS_Shape aThirdSh |
| TopoDS_Vertex aThirdVertex = TopoDS::Vertex( aThirdSh ) |
| TopoDS_Vertex aVertex1 = TopoDS::Vertex( aMeasuredShape1 ) |
| TopoDS_Vertex aVertex2 = TopoDS::Vertex( aMeasuredShape2 ) |