00001 /*************************************************************************** 00002 * Copyright (c) 2006 Werner Mayer <wmayer[at]users.sourceforge.net> * 00003 * * 00004 * This file is part of the FreeCAD CAx development system. * 00005 * * 00006 * This library is free software; you can redistribute it and/or * 00007 * modify it under the terms of the GNU Library General Public * 00008 * License as published by the Free Software Foundation; either * 00009 * version 2 of the License, or (at your option) any later version. * 00010 * * 00011 * This library is distributed in the hope that it will be useful, * 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00014 * GNU Library General Public License for more details. * 00015 * * 00016 * You should have received a copy of the GNU Library General Public * 00017 * License along with this library; see the file COPYING.LIB. If not, * 00018 * write to the Free Software Foundation, Inc., 59 Temple Place, * 00019 * Suite 330, Boston, MA 02111-1307, USA * 00020 * * 00021 ***************************************************************************/ 00022 00023 00024 #ifndef MESH_FEATURE_MESH_DEFECTS_H 00025 #define MESH_FEATURE_MESH_DEFECTS_H 00026 00027 #include <App/PropertyLinks.h> 00028 #include "MeshFeature.h" 00029 00030 namespace Mesh 00031 { 00032 00037 class MeshExport FixDefects : public Mesh::Feature 00038 { 00039 PROPERTY_HEADER(Mesh::FixDefects); 00040 00041 public: 00043 FixDefects(void); 00044 virtual ~FixDefects(); 00045 00048 App::PropertyLink Source; 00050 00053 00054 virtual App::DocumentObjectExecReturn *execute(void); 00055 short mustExecute() const; 00057 00059 // virtual const char* getViewProviderName(void) const {return "MeshGui::ViewProviderDefects";} 00060 }; 00061 00066 class MeshExport HarmonizeNormals : public Mesh::FixDefects 00067 { 00068 PROPERTY_HEADER(Mesh::HarmonizeNormals); 00069 00070 public: 00072 HarmonizeNormals(void); 00073 virtual ~HarmonizeNormals(); 00074 00077 00078 virtual App::DocumentObjectExecReturn *execute(void); 00080 }; 00081 00086 class MeshExport FlipNormals : public Mesh::FixDefects 00087 { 00088 PROPERTY_HEADER(Mesh::FlipNormals); 00089 00090 public: 00092 FlipNormals(void); 00093 virtual ~FlipNormals(); 00094 00097 00098 virtual App::DocumentObjectExecReturn *execute(void); 00100 }; 00101 00106 class MeshExport FixNonManifolds : public Mesh::FixDefects 00107 { 00108 PROPERTY_HEADER(Mesh::FixNonManifolds); 00109 00110 public: 00112 FixNonManifolds(void); 00113 virtual ~FixNonManifolds(); 00114 00117 00118 virtual App::DocumentObjectExecReturn *execute(void); 00120 }; 00121 00126 class MeshExport FixDuplicatedFaces : public Mesh::FixDefects 00127 { 00128 PROPERTY_HEADER(Mesh::FixDuplicatedFaces); 00129 00130 public: 00132 FixDuplicatedFaces(void); 00133 virtual ~FixDuplicatedFaces(); 00134 00137 00138 virtual App::DocumentObjectExecReturn *execute(void); 00140 }; 00141 00146 class MeshExport FixDuplicatedPoints : public Mesh::FixDefects 00147 { 00148 PROPERTY_HEADER(Mesh::FixDuplicatedPoints); 00149 00150 public: 00152 FixDuplicatedPoints(void); 00153 virtual ~FixDuplicatedPoints(); 00154 00157 00158 virtual App::DocumentObjectExecReturn *execute(void); 00160 }; 00161 00166 class MeshExport FixDegenerations : public Mesh::FixDefects 00167 { 00168 PROPERTY_HEADER(Mesh::FixDegenerations); 00169 00170 public: 00172 FixDegenerations(void); 00173 virtual ~FixDegenerations(); 00174 00177 00178 virtual App::DocumentObjectExecReturn *execute(void); 00180 }; 00181 00186 class MeshExport FixDeformations : public Mesh::FixDefects 00187 { 00188 PROPERTY_HEADER(Mesh::FixDeformations); 00189 00190 public: 00192 FixDeformations(void); 00193 virtual ~FixDeformations(); 00194 00197 App::PropertyFloat MaxAngle; 00201 00202 virtual App::DocumentObjectExecReturn *execute(void); 00204 }; 00205 00210 class MeshExport FixIndices : public Mesh::FixDefects 00211 { 00212 PROPERTY_HEADER(Mesh::FixIndices); 00213 00214 public: 00216 FixIndices(void); 00217 virtual ~FixIndices(); 00218 00221 00222 virtual App::DocumentObjectExecReturn *execute(void); 00224 }; 00225 00230 class MeshExport FillHoles : public Mesh::FixDefects 00231 { 00232 PROPERTY_HEADER(Mesh::FillHoles); 00233 00234 public: 00236 FillHoles(void); 00237 virtual ~FillHoles(); 00238 App::PropertyInteger FillupHolesOfLength; 00239 App::PropertyFloat MaxArea; 00240 00243 00244 virtual App::DocumentObjectExecReturn *execute(void); 00246 }; 00247 00252 class MeshExport RemoveComponents : public Mesh::FixDefects 00253 { 00254 PROPERTY_HEADER(Mesh::RemoveComponents); 00255 00256 public: 00258 RemoveComponents(void); 00259 virtual ~RemoveComponents(); 00260 App::PropertyInteger RemoveCompOfSize; 00261 00264 00265 virtual App::DocumentObjectExecReturn *execute(void); 00267 }; 00268 00269 } //namespace Mesh 00270 00271 00272 #endif // MESH_FEATURE_MESH_DEFECTS_H