Iterate through all Edges of PolygonObject[SOLVED]
-
On 29/04/2015 at 22:21, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 16
Platform: Windows ;
Language(s) : C++ ;---------
Hello,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.Thanks
-
On 30/04/2015 at 06:21, xxxxxxxx wrote:
I found the solution in the SDK documentation:
Example:
The following code browses through all available edges:
Int32 a, b;
Neighbor neighbor;
if (!neighbor.Init(pcnt, vadr, vcnt, nullptr))
return false;
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[2] is always true for triangles
>>
>> if (pli->mark[side] || side==2 && vadr _.c==vadr _.d)
>>
>>> continue;
>>
>> 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!