SHAPER 9.16.0
XAO_Geometry.hxx
1// Copyright (C) 2007-2026 CEA, EDF
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 : Nathalie Gore (OpenCascade)
20
21#ifndef __XAO_GEOMETRY_HXX__
22#define __XAO_GEOMETRY_HXX__
23
24#include <string>
25
26#include "XAO.hxx"
27#include "XAO_XaoUtils.hxx"
28#include "XAO_Exception.hxx"
29#include "XAO_GeometricElement.hxx"
30
31#ifdef WIN32
32#pragma warning(disable:4290) // Warning Exception ...
33#endif
34
35
36namespace XAO
37{
42 class XAO_EXPORT Geometry
43 {
44 protected:
49 Geometry(const std::string& name);
50
51 public:
52
58 static Geometry* createGeometry(XAO::Format format) ;
59
66 static Geometry* createGeometry(XAO::Format format, const std::string& name);
67
69 virtual ~Geometry();
70
75 const std::string getName()
76 {
77 return m_name;
78 }
83 void setName(const std::string& name)
84 {
85 m_name = name;
86 }
87
92 virtual XAO::Format getFormat() = 0;
93
94 virtual const std::string getShapeString() = 0;
95 virtual void setShapeString(const std::string& shape) = 0;
96 virtual void writeShapeFile(const std::string& fileName) = 0;
97 virtual void readShapeFile(const std::string& fileName) = 0;
98
99 int countElements(XAO::Dimension dim) const ;
100 int countVertices() const { return m_vertices.getSize(); }
101 int countEdges() const { return m_edges.getSize(); }
102 int countFaces() const { return m_faces.getSize(); }
103 int countSolids() const { return m_solids.getSize(); }
104
105 void setCountVertices(int nb);
106 void setCountEdges(int nb);
107 void setCountFaces(int nb);
108 void setCountSolids(int nb);
109
110 const std::string getVertexName(int index) { return m_vertices.getName(index); }
111 const std::string getEdgeName(int index) { return m_edges.getName(index); }
112 const std::string getFaceName(int index) { return m_faces.getName(index); }
113 const std::string getSolidName(int index) { return m_solids.getName(index); }
114
115 void setVertexName(int index, const std::string& name) { m_vertices.setName(index, name); }
116 void setEdgeName(int index, const std::string& name) { m_edges.setName(index, name); }
117 void setFaceName(int index, const std::string& name) { m_faces.setName(index, name); }
118 void setSolidName(int index, const std::string& name) { m_solids.setName(index, name); }
119
120 bool hasVertexName(int index) { return m_vertices.hasName(index); }
121 bool hasEdgeName(int index) { return m_edges.hasName(index); }
122 bool hasFaceName(int index) { return m_faces.hasName(index); }
123 bool hasSolidName(int index) { return m_solids.hasName(index); }
124
125 const std::string getVertexReference(int index) { return m_vertices.getReference(index); }
126 const std::string getEdgeReference(int index) { return m_edges.getReference(index); }
127 const std::string getFaceReference(int index) { return m_faces.getReference(index); }
128 const std::string getSolidReference(int index) { return m_solids.getReference(index); }
129 const std::string getElementReference(XAO::Dimension dim, int index) ;
130
131 void setVertexReference(int index, const std::string& reference) ;
132 void setEdgeReference(int index, const std::string& reference) ;
133 void setFaceReference(int index, const std::string& reference) ;
134 void setSolidReference(int index, const std::string& reference) ;
135
136 void setVertex(int index, const std::string& name, const std::string& reference) ;
137 void setEdge(int index, const std::string& name, const std::string& reference) ;
138 void setFace(int index, const std::string& name, const std::string& reference) ;
139 void setSolid(int index, const std::string& name, const std::string& reference) ;
140
141 int getVertexIndexByReference(const std::string& reference) { return m_vertices.getIndexByReference(reference); }
142 int getEdgeIndexByReference(const std::string& reference) { return m_edges.getIndexByReference(reference); }
143 int getFaceIndexByReference(const std::string& reference) { return m_faces.getIndexByReference(reference); }
144 int getSolidIndexByReference(const std::string& reference) { return m_solids.getIndexByReference(reference); }
145 int getElementIndexByReference(XAO::Dimension dim, const std::string& reference) ;
146
147 GeometricElementList::iterator begin(XAO::Dimension dim) ;
148 GeometricElementList::iterator end(XAO::Dimension dim) ;
149
154 bool isReadOnly() { return m_readOnly; }
155
159 void setReadOnly() { m_readOnly = true; }
160
161 protected:
162 void checkReadOnly() ;
163
164 protected:
165 std::string m_name;
166 GeometricElementList m_vertices;
167 GeometricElementList m_edges;
168 GeometricElementList m_faces;
169 GeometricElementList m_solids;
170 bool m_readOnly;
171
172 };
173}
174
175#endif
Generic class to manipulate a list of topologic element.
Definition: XAO_GeometricElement.hxx:112
std::map< int, GeometricElement >::iterator iterator
Iterator on the element of the list.
Definition: XAO_GeometricElement.hxx:198
Base class for geometries.
Definition: XAO_Geometry.hxx:43
const std::string getName()
Gets the name of the geometry.
Definition: XAO_Geometry.hxx:75
virtual XAO::Format getFormat()=0
Gets the format of the geometry.
bool isReadOnly()
Verifies if the geometry is read only.
Definition: XAO_Geometry.hxx:154
void setName(const std::string &name)
Sets the name of the geometry.
Definition: XAO_Geometry.hxx:83
void setReadOnly()
Sets the geometry read only.
Definition: XAO_Geometry.hxx:159