MT_BoundaryEdge = 4, //!< Boundary edge (related to a single face)
MT_SharedEdge = 5, //!< Shared edge (related to several faces)
MT_WireFrameFace = 6, //!< Wireframe face
- MT_ShadedFace = 7 //!< Shaded face
+ MT_ShadedFace = 7, //!< Shaded face
+ MT_SeamEdge = 8 //!< Seam edge between faces
} IVtk_MeshType;
//! @enum IVtk_DisplayMode Display modes for 3D shapes
TopAbs_EDGE,
TopAbs_FACE,
anEdgesMap);
-
int aNbFaces;
IVtk_MeshType aType;
myEdgesTypes.Clear();
- TopExp_Explorer anEdgeIter (GetShapeObj()->GetShape(), TopAbs_EDGE);
- for (; anEdgeIter.More(); anEdgeIter.Next())
+ TopTools_IndexedDataMapOfShapeListOfShape::Iterator aEdgeIt(anEdgesMap);
+ for (; aEdgeIt.More(); aEdgeIt.Next())
{
- const TopoDS_Edge& anOcctEdge = TopoDS::Edge (anEdgeIter.Current());
- aNbFaces = anEdgesMap.FindFromKey (anOcctEdge).Extent();
+ const TopoDS_Edge& anOcctEdge = TopoDS::Edge (aEdgeIt.Key());
+ const TopTools_ListOfShape& aFaceList = aEdgeIt.Value();
+ aNbFaces = aFaceList.Extent();
if (aNbFaces == 0)
{
aType = MT_FreeEdge;
}
else
{
- aType = MT_SharedEdge;
+ aType = (aNbFaces >= 2) && (BRep_Tool::MaxContinuity(anOcctEdge) > GeomAbs_G2) ?
+ MT_SeamEdge : MT_SharedEdge;
}
addEdge (anOcctEdge, GetShapeObj()->GetSubShapeId (anOcctEdge), aType);
myEdgesTypes.Bind (anOcctEdge, aType);
aTypes.Add (MT_FreeEdge);
aTypes.Add (MT_BoundaryEdge);
aTypes.Add (MT_SharedEdge);
+ aTypes.Add (MT_SeamEdge);
aTypes.Add (MT_WireFrameFace);
myModesDefinition[DM_Wireframe] = aTypes;
--- /dev/null
+puts "=========="
+puts "seam_edges"
+puts "=========="
+puts ""
+#################################################################
+# Tests boundary edges draw without seam edges in the IVtk view
+#################################################################
+
+set anImage $imagedir/${casename}.png
+
+ivtkinit
+psphere s 10 15 80
+ivtkdisplay s
+ivtksetdispmode 1
+ivtksetboundingdraw 1
+
+ivtkdump $anImage