Bubbet I actually didn't show quite all of the options for PartCriteria:
PartCriteria
{
IDString = part_id // Optional, requires this specific part.
Category = part_category // Optional, requires the connected part to be in this category.
Rot = 0 // Optional, requires the connected part to have this rotation relative to our own part.
Left = 0 // Optional, requires the connected part's left edge to be at this coordinate relative to our own part.
Right = 0 // Optional, requires the connected part's right edge to be at this coordinate relative to our own part.
Top = 0 // Optional, requires the connected part's top edge to be at this coordinate relative to our own part.
Bottom = 0 // Optional, requires the connected part's bottom edge to be at this coordinate relative to our own part.
}
Any field you leave off it won't care about. So if you leave off Top, it won't care where the top edge of the connected part is.
EDIT:
Also, the Left, Right, Top, and Bottom values also accept ranges in the form of [min, max].