Hi
I am trying to get elements’ geometry and intersect them with floors’ geometry within the API directly. I am doing this in order to avoid potential issues with geometry scaling. I am successfully obtaining all the solids both for floors and other elements as well and when I append them to an output list, I get Autodesk.Revit.DB.Solid elements:
When I try to intersect them though, using this line:
intersections.append((BooleanOperationsUtils.ExecuteBooleanOperation(solid, floorSolid, BooleanOperationsType.Intersect)))
I get the following message:
Which is weird, because I only see DB.Solids in the output.
Here’s the whole code:
import clr
import sys
sys.path.append('C:\Program Files (x86)\IronPython 2.7\Lib')
import System
from System import Array
from System.Collections.Generic import *
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference("RevitAPI")
clr.AddReference("RevitAPIUI")
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
uidoc = uiapp.ActiveUIDocument
opt = Options()
opt.DetailLevel = ViewDetailLevel.Fine
intersections, floorsolids, elementsolids = [], [], []
floors = UnwrapElement(IN[0])
elements = UnwrapElement(IN[1])
for floor in floors:
templist = []
floorSolid = floor.get_Geometry(opt)
floorsolids.append(floorSolid)
for element in elements:
#solid = element.Geometry
solid = element.get_Geometry(opt)
elementsolids.append(solid)
#intersections.append((BooleanOperationsUtils.ExecuteBooleanOperation(solid, floorSolid, BooleanOperationsType.Intersect)))
OUT = intersections, floorsolids, elementsolids