# Testen van opensource CAD kernels

- Link: https://opensourcecad.nl/cad-kernels/testen-van-opensource-cad-kernels/
- Published: 2026-10-29T16:04:33+01:00
- Author: Marijn van den Heuvel \+ AI

_English version: [Testing open source CAD kernels](https://opensourcecad.nl/en/testing-open-source-cad-kernels/)._

OCCT, SMLib en SolidCore zijn drie [kernels](https://opensourcecad.nl/vibecoded-apps/wat-is-het-verschil-tussen-mesh-en-nurbs-modelleren/)
voor CAD: het rekenhart dat je schets omzet in een echt solid, booleans uitrekent
en je model naar STEP schrijft. Ik heb dezelfde zestien modellen door alle drie 
gehaald om te zien waar ze op hetzelfde uitkomen en waar ze uit elkaar lopen. Hieronder
staat hoe die test werkt en wat er per model uit komt.

## Zo werkt de test

Elk model is één .scad-bestand, en hetzelfde bestand gaat door alle drie de kernels.
Daarna vergelijkt de test twee dingen: de uiterste maten van het model en het volume.

De foutmarge die ik aanhoud is het verschil in volume ten opzichte van OCCT, in 
procenten. Dat cijfer zegt of twee kernels dezelfde vorm hebben gemaakt. Een klein
verschil is normaal, want waar een krom vlak in driehoekjes wordt verdeeld wijkt
de inhoud altijd een fractie af. Blijft het onder de 0,3 procent, dan reken ik het
daaraan toe; loopt het verder uiteen, dan zit er iets mis in de kernel.

## Vier modellen die alle drie de kernels bouwen

Deze vier halen alle drie: een kubus met een bolvormige hap, een tapse buis met 
een gat, een kubus met afgeronde randen en drie plaatjes met gaten van verschillende
grootte. De marges liggen tussen 0,01 en 0,26 procent, dus de drie komen op hetzelfde
model uit.

[⌊Kubus met een bolhap⌉⌊Kubus met een bolhap⌉[

Een bol van 12 mm snijdt door alle zes de vlakken van de kubus.

[⌊Tapse buis met een gat⌉⌊Tapse buis met een gat⌉[

Een kegel met een doorgaand gat: echte kegel- en cilindervlakken.

[⌊Kubus met afgeronde randen⌉⌊Kubus met afgeronde randen⌉[

Alle randen afgerond met 2 mm; de kubus blijft precies 20 mm.

[⌊Drie plaatjes met gaten⌉⌊Drie plaatjes met gaten⌉[

Gaten van verschillende grootte, uit een lus met een voorwaarde.

## Drie modellen die alleen OCCT en SMLib aankunnen

De hoekbeugel, de flens en de V-snaarschijf vragen functies die SolidCore nog mist:
een profiel rond een as draaien, en randen selecteren op convex of concaaf. Dat 
is geen principieel verschil maar werk dat nog gedaan moet worden. [SolidCore](https://opensourcecad.nl/vibecoded-apps/solidcore-vs-occt/)
is een jonge herbouw en haalt op dit moment vier van de zestien modellen.

[⌊Hoekbeugel⌉⌊Hoekbeugel⌉[

Afgeronde buitenranden en drie montagegaten.

[⌊Flens met lasnaad⌉⌊Flens met lasnaad⌉[

De overgang tussen flens en buis is afgerond als een lasnaad.

[⌊V-snaarschijf⌉⌊V-snaarschijf⌉[

Eén profiel dat rond de as draait, met echte kegelvlakken in de groef.

## En dit lukt alleen OCCT

Een plaat van 100 bij 100 mm met een cilinder van 40 mm erop, waarvan de as precies
op de rand van de plaat zit, en dan alles afronden met 2 mm.

De cilinder hangt half over de plaat, dus de overgang tussen cilinder en plaat eindigt
op het vrije zijvlak. Precies daar lopen SMLib en SolidCore vast. SMLib kan de hoek
niet goed indelen en de code die het gat op dat vlak moet dichten werkt er niet.
SolidCore struikelt nog eerder, in het punt waar de twee banen samenkomen. Bij OCCT
gaat het zonder klagen goed.

Dit is het geval waar een kernel zich bewijst: niet in het ronde gat in een plaat,
maar in de vorm die er net naast zit. Ik heb het bij het project gemeld, met de 
foutmeldingen erbij; het staat in [issue #1410](https://github.com/tangency-labs/solidcore/issues/1410).

[⌊Plaat met cilinder op de rand⌉⌊Plaat met cilinder op de rand⌉[

Cilinder van 40 mm op de rand van een plaat van 100 bij 100 mm, alles afgerond met
2 mm.

Van de zestien modellen uit deze test komen OCCT en SMLib op alle zestien tot dezelfde
maten en volumes. SolidCore haalt er vier. Het verschil zit niet in de dagelijkse
vormen, maar in de lastige overgangen.

**Mijn oordeel:** het is indrukwekkend hoe goed de Rust-port al werkt, gezien er
pas een paar dagen aan gewerkt wordt. De voortgang per twee dagen lijkt gelijk aan
een jaar OCCT-ontwikkeling, en ik verwacht dat we binnen twee weken een OCCT-alternatief
hebben.

De testset en de modellen staan in de [openscad-occt-fork](https://github.com/MisterMakerNL/openscad-occt/tree/solidcore-backend).**
Houd deze site in de gaten voor updates en testen**, ik blijf de drie kernels volgen
en publiceer hier de volgende meting.

_De beelden zijn gemaakt met OCCT 7.6.3 uit de .scad-bronnen van de test; voor de
vier modellen in het eerste blok bouwen de andere twee precies dezelfde vorm._
