3 #include <Draw/OglMaterial.h>
88 const std::vector<int>& model,
89 const std::vector<Geom::Pnt2d>& textureCoords,
90 const std::vector<int>& textureCoordIndices,
91 const std::vector<Geom::Pnt>& normals);
93 static pMesh makeMesh(
const std::vector<Geom::Pnt>& nodes,
const std::vector<int>& model);
96 static pMesh makeMesh(
const std::vector<Geom::Pnt>& nodes,
const std::vector<int>& model,
const std::vector<Geom::Pnt>& normals);
100 double scaleFactor = 1.,
101 bool terrain =
false);
104 std::vector<Geom::Pnt>& nodes,
105 std::vector<int>& model,
106 std::vector<Draw::SurfaceStyle>& surfaceStyles,
107 std::vector<int>& faceIndices,
108 std::vector<int>& surfaceStyleIndices,
109 std::vector<Geom::Pnt2d>& textureCoords,
110 std::vector<int>& textureCoordIndices,
111 std::vector<Topo::LineItem>* lineItems = 0);
123 #ifndef LXAPI // INTERFACES BELOW ARE -NOT- PART OF THE LEXOCAD API
131 std::map<std::string, Core::Variant>* properties,
132 bool forceTerrainFrom2dr);
135 static std::map<int, std::array<Core::Variant, 6>> getHorizontalPointsFromOMFFile(
Core::CoreDocument* doc,
138 std::map<std::string, Core::Variant>* properties,
139 const double& scaleFactor = 1.);
140 static std::map<int, std::array<Core::Variant, 4>> getVerticalPointsFromOMFFile(
Core::CoreDocument* doc,
142 std::map<std::string, Core::Variant>* properties,
143 const double& scaleFactor = 1.);
146 static void getModel(
pConstMesh mesh, std::vector<int>& model);
147 static void getPoints(
pConstMesh mesh, std::vector<Geom::Pnt>& points);
151 static void __setDefaultMeshTool__(
Topo::MeshTool* tool) { _defaultTool = tool; }
153 static bool writeOmfFile(
const std::vector<App::Element*>& elems,
const Base::String& fileName);
155 static bool getInventorMeshColors(
pConstMesh mesh, std::vector<Base::Color>& uniqueColors, std::vector<std::string>* colorNames = 0);
157 static pMesh makePlateFast(
const std::vector<Geom::Pnt>& points,
158 const std::vector<int>& model,
163 static bool triangulateClosedPolyline(
const std::vector<Geom::Pnt> inputPolyLine, std::vector<Geom::Pnt>& nodes, std::vector<int>& model);
164 static bool tryToCloseMesh(
const pConstMesh& mesh,
166 const std::vector<unsigned int>* mtlIds =
nullptr,
167 std::vector<unsigned int>* newMtlIds =
nullptr);
170 static bool section(
const pConstMesh& mesh,
const Geom::Pln& pln, std::vector<pFace>& faces);
172 static pFace getCreaseAngleFace(
const pConstMesh& mesh,
double creaseAngle,
int faceIndex);
174 static bool getCreaseAngleFaceMesh(
const pConstMesh& mesh,
177 std::vector<Geom::Pnt>* points,
178 std::vector<int>* linesModel,
179 std::vector<int>* trianglesModel,
189 virtual pMesh _triangulationToMesh(
pConstShape shape,
bool highQuality, std::vector<int>* newToOldFaceIdxMap);
192 virtual void _getModel(
pConstMesh mesh, std::vector<int>& model);
193 virtual void _getPoints(
pConstMesh mesh, std::vector<Geom::Pnt>& points);
199 std::map<std::string, Core::Variant>* properties,
200 bool forceTerrainFrom2dr);
201 virtual std::map<int, std::array<Core::Variant, 6>> _getHorizontalPointsFromOMFFile(
Core::CoreDocument* doc,
203 std::map<std::string, Core::Variant>* properties,
204 const double& scaleFactor);
205 virtual std::map<int, std::array<Core::Variant, 4>> _getVerticalPointsFromOMFFile(
Core::CoreDocument* doc,
207 std::map<std::string, Core::Variant>* properties,
208 const double& scaleFactor);
209 virtual bool _writeOmfFile(
const std::vector<App::Element*>& elems,
const Base::String& fileName);
210 virtual bool _getInventorMeshColors(
pConstMesh mesh, std::vector<Base::Color>& uniqueColors, std::vector<std::string>* colorNames);
211 virtual pMesh _makeMesh(
const std::vector<Geom::Pnt>& nodes,
212 const std::vector<int>& model,
213 const std::vector<Geom::Pnt2d>& textureCoords,
214 const std::vector<int>& textureCoordIndices,
215 const std::vector<Geom::Pnt>& normals);
216 virtual pMesh _makeMesh(
const std::vector<Geom::Pnt>& nodes,
const std::vector<int>& model);
217 virtual pMesh _makeMesh(
const std::vector<Geom::Pnt>& nodes,
const std::vector<int>& model,
const std::vector<Geom::Pnt>& normals);
220 std::vector<Geom::Pnt>& nodes,
221 std::vector<int>& model,
222 std::vector<Draw::SurfaceStyle>& surfaceStyles,
223 std::vector<int>& faceIndices,
224 std::vector<int>& surfaceStyleIndices,
225 std::vector<Geom::Pnt2d>& textureCoords,
226 std::vector<int>& textureCoordIndices,
227 std::vector<Topo::LineItem>* lineItems = 0);
229 virtual bool _getCreaseAngle(
pConstMesh mesh,
float& angle);
231 virtual pMesh _makePlateFast(
const std::vector<Geom::Pnt>& points,
232 const std::vector<int>& model,
237 virtual bool _triangulateClosedPolyline(
const std::vector<Geom::Pnt> inputPolyLine, std::vector<Geom::Pnt>& nodes, std::vector<int>& model );
238 virtual bool _tryToCloseMesh(
const pConstMesh& mesh,
240 const std::vector<unsigned int>* mtlIds,
241 std::vector<unsigned int>* newMtlIds);
242 virtual bool _section(
const pConstMesh& mesh,
const Geom::Pln& pln, std::vector<pFace>& faces);
243 virtual pFace _getCreaseAngleFace(
const pConstMesh& mesh,
double creaseAngle,
int faceIndex);
244 virtual bool _getCreaseAngleFaceMesh(
const pConstMesh& mesh,
247 std::vector<Geom::Pnt>* points,
248 std::vector<int>* linesModel,
249 std::vector<int>* trianglesModel,