00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _GEOMImpl_IMeasureOperations_HXX_
00024 #define _GEOMImpl_IMeasureOperations_HXX_
00025
00026 #include "GEOM_IOperations.hxx"
00027
00028 #include <BRepCheck_Analyzer.hxx>
00029 #include <TopoDS_Shape.hxx>
00030 #include <TopTools_HSequenceOfShape.hxx>
00031 #include <TopTools_DataMapOfShapeListOfShape.hxx>
00032 #include <TCollection_AsciiString.hxx>
00033 #include <TColStd_HSequenceOfInteger.hxx>
00034 #include <TColStd_HSequenceOfReal.hxx>
00035 #include <gp_Ax3.hxx>
00036 #include <Geom_Surface.hxx>
00037 #include <Precision.hxx>
00038
00039 class GEOM_Engine;
00040 class Handle(GEOM_Object);
00041
00042 class GEOMImpl_IMeasureOperations : public GEOM_IOperations {
00043 public:
00044 Standard_EXPORT GEOMImpl_IMeasureOperations(GEOM_Engine* theEngine, int theDocID);
00045 Standard_EXPORT ~GEOMImpl_IMeasureOperations();
00046
00047 enum ShapeKind {
00048 SK_NO_SHAPE,
00049
00050 SK_COMPOUND,
00051 SK_COMPSOLID,
00052 SK_SHELL,
00053 SK_WIRE,
00054
00055 SK_SPHERE,
00056 SK_CYLINDER,
00057 SK_BOX,
00058 SK_ROTATED_BOX,
00059 SK_TORUS,
00060 SK_CONE,
00061 SK_POLYHEDRON,
00062 SK_SOLID,
00063
00064 SK_SPHERE2D,
00065 SK_CYLINDER2D,
00066 SK_TORUS2D,
00067 SK_CONE2D,
00068 SK_DISK_CIRCLE,
00069 SK_DISK_ELLIPSE,
00070 SK_POLYGON,
00071 SK_PLANE,
00072 SK_PLANAR,
00073 SK_FACE,
00074
00075 SK_CIRCLE,
00076 SK_ARC_CIRCLE,
00077 SK_ELLIPSE,
00078 SK_ARC_ELLIPSE,
00079 SK_LINE,
00080 SK_SEGMENT,
00081 SK_EDGE,
00082
00083 SK_VERTEX,
00084
00085 SK_ADVANCED,
00086 };
00087
00088 Standard_EXPORT ShapeKind KindOfShape (Handle(GEOM_Object) theShape,
00089 Handle(TColStd_HSequenceOfInteger)& theIntegers,
00090 Handle(TColStd_HSequenceOfReal)& theDoubles);
00091
00092 Standard_EXPORT void GetPosition (Handle(GEOM_Object) theShape,
00093 Standard_Real& Ox, Standard_Real& Oy, Standard_Real& Oz,
00094 Standard_Real& Zx, Standard_Real& Zy, Standard_Real& Zz,
00095 Standard_Real& Xx, Standard_Real& Xy, Standard_Real& Xz);
00096
00097 Standard_EXPORT Handle(GEOM_Object) GetCentreOfMass (Handle(GEOM_Object) theShape);
00098
00099 Standard_EXPORT Handle(GEOM_Object) GetVertexByIndex (Handle(GEOM_Object) theShape,
00100 Standard_Integer theIndex);
00101
00102 Standard_EXPORT Handle(GEOM_Object) GetNormal (Handle(GEOM_Object) theFace,
00103 Handle(GEOM_Object) theOptionalPoint);
00104
00105 Standard_EXPORT void GetBasicProperties (Handle(GEOM_Object) theShape,
00106 Standard_Real& theLength,
00107 Standard_Real& theSurfArea,
00108 Standard_Real& theVolume);
00109
00110 Standard_EXPORT void GetInertia (Handle(GEOM_Object) theShape,
00111 Standard_Real& I11, Standard_Real& I12, Standard_Real& I13,
00112 Standard_Real& I21, Standard_Real& I22, Standard_Real& I23,
00113 Standard_Real& I31, Standard_Real& I32, Standard_Real& I33,
00114 Standard_Real& Ix , Standard_Real& Iy , Standard_Real& Iz);
00115
00116 Standard_EXPORT void GetBoundingBox (Handle(GEOM_Object) theShape,
00117 Standard_Real& Xmin, Standard_Real& Xmax,
00118 Standard_Real& Ymin, Standard_Real& Ymax,
00119 Standard_Real& Zmin, Standard_Real& Zmax);
00120
00121 Standard_EXPORT void GetTolerance (Handle(GEOM_Object) theShape,
00122 Standard_Real& FaceMin, Standard_Real& FaceMax,
00123 Standard_Real& EdgeMin, Standard_Real& EdgeMax,
00124 Standard_Real& VertMin, Standard_Real& VertMax);
00125
00126 Standard_EXPORT bool CheckShape (Handle(GEOM_Object) theShape,
00127 const Standard_Boolean theIsCheckGeom,
00128 TCollection_AsciiString& theDump);
00129
00130 Standard_EXPORT TCollection_AsciiString IsGoodForSolid (Handle(GEOM_Object) theShape);
00131
00132 Standard_EXPORT TCollection_AsciiString WhatIs (Handle(GEOM_Object) theShape);
00133
00134 Standard_EXPORT std::vector<bool> AreCoordsInside (Handle(GEOM_Object) theShape,
00135 const std::vector<double>& coords,
00136 double tolerance = Precision::Confusion());
00137
00138 Standard_EXPORT Standard_Real GetMinDistance (Handle(GEOM_Object) theShape1,
00139 Handle(GEOM_Object) theShape2,
00140 Standard_Real& X1, Standard_Real& Y1, Standard_Real& Z1,
00141 Standard_Real& X2, Standard_Real& Y2, Standard_Real& Z2);
00142
00143 Standard_EXPORT void PointCoordinates (Handle(GEOM_Object) theShape,
00144 Standard_Real& theX, Standard_Real& theY, Standard_Real& theZ);
00145
00146 Standard_EXPORT Standard_Real GetAngle (Handle(GEOM_Object) theLine1, Handle(GEOM_Object) theLine2);
00147
00148 Standard_EXPORT Standard_Real GetAngleBtwVectors (Handle(GEOM_Object) theVec1, Handle(GEOM_Object) theVec2);
00149
00150
00151
00152
00153 Standard_EXPORT Standard_Real CurveCurvatureByParam (Handle(GEOM_Object) theCurve,
00154 Standard_Real& theParam);
00155 Standard_EXPORT Standard_Real CurveCurvatureByPoint (Handle(GEOM_Object) theCurve,
00156 Handle(GEOM_Object) thePoint);
00157 Standard_EXPORT Standard_Real MaxSurfaceCurvatureByParam (Handle(GEOM_Object) theSurf,
00158 Standard_Real& theUParam,
00159 Standard_Real& theVParam);
00160 Standard_EXPORT Standard_Real MaxSurfaceCurvatureByPoint (Handle(GEOM_Object) theSurf,
00161 Handle(GEOM_Object) thePoint);
00162 Standard_EXPORT Standard_Real MinSurfaceCurvatureByParam (Handle(GEOM_Object) theSurf,
00163 Standard_Real& theUParam,
00164 Standard_Real& theVParam);
00165 Standard_EXPORT Standard_Real MinSurfaceCurvatureByPoint (Handle(GEOM_Object) theSurf,
00166 Handle(GEOM_Object) thePoint);
00167
00168 public:
00169 Standard_EXPORT static gp_Ax3 GetPosition (const TopoDS_Shape& theShape);
00170
00171 private:
00172 void StructuralDump (const BRepCheck_Analyzer& theAna,
00173 const TopoDS_Shape& theShape,
00174 TCollection_AsciiString& theDump);
00175
00176 void GetProblemShapes (const BRepCheck_Analyzer& theAna,
00177 const TopoDS_Shape& theShape,
00178 Handle(TopTools_HSequenceOfShape)& sl,
00179 Handle(TColStd_HArray1OfInteger)& NbProblems,
00180 TopTools_DataMapOfShapeListOfShape& theMap);
00181
00182 void GetProblemSub (const BRepCheck_Analyzer& theAna,
00183 const TopoDS_Shape& theShape,
00184 Handle(TopTools_HSequenceOfShape)& sl,
00185 Handle(TColStd_HArray1OfInteger)& NbProblems,
00186 const TopAbs_ShapeEnum Subtype,
00187 TopTools_DataMapOfShapeListOfShape& theMap);
00188
00189 Standard_Real getSurfaceCurvatures (const Handle(Geom_Surface)& aSurf,
00190 Standard_Real theUParam,
00191 Standard_Real theVParam,
00192 Standard_Boolean theNeedMaxCurv);
00193 };
00194
00195 #endif