Advertisement
IvaSerge

LineFilter

Feb 21st, 2018
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.80 KB | None | 0 0
  1. #Создаем список уже созданных линий в виде двухуровневого массива
  2. #[0] - тока начала [1] точка конца
  3.  
  4. lines = list()
  5.  
  6. #Создаем функцию проверки на наличие в списке линий с одинаковыми координатами
  7. #На вход принимаем две точки - начало-конец.
  8.  
  9. def CheckLine (_p1, _p2):
  10.     global lines
  11.     for lin in lines:
  12.         #для начала считаем, что точки не равны.
  13.         strEqual = False
  14.         endEqual = False
  15.         #Для каждой линии получаем существующие координаты
  16.         existSTR = lin[0]
  17.         existEND = lin[1]
  18.         #Точка начала линии равна одной из двух новых точек?
  19.         if PointCompare(existSTR,_p1) or PointCompare(existSTR,_p2):
  20.             strEqual = True
  21.         else: strEqual = False
  22.         #Точка конца линии равна одной из двух новых точек?
  23.         if PointCompare(existEND,_p1) or PointCompare(existEND,_p2):
  24.             endEqual = True
  25.         else: endEqual = False
  26.         #Если две точки равны - то линии дублируются и проверка не пройдена
  27.         if strEqual and endEqual:
  28.             return False
  29.     else:
  30.         return True
  31.  
  32. def PointCompare(_p1, _p2):
  33.     #В сравнении точек из Ревита главное, округлять!
  34.     if round(_p1.X, 8) == round(_p2.X, 8)\
  35.             and round(_p1.Y, 8) == round(_p2.Y, 8)\
  36.             and round(_p1.Z, 8) == round(_p2.Z, 8):
  37.         return True
  38.     else:
  39.         return False
  40.  
  41. #В самой программе строим линию только тогда, когда проверка пройдена
  42. if CheckLine (p1, p2):
  43.     ln = Line.ByStartPointEndPoint(p1,p2)
  44.     else: pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement