parameters: (self, subObjTups, touching)
return_statement: return (low, high)
docstring: identifyUnconnectedEdges(subObjTups, touching)
          Categorize unconnected edges into two groups, if possible: low and high
docstring_summary: identifyUnconnectedEdges(subObjTups, touching)
          Categorize unconnected edges into two groups, if possible: low and high
docstring_tokens: identifyUnconnectedEdges ( subObjTups touching ) Categorize unconnected edges into two groups if possible : low and high
function: def identifyUnconnectedEdges(self, subObjTups, touching):
          """identifyUnconnectedEdges(subObjTups, touching)
          Categorize unconnected edges into two groups, if possible: low and high"""
          # Identify unconnected edges
          # (should be top edge loop if all faces form loop with bottom face(s) included)
          high = []
          low = []
          holding = []
  
          for (sub, face) in subObjTups:
              holding = []
              for ei in range(0, len(face.Edges)):
                  if ei not in touching[sub]:
                      holding.append((sub, face, ei))
              # Assign unconnected edges based upon category: high or low
              if len(holding) == 1:
                  high.append(holding.pop())
              elif len(holding) == 2:
                  edg0 = holding[0][1].Edges[holding[0][2]]
                  edg1 = holding[1][1].Edges[holding[1][2]]
                  if self.hasCommonVertex(edg0, edg1, show=False) < 0:
                      # Edges not connected - probably top and bottom if faces in loop
                      if edg0.CenterOfMass.z > edg1.CenterOfMass.z:
                          high.append(holding[0])
                          low.append(holding[1])
                      else:
                          high.append(holding[1])
                          low.append(holding[0])
                  else:
                      # Edges are connected - all top, or all bottom edges
                      com = FreeCAD.Vector(0, 0, 0)
                      com.add(edg0.CenterOfMass)
                      com.add(edg1.CenterOfMass)
                      avgCom = FreeCAD.Vector(com.x / 2.0, com.y / 2.0, com.z / 2.0)
                      if avgCom.z > face.CenterOfMass.z:
                          high.extend(holding)
                      else:
                          low.extend(holding)
              elif len(holding) > 2:
                  # attempt to break edges into two groups of connected edges.
                  # determine which group has higher center of mass, and assign as high, the other as low
                  (lw, hgh) = self.groupConnectedEdges(holding)
                  low.extend(lw)
                  high.extend(hgh)
              # Eif
          # Efor
          return (low, high)
function_tokens: def identifyUnconnectedEdges ( self , subObjTups , touching ) : # Identify unconnected edges # (should be top edge loop if all faces form loop with bottom face(s) included) high = [ ] low = [ ] holding = [ ] for ( sub , face ) in subObjTups : holding = [ ] for ei in range ( 0 , len ( face . Edges ) ) : if ei not in touching [ sub ] : holding . append ( ( sub , face , ei ) ) # Assign unconnected edges based upon category: high or low if len ( holding ) == 1 : high . append ( holding . pop ( ) ) elif len ( holding ) == 2 : edg0 = holding [ 0 ] [ 1 ] . Edges [ holding [ 0 ] [ 2 ] ] edg1 = holding [ 1 ] [ 1 ] . Edges [ holding [ 1 ] [ 2 ] ] if self . hasCommonVertex ( edg0 , edg1 , show = False ) < 0 : # Edges not connected - probably top and bottom if faces in loop if edg0 . CenterOfMass . z > edg1 . CenterOfMass . z : high . append ( holding [ 0 ] ) low . append ( holding [ 1 ] ) else : high . append ( holding [ 1 ] ) low . append ( holding [ 0 ] ) else : # Edges are connected - all top, or all bottom edges com = FreeCAD . Vector ( 0 , 0 , 0 ) com . add ( edg0 . CenterOfMass ) com . add ( edg1 . CenterOfMass ) avgCom = FreeCAD . Vector ( com . x / 2.0 , com . y / 2.0 , com . z / 2.0 ) if avgCom . z > face . CenterOfMass . z : high . extend ( holding ) else : low . extend ( holding ) elif len ( holding ) > 2 : # attempt to break edges into two groups of connected edges. # determine which group has higher center of mass, and assign as high, the other as low ( lw , hgh ) = self . groupConnectedEdges ( holding ) low . extend ( lw ) high . extend ( hgh ) # Eif # Efor return ( low , high )