Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Подгрузка библиотек
- import clr
- clr.AddReference('RevitAPI')
- import Autodesk
- from Autodesk.Revit.DB import *
- clr.AddReference('RevitServices')
- import RevitServices
- from RevitServices.Persistence import DocumentManager
- from RevitServices.Transactions import TransactionManager
- """
- import Revit
- clr.ImportExtensions(Revit.Elements)
- clr.ImportExtensions(Revit.GeometryConversion)
- """
- import math
- # Получение текущего проекта
- doc = DocumentManager.Instance.CurrentDBDocument
- def GetSolidsOfElement(Elem):
- geoElem = Elem.get_Geometry(Options())
- solids = []
- for geoObj in geoElem:
- if geoObj.ToString() == 'Autodesk.Revit.DB.GeometryInstance':
- geomIns = geoObj
- instGeoElement = geomIns.GetInstanceGeometry()
- for i in instGeoElement:
- if i.ToString() == 'Autodesk.Revit.DB.Solid':
- if i.Volume == 0:
- pass
- else:
- solids.append(i)
- else:
- if geoObj.ToString() == 'Autodesk.Revit.DB.Solid':
- solids.append(geoObj)
- return solids
- #Введенные в этом узле данные сохраняется в виде списка в переменных IN.
- walllist = UnwrapElement(IN[0])
- iwalllist = UnwrapElement(IN[1])
- Sol = True
- lst = []
- for i, wa in enumerate(walllist):
- for j, wi in enumerate(iwalllist):
- #Sol = BooleanOperationsUtils.ExecuteBooleanOperation(si, si1, BooleanOperationsType.Intersect)
- #wallsolid = list(walllist[i].get_Geometry(options))[0] # this creates wall solid 1
- wallsolid = GetSolidsOfElement(wa)
- iwallsolid = GetSolidsOfElement(wi)
- #iwallsolid = list(iwalllist[i].get_Geometry(options))[0] # this creates wall solid 2
- intersect = BooleanOperationsUtils.ExecuteBooleanOperation(wallsolid, iwallsolid, BooleanOperationsType.Intersect)
- lst.append(intersect)
- #lst.append(si)
- #Назначьте вывод переменной OUT.
- OUT = lst
- """
- private void ComputeIntersectionVolume(Solid solidA, Solid solidB)
- {
- Solid intersection = BooleanOperationsUtils.ExecuteBooleanOperation(solidA, solidB, BooleanOperationsType.Intersect);
- double volumeOfIntersection = intersection.Volume;
- https://forum.dynamobim.com/t/python-intersect-solid/25531/5
- }
- """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement