FeaturesAPI_GeometryCalculation.h
FeaturesAPI_BoundingBox.h
FeaturesAPI_LimitTolerance.h
+ FeaturesAPI_SharedFaces.h
)
SET(PROJECT_SOURCES
FeaturesAPI_GeometryCalculation.cpp
FeaturesAPI_BoundingBox.cpp
FeaturesAPI_LimitTolerance.cpp
+ FeaturesAPI_SharedFaces.cpp
)
SET(PROJECT_LIBRARIES
%shared_ptr(FeaturesAPI_Rotation)
%shared_ptr(FeaturesAPI_Scale)
%shared_ptr(FeaturesAPI_Sewing)
+%shared_ptr(FeaturesAPI_SharedFaces)
%shared_ptr(FeaturesAPI_Symmetry)
%shared_ptr(FeaturesAPI_Translation)
%shared_ptr(FeaturesAPI_Union)
%include "FeaturesAPI_Rotation.h"
%include "FeaturesAPI_Scale.h"
%include "FeaturesAPI_Sewing.h"
+%include "FeaturesAPI_SharedFaces.h"
%include "FeaturesAPI_Symmetry.h"
%include "FeaturesAPI_Translation.h"
%include "FeaturesAPI_Union.h"
#include "FeaturesAPI_GeometryCalculation.h"
#include "FeaturesAPI_BoundingBox.h"
#include "FeaturesAPI_LimitTolerance.h"
+ #include "FeaturesAPI_SharedFaces.h"
#endif // FeaturesAPI_swig_H_
FeaturesPlugin_InspectNormalToFace.h
FeaturesPlugin_GlueFaces.h
FeaturesPlugin_LimitTolerance.h
+ FeaturesPlugin_CommonSharedFaces.h
+ FeaturesPlugin_GroupSharedFaces.h
+ FeaturesPlugin_SharedFaces.h
)
SET(PROJECT_SOURCES
FeaturesPlugin_InspectNormalToFace.cpp
FeaturesPlugin_GlueFaces.cpp
FeaturesPlugin_LimitTolerance.cpp
+ FeaturesPlugin_CommonSharedFaces.cpp
+ FeaturesPlugin_GroupSharedFaces.cpp
+ FeaturesPlugin_SharedFaces.cpp
)
SET(XML_RESOURCES
normal_to_face_widget.xml
create_normal_to_face_widget.xml
limit_tolerance_widget.xml
+ shared_faces_macro_widget.xml
+ shared_faces_widget.xml
)
SET(TEXT_RESOURCES
../ModuleBase
../Events
../Config
+ ../Locale
${OpenCASCADE_INCLUDE_DIR}
)
// When selecting a compound tool object, use its exploded subshapes as tool object instead.
const ListOfShape aToolList = ExplodeCompounds(aTools.objects());
+
// For solids cut each object with all tools.
bool isOk = true;
for (GeomAPI_ShapeHierarchy::iterator anObjectsIt = anObjects.begin();
#include <FeaturesPlugin_Fillet1D.h>
#include <FeaturesPlugin_GeometryCalculation.h>
#include <FeaturesPlugin_GlueFaces.h>
+#include <FeaturesPlugin_GroupSharedFaces.h>
#include <FeaturesPlugin_InspectBoundingBox.h>
#include <FeaturesPlugin_InspectNormalToFace.h>
#include <FeaturesPlugin_Intersection.h>
#include <FeaturesPlugin_Rotation.h>
#include <FeaturesPlugin_Scale.h>
#include <FeaturesPlugin_Sewing.h>
+#include <FeaturesPlugin_SharedFaces.h>
#include <FeaturesPlugin_Symmetry.h>
#include <FeaturesPlugin_Translation.h>
#include <FeaturesPlugin_Union.h>
return FeaturePtr(new FeaturesPlugin_PointCloudOnFace);
} else if (theFeatureID == FeaturesPlugin_LimitTolerance::ID()) {
return FeaturePtr(new FeaturesPlugin_LimitTolerance);
+ } else if (theFeatureID == FeaturesPlugin_SharedFaces::ID()) {
+ return FeaturePtr(new FeaturesPlugin_SharedFaces);
+ } else if (theFeatureID == FeaturesPlugin_GroupSharedFaces::ID()) {
+ return FeaturePtr(new FeaturesPlugin_GroupSharedFaces);
}
<source>Bounding box</source>
<translation>Boîte englobante</translation>
</message>
+ <message>
+ <source>Check shared faces</source>
+ <translation>Vérifier les faces partagées</translation>
+ </message>
<message>
<source>Placement</source>
<translation>Placement</translation>
</message>
</context>
+ <!-- Check shared faces -->
+ <context>
+ <name>Shared_faces_macro</name>
+ <message>
+ <source>Check shared faces</source>
+ <translation>Vérifier les faces partagées</translation>
+ </message>
+ <message>
+ <source>Shared faces</source>
+ <translation>Faces partagées</translation>
+ </message>
+ <message>
+ <source>Number of shared faces : </source>
+ <translation>Nombre de faces partagées : </translation>
+ </message>
+ </context>
+ <context>
+ <name>Shared_faces_macro:create_group</name>
+ <message>
+ <source>Create group</source>
+ <translation>Créer un groupe</translation>
+ </message>
+ </context>
+ <context>
+ <name>Shared_faces_macro:group_name</name>
+ <message>
+ <source>Group name</source>
+ <translation>Nom du groupe</translation>
+ </message>
+ </context>
+ <context>
+ <name>Shared_faces_macro:main_object</name>
+ <message>
+ <source>Object</source>
+ <translation>Objet</translation>
+ </message>
+ <message>
+ <source>Shared faces</source>
+ <translation>Faces partagées</translation>
+ </message>
+ </context>
+ <context>
+ <name>Shared_faces_macro:group_list</name>
+ <message>
+ <source>Shared faces</source>
+ <translation>Faces partagées</translation>
+ </message>
+ <message>
+ <source>List of faces :</source>
+ <translation>Liste des faces :</translation>
+ </message>
+ </context>
+ <context>
+ <name>Shared_faces_macro:transparency</name>
+ <message>
+ <source>Transparency</source>
+ <translation>Transparence</translation>
+ </message>
+ </context>
+ <context>
+ <name>Shared_faces</name>
+ <message>
+ <source>Check shared faces</source>
+ <translation>Vérifier les faces partagées</translation>
+ </message>
+ <message>
+ <source>Shared faces</source>
+ <translation>Faces partagées</translation>
+ </message>
+ <message>
+ <source>Number of shared faces : </source>
+ <translation>Nombre de faces partagées : </translation>
+ </message>
+ </context>
+ <context>
+ <name>Shared_faces:create_group</name>
+ <message>
+ <source>Create group</source>
+ <translation>Créer un groupe</translation>
+ </message>
+ </context>
+ <context>
+ <name>Shared_faces:group_name</name>
+ <message>
+ <source>Group name</source>
+ <translation>Nom du groupe</translation>
+ </message>
+ </context>
+ <context>
+ <name>Shared_faces:main_object</name>
+ <message>
+ <source>Object</source>
+ <translation>Objet</translation>
+ </message>
+ <message>
+ <source>Shared faces</source>
+ <translation>Faces partagées</translation>
+ </message>
+ </context>
+ <context>
+ <name>Shared_faces:group_list</name>
+ <message>
+ <source>Shared faces</source>
+ <translation>Faces partagées</translation>
+ </message>
+ <message>
+ <source>List of faces :</source>
+ <translation>Liste des faces :</translation>
+ </message>
+ </context>
+ <context>
+ <name>Shared_faces:transparency</name>
+ <message>
+ <source>Transparency</source>
+ <translation>Transparence</translation>
+ </message>
+ </context>
+
<!-- Symmetry -->
<context>
<name>Symmetry</name>
icon="icons/Features/axis.png" helpfile="normalToFaceFeature.html" internal="1">
<source path="create_normal_to_face_widget.xml"/>
</feature>
+ <feature id="Shared_faces_macro" title="Check shared faces" tooltip="Check the shared faces" auto_preview="true"
+ icon="icons/Features/shared_shapes.png" helpfile="checkSharedFaceFeature.html">
+ <source path="shared_faces_macro_widget.xml"/>
+ </feature>
+ <feature id="Shared_faces" title="Check shared faces" tooltip="Check the shared faces" auto_preview="true"
+ icon="icons/Features/shared_shapes.png" helpfile="checkSharedFaceFeature.html" internal="1">
+ <source path="shared_faces_widget.xml"/>
+ </feature>
</group>
</workbench>
</plugin>
TestBooleanCut_Fuzzy_2.py
TestBooleanFuse_Fuzzy.py
TestBooleanCommon_Fuzzy.py
+ TestCheckSharedFaces.py
)
SET(TEST_NAMES_SEQ
}
}
}
+
+ListOfShape GeomAlgoAPI_ShapeTools::getSharedFaces(const GeomShapePtr& theShape)
+{
+ ListOfShape aSharedFaces;
+ TopTools_IndexedDataMapOfShapeListOfShape aMapFS;
+ TopExp::MapShapesAndUniqueAncestors(theShape->impl<TopoDS_Shape>(),
+ TopAbs_FACE, TopAbs_SOLID, aMapFS);
+ for (Standard_Integer i = 1; i <= aMapFS.Extent(); i++) {
+ const TopTools_ListOfShape& ancestors = aMapFS.FindFromIndex(i);
+ if (ancestors.Size() > 1) {
+ GeomShapePtr aFace(new GeomAPI_Shape);
+ aFace->setImpl<TopoDS_Shape>(new TopoDS_Shape(aMapFS.FindKey(i)));
+ aSharedFaces.push_back(aFace);
+ }
+ }
+ return aSharedFaces;
+}
const ListOfShape& theBaseShapes,
const std::shared_ptr<GeomAPI_Dir> theDir,
double& theToSize, double& theFromSize);
+
+ /// \brief Get shared faces of a shape
+ /// \param[in] theShape shape that should be exploded
+ /// \return list of shared faces
+ GEOMALGOAPI_EXPORT static ListOfShape getSharedFaces(const GeomShapePtr& theShape);
};
#endif