Relative coordinates of Points in Dynamo

Assuming you want to sequence points such that they create a non-intersecting boundary, see if this works for you…


boundaryCurve.dyn (14.2 KB)

def seq(pt:var[])
{
	ct = Point.ByCoordinates(Math.Sum(pt.X)/List.Count(pt),Math.Sum(pt.Y)/List.Count(pt));
	qa = Math.Round(Vector.ByTwoPoints(ct,pt).Normalized().AngleAboutAxis(Vector.YAxis(),Vector.ZAxis()));
	q1 = List.GroupByKey(List.SortByKey(pt,qa)["sorted list"],List.SortByKey(pt,qa)["sorted keys"])["groups"];
	q2 = List.Flatten(List.SortByKey(q1<1>,(Point.ByCoordinates(q1.X,q1.Y).DistanceTo(ct))<1>)["sorted list"],-1);
	return = q2;
};
pt1 = seq(pts);
7 Likes