System.ApplicationException: Unable union two Solids : INCONS_FACE -- inconsistent face-body relationships
at Autodesk.LibG.Solid.by_union(SolidList solids)
at Autodesk.LibG.GeometryFactory.SolidByUnion(ISolidEntity[] solids)
at Autodesk.DesignScript.Geometry.Solid.ByUnion(IEnumerable`1 solids)
System.ApplicationException: Unable union two Solids : FACE_BOUNDARY -- wire being deleted crosses face boundary
at Autodesk.LibG.Solid.by_union(SolidList solids)
at Autodesk.LibG.GeometryFactory.SolidByUnion(ISolidEntity[] solids)
at Autodesk.DesignScript.Geometry.Solid.ByUnion(IEnumerable`1 solids)
Unfortunately, the beams don’t align perfectly with the edge of the concrete floor. (according to Revit - don’t worry it’s not your fault)
The errors are thrown by the ASIC geometry kernel that Revit is using, and you can’t do much about it, unfortunately. You can either built-in a check in your script to align a beam if there is an error or modify the sketch of the floor (once the API is available).
And… now for the funny part. You can actually avoid this error. The ASIC kernel for solid modelling has been developed by Spacial Corporation (part of Dessault Systems - creators of Catia). And it works fine in multiple other software that is using it.
However, Revit… being Revit has f^&)^ed up the kernel by a very simple thing. Revit is converting all units to Feet. So, if you are using the metric system, you have a problem.
So, finally after the long rant. The simplest solution is to change the units temporarily to feet. And the error magically goes away
I’d have to test if you could do this automatically by creating a transaction, changing the units, doing your boolean operations and changing the units back. In the meantime, you can do this manually.
Thanks for your great solution! @Maciej_Wypych1 I changed the units of length, area, and volume from mm, m2, and m3 to feet, square feet, and cubic feet, then the errors were all gone! Thank you so much! I have been stuck with it for nearly two days…
For changing the units temporarily, I used codes from this post (thanks @ Einar_Raknes for the great codes). Basically I need to run the metric2feet.dyn before I open the boolean operation file and then run the feet2metric.dyn after finishing the boolean file (totally 3 files separately). I am wondering are there some good ways to integrate them into one file?
Yes @Maciej_Wypych1 CPython3 has not been integrated into Revit officially. I just replaced it manually to be able to use some popular libraries like numpy, pandas etc., although I haven’t used them yet haha