Hi guys,

I have a polygon made up of 6 curves. Visually I see it as if it is made up of 4 sides.

So in the end, I want to make a Dictionary that groups 6 curves into 4 based on their angle difference.

if Angle crv01-02 < 90 then change group

if Angle crv01-02 > 90 then keep in same group

To make things clear for this shape, the dictionary should be :

key - value

a - crv01

b - crv02

c - crv03, 04, 05

d - crv06-07

Another point : I am also not sure how revit measure angles between 2 lines. Ideally, if angle btw 2 lines is measured clockwise ( as in drawing Protector ) , then I would group them so

if angle btw line1 - 2 is 0-135° change group

if angle btw line1 - 2 is 135-225° same group

if angle btw line1 - 2 is 225-360° change group

Any idea how to sort curves into dictionary based on angles? at the moment I have this graph. Any help would be wonderful

1 Like

@hassan.orion ,

thats weard stuff …

do you try to wheel naming by the angles that you get feeded?

KR

Andreas

1 Like

Good evening,

Here is an approach (to be checked)

collection of angles (Node and function solution)

and dictionary formation

Function 1:

```
def vec_l_lsup(Pt:var[])
{
return [Imperative]
{
Pt_ut=
DSCore.List.Flatten(
DSCore.List.AddItemToEnd(Pt[0..2],Pt));
res=[];
Side=[];
for (i in 0..(DSCore.List.Count(Pt_ut)-4))
{res[i]=
Autodesk.Vector.AngleAboutAxis(
Autodesk.Vector.ByTwoPoints(Pt_ut[i],Pt_ut[i+1]),
Autodesk.Vector.ByTwoPoints(Pt_ut[i+2],Pt_ut[i+1]),
Autodesk.Vector.ByCoordinates(0,0,1));
}
return res;
}
};
//Have fun with DesignScript (Thanks M. EdSonMatt)
```

Function 2:

```
def ajout(a:var[],b:var[])
{
return [Imperative]
{
res=[];
for (i in 0..(DSCore.List.Count(a)-1))
{
res[i]=[a[i],b[i]];
}
return res;
}
};
```

Function 3:

```
def soustraction(N:var[])
{return [Imperative]
{
k=DSCore.List.Count(N);
res2[0]=N[0];
for (i in 1..(k-1))
{
res2[i]=N[i]-N[i-1];
}
return res2;
}
};
```

script:

10 aout forum anglais rep2.dyn (67.1 KB)

Cordially

christian.stan

1 Like

Could the Line.Direction Node be of help here?

1 Like