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"