BooleanOperationsUtils is not defined

Thanks in advance for every input.

I tried to use

BooleanOperationsUtils.ExecuteBooleanOperation(arg1, arg2, BooleanOperationsType.Intersect)

to evaluate if a solid gets intersected by another solid. (Later i want to use it to compare the whole list)

Do i miss some necessary imports in PythonScript, or what could be the problem here?

Input Parameters are 2 non-nested lists with solids as items.

import sys
import clr
from Autodesk.DesignScript.Geometry import *

rooms = IN[0]
gds = IN[1]

a = rooms[0]
b = gds[0]

val = BooleanOperationsUtils.ExecuteBooleanOperation(a, b, BooleanOperationsType.Intersect)

OUT = val

@d.feyerer Try adding from Autodesk.Revit.DB import *

1 Like

Thank you for your answer, first error wasn´t shown again.

But now i have another error message, which quite confuses me:

“Expected Solid, got Solid” → ?

What does that mean? Are there different Types of “Solid”?

I used Object.Type node and it shows, that the items of both lists got type:

CUSTOMWriteSlabTagsToRooms_adaptions.dyn (148.8 KB)

Yes: You are inputting a Dynamo Solid from its ProtoGeometry library where as the Revit API BooleanOperationsUtils.ExecuteBooleanOperation method expects a Revit API Solid. Try calling ToRevitType() on the Proto Solid, just don’t expect very reliable results as it will fail conversion often.



I´ve found a wiki entry on, where you have described the transformation from Dynamo Geometry to Revit GeometryObject instances ( Python 0.6.3 to 0.7.x Migration · DynamoDS/Dynamo Wiki · GitHub)

I managed to transform the Dynamo Solids to Revit Solids with this approach (for one item). I am actually testing the approach if it produces stable results.

import sys
import clr

import Autodesk

import Revit


import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager


from Autodesk.Revit.DB import *
from Autodesk.DesignScript.Geometry import *

rooms = IN[0]
gds = IN[1]

a = UnwrapElement(rooms[0])
a2 = a.ToRevitType(TessellatedShapeBuilderTarget.Solid, TessellatedShapeBuilderFallback.Abort)
a3 = a2[0]

b = UnwrapElement(gds[0][0])
b2 = b.ToRevitType(TessellatedShapeBuilderTarget.Solid, TessellatedShapeBuilderFallback.Abort)
b3 = b2[0]

val = BooleanOperationsUtils.ExecuteBooleanOperation(a3, b3, BooleanOperationsType.Intersect)
OUT = val, a3, b3