PAL8379: add in geompy.py a function for filtering edges by length.

This commit is contained in:
jfa 2005-04-11 07:11:46 +00:00
parent a2e49f7316
commit 681340563a
2 changed files with 87 additions and 0 deletions

View File

@ -1061,6 +1061,34 @@ def GetMainShape(theGroup):
print "GetMainShape : ", GroupOp.GetErrorCode() print "GetMainShape : ", GroupOp.GetErrorCode()
return anObj 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 # Add Path to the system path
# #
def addPath(Path): def addPath(Path):

View File

@ -2392,6 +2392,65 @@ def GetMainShape(theGroup):
print "GetMainShape : ", GroupOp.GetErrorCode() print "GetMainShape : ", GroupOp.GetErrorCode()
return anObj 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): def addPath(Path):
""" """
* Add Path to load python scripts from * Add Path to load python scripts from