Zum Inhalt springen

CAD XML Syntax-Basiselemente: Unterschied zwischen den Versionen

Aus VermCAD Hilfe Wiki
CAD-XML-Syntax-Dokumentation (automatischer Import)
 
Rechtschreibung: Links auf umbenannte Seiten umgestellt
 
Zeile 117: Zeile 117:
| <code>SchraffurHauptkanteAutomatisch</code> || bool || nein || True || Hauptkante automatisch bestimmen (nur geschrieben, wenn False)
| <code>SchraffurHauptkanteAutomatisch</code> || bool || nein || True || Hauptkante automatisch bestimmen (nur geschrieben, wenn False)
|-
|-
| <code>BoeschungsSchraffurStil</code> || ganzzahl (Konfig-ID) || nein || INHERIT || Böschungsschraffurstil — [[CAD-Konfiguration-Boeschungsschraffurstile|CAD-Konfiguration Böschungsschraffurstile]]
| <code>BoeschungsSchraffurStil</code> || ganzzahl (Konfig-ID) || nein || INHERIT || Böschungsschraffurstil — [[CAD-Konfiguration-Böschungsschraffurstile|CAD-Konfiguration Böschungsschraffurstile]]
|-
|-
| <code>ReferenzPunkteInBemassungen</code> || Container || nein || leer || je Eintrag <code>&lt;ReferenzPunkteInBemassungenMember GUID="{…}"/&gt;</code>; Rückreferenz Punkt → Bemaßungen ([[CAD XML Syntax-Objekt VC CADBemassung|Objekt VC_CADBemassung]])
| <code>ReferenzPunkteInBemassungen</code> || Container || nein || leer || je Eintrag <code>&lt;ReferenzPunkteInBemassungenMember GUID="{…}"/&gt;</code>; Rückreferenz Punkt → Bemaßungen ([[CAD XML Syntax-Objekt VC CADBemassung|Objekt VC_CADBemassung]])

Aktuelle Version vom 22. September 2026, 10:57 Uhr

Alle CAD-Objekte erben von der Delphi-Klasse T3DBaseObject einen gemeinsamen Satz von Darstellungs- und Verwaltungselementen (Layer, Farben, Linienstile, Sichtbarkeit …). Diese Basiselemente stehen in jedem Objekt direkt nach dem VermCadID-Block und vor den klassenspezifischen Elementen. Diese Seite listet ALLE Basiselemente in Schreibreihenfolge; die Objektseiten verweisen hierher, statt sie zu wiederholen.

Strukturregel

<VC_CADxxx>
  <VermCadID> … </VermCadID>                    (siehe VermCadID und GUID-Referenzen)
  [<AlkisID>text</AlkisID>]
  [<AlkisCanRender>bool</AlkisCanRender>]       (nur wenn False)
  [<Deleted>bool</Deleted>]
  [<ImPapierkorb>bool</ImPapierkorb>]
  [<Sichtbar>bool</Sichtbar>]                   (nur wenn False)
  [<Name>text</Name>]
  [<Bemerkung>text</Bemerkung>]
  [<Oben>bool</Oben>]
  [<Farbe>ganzzahl</Farbe>]
  [<Fuellfarbe>ganzzahl</Fuellfarbe>]
  [<Alpha>zahl</Alpha>]
  [<Fuellalpha>zahl</Fuellalpha>]
  [<Signaturnummer>text</Signaturnummer>]
  [<VCBerLayerID>ganzzahl</VCBerLayerID>]
  <Layer>ganzzahl</Layer>                       (einziges Pflicht-Basiselement — wird IMMER geschrieben)
  [<LayerErben>bool</LayerErben>]
  [<UseLayerAusSymboldefinition>bool</...>]
  [<Linienstaerke>zahl</Linienstaerke>]
  [<LinienendenFreistellen>ganzzahl</...>]
  [<Liniensymbol>ganzzahl</Liniensymbol>]
  [<Linienmuster>ganzzahl</Linienmuster>]
  [<LineCloseType>ganzzahl</LineCloseType>]
  [<LineDarstellungMessung>ganzzahl</...>]
  [<LineDarstellungMessungMan>bool</...>]
  [<TextStil>ganzzahl</TextStil>]
  [<Textur>ganzzahl</Textur>]
  [<SchraffurStil>ganzzahl</SchraffurStil>]
  [<RissSichtbarkeit> {<RissEintrag_ID>0</RissEintrag_ID>}* </RissSichtbarkeit>]
  [<SchraffurHauptkanteGUID GUID="guid"/>]
  [<SchraffurHauptkanteAutomatisch>bool</...>]  (nur wenn False)
  [<BoeschungsSchraffurStil>ganzzahl</...>]
  [<ReferenzPunkteInBemassungen>
     {<ReferenzPunkteInBemassungenMember GUID="guid"/>}* </...>]
  [<AlkisInitialDataErrors>
     {<AlkisInitialDataError ErrorType="text"><Diff>zahl zahl</Diff></AlkisInitialDataError>}* </...>]
  … klassenspezifische Elemente …
</VC_CADxxx>

Schreibprinzip (write_xn_ + Init-Wert-Unterdrückung)

Ein Element wird nur geschrieben, wenn (1) sein Compile-Time-Schalter write_xn_* (Konstante neben der Tag-Konstante in GlobalConsts.pas) True ist UND (2) der Wert vom Initialwert abweicht (bei Strings zusätzlich Trim ≠ , bei Floats not SameValue). Konsequenzen:

  • Fehlende Elemente bedeuten immer: Defaultwert. Ein Erzeuger schreibt nur Nicht-Default-Werte; ein Reparierer darf fehlende Elemente nicht als Fehler werten.
  • Einzige Ausnahme: Layer wird IMMER geschrieben („Layer muss immer gespeichert werden!").
  • Die Basiselemente werden nur bei CAD-artiger ObjektArt geschrieben (oaCAD, oaAlkisCADRepr, oaVC, oaVCBer, oaVCDeleted).

Elemente

Reihenfolge der Tabelle = Schreibreihenfolge im Code. Werteformate siehe Werte- und Koordinatenformate (Bool = -1/0; Farben = TColor-Integer).

Element Typ/Format Pflicht Default Bedeutung
AlkisID Text (16-stellige GML-ID) nein ALKIS-Objekt-ID der Quelle (bei oaAlkisCADRepr); Legacy-Tag ALKIS_GMLID wird gelesen
AlkisCanRender bool nein True ALKIS-Renderfreigabe (nur geschrieben, wenn False)
Deleted bool nein False als gelöscht markiert; solche Objekte werden nach dem Laden entfernt
ImPapierkorb bool nein False Objekt liegt im Papierkorb
Sichtbar bool nein True Sichtbarkeit (nur geschrieben, wenn False; bei VC_CADVCFlaeche aus dem KoordSystem der Fläche abgeleitet)
Name Text nein Objektname
Bemerkung Text nein Bemerkung
Oben bool nein False „OnTop" rendern
Farbe ganzzahl (TColor) nein INHERIT Linien-/Objektfarbe
Fuellfarbe ganzzahl (TColor) nein INHERIT Füllfarbe
Alpha zahl nein INHERIT Transparenz (NAN wird beim Lesen ignoriert)
Fuellalpha zahl nein INHERIT Füll-Transparenz
Signaturnummer Text nein Signaturnummer
VCBerLayerID ganzzahl nein −1 Layer für Berechnungsobjekte (nur bei gültiger Layer-ID geschrieben)
Layer ganzzahl ja — Layer-ID: Systemlayer negativ (System-ID ≤ −10), Nutzerlayer positiv. Siehe CAD-Folienverwaltung
LayerErben bool nein False Layer vom Parent-Objekt erben
UseLayerAusSymboldefinition bool nein False Layer aus der Punktzuordnung/Symboldefinition (Achtung: Tag-String weicht vom Konstantennamen xn_UseLayerAusPunktzuordnung ab)
Linienstaerke zahl nein INHERIT Linienstärke
LinienendenFreistellen ganzzahl nein INHERIT Freistellung der Linienenden
Liniensymbol ganzzahl (Konfig-ID) nein INHERIT Liniensymbol — CAD-Konfiguration Liniensymbole; Lesen: −1 → NOTHING
Linienmuster ganzzahl (Konfig-ID) nein INHERIT Linienmuster — CAD-Konfiguration Linienmuster
LineCloseType ganzzahl nein INHERIT Linienabschluss-Typ-ID
LineDarstellungMessung ganzzahl nein FROMLAYER Messungs-Darstellungs-ID
LineDarstellungMessungMan bool nein False Messungs-Darstellung manuell gesetzt
TextStil ganzzahl (Konfig-ID) nein INHERIT Textstil — CAD-Konfiguration Textstile; Lesen: −1 → INDIVIDUAL
Textur ganzzahl (Konfig-ID) nein INHERIT Textur — CAD-Konfiguration Texturen
SchraffurStil ganzzahl (Konfig-ID) nein INHERIT Schraffurstil — CAD-Konfiguration Schraffurstile
RissSichtbarkeit Container nein leer je Riss, in dem das Objekt UNSICHTBAR ist, ein Kind RissEintrag_<RissID> mit Wert 0 — siehe Rissdaten an Objekten
SchraffurHauptkanteGUID GUID-Attribut-Element nein — Referenz auf die Kanten-Linie der Schraffur (nur wenn nicht automatisch, GUID gesetzt und Kante existiert)
SchraffurHauptkanteAutomatisch bool nein True Hauptkante automatisch bestimmen (nur geschrieben, wenn False)
BoeschungsSchraffurStil ganzzahl (Konfig-ID) nein INHERIT Böschungsschraffurstil — CAD-Konfiguration Böschungsschraffurstile
ReferenzPunkteInBemassungen Container nein leer je Eintrag <ReferenzPunkteInBemassungenMember GUID="{…}"/>; Rückreferenz Punkt → Bemaßungen (Objekt VC_CADBemassung)
AlkisInitialDataErrors Container nein leer ALKIS-Initialdaten-Fehler: Kinder AlkisInitialDataError mit Attribut ErrorType (belegt: aideBogenMitte) und Kind Diff (Zahlenpaar)

Verankert (bool, Default False) gehört historisch zu den Basis-Tags, wird heute aber von VC_CADPunkt und VC_Hintergrundbild geschrieben — siehe dortige Objektseiten.

Magic-Werte (Markerwerte statt echter Werte)

Stil- und Farbfelder tragen sehr oft keinen echten Wert, sondern einen Markerwert (IntFehlwert = MaxInt−1 = 2147483646):

Konstante Wert Bedeutung
PROPERTY_VALUE_INHERIT 2147483645 Eigenschaft wird vom Layer/Parent geerbt (Init-Default fast aller Stilfelder)
PROPERTY_VALUE_FROMLAYER 2147483644 explizit „vom Layer" — der in echten Dateien dominierende Wert
PROPERTY_VALUE_NOTHING 2147483643 „keins" (z. B. kein Liniensymbol)
PROPERTY_VALUE_INDIVIDUAL 2147483642 individueller Wert (= PROPERTY_VALUE_BG_COLOR)
  • Beobachtete Realwerte: <Farbe>2147483644</Farbe> in praktisch allen Fällen; bei LinienendenFreistellen zusätzlich 2147483641.
  • Legacy-Lesen: alte negative Kodierungen (−1 = „von Layer") werden beim Einlesen über WORKAROUND-Blöcke in diese Konstanten umgesetzt; System-Konfig-IDs (≤ −101, SYSTEM_MIN_CONFIG_ID) bleiben erhalten. Alte Hintergrundfarben werden auf PROPERTY_VALUE_BG_COLOR gemappt.
  • Layer-Sonderfall: der alte Gelöscht-Dummy-Layer (OLD_LID_DELETEDLAYER_OLD_DUMMY) wird beim Lesen auf den aktuellen Gelöscht-Layer umgesetzt.

Beispiele

Beispiel (BW, echt — kompletter Darstellungsblock eines Berechnungs-Hilfspunkts)

<Sichtbar>0</Sichtbar>
<Farbe>2147483644</Farbe>
<Fuellfarbe>2147483644</Fuellfarbe>
<Alpha>2147483644</Alpha>
<Fuellalpha>2147483644</Fuellalpha>
<VCBerLayerID>-3002</VCBerLayerID>
<Layer>-102</Layer>
<LayerErben>-1</LayerErben>
<Linienstaerke>2147483644</Linienstaerke>
<LinienendenFreistellen>2147483644</LinienendenFreistellen>
<Liniensymbol>2147483644</Liniensymbol>
<Linienmuster>2147483644</Linienmuster>
<LineCloseType>2147483644</LineCloseType>
<TextStil>2147483644</TextStil>
<Textur>2147483644</Textur>
<SchraffurStil>2147483644</SchraffurStil>
<BoeschungsSchraffurStil>2147483644</BoeschungsSchraffurStil>

Beispiel (THR, echt — AlkisInitialDataErrors an einem Bogen)

<AlkisInitialDataErrors>
  <AlkisInitialDataError ErrorType="aideBogenMitte">
    <Diff>0 -0.001</Diff>
  </AlkisInitialDataError>
</AlkisInitialDataErrors>

Verfügbarkeit und Besonderheiten

  • Alle Basiselemente sind in allen Bundesland-Versionen identisch.
  • Minimalfall in echten Dateien: nur <Layer> zwischen VermCadID und den Klassen-Elementen (z. B. ALKIS-Repräsentanten).
  • Beobachtete Layer-ID-Bereiche: -100xxx ALKIS-Layer, -1xxx Punktnummern-Layer, -3xxx/-45xx/-5xxx/-6xxx Berechnungs-/Messungslayer, -11 Plotrahmen; positive IDs = Benutzerlayer.
  • Fehlerhafte Einzelwerte beim Lesen werden geloggt, das restliche Objekt wird weitergelesen (Lesemechanik).

Quellen im Code

  • CAD\GLGeometrics.pas:6584-6839 — T3DBaseObject.DataToXMLLite: Schreibreihenfolge und -bedingungen (Layer immer: 6677)
  • CAD\GLGeometrics.pas:6350-6524 — InternalCreateFromXML: Lesen, NAN-Behandlung, Farb-/Layer-Workarounds (6377-6515, 6420-6428)
  • CAD\GLGeometrics.pas:6271-6348 — InternalCreateComplexStructsFromXML: RissSichtbarkeit, SchraffurHauptkanteGUID, ReferenzPunkteInBemassungen, AlkisInitialDataErrors
  • CAD\GLGeometrics.pas:6738-6775, 6802-6823 — RissSichtbarkeit-/ReferenzPunkte-Container
  • CAD\GLConsts.pas:435-444, 473-503 — PROPERTY_VALUE_*, INIT_T3DBASEOBJECT_*
  • VERMCAD\GlobalConsts.pas:156, 357 — SYSTEM_MIN_CONFIG_ID, IntFehlwert
  • VERMCAD\GlobalTypConsts.pas:522-523 — INIT_TOBJBASE_*



[Nach oben]