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
clr.AddReference('ProtoGeometry')
clr.AddReference('RevitAPI')
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:
Autodesk.DesignScript.Geometry.Solid
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.
3 Likes
@Thomas_Mahon
I´ve found a wiki entry on github.com, 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
clr.AddReference("RevitAPI")
import Autodesk
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)
clr.AddReference('ProtoGeometry')
clr.ImportExtensions(Revit.GeometryConversion)
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
1 Like