Dmitry_Dronov

door handing

Apr 29th, 2015
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.77 KB | None | 0 0
  1. #Copyright(c) 2014, Konrad Sobon
  2. # @arch_laboratory, http://archi-lab.net
  3.  
  4. import clr
  5. clr.AddReference('ProtoGeometry')
  6. from Autodesk.DesignScript.Geometry import *
  7.  
  8. # Import ToDSType(bool) extension method
  9. clr.AddReference("RevitNodes")
  10. import Revit
  11. clr.ImportExtensions(Revit.Elements)
  12.  
  13. # Import DocumentManager and TransactionManager
  14. clr.AddReference("RevitServices")
  15. import RevitServices
  16. from RevitServices.Persistence import DocumentManager
  17. from RevitServices.Transactions import TransactionManager
  18.  
  19. from System.Collections.Generic import *
  20.  
  21. # Import RevitAPI
  22. clr.AddReference("RevitAPI")
  23. import Autodesk
  24. from Autodesk.Revit.DB import *
  25.  
  26. doc = DocumentManager.Instance.CurrentDBDocument
  27. uiapp = DocumentManager.Instance.CurrentUIApplication
  28. app = uiapp.Application
  29.  
  30. #The inputs to this node will be stored as a list in the IN variable.
  31. dataEnteringNode = IN
  32.  
  33. #unwrap inputs
  34. elements = []
  35. for i in IN[0]:
  36.     elements.append(UnwrapElement(i))
  37.  
  38. #get phase
  39. collector = FilteredElementCollector(doc)
  40. phase_collector = collector.OfClass(Phase)
  41.  
  42. for i in phase_collector:
  43.     if i.Name == "New Construction":
  44.         phase = i
  45.     else:
  46.         print("no phase w/ specified name exists")
  47.  
  48. #check if door has a left or right handed swing
  49. right, left, lhr, rhr = [], [], [], []
  50. for i in elements:
  51.     to_room = i.ToRoom[phase]
  52.     if to_room is not None:
  53.         if not i.FacingFlipped:
  54.             if i.HandFlipped:
  55.                 right.append(i)
  56.             else:
  57.                 left.append(i)
  58.         else:
  59.             if i.HandFlipped:
  60.                 left.append(i)
  61.             else:
  62.                 right.append(i)
  63.     else:
  64.         if i.FacingFlipped:
  65.             if i.HandFlipped:
  66.                 rhr.append(i)
  67.             else:
  68.                 lhr.append(i)
  69.         else:
  70.             if i.HandFlipped:
  71.                 lhr.append(i)
  72.             else:
  73.                 rhr.append(i)
  74. #Assign your output to the OUT variable
  75. OUT = right, left, rhr, lhr
Advertisement
Add Comment
Please, Sign In to add comment