Goal: For a face-to-face contact, ensure that all "contact" sides are smaller than their "target" sides.
Code:
geom=DataModel.GeoData contacts = DataModel.GetObjectsByType(DataModelObjectCategory.ContactRegion) with Transaction(): for cont in contacts: source_area = 0 sourcenum = cont.SourceLocation.Ids.Count for x in range(0,sourcenum): myface = geom.GeoEntityById(cont.SourceLocation.Ids[x]) source_area = source_area + myface.Area target_area = 0 targetnum = cont.TargetLocation.Ids.Count for x in range(0,targetnum): myface = geom.GeoEntityById(cont.TargetLocation.Ids[x]) target_area = target_area + myface.Area if (target_area < source_area): print "Flipping Source/Target For Contact Region = %s" % (cont.Name) cont.FlipContactTarget() print "Done with Macro"