mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-11-11 16:19:17 +05:00
PAL8379: add in geompy.py a function for filtering edges by length.
This commit is contained in:
parent
390fa7af81
commit
27b79de2de
@ -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):
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user