I'm also facing this issue right now. I hope the following experience could be helpful to any of you, developers or Autodesk.
This is my situation, a grey box containing several green cuboids. See the rendering gets a bit weird at interfacing area due to overlapping. BooleanUtil fails on the second cuboid when computing intersection between grey box and these cuboids (I wish I could give you these elements, but they're all linked. I'll try to put them in a sample file to help others recreating the problem if anyone is interested.)
![jshial_1-1592882483937.png jshial_1-1592882483937.png]()
Exception thrown, inaccuracy, misalignment.
So this is what I tested:
1. Translate cuboid's solid just a little bit. Or scale it to 1.1 or 0.9. Same exception thrown, I guess a little bit of transformation didn't resolve what exception message says.
2. Run same logic in Dynamo (with nodes), it works fine.
3. Run same logic in Dynamo (with only one Python node, pure IronPython, calling BooleanUtil from RevitAPI), it works fine surprisingly.
Idk why even calling BooleanUtil straight from Revit API in Dynamo doesn't throw that exception anymore either. Is there some optimization that Dynamo does intentionally to cope with this problem? I did some diggin on both Revit and Dynamo's geometry kernel, a term ASM(Autodesk ShapeManager) comes up, this thread has some very informative discussion: https://github.com/DynamoDS/DynamoRevit/issues/1960
kronz's post might explain what I'm experiencing now.
To sum it up:
1. To revit users and developers, I would suggest to give Dynamo a try.
2. Not knowing how internal collaboration is in Autodesk, wish Revit dev team could discuss this with Dynamo dev team, hopefully releasing a fix asap.
3. This puts me in dilemma now because I'm developing a WPF app with these intersections. I have hundreds of this kind of grey boxes to compute intersections with its nearby elements. Operating on all the boxes is too heavy for Dynamo, forcing me to chop the task into smaller sets and run Dynamo multiple times. Although I consider an IExternalCommand in C# is faster than Dynamo script for my task, I just cannot use it.
1. Impact on your application and/or your development:
It basically means I cannot develop my app, may argue that I can always implement my own algorithm for boolean operation. Pretty challenging and time-consuming, resource is a factor.
2. The number of users affected:
Almost 10,000 employees, expected product could make our work tremendously easier.
3. The potential revenue impact to you:
Hard to measure. Dynamo to the rescue while the efficiency dropped considerable than expected before.
4. The potential revenue impact to Autodesk:
Impossible for me to measure, I feel like Dynamo has a more reliable algorithm to this but don't know if transfer that to Revit is simple or not.
5. Realistic timescale over which a fix would help you.
As soon as possible. Timestamp in this thread, 2017 => 2019 => 2020. Development-wise, I'm stopped basically.
6. In the case of a request for a new feature or a feature enhancement, please also provide detailed Use Cases for the workflows that this change would address.
I just need the intersection solids, just like what BooleanOperationsUtils can give me usually.