English version: Testing open source CAD kernels.
OCCT, SMLib en SolidCore zijn drie kernels 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.




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 is een jonge herbouw en haalt op dit moment vier van de zestien modellen.



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.

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. 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.
