Advertisement
Guest User

Untitled

a guest
Jan 8th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. # Подгрузка библиотек
  2. import clr
  3.  
  4. clr.AddReference('RevitAPI')
  5. import Autodesk
  6. from Autodesk.Revit.DB import *
  7.  
  8. clr.AddReference('RevitServices')
  9. import RevitServices
  10. from RevitServices.Persistence import DocumentManager
  11. from RevitServices.Transactions import TransactionManager
  12.  
  13. """
  14. import Revit
  15. clr.ImportExtensions(Revit.Elements)
  16. clr.ImportExtensions(Revit.GeometryConversion)
  17. """
  18. import math
  19.  
  20. # Получение текущего проекта
  21. doc = DocumentManager.Instance.CurrentDBDocument
  22.  
  23. def GetSolidsOfElement(Elem):
  24. geoElem = Elem.get_Geometry(Options())
  25. solids = []
  26. for geoObj in geoElem:
  27. if geoObj.ToString() == 'Autodesk.Revit.DB.GeometryInstance':
  28. geomIns = geoObj
  29.  
  30. instGeoElement = geomIns.GetInstanceGeometry()
  31. for i in instGeoElement:
  32. if i.ToString() == 'Autodesk.Revit.DB.Solid':
  33. if i.Volume == 0:
  34. pass
  35. else:
  36. solids.append(i)
  37. else:
  38. if geoObj.ToString() == 'Autodesk.Revit.DB.Solid':
  39. solids.append(geoObj)
  40. return solids
  41.  
  42. #Введенные в этом узле данные сохраняется в виде списка в переменных IN.
  43. walllist = UnwrapElement(IN[0])
  44. iwalllist = UnwrapElement(IN[1])
  45.  
  46. Sol = True
  47. lst = []
  48. for i, wa in enumerate(walllist):
  49. for j, wi in enumerate(iwalllist):
  50. #Sol = BooleanOperationsUtils.ExecuteBooleanOperation(si, si1, BooleanOperationsType.Intersect)
  51.  
  52. #wallsolid = list(walllist[i].get_Geometry(options))[0] # this creates wall solid 1
  53. wallsolid = GetSolidsOfElement(wa)
  54. iwallsolid = GetSolidsOfElement(wi)
  55. #iwallsolid = list(iwalllist[i].get_Geometry(options))[0] # this creates wall solid 2
  56. intersect = BooleanOperationsUtils.ExecuteBooleanOperation(wallsolid, iwallsolid, BooleanOperationsType.Intersect)
  57. lst.append(intersect)
  58. #lst.append(si)
  59.  
  60. #Назначьте вывод переменной OUT.
  61. OUT = lst
  62.  
  63. """
  64. private void ComputeIntersectionVolume(Solid solidA, Solid solidB)
  65. {
  66. Solid intersection = BooleanOperationsUtils.ExecuteBooleanOperation(solidA, solidB, BooleanOperationsType.Intersect);
  67. double volumeOfIntersection = intersection.Volume;
  68.  
  69. https://forum.dynamobim.com/t/python-intersect-solid/25531/5
  70. }
  71. """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement