On 29/04/2015 at 22:21, xxxxxxxx wrote:
Cinema 4D Version: 16
Platform: Windows ;
Language(s) : C++ ;
I want to iterate through all edges of an PolygonObject and get their vectors. How can I do that?
I've done this already with Python by using a BaseSelect, but I think, there must be a better way.
On 30/04/2015 at 06:21, xxxxxxxx wrote:
I found the solution in the SDK documentation:
The following code browses through all available edges:
Int32 a, b;
if (!neighbor.Init(pcnt, vadr, vcnt, nullptr))
for (i=0; i<polyCount; i++)
> PolyInfo* polyInfo = neighbor->GetPolyInfo(i);
> for (side=0; side<4; side++) // Test all 4 sides of a polygon
>> // Only proceed if the edge has not already been processed and edge really exists
>> // For triangles side 2 from c..d does not exist as c==d
>> // One can also skip the side==2 && vadr _.c==vadr _.d test as pli- >mark is always true for triangles
>> if (pli->mark[side] || side==2 && vadr _.c==vadr _.d)
>> switch (side)
>>> case 0: a = vadr _.a; b = vadr _.b; break;
>>> case 1: a = vadr _.b; b = vadr _.c; break;
>>> case 2: a = vadr _.c; b = vadr _.d; break;
>>> case 3: a = vadr _.d; b = vadr _.a; break;
>> // Do something with the edge a..b
On 30/04/2015 at 08:31, xxxxxxxx wrote:
Actually there's also the AtomArray in our cinema4dsdk examples, which shows this in "living" code.
On 30/04/2015 at 18:14, xxxxxxxx wrote:
Thanks for the hint. The other examples are also very interesting!