Zum Inhalt

Konstruktionsdetail

Prosa-Definition

Ein Konstruktionsdetail ist ein Aggregat aus einer räumlich abgegrenzten Ausschnittsregion an einem Knotenpunkt eines Tragwerks und den in dieser Region inzidenten Bauteilen, Verbindungen, Auflagern und Bearbeitungen, das eine eigene technische Identität trägt und die plan- und werkstattorientierte Repräsentation des Knotenpunkts bündelt, ohne selbst eine verbaute Sache, eine Bemessungs-Einheit oder eine Stützungs-Idealisierung zu sein.

Mathematische Definition

Sei

  • W das Weltkoordinatensystem (siehe hg_weltkoordinatensystem.md),
  • 𝒰 der UUID-Raum nach hg_uuid.md,
  • 𝓑 die Menge der Bauteile nach hg_bauteil.md,
  • 𝓥 die Menge der Verbindungen nach hg_verbindung.md,
  • 𝓐 die Menge der Auflager nach hg_auflager.md,
  • 𝓟 die Menge der Bearbeitungen nach hg_bearbeitung.md,
  • 𝓡 die Menge der Ausschnittsregionen in W: nicht-leere, beschränkte, einfach zusammenhängende Teilmengen R ⊂ ℝ³ mit endlichem Volumen, repräsentiert durch einen achsenparallelen Hüllquader, einen orientierten Hüllquader oder ein allgemeines Polyeder (konkrete Repräsentation Folgearbeit; im aktuellen Glossarstand reicht „beschränkter Bereich um den Knotenpunkt"),
  • p ∈ ℝ³ ein Knoten-Bezugspunkt in W (optional, Anker der Ausschnittsregion).

Dann ist ein Konstruktionsdetail das Tupel

K := (uuid, ausschnitt, knotenpunkt, beteiligte_bauteile,
      beteiligte_verbindungen, beteiligte_auflager,
      beteiligte_bearbeitungen, traegertragwerk, bezeichnung)

mit den Komponenten

  • uuid ∈ 𝒰: technische Identität des Konstruktionsdetails als Aggregat,
  • ausschnitt ∈ 𝓡: räumliche Ausschnittsregion in W,
  • knotenpunkt ∈ ℝ³ ∪ {⊥}: optionaler Knoten-Bezugspunkt in W (typisch geometrischer Schwerpunkt der Bauteil-Treffen in der Region),
  • beteiligte_bauteile ⊂ 𝒰: UUIDs der in ausschnitt inzidenten Bauteile, |beteiligte_bauteile| ≥ 1,
  • beteiligte_verbindungen ⊂ 𝒰: UUIDs der in ausschnitt inzidenten Verbindungen, |beteiligte_verbindungen| ≥ 0,
  • beteiligte_auflager ⊂ 𝒰: UUIDs der in ausschnitt inzidenten Auflager, |beteiligte_auflager| ≥ 0,
  • beteiligte_bearbeitungen ⊂ 𝒰: UUIDs der an den beteiligten Bauteilen sitzenden Bearbeitungen, deren geometrische Manifestation in ausschnitt liegt, |beteiligte_bearbeitungen| ≥ 0,
  • traegertragwerk ∈ 𝒰: UUID des Tragwerks, auf dem das Konstruktionsdetail eine Sicht bildet (siehe hg_tragwerk.md),
  • bezeichnung ∈ String ∪ {⊥}: optionaler Anzeigename, idealerweise nach der Grammatik [Bauteilrolle]<Anschluss-Topologie>-Detail (Erläuterungs-Block).

Konsistenzbedingungen

(K1) Nicht-Leere am Knotenpunkt: |beteiligte_bauteile| ≥ 1, und falls |beteiligte_bauteile| = 1 gilt zusätzlich |beteiligte_verbindungen| + |beteiligte_auflager| + |beteiligte_bearbeitungen| ≥ 1. Ein Konstruktionsdetail, das nur ein Bauteil ohne Verbindung, Auflager oder Bearbeitung zeigt, hat keinen plan- oder werkstattrelevanten Inhalt und ist unzulässig.

(K2) Inzidenz mit der Ausschnittsregion:

  • Für jedes b ∈ beteiligte_bauteile schneidet die geometrische Punktmenge G_W(b) des Bauteils die Ausschnittsregion: G_W(b) ∩ ausschnitt ≠ ∅.
  • Für jede v ∈ beteiligte_verbindungen gilt: mindestens ein Bauteil der Verbindung ist in beteiligte_bauteile enthalten und die Knotenposition der Verbindung (oder ein Repräsentationspunkt) liegt in ausschnitt (Toleranz LAENGE_EPS).
  • Für jedes a ∈ beteiligte_auflager gilt: das gestützte Bauteil ist in beteiligte_bauteile enthalten und die geometrische Manifestation des Auflagers liegt in ausschnitt (Toleranz LAENGE_EPS).
  • Für jede p ∈ beteiligte_bearbeitungen gilt: das Träger-Bauteil von p ist in beteiligte_bauteile enthalten und die geometrische Manifestation von p liegt in ausschnitt.

(K3) Tragwerks-Konsistenz: alle in beteiligte_bauteile, beteiligte_verbindungen und beteiligte_auflager referenzierten UUIDs sind Mitglieder bzw. Bestandteile des Tragwerks traegertragwerk im Sinne von hg_tragwerk.md (B, V, A).

(K4) Knotenpunkt-Verträglichkeit: falls knotenpunkt ≠ ⊥, gilt knotenpunkt ∈ ausschnitt (Toleranz LAENGE_EPS).

(K5) Toleranz-gestützte Identität: zwei Konstruktionsdetails k₁ ≠ k₂ am selben Tragwerk dürfen identische Ausschnittsregionen und identische Mitgliedsmengen tragen nur, wenn sie sich in der Bezeichnung oder im optionalen Knotenpunkt unterscheiden; eine triviale Duplizierung (gleiche Region und gleiche Mengen und gleicher Knotenpunkt und gleiche Bezeichnung) ist unzulässig.

(K6) Nicht-Exklusivität der Mitgliedschaft (im Gegensatz zur Bauteilgruppe): ein Bauteil b ∈ 𝓑 darf in mehreren Konstruktionsdetails als beteiligtes Bauteil auftreten (typisch Sparren im Sparrenfußdetail + Mittelpfettendetail + Firstdetail). Die Mitgliedschaft ist nicht Lebenszyklus-bindend; das Entfernen eines Konstruktionsdetails löscht weder seine Bauteile noch seine Verbindungen, Auflager oder Bearbeitungen.

Wohldefiniertheit

  • Existenz. Für jeden konstruktiv relevanten Knotenpunkt eines Tragwerks lässt sich das obige Tupel erfassen. Mindestkonfiguration: ein Sparrenfußdetail am Auflager auf der Fußpfette mit beteiligte_bauteile = {sparren_uuid, fusspfette_uuid}, beteiligte_verbindungen = {sparren_pfette_verbindung_uuid}, beteiligte_auflager = {sparrenfuss_auflager_uuid}, beteiligte_bearbeitungen = {sparrenfuss_kerve_uuid}, ausschnitt = achsenparalleler Hüllquader um den Knoten, knotenpunkt = Schwerpunkt der Kerv-Sohle, traegertragwerk = dachtragwerk_uuid.

  • Eindeutigkeit der Identität. Die UUID des Konstruktionsdetails ist unabhängig von den UUIDs seiner Mitglieder und unabhängig vom Tragwerk; sie wird einmalig vergeben (RFC 9562 v7) und ist persistent. K5 schließt triviale Duplikate aus.

  • Nicht-Exklusivität der Mitgliedschaft (K6). Im Unterschied zur Bauteilgruppe ist das Konstruktionsdetail keine partitive Komposition mit kaskadischem Lebenszyklus. Mehrere Konstruktionsdetails am selben Tragwerk dürfen identische Mitglieder haben (typisch: derselbe Sparren erscheint in Sparrenfußdetail, Mittelpfettendetail und Firstdetail desselben Sparrendachs). Daraus folgt: das Entfernen eines Konstruktionsdetails wirkt nicht auf seine Mitglieder; das Entfernen eines Bauteils, das Mitglied eines Konstruktionsdetails ist, erfordert vorherige Bereinigung der Mitgliedsbeziehung im Detail.

  • Ausschnittsfreiheit als bewusste Modellierungsentscheidung. Die Ausschnittsregion ausschnitt ist nicht aus den Mitgliedern abgeleitet, sondern eine eigenständige Komponente des Tupels. Damit trägt das Konstruktionsdetail die Plan-/Modellierungs-Entscheidung „wie weit reicht der Ausschnitt" explizit, statt sie versteckt über die Auswahl der Mitglieder zu führen. Konsequenz: zwei Konstruktionsdetails am selben Knotenpunkt dürfen sich in ausschnitt (kleinerer/größerer Hüllquader) unterscheiden und unterschiedliche Mitgliedsmengen tragen, ohne dass eine der beiden Modellierungen falsch wäre.

  • Wohldefiniertheit der Inzidenz (K2). Die Inzidenz „G_W(b) ∩ ausschnitt ≠ ∅" hängt von der geometrischen Repräsentation des Bauteil-Polyeders ab; sie ist invariant unter zulässigen Repräsentanten-Wahlen (siehe hg_bauteilkoerper.md). Die Toleranz LAENGE_EPS in K2 fängt den numerischen Randfall ab, in dem ein Bauteil die Ausschnittsregions-Grenze tangential berührt.

  • Aggregat, kein Element. Das Konstruktionsdetail ist nicht Subtyp von element (siehe hg_element.md); es ist ein Aggregat-Begriff mit eigener UUID, das Sichten auf Element-Instanzen bündelt. 𝒦 ∩ 𝓔 = ∅, analog zur Verbindung und zum Auflager.

  • Foreign-Key-Regel. Alle Mitglieds-Felder (beteiligte_bauteile, beteiligte_verbindungen, beteiligte_auflager, beteiligte_bearbeitungen, traegertragwerk) referenzieren ausschließlich UUIDs (Memory project_bauteil_identifikation).

  • Ausschnittsregion-Repräsentanten. Verschiedene Repräsentationen desselben geometrischen Bereichs (achsenparalleler Hüllquader vs. beliebiges Polyeder) führen auf semantisch dieselbe Inzidenz- Klassifikation, sofern der dargestellte Bereich gleich ist. Die Wahl der Repräsentation ist Implementierungs-Entscheidung; die Definition bleibt invariant.

  • Nicht-Zirkularität. Die Definition stützt sich auf die bereits definierten Begriffe bauteil, verbindung, auflager, bearbeitung, verbindungsmittel, verbinder, uuid, punkt, weltkoordinatensystem, toleranzen sowie auf tragwerk als Träger-Aggregat. Sie verweist auf bauteilgruppe, kerve, bauwerk ausschließlich abgrenzend (abgrenzung_zu).

Erläuterung (nicht normativ)

Drei-Sichten-Bild am gemeinsamen Knotenpunkt

            am selben Knotenpunkt
                    |
        ┌───────────┼───────────┐
        v           v           v
   Verbindung   Auflager   Konstruktionsdetail
   (Bemessung) (Tragwerk)  (Werkplan / Werkstatt)
    EC5 K. 8     EC5 K. 5         (App-Lesart II)
   IfcRel...    IfcStruct...      IfcGroup

Die drei App-Aggregate koexistieren an derselben physischen Stelle in W und beschreiben denselben Bauteil-Treffen aus drei unterschiedlichen Sichten. Die Drei-Sichten-Trennung ist App-Synthese, nicht Korpus-Ergebnis (siehe Quellenkonflikt-Block): die Norm-Quellen sprechen meist nur von einer Schicht (EC5 vom Anschluss, SIA 260 vom Auflager), die CAD-Praxis verwischt sie. Das Sach-Modell der App trennt sie, weil sie in unterschiedlichen Bemessungs- und Plan-Schichten benutzt werden und unterschiedliche Informationen tragen.

Sicht Trägt Wer nutzt sie
Verbindung Bauteile, Verbindungsmittel, Verbinder, Verstärkungen, Nachweisverfahren Bemessungs-Schicht, IFC-Export als IfcRelConnectsElements
Auflager Manifestation, Wertigkeit, Lagerungsart, gestützt-durch Tragwerks-Schicht, IFC-Export als IfcStructuralConnection
Konstruktionsdetail Ausschnittsregion, beteiligte Bauteile/Verbindungen/Auflager/Bearbeitungen Werkplan-Schicht, IFC-Export als IfcGroup

Werkplan-Bezeichnungs-Grammatik

Im DACH-Holzbau-Korpus folgen die Bezeichnungen von Konstruktions- details einer impliziten Grammatik

[Bauteilrolle]<Anschluss-Topologie>-Detail

mit den im Korpus etablierten Werten:

Bezeichnung Topologie Beteiligte Bauteilrollen (typisch)
Sparrenfußdetail Fuß-Anschluss Sparren + Fußpfette/Mauerlatte
Mittelpfettendetail Mittel-Auflager Sparren + Mittelpfette
Firstdetail First-Anschluss Sparren + Sparren bzw. Sparren + Firstpfette
Pfettenstoßdetail Längs-Stoss Pfette + Pfette (gleiche Rolle)
Traufdetail Trauf-Anschluss Sparren + Fußpfette + ggf. Aufschiebling + Traufgesims
Ortgangdetail Ortgang-Anschluss Sparren + Ortgangbohle + ggf. Windrispe
Sockeldetail Sockel-Anschluss Schwelle + Fundament
Eckdetail Ecke (innen/außen) Wand + Wand bzw. Bauteilrolle + Bauteilrolle

Diese Grammatik ist nicht normativ (keine Norm kodifiziert sie), aber im DACH-Korpus weitgehend konsistent. Die App verwendet sie als Empfehlung für das optionale bezeichnung-Feld und für die Detail-Adressierung im späteren Werkplan-Modul. Cross-Hersteller (Cadwork, Dietrich's, SEMA) gibt es kein einheitliches Schema für Detail-Nummern oder Detail-Adressen; die App führt eine eigene Detail-Adressierung als Folgearbeit.

Anwendungsbeispiel: Sparrenfußdetail

Am Sparrenfuß-auf-Fußpfette-Punkt eines Pfettendachs koexistieren gleichzeitig:

  • die Verbindung mit Schraubengruppe (Verbindung mit typ = Anschluss, Bauteile = {Sparren, Fußpfette}, Verbindungsmittel = {sparren_pfette_schrauben}, Nachweisverfahren = Johansen);
  • das Auflager des Sparrens auf der Fußpfette (Auflager mit manifestation = Polygon der Kerv-Sohle, gestuetztesBauteil = Sparren, gestuetztDurch = Fußpfette, wertigkeit = (fest, fest, fest, frei, frei, frei), lagerungsart = direkt);
  • das Konstruktionsdetail „Sparrenfußdetail" (dieser Eintrag) mit beteiligte_bauteile = {Sparren, Fußpfette}, beteiligte_verbindungen = {sparren_pfette_verbindung}, beteiligte_auflager = {sparrenfuss_auflager}, beteiligte_bearbeitungen = {sparrenfuss_kerve} und einer Ausschnittsregion, die den Sparrenfuß-Bereich umschließt.

Wird der Sparrenfuß im Werkplan dokumentiert, ist das Konstruktionsdetail das adressierbare Aggregat; Verbindung und Auflager werden über die UUID-Verweise im Detail mit-erschlossen.

Wann ist Konstruktionsdetail nicht das richtige Aggregat?

  • Eine lokale konstruktive Funktionseinheit mit eigener Geometrie und exklusiver Mitgliedschaft (Lukarne, Auswechslung, vorgefertigtes Wandelement) ist eine Bauteilgruppe (hg_bauteilgruppe.md), kein Konstruktionsdetail. Die Bauteilgruppe ist partitiv mit kaskadischem Lebenszyklus; das Konstruktionsdetail ist nicht-exklusiv und nicht Lebenszyklus-bindend.
  • Eine Detailzeichnung im Sinne von DIN 1356-1 (Plan-Artefakt, Maßstabsklasse 1:20 bis 1:1) ist ein Plan-Objekt in der Visualisierungs-/Plan-Schicht, kein Sach-Aggregat im Domänen-Modell. Das Konstruktionsdetail ist das, was die Detailzeichnung darstellt — nicht die Zeichnung selbst.
  • Ein Detail-Katalog-Eintrag (Regeldetail, Standarddetail, Leitdetail) ist eine Typ-Vorlage mit fester Maßkette und Ausführungsregeln; sie wird im konkreten Bauwerk als Konstruktionsdetail-Instanz realisiert. Die Typ-Lesart (Lesart III) ist Folgearbeit als Detail-Katalog-Funktion auf Wieder-Verwendung von Konstruktionsdetail-Instanzen.

IFC-Mapping

Aspekt IFC 4.3 Pendant
Konstruktionsdetail als Aggregat IfcGroup mit eigener GlobalId, Subtyp von IfcObjectDefinition
Mitgliedschaft (Bauteile/Verbindungen/Auflager) IfcRelAggregates oder IfcRelAssignsToGroup (nicht-exklusiv)
Optionale Element-Komposit-Variante IfcElementAssembly (Subtyp von IfcElement); nur teilweise passend (Element-Charakter zu streng, exklusive Mitgliedschaft)
Plan-Artefakt-Pendant (Lesart I) IfcAnnotation, IfcDocumentReference, 2D-Darstellungs-Schicht — nicht Gegenstand dieses Eintrags
Detail-Katalog (Lesart III) kein IFC-Pendant; App-eigene Folgearbeit

Die App-Default-Wahl IfcGroup ist konsistent mit der Default-Wahl in hg_verbindung.md. IfcElementAssembly ist nur dann sinnvoll, wenn das Konstruktionsdetail als vorgefertigte Bauteilgruppe (Sparren-Pfetten-Paar als Aufbau-Einheit aus dem Werk) geführt wird — in diesem Fall verschiebt sich der Charakter zur Bauteilgruppe (hg_bauteilgruppe.md), und das Konstruktionsdetail als Werkplan-Sicht bleibt orthogonal.

Folgearbeit

  • Detail-Adressierungs-Schema im Werkplan-Modul (Detail-Nummer, Detail-Kreis im Übersichtsplan, Pfeil-Verweise) — Trigger: erstes Tool, das Werkplaene erzeugt. Nicht Teil dieses Eintrags.
  • Detail-Katalog-Funktion (Lesart III) als optionaler Aufsatz auf Konstruktionsdetail-Instanzen, mit Typ-Vorlage und Wiederverwendung — Trigger: erste Wiederverwendungs-Operation an Detail-Instanzen.
  • Sub-Spezialisierungen wie sparrenfuss_detail, firstdetail, pfettenstoss_detail, traufdetail, ortgangdetail — Trigger: erstes Tool, das einen dieser Typen als eigenen Sub-Aggregat-Typ mit eigenen Constraints benötigt.

Beziehungen

  • Oberbegriff: derzeit null (analog verbindung, auflager, bauteilgruppe, tragwerk). Ein gemeinsamer abstrakter Oberbegriff für „Aggregat über Element-Instanzen" ist derzeit nicht geplant — die strukturellen Unterschiede zwischen Verbindung (Bemessung), Auflager (Tragwerk), Konstruktionsdetail (Werkplan) und Bauteilgruppe (Komposition) sind zu groß.
  • Bestandteile (referenziell, nicht partitiv):
  • Ausschnittsregion (Hüllquader / Polyeder in W).
  • Beteiligte Bauteile (UUID-Menge auf bauteil).
  • Beteiligte Verbindungen (UUID-Menge auf verbindung).
  • Beteiligte Auflager (UUID-Menge auf auflager).
  • Beteiligte Bearbeitungen (UUID-Menge auf bearbeitung).
  • Träger-Tragwerk (UUID auf tragwerk).
  • Spezialisierungen (Folgearbeit, trigger-basiert):
  • sparrenfuss_detail — Sparren-Fußpfetten-Anschluss.
  • mittelpfetten_detail — Sparren-Mittelpfetten-Anschluss.
  • firstdetail — Sparren-Sparren- bzw. Sparren-Firstpfetten- Anschluss am First.
  • pfettenstoss_detail — Längs-Stoss zweier Pfettenabschnitte.
  • traufdetail — Trauf-Anschluss mit Sparrenfuß, Fußpfette, Aufschiebling, Traufgesims.
  • ortgangdetail — Dachrand quer zur Traufe.
  • Verwendung:
  • Sicht auf ein Tragwerk (tragwerk): das Träger-Tragwerk wird über traegertragwerk referenziert; das Konstruktions- detail bildet keinen eigenen Tragwerks-Eintrag.
  • Adressier-Einheit im Werkplan (Folgearbeit): die UUID des Konstruktionsdetails ist die persistente Adresse für Detail-Verweise in Übersichtsplänen.
  • Abgrenzung:
  • Verbindung (verbindung): Bemessungs-Sicht am Knotenpunkt. Verbindung und Konstruktionsdetail koexistieren am selben Knotenpunkt; das Detail referenziert die Verbindung in beteiligte_verbindungen. Beide sind unterschiedliche Aggregate mit eigener UUID.
  • Auflager (auflager): Tragwerks-Sicht am Knotenpunkt. Auflager und Konstruktionsdetail koexistieren am selben Knotenpunkt; das Detail referenziert das Auflager in beteiligte_auflager, falls am Knoten ein Auflager liegt. Ein Konstruktionsdetail kann ohne Auflager-Bezug auftreten (Pfettenstoßdetail im freien Feld).
  • Bauteilgruppe (bauteilgruppe): partitive Komposition mit exklusiver Mitgliedschaft und kaskadischem Lebenszyklus. Das Konstruktionsdetail ist nicht-exklusiv und nicht Lebenszyklus-bindend; ein Bauteil kann gleichzeitig Mitglied einer Bauteilgruppe (z. B. Auswechslung) und beteiligtes Bauteil in mehreren Konstruktionsdetails sein.
  • Kerve (kerve): partitive Bearbeitung am Sparren-Polyeder (Bauteil-gekoppelt). Die Kerve ist typisch beteiligte Bearbeitung eines Sparrenfußdetails, aber das Konstruktions- detail ist nicht die Kerve: das Detail trägt zusätzlich Bauteile, Verbindung, Auflager und Ausschnittsregion.
  • Bearbeitung (bearbeitung): allgemeiner Oberbegriff der Kerve. Bearbeitungen sind partitiv, Konstruktionsdetail ist Aggregat-Sicht; das Detail referenziert seine beteiligten Bearbeitungen, ist aber selbst keine Bearbeitung.
  • Tragwerk (tragwerk): übergeordnete bauteilbezogene Realität. Das Konstruktionsdetail bildet eine lokale Sicht auf das Tragwerk; es ist Bestandteil keiner der Tragwerks-Tupel-Komponenten (B, V, A, L). Das Tragwerk wird über traegertragwerk referenziert.
  • Bauteil (bauteil): ein Konstruktionsdetail ist kein Bauteil, sondern Aggregat-Sicht über Bauteilen, Verbindungen, Auflagern und Bearbeitungen.
  • Bauwerk (bauwerk): ein Konstruktionsdetail gehört transitiv zum Bauwerk, das das traegertragwerk enthält. Die Beziehung ist nicht direkt modelliert.

Implementierungshinweis

Im aktuellen Glossarstand wird ausdrücklich keine Code-Klasse Konstruktionsdetail angelegt (analog hg_bauteilgruppe.md: die ontologische Vorbereitung lebt zunächst nur im Glossar). Die Code-Klasse entsteht zusammen mit dem ersten Werkplan-Tool, das Detail-Adressierung tatsächlich benötigt. Der folgende Skizzen-Code ist orientierender Implementierungs-Hinweis für diesen Zeitpunkt.

// SKIZZE — nicht jetzt anlegen.
// Glossar: hg_konstruktionsdetail.md

package domain.aggregat.konstruktionsdetail

import domain.geometrie.Punkt
import java.util.UUID

/** Ausschnittsregion in W: achsenparalleler Hüllquader oder Polyeder. */
sealed interface Ausschnittsregion {
    data class HuellquaderAchsenparallel(
        val min: Punkt,
        val max: Punkt
    ) : Ausschnittsregion
    // Spätere Varianten: HuellquaderOrientiert, Polyederbegrenzt.
}

/**
 * Konstruktionsdetail: Aggregat-Sicht über einer räumlich
 * abgegrenzten Ausschnittsregion an einem Knotenpunkt eines
 * Tragwerks, das die dort beteiligten Bauteile, Verbindungen,
 * Auflager und Bearbeitungen für die plan- und werkstatt-
 * orientierte Repräsentation bündelt.
 *
 * Glossar: hg_konstruktionsdetail.md
 *
 * NICHT Subtyp von Element. Eigene Aggregat-Klasse, analog
 * Verbindung, Auflager und Tragwerk. Mitgliedschaft nicht-exklusiv
 * (anders als Bauteilgruppe).
 *
 * IFC: IfcGroup mit IfcRelAggregates/IfcRelAssignsToGroup
 *      (Default); IfcElementAssembly nur bei vorgefertigter
 *      Aufbau-Einheit (siehe Erläuterungs-Block).
 * BTLx: keine eigene Entität; manifestiert sich implizit über
 *       beteiligte Parts und Processings.
 */
data class Konstruktionsdetail(
    val uuid: UUID,                                       // eigene Identität
    val ausschnitt: Ausschnittsregion,                    // räumliche Region in W
    val knotenpunkt: Punkt? = null,                       // optionaler Bezugspunkt
    val beteiligteBauteile: Set<UUID>,                    // FK auf Bauteile, |...| >= 1
    val beteiligteVerbindungen: Set<UUID> = emptySet(),   // FK auf Verbindungen
    val beteiligteAuflager: Set<UUID> = emptySet(),       // FK auf Auflager
    val beteiligteBearbeitungen: Set<UUID> = emptySet(),  // FK auf Bearbeitungen
    val traegertragwerk: UUID,                            // FK auf Tragwerk
    val bezeichnung: String? = null
) {
    init {
        // K1. Nicht-Leere am Knotenpunkt              → Entartet.LeeresDetail
        // K2. Inzidenz mit ausschnitt (Modell-Lookup) → Entartet.MitgliedNichtInAusschnitt
        // K3. Tragwerks-Konsistenz (Modell-Lookup)    → Entartet.MitgliedNichtImTragwerk
        // K4. knotenpunkt in ausschnitt              → Entartet.KnotenpunktAusserhalb
        // K5. Keine triviale Duplizierung            → Entartet.TrivialeDuplizierung
        // K6. Nicht-Exklusivität ist Default        — keine Prüfung nötig
    }
}
  • Einheit: Längen in mm (Double); geometrische Träger im W-System.
  • Identität: uuid ist Pflicht und eigenständig (eigene UUID des Aggregats, RFC 9562 v7, persistent). Externe Verweise auf das Konstruktionsdetail gehen ausschließlich auf diese UUID.
  • Foreign-Key-Regel: alle Mitglieds-Felder (Bauteile, Verbindungen, Auflager, Bearbeitungen, Tragwerk) referenzieren ausschließlich UUIDs (Memory project_bauteil_identifikation).
  • Invarianten (in einer Modell-bezogenen Fabrikfunktion Konstruktionsdetail.bilde(modell: Modell, …) geprüft; bei Verletzung Resultat.Fehler, niemals Exception):
  • K1 — Nicht-Leere → Entartet.LeeresDetail.
  • K2 — Inzidenz aller Mitglieder mit ausschnitt im Toleranzbereich Toleranzen.LAENGE_EPS → sonst Entartet.MitgliedNichtInAusschnitt.
  • K3 — alle Mitglieder gehören zum Träger-Tragwerk → sonst Entartet.MitgliedNichtImTragwerk.
  • K4 — knotenpunkt ∈ ausschnitt (Toleranz LAENGE_EPS) → sonst Entartet.KnotenpunktAusserhalb.
  • K5 — keine triviale Duplizierung mit anderem Detail am selben Tragwerk → sonst Entartet.TrivialeDuplizierung.
  • Toleranz-Anwendung (siehe hg_toleranzen.md §4):
  • Inzidenz-Tests (K2, K4): LAENGE_EPS auf Punkt-/Polygon-Abständen.
  • Edge Cases:
  • Konstruktionsdetail mit einem Bauteil und einer Bearbeitung (z. B. „Zapfendetail" zur Dokumentation einer isolierten Bearbeitung): zulässig nach K1.
  • Konstruktionsdetail ohne Auflager (z. B. „Pfettenstoßdetail" im freien Feld eines durchlaufenden Trägers): beteiligteAuflager = emptySet() zulässig.
  • Konstruktionsdetail mit nur einem Bauteil und ohne weitere Mitglieder: nicht zulässig (K1) — kein plan- oder werkstattrelevanter Inhalt.
  • Mehrfach-Mitgliedschaft eines Bauteils: zulässig (K6) — derselbe Sparren in Sparrenfußdetail + Mittelpfettendetail + Firstdetail.
  • Verschachtelte Konstruktionsdetails (Detail im Detail): derzeit nicht modelliert; bei Bedarf als Folgearbeit über eine untergeordnete_details-Komponente.
  • Konstruktionsdetail über Tragwerks-Grenzen hinweg: nicht zulässig — ein Detail bezieht sich auf genau ein Tragwerk (K3, traegertragwerk als Pflichtfeld).
  • IFC-Export-Mapping:
  • Default: IfcGroup mit eigener GlobalId, plus IfcRelAggregates (oder IfcRelAssignsToGroup) als Mitgliedschafts-Beziehung zu den Bauteilen, Verbindungen, Auflagern und Bearbeitungen.
  • Optional (bei vorgefertigter Aufbau-Einheit): IfcElementAssembly mit PredefinedType = USERDEFINED und benamtem ElementType — verschiebt aber den Charakter zur Bauteilgruppe (siehe hg_bauteilgruppe.md).
  • Plan-Artefakt (Lesart I): wird separat über IfcAnnotation/IfcDocumentReference der Plan-Schicht abgebildet; nicht Gegenstand dieses Mappings.
  • BTLx-Export: keine eigene Entität. Das Konstruktionsdetail wird beim BTLx-Export nicht ausgegeben; optional kann es als UserAttribute (DetailGuid) an den beteiligten Parts vermerkt werden.
  • Abgeleitete Eigenschaften (als Funktionen, keine Felder):
  • geometrieInWelt(modell: Modell): GeometrieInW — Vereinigung der Bauteil-Punktmengen, geschnitten mit ausschnitt.
  • boundingBox(): AABB — achsenparalleler Hüllquader der Ausschnittsregion in W.
  • enthaeltBauteil(b: UUID): Booleanb ∈ beteiligteBauteile.
  • werkplanBezeichnung(): String — abgeleitete Bezeichnung nach der Grammatik [Bauteilrolle]<Anschluss-Topologie>-Detail (Folgearbeit).
  • Bezeichner-Konvention (siehe docs/_CODE_KONVENTIONEN.md): Domänen-Klasse heißt Konstruktionsdetail (deutsch, Glossarbegriff). Synonyme Detail, Anschlussdetail, Knotendetail werden im Code nicht als eigene Klassen geführt, sondern erscheinen ausschließlich als KDoc-Stichworte zu Konstruktionsdetail.

Quellen

Primär (normativ):

  • ISO 16739-1:2024, „Industry Foundation Classes (IFC) for data sharing in the construction and facility management industries – Part 1: Data schema" (IFC 4.3.2.0), Entitäten IfcGroup, IfcRelAggregates, IfcRelAssignsToGroup, IfcElementAssembly.
  • DIN 1356-1:2024-04, „Bauzeichnungen – Teil 1: Grundregeln der Darstellung" (Detailzeichnung als Maßstabsklasse).
  • DIN EN 1995-1-1:2010-12, „Eurocode 5: Bemessung und Konstruktion von Holzbauten – Teil 1-1", Abschnitt 1.5 und Kapitel 8.
  • SIA 265:2021, „Holzbau", Abschnitt 5 „Konstruktive Durchbildung".
  • DIN 1052:2008-12, „Entwurf, Berechnung und Bemessung von Holzbauwerken", Abschnitt 3.

Sekundär:

  • Holzbau-Handbuch, Reihe 1, Teil 7, Folge 2 „Anschlüsse im Hallenbau", Informationsdienst Holz.
  • Mönck, W.; Rug, W.: Holzbau – Bemessung und Konstruktion.
  • Aufl., Beuth, Berlin 2015, Kap. 11.
  • Natterer, J.; Herzog, T.; Volz, M.: Holzbau-Atlas. 4. Aufl., Birkhäuser, Basel 2003.
  • Blass, H. J.; Sandhaas, C.: Ingenieurholzbau – Grundlagen der Bemessung. KIT Scientific Publishing, Karlsruhe 2016.
  • Gerner, M.: Fachwerk – Instandsetzung, Sanierung, Neubau. DVA, 7. Aufl. 2007.
  • Holzbau Deutschland-Institut: Regeldetailkatalog – Planungs- hilfen für Außenwandbekleidungen aus Holz.
  • Lignum: Bauteilkatalog (Brandschutz, Schallschutz), Lignum, Zürich.
  • KLH: Detailkatalog (Brettsperrholz, CAD-Detailkatalog 2020).

Korpus (nicht autoritativ):

  • Cadwork-Hersteller-Dokumentation, cadwork.de — CAD-Praxis „Detail" als Plan-Modul.
  • Dietrich's-Forum, forum.dietrichs.com.
  • SEMA-Forum, sema-soft.net.
  • baubeaver.de, Lemma „Pfetten", „Sparrenfuß".
  • harzerstatik.de, „Variante - Dachdetails - First".
  • Wikipedia, Lemmata „Detail (Bauwesen)" (abgerufen 2026-05-14).
  • Recherche-Bericht: docs/recherche/2026-05-14_hg_konstruktionsdetail.md.

Quelle herunterladen

MarkdownPlain TextBibTeX