The aim of BOLTS is to build a free and open-source standard parts library that is not tied to a specific CAD application. For this reason all the data necessary to make the parts available is structured in a certain way: There is backend independent data and backend specific data, where backend refers to the different CAD applications (for now FreeCAD and OpenSCAD). By making this separation, if a part is available in one CAD application, the only thing that is required to make it available in another one is to add the necessary backend specific data.
Sehr häufig gibt es mehrere ähnliche oder gar identische Standards für ein Teil, die von verschiedenen Standardisierungsorganen herausgegeben wurden. Aus diesem Grund bietet BOLTS das Konzept einer Klasse von Teilen, wobei eine Klasse mehrere identische Standards beschreiben kann. Um eine Klasse zu spezifizieren, muss man die Informationen über die verschiedenen Abmessungen der Teile, Tabllen mit deren Werten, eine Beschreibung, die Standards, die diese Klasse abdeckt, Zeichnungen und ähnliches spezifizieren. Im Gegensatz dazu wird die Geometrie des Teils für verschiedene CAD Programme auf unterschiedliche Art und Weise beschrieben und gehört daher zu den backendspezifischen Daten.
BOLTS hat noch eine weitere Organisationsebene, die Kollektion. Eine Kollektion enthält mehrere Klassen, damit ähnliche, aber nicht identische Klassen zusammen gruppiert werden können. Die Informationen über die Klassen einer Kollektion sind in einer blt Datei abgelegt.
There is also data required to create a 3D representation of a part in a CAD tool. For OpenSCAD we use a module definition in a scad file, for FreeCAD a python function. These are also called base modules or base functions, or base geometries when referring to any of them. Together with a base file containing metadata this forms the backend specific data.
Sehr häufig können mehrere Klassen die gleiche Basisgeometrie verwenden. Zum Beispiel kennt BOLTS etwa 18 Standards für Unterlagsscheiben. Diese werden von 5 unterschiedlichen Klassen abgedeckt, die lediglich 2 verschiedene Basisgeometrien benötigen.
Ein Bild sagt mehr als tausend Worte. Die zwei Blöcke auf der linken Seite (Standards und Klassen) sind backendunabhängig. Der backendspezifische Teil umfasst lediglich 2 Basisgeometrien für jedes Programm:
Um nochmal zusammenzufassen: