Verify Contact Size

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"