SetSelectedEdges(self, e, pSel, ltype)
..., method takes a pSel argument of type
The help for this method further tells us that:
The edges are indexed uniquely by a Neighbor object, so each edge has a single index.
OK, makes sense so far. We use the edge index from the
Neighbor object to identify an edge once, rather than N times where N is the number of polygons that share said edge.
But, in order to use a "logical" edge index from the Neighbor object, we need to be able to tell which edge and/or edges this logical edge maps to. Unfortunately, the
Neighbor class offers no way to get the properties of the logical edge to physical edge mapping, that it stores internally, given a logical edge index.
There is only one method in the
Neighbor class that has anything to do with the logical indexes that it stores, and that is
Neighbor.GetEdgeCount(). This puts a cap on the number of logical edges, which are clearly indexed from
Neighbor.GetEdgeCount() - 1.
But, how in the world does one get info about these logical edges (by logical edge index) in order to decide whether or not to use them with the
PolygonObject.SetSelectedEdges() method, if the representation and properties of the logical edges are completely opaque to users of the
c4d.utils.Neighbor class? There is not a single method in this class that gives the developer any information about which physical points, edges, or polygons a logical edge, as referred to by its edge index in the
Neighbor class, represents.
Without any information and mapping to something physical and concrete, how can one refer to a "distinct logical edge" by its index within
Neighbor and use that as the basis for forming the selection criteria inside a
BaseSelect object as required by the
pSel argument of the
SetSelectedEdges() method of
TL;DR: If I can't tell which actual edges the edge indices of a
Neighbor object refer to, I can't make use of
Neighbor edge indices for any operation that requires them.
Am I overlooking something, or is this API completely broken?