The normal “Marriage” Link is a straight line going between the spouses. It has a single “LinkLabel” Node that acts as the parent for all of the children that issue from that mating.
I see that you have already changed the link so that its Link.fromSpot and Link.toSpot are
go.Spot.Bottom. Presumably you will want to increase the Diagram.layout’s layerSpacing property so there’s more room between the layers. If you want, you can set Link.fromEndSegmentLength and Link.toEndSegmentLength to control the distance down to the horizontal line segment.
Normally that “LinkLabel” Node is tiny – you can see it’s declared to have size 1x1 in its template definition. You can change its GraphObject.fromSpot to be
go.Spot.BottomSide. You will want to change the width of that Node dynamically in the
GenogramLayout so that it has the same width as the distance between the centers of the mother and father Nodes
Then you’ll want to replace the parent-child Link template to be an instance of a custom Link class that is like the
BarLink class used by the Network sample. Replace the “HBar” category with the “LinkLabel” category. (To handle twins, you’ll need to augment the code in the Link.getLinkPoint method override to go to the midpoint X between the twins.)
Finally you’ll need to spread the father and mother nodes far apart in the GenogramLayout. This needs to be done both in the
GenogramLayout.add method where it creates the LayoutVertex object for the “LinkLabel” node, and also in
GenogramLayout.commitNodes method where it actually positions the mother and father Nodes. This is also the convenient time at which you can change the width of that link’s “LinkLabel” node.