Благодарю) Обязательно попробую, увидел ответ, когда уже почти получилось задать правильные условия для корректного поворота перемычек. Почему-то если с обычного списка поворачивать, задавая угол – все нормально оборачивается, а элементы (может я не разобрался до конца) пришлось вращать, разделяя каждый угол на 2.
import clr
clr.AddReference("RevitAPI")
import Autodesk
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.AddReference("RevitServices")
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
import math
doc = DocumentManager.Instance.CurrentDBDocument
clr.ImportExtensions(Revit.GeometryConversion)
inn = IN[0]
marka = IN[1]
if not isinstance(inn, list):
inn= [inn]
Rt,Rt1,x1,y1,z1,z2,xz=[],[],[],[],[],[],[]
for i in inn:
try:
elemId = UnwrapElement(i).Id
xyz = UnwrapElement(i).Location.Point*304.8 #центри розташування елементів
pt1 = Point.ByCoordinates(xyz.X, xyz.Y,xyz.Z) #ставимо точки
dX=UnwrapElement(i).FacingOrientation.X
dY=UnwrapElement(i).FacingOrientation.Y
y1.append(dY)
x1.append(dX)
if dX>0 and dY>0:
try:
rotation1 = 180-math.degrees(math.atan(dX/dY))
except:
pass
Rt.append(rotation1/2)
elif dX>=0 and dY<0:
try:
rotation1 = math.degrees(math.atan(-dX/dY))
except:
pass
Rt.append(rotation1/2)
elif dX<=0 and dY>0:
try:
rotation1 = 180-math.degrees(math.atan(dX/dY))
except:
pass
Rt.append(rotation1/2)
elif dX==1 and dY==0:
try:
rotation1 = 90-math.degrees(math.atan(-dY/dX))
except:
pass
Rt.append(rotation1/2)
else:
try:
rotation1 = math.degrees(math.atan(-dX/dY))
except:
pass
Rt.append(rotation1/2)
except:
pass
OUT=Rt
p.s. Если я многострочием засоряю тему, прошу намекнуть, чтоб я лишнего не писал.