Ports in Nodes, placing Ports

Hello,
There is a Node that has Ports, and I need to connect the link to the edge of the Shape (of this Node), the Shape has not rectabgled form. Like this:

how can I place ports to have links on this places:

I have tried to use:
diagram.nodeTemplateMap.add("Triple_tind_transformer", $$(go.Node, "Auto", nodeStyle(), { contextMenu: schemeMenu }, { rotatable: true, locationSpot: go.Spot.Center, locationObjectName: "SHAPE", selectionObjectName: "SHAPE" }, new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify), new go.Binding("angle").makeTwoWay(), $$(go.Panel, $$(go.Shape, { geometry: Triple_tind_transformer, scale: 0.7, name: "SHAPE", fill: "Red", strokeWidth: 1.5, stroke: "#333745", strokeCap: "round", strokeJoin: "round", //portId: "", fromLinkable: true, //fromSpot: go.Spot.TopLeft })), $$(go.Panel, "Table", $$(go.Panel, "Horizontal", { column: 1, row: 1 }, $$(go.Shape, { width: 6, height: 6, portId: "1", toSpot: go.Spot.Left, toLinkable: true }), $$(go.TextBlock, "1") ), $$(go.Panel, "Horizontal", { column: 2, row: 2 }, $$(go.Shape, { width: 6, height: 6, portId: "2", toSpot: go.Spot.Left, toLinkable: true }), $$(go.TextBlock, "2") ) ) ));

but the “Table” has too big spaces between the rows and columns and I can’t place ports in the location that I need. Like this:

First I should ask: do you really need to have separate GraphObjects in your Node that act as “ports”? In other words, do you need separate ports because you want there to be a logical and physical distinction between different connection points?

If you really do want separate ports, perhaps just because you want to show some text on each one, I suggest that you have the Node be a “Spot” Panel. Your three-ring Shape can be the main element of that panel, and the other two elements would be “Horizontal” Panels each holding a small “Square” Shape and a TextBlock.

Node, "Spot"
    Shape, { geometry: ... }
    Panel, "Horizontal", { alignment: ..., alignmentFocus: ... }
        Shape
        TextBlock
    Panel, "Horizontal", { alignment: ..., alignmentFocus: ... }
        Shape
        TextBlock

"walterNorthwoods Software
First I should ask: do you really need to have separate GraphObjects in your Node that act as “ports”? In other words, do you need separate ports because you want there to be a logical and physical distinction between different connection points?

If you really do want separate ports, perhaps just because you want to show some text on each one, I suggest that you have the Node be a “Spot” Panel. Your three-ring Shape can be the main element of that panel, and the other two elements would be “Horizontal” Panels each holding a small “Square” Shape and a TextBlock."

I need only the Node had 3 ports and all ports was connected to the Shape in places that I showed before:

the text on ports was just for help, I don’t need it.

What should happen if a link needs to go towards the top-right because that’s where the connected node is?

In other words, if you drag this node around, how should the links be routed to connect with the node?

"What should happen if a link needs to go towards the top-right because that’s where the connected node is?

In other words, if you drag this node around, how should the links be routed to connect with the node?"

It should work like this:

or like in this sample: https://gojs.net/latest/samples/draggableLink.html

??? It appears that the Node, or at least the Shape, was rotated.

No, I was asking about how the links should be routed if your node was connected with three separate nodes, all of which are on the right side relative to the node? In other words, what should happen when the connected nodes are not at 120-degree angles relative to the node?

"
??? It appears that the Node, or at least the Shape, was rotated.

No, I was asking about how the links should be routed if your node was connected with three separate nodes, all of which are on the right side relative to the node? In other words, what should happen when the connected nodes are not at 120-degree angles relative to the node?
"
oh, yes, sorry, I thought you were asking about rotating.
The link should be routing like this:

or this:

It is not important. My main problem is how to place ports in the Node on places that I showed.

As Walter mentioned earlier, you’ll want to use a Spot panel to place the ports. Something like this:

Node, "Spot"
    Shape, { geometry: ... } // main shape
    Shape, { alignment: go.Spot.Top, portId: "top" }
    Shape, { alignment: new go.Spot(.15, .85), portId: "left" } // rough estimate of bottom left circle edge
    Shape, { alignment: new go.Spot(.85, .85), portId: "right" } // rough estimate of bottom right circle edge

You can play around with the alignment spots to get them to the edges.