Version: 9.16.0
XAO_BrepGeometry.hxx
Go to the documentation of this file.
1// Copyright (C) 2013-2026 CEA, EDF, OPEN CASCADE
2//
3// This library is free software; you can redistribute it and/or
4// modify it under the terms of the GNU Lesser General Public
5// License as published by the Free Software Foundation; either
6// version 2.1 of the License, or (at your option) any later version.
7//
8// This library is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11// Lesser General Public License for more details.
12//
13// You should have received a copy of the GNU Lesser General Public
14// License along with this library; if not, write to the Free Software
15// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16//
17// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18//
19// Author : Frederic Pons (OpenCascade)
20
21#ifndef __XAO_BREPGEOMETRY_HXX__
22#define __XAO_BREPGEOMETRY_HXX__
23
24#include <string>
25#include <vector>
26
27#include <TopoDS_Shape.hxx>
28
29#include "XAO.hxx"
30#include "XAO_XaoUtils.hxx"
31#include "XAO_Geometry.hxx"
32
33#ifdef WIN32
34#pragma warning(disable:4290) // Warning Exception ...
35#endif
36
37
38namespace XAO
39{
45 {
46 public:
51
56 BrepGeometry(const std::string& name);
57
58 virtual ~BrepGeometry() {}
59
64 virtual XAO::Format getFormat() { return XAO::BREP; }
65
70 virtual const std::string getShapeString();
71
76 virtual void setShapeString(const std::string& shape);
77
82 virtual void writeShapeFile(const std::string& fileName) ;
83
88 virtual void readShapeFile(const std::string& fileName) ;
89
90#ifdef SWIG
91 %pythoncode %{
92 def setShape(self, shape):
93 if shape is not None and 'GetShapeStream' in dir(shape):
94 self.setShapeString(shape.GetShapeStream())
95 else:
96 raise XAO_Exception("Cannot set shape")
97 %}
98#endif
99
104 TopoDS_Shape getTopoDS_Shape();
105
110 void setTopoDS_Shape(const TopoDS_Shape& shape);
111
118 void getEdgeVertices(int edgeIndex, int& vertexA, int& vertexB);
119
125 int countFaceWires(int faceIndex);
126
133 std::vector<int> getFaceEdges(int faceIndex, int wireIndex);
134
140 int countSolidShells(int solidIndex);
141
148 std::vector<int> getSolidFaces(int solidIndex, int shellIndex);
149
157 void getVertexXYZ(int vertexIndex, double& xCoord, double& yCoord, double& zCoord)
158 ;
159
165 double getEdgeLength(int index);
166
172 double getFaceArea(int index);
173
179 double getSolidVolume(int index);
180
186 int getVertexID(int index);
187
193 int getEdgeID(int index);
194
200 int getFaceID(int index);
201
207 int getSolidID(int index);
208
214 void setVertexID(int index, int id);
215
221 void setEdgeID(int index, int id);
222
228 void setFaceID(int index, int id);
229
235 void setSolidID(int index, int id);
236
242 int findVertex(int id);
243
249 int findEdge(int id);
250
256 int findFace(int id);
257
263 int findSolid(int id);
264
270 const std::string findVertexName(int id);
271
277 const std::string findEdgeName(int id);
278
284 const std::string findFaceName(int id);
285
291 const std::string findSolidName(int id);
292
298 void changeVertexName(int id, const std::string& name) ;
299
305 void changeEdgeName(int id, const std::string& name) ;
306
312 void changeFaceName(int id, const std::string& name) ;
313
319 void changeSolidName(int id, const std::string& name) ;
320
321 private:
322 void initIds();
323 void initListIds(const TopAbs_ShapeEnum& shapeType, GeometricElementList& eltList);
324 TopoDS_Shape getSubShape(const TopoDS_Shape& mainShape, const TopAbs_ShapeEnum& shapeType, int shapeIndex)
325 ;
326 int countGeometricalElements(const TopoDS_Shape& shape, const TopAbs_ShapeEnum& shapeType);
327 std::vector<int> getGeometricalElements(const TopoDS_Shape& shape, const TopAbs_ShapeEnum& shapeType, XAO::Dimension dim);
328 int findElement(XAO::Dimension dim, int id)
329 ;
330
331 private:
332 TopoDS_Shape m_shape;
333 };
334}
335
336#endif // __XAO_BREPGEOMETRY_HXX__
if(!theListOfShapes.IsEmpty())
Definition: GEOMImpl_ShapeDriver.cxx:130
#define XAO_EXPORT
Definition: XAO.hxx:31
Representation of a BRep Geometry.
Definition: XAO_BrepGeometry.hxx:45
virtual XAO::Format getFormat()
Gets the format of the geometry.
Definition: XAO_BrepGeometry.hxx:64
virtual ~BrepGeometry()
Definition: XAO_BrepGeometry.hxx:58
TopoDS_Shape m_shape
Definition: XAO_BrepGeometry.hxx:332
Generic class to manipulate a list of topologic element.
Definition: XAO_GeometricElement.hxx:112
Base class for geometries.
Definition: XAO_Geometry.hxx:43
Exception for XAO operations.
Definition: XAO_Exception.hxx:34
Definition: BrepGeometryTest.hxx:26
Dimension
Definition: XAO_XaoUtils.hxx:50
Format
Definition: XAO_XaoUtils.hxx:41
@ BREP
Definition: XAO_XaoUtils.hxx:42