When a brep’s IsValid is False, shouldn’t the relevant components’ IsValid also be False?
Running the following code on the breps in IsValid.3dm (32.0 KB)
shows where this is not the case.
import rhinoscriptsyntax as rs
def checkBrepComponents(collection):
print '-'*80
print collection.ToString()
print 'Component count:', collection.Count
print "Indices of invalid components:",
for i in range(collection.Count):
if not collection[i].IsValid: print i,
print
def main():
idBreps = rs.GetObjects("Select surfaces/polysurfaces", preselect=True,
filter=rs.filter.polysurface)
if idBreps is None: return
for i, idBrep in enumerate(idBreps):
print '-'*80 + '\n' + '-'*80 + '\n' + "Brep:", i
rgBrep = rs.coercebrep(idBrep)
b, log = rgBrep.IsValidWithLog() # rgBrep.IsValid
if not b:
print log
map(checkBrepComponents, (rgBrep.Faces, rgBrep.Edges,
rgBrep.Vertices, rgBrep.Loops, rgBrep.Trims,
rgBrep.Surfaces, rgBrep.Curves2D, rgBrep.Curves3D))
if __name__ == "__main__": main()
Thank you,
Steve