Hello everyone
I’m trying to generate a diagonalized polygon from its structure, created with model lines within a Revit model, and distances, introduced by user through Excel.
And, thanks to this forum, I’ve learned how to create a triangle from the lenght of its sides with nodes, and I’ve transformed the process to Python code
This is the Python language version of the upper script. It only works for one triangle. It has worked for me
import clr
clr.AddReference(‘ProtoGeometry’)
from Autodesk.DesignScript.Geometry import *clr.AddReference(“RevitNodes”)
import Revitfrom Revit.Elements import *
import clr
clr.AddReference(“DSCoreNodes”)
from DSCore import *from itertools import *
define lists as inputs
list_sideA = IN[0]
list_sideB = IN[1]
list_sideC = IN[2]
list_alpha = IN[3]
list_beta = IN[4]
list_gamma = IN[5]
triangle_list = IN[6]define first triangle
first_sideA = list_sideA[0]
first_sideB = list_sideB[0]
first_sideC = list_sideC[0]
first_alpha = list_alpha[0]
first_beta = list_beta[0]
first_gamma = list_gamma[0]first triangle as Polygon
p1 = Point.Origin();
v1 = Vector.XAxis();
geometry1 = Geometry.Translate(p1, v1, first_sideB); # adicionar índice listas
v2 = Vector.ZAxis();
v3 = Vector.Rotate(v1, v2, first_alpha);
geometry2 = Geometry.Translate(p1, v3, first_sideC);
t4 = [geometry1, p1, geometry2];
polygon1 = Polygon.ByPoints(t4);
sidesPolygon1 = Geometry.Explode(polygon1);
diagonalA = List.GetItemAtIndex(sidesPolygon1,2);
After that, I built a process for, from the common side and with the same rules, creating the second triangle.
define third side vector
start_point_diagonalA = Curve.StartPoint(diagonalA);
end_point_diagonalA = Curve.StartPoint(diagonalA);
vector_diagonalA = Vector.ByTwoPoints(start_point_diagonalA,end_point_diagonalA);repeat same process for second triangle
vector_side2B = Vector.Rotate(vector_diagonalA, v2, second_beta);
geometry2 = Geometry.Translate(p1, v3, first_sideC);
t4 = [geometry1, p1, geometry2];
polygon1 = Polygon.ByPoints(t4);
My problem is that I’ve a list of triangles, that I’ve ordered according their common sides, being the common side the first of each sublist of the last list of the lower image.
I need to replicate the process according the index of the common sides, independently the amount of triangles in the model.
Thanks a lot