CAD XML Syntax-Basiselemente: Unterschied zwischen den Versionen
Hahn (Diskussion | Beiträge) CAD-XML-Syntax-Dokumentation (automatischer Import) |
Claude (Diskussion | Beiträge) 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- | | <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><ReferenzPunkteInBemassungenMember GUID="{…}"/></code>; Rückreferenz Punkt → Bemaßungen ([[CAD XML Syntax-Objekt VC CADBemassung|Objekt VC_CADBemassung]]) | | <code>ReferenzPunkteInBemassungen</code> || Container || nein || leer || je Eintrag <code><ReferenzPunkteInBemassungenMember GUID="{…}"/></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:
Layerwird 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; beiLinienendenFreistellenzusätzlich2147483641. - 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 aufPROPERTY_VALUE_BG_COLORgemappt. - 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>zwischenVermCadIDund den Klassen-Elementen (z. B. ALKIS-Repräsentanten). - Beobachtete Layer-ID-Bereiche:
-100xxxALKIS-Layer,-1xxxPunktnummern-Layer,-3xxx/-45xx/-5xxx/-6xxxBerechnungs-/Messungslayer,-11Plotrahmen; 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_*