Salome HOME
PAL8379: add in geompy.py a function for filtering edges by length.
authorjfa <jfa@opencascade.com>
Mon, 4 Apr 2005 11:42:52 +0000 (11:42 +0000)
committerjfa <jfa@opencascade.com>
Mon, 4 Apr 2005 11:42:52 +0000 (11:42 +0000)
src/GEOM_SWIG/batchmode_geompy.py
src/GEOM_SWIG/geompy.py

index 452023fcfd17f498c700e480df19db87031312fa..e9b8eeeb3b176cbd7f32e4d2b0a039fd1dd21525 100644 (file)
@@ -1061,6 +1061,34 @@ def GetMainShape(theGroup):
       print "GetMainShape : ", GroupOp.GetErrorCode()
     return anObj
 
+def GetEdgesByLength (theShape, min_length, max_length, include_min = 1, include_max = 1):
+    """
+    Create group of edges of theShape, whose length is in range [min_length, max_length].
+    If include_min/max == 0, edges with length == min/max_length will not be included in result.
+    """
+
+    edges = SubShapeAll(theShape, ShapeType["EDGE"])
+    edges_in_range = []
+    for edge in edges:
+        Props = BasicProperties(edge)
+       if min_length <= Props[0] and Props[0] <= max_length:
+           if (not include_min) and (min_length == Props[0]):
+               skip = 1
+            else:
+               if (not include_max) and (Props[0] == max_length):
+                   skip = 1
+                else:
+                   edges_in_range.append(edge)
+
+    if len(edges_in_range) <= 0:
+        print "No edges found by given criteria"
+       return 0
+
+    group_edges = CreateGroup(theShape, ShapeType["EDGE"])
+    UnionList(group_edges, edges_in_range)
+
+    return group_edges
+
 # Add Path to the system path
 #
 def addPath(Path):
index 60c341f82f34a76d7b403ff4761d67d622896948..a561d6e84cb03ed85bba87a2ad15c5431b358a71 100644 (file)
@@ -2392,6 +2392,65 @@ def GetMainShape(theGroup):
       print "GetMainShape : ", GroupOp.GetErrorCode()
     return anObj
 
+def GetEdgesByLength (theShape, min_length, max_length, include_min = 1, include_max = 1):
+    """
+    Create group of edges of theShape, whose length is in range [min_length, max_length].
+    If include_min/max == 0, edges with length == min/max_length will not be included in result.
+    """
+
+    edges = SubShapeAll(theShape, ShapeType["EDGE"])
+    edges_in_range = []
+    for edge in edges:
+        Props = BasicProperties(edge)
+       if min_length <= Props[0] and Props[0] <= max_length:
+           if (not include_min) and (min_length == Props[0]):
+               skip = 1
+            else:
+               if (not include_max) and (Props[0] == max_length):
+                   skip = 1
+                else:
+                   edges_in_range.append(edge)
+
+    if len(edges_in_range) <= 0:
+        print "No edges found by given criteria"
+       return 0
+
+    group_edges = CreateGroup(theShape, ShapeType["EDGE"])
+    UnionList(group_edges, edges_in_range)
+
+    return group_edges
+
+def SelectEdges (min_length, max_length, include_min = 1, include_max = 1):
+    """
+    Create group of edges of selected shape, whose length is in range [min_length, max_length].
+    If include_min/max == 0, edges with length == min/max_length will not be included in result.
+    """
+
+    nb_selected = sg.SelectedCount()
+    if nb_selected < 1:
+        print "Select a shape before calling this function, please."
+       return 0
+    if nb_selected > 1:
+        print "Only one shape must be selected"
+       return 0
+
+    id_shape = sg.getSelected(0)
+    shape = IDToObject( id_shape )
+
+    group_edges = GetEdgesByLength(shape, min_length, max_length, include_min, include_max)
+
+    left_str  = " < "
+    right_str = " < "
+    if include_min: left_str  = " <= "
+    if include_max: right_str  = " <= "
+
+    addToStudyInFather(shape, group_edges, "Group of edges with " + `min_length`
+                      + left_str + "length" + right_str + `max_length`)
+
+    sg.updateObjBrowser(1)
+
+    return group_edges
+
 def addPath(Path):
     """
      * Add Path to load python scripts from