PolygonObject's
SetSelectedEdges(self, e, pSel, ltype)
..., method takes a pSel argument of type BaseSelect
.
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 0
to 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 PolygonObject
?
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?