Clash detection on steel IFC models: why you get thousands of results, and how to get down to the ones that matter
The usefulness of clash detection is set by its false positive rate, not its geometric precision. Why bolts through holes must be excluded, why construction gaps are not defects, what clearance threshold to use, and what happens when a model has no assembly structure.
Run clash detection on a steel model for the first time and you typically get a list of several thousand results, scroll two pages, and never open it again. The algorithm is almost never wrong — those intersections are genuinely there — but nearly all of them are not defects. Clash detection is judged by what it excludes, not by how much it can report.
Four kinds of intersection that must be excluded
In a steel model the following are the design itself, and reporting them buries the real findings:
- Fasteners through holes. A bolt passing through a hole in a plate is intended. Fasteners can be roughly a third of all elements in a real model, so leaving them in means the list is nothing but bolts.
- Parts inside one assembly. Stiffeners, gussets and end plates are welded to their beam, so of course they intersect it. Deciding whether two parts belong to the same assembly has to look at the assembly level, not simply the immediate parent — in some models tens of thousands of parts all have the same storey as their parent, and taking that at face value treats the whole model as one element and reports nothing at all.
- Small gaps between elements that already touch. If two elements are in contact somewhere, they are connected, and a few millimetres of clearance near that connection is joint detailing rather than a defect. The test is done per element pair: if the minimum clear distance anywhere along a pair is essentially zero, the pair stops producing gap findings.
- Repeated findings from repeated detailing. Steel is highly repetitive and one connection detail may occur hundreds of times. Grouping by mark pair turns thousands of rows into dozens, each carrying a count.
Choosing the clearance threshold
The threshold below which a gap counts as a defect should not be guessed. In real steel models clear distances are not evenly distributed; they cluster at 1, 2, 5, 10 and 20 mm, because those are deliberate construction gaps — 2 mm between a purlin and its cleat, 10 mm between a girt and a column, 20 mm around a door frame.
A 10 mm threshold applied strictly below therefore has a basis: it catches fits that are genuinely too tight while leaving the common 10 mm construction gap out. Push it to 30 mm and entire families of construction gaps come back in, returning the list to unusable. Drop it to 2 mm and you miss things that genuinely will not go together on site.
Penetration depth cannot be estimated from bounding boxes
Reporting a clash is half the job; saying how far in it goes is the other half. Estimating that number from bounding boxes or from the size of the intersection region goes badly wrong: two end plates sitting face to face, actually overlapping by about a tenth of a millimetre, come out as tens of millimetres, and two crossing round bars overlapping by ten-odd millimetres come out above half a metre. Nobody trusts the list after seeing that once.
Where the finding points matters just as much. The location should be the deepest interior point, not the centre of the intersection region — for long slender elements those can be tens of metres apart. A user who clicks a finding, flies to it and sees nothing wrong will not click the next one.
What happens when the model has no assembly structure
If the exported IFC has all parts flat, with no assembly level, the rule that excludes parts within one element stops working entirely. The consequence is not only more false positives: parts welded to each other all enter pairing, the intersection rate climbs to around half of all pairs, and every intersecting pair needs a full depth computation, so the run time rises by an order of magnitude.
Preserving assembly structure on export is therefore not cosmetic — it decides whether clash detection is usable at all. If your results are unusually numerous or the run is unusually slow, check this first.