CAD XML Syntax-Sektion Rissdaten und Auswahlen
Am Anfang jeder VCCADDaten-Sektion stehen die Verwaltungsdaten des Koordinatensystems: die Riss-Verwaltung (Rissdaten, Delphi-Klasse TCADRissList mit TCADRiss-Einträgen), der aktuelle Riss (CurrRissID), die gespeicherten Objektauswahlen (ObjektAuswahlen, Klasse TCADSaveSelectionList) und das Bearbeitungsgebiet. Risse sind projektspezifische Zeichnungs-Sichten (fachlich: CAD-Risse). Diese Seite beschreibt die Verwaltungslisten der Sektion — die riss-abhängigen Werte AN den einzelnen CAD-Objekten (RissKoordinaten, Text_RissDaten …) sind auf der Seite Rissdaten an Objekten dokumentiert.
Strukturregel
<Rissdaten>
{ <RissEintrag_ID> (Tag = 'RissEintrag_' + Riss-ID; für JEDEN Riss
inkl. Standard-Riss ID 0)
<RissName>text</RissName>
<RissID>ganzzahl</RissID>
[<RissSzenarioID>ganzzahl</RissSzenarioID>]
[<RissViewMeasureScale>ganzzahl</RissViewMeasureScale>]
[<RissViewRotAngle>zahl</RissViewRotAngle>]
[<RissViewMinX>zahl</RissViewMinX>]
[<RissViewMaxX>zahl</RissViewMaxX>]
[<RissViewMinY>zahl</RissViewMinY>]
[<RissViewMaxY>zahl</RissViewMaxY>]
[<RissFreezeScale>bool</RissFreezeScale>]
[<RissSceneShowEnlargedSize>ganzzahl</RissSceneShowEnlargedSize>]
[<RissGesperrt>bool</RissGesperrt>]
</RissEintrag_ID> }*
</Rissdaten>
[<CurrRissID>ganzzahl</CurrRissID>]
[<BearbeitungsgebietAutomatisch>bool</BearbeitungsgebietAutomatisch>]
[<BearbeitungsgebietAutoMitFlaechen>bool</BearbeitungsgebietAutoMitFlaechen>]
[<Bearbeitungsgebiet>
{ <gml:pos>zahl zahl</gml:pos> }* (je Eckpunkt ein gml:pos, nur 2D)
</Bearbeitungsgebiet>]
<ObjektAuswahlen>
{ <ObjektAuswahlN> (Tag = 'ObjektAuswahl' + Integer-ID N,
z. B. 'ObjektAuswahl0')
<ObjektAuswahlName>text</ObjektAuswahlName>
<ObjektAuswahlID>ganzzahl</ObjektAuswahlID>
<ObjektAuswahlKDID>ganzzahl</ObjektAuswahlKDID> (KSID — Tag-Tippfehler, s. u.!)
<ObjektAuswahlGUIDs>guid
guid
…</ObjektAuswahlGUIDs> (GUID-Liste zeilenweise getrennt)
</ObjektAuswahlN> }*
</ObjektAuswahlen>
Elemente
Rissdaten / RissEintrag_<ID> (TCADRissList)
Der Standard-Riss (ID 0, Konstante cCAD_RISS_ID_STANDARD, Name [Standard]) existiert in jedem Projekt und wird mitgespeichert. Beim Lesen legt jedes Element, dessen Name mit RissEintrag_ beginnt, einen neuen Riss an; ein Riss wird nur übernommen, wenn RissName ≠ leer und RissID ≠ −1 gelesen wurden — beide sind also Pflicht. Ein doppelt eingelesener Standard-Riss (ID 0) wird mit dem vorab angelegten zusammengeführt (SzenarioID wird übernommen).
| Element | Typ/Format | Pflicht | Default | Bedeutung |
|---|---|---|---|---|
RissName |
text | ja | — | Anzeigename des Risses (Standard-Riss: [Standard])
|
RissID |
ganzzahl | ja | — | Riss-ID; identisch mit der ID im Tag-Namen. ID 0 = Standard-Riss. Auf diese ID beziehen sich die RissEintrag_<ID>-Einträge an den Objekten (Rissdaten an Objekten).
|
RissSzenarioID |
ganzzahl | nein | −1 | zugeordnetes Präsentations-Szenario |
RissViewMeasureScale |
ganzzahl | nein | 0 | Ansichts-Maßstab (ganzzahlig). Ersetzt das Legacy-Float-Element RissViewScale; liegt intern nur der alte Float-Wert vor, schreibt VermCad Round(PixelProPapierMeter/ViewScale).
|
RissViewRotAngle |
zahl | nein | 0.0 | Rotationswinkel der Ansicht |
RissViewMinX / RissViewMaxX / RissViewMinY / RissViewMaxY |
zahl | nein | 0.0 | gespeicherte Ansichts-Ausdehnung; ersetzt die Legacy-Elemente RissViewMoveX/RissViewMoveY (Verschiebungs-Speicherung bis 05/2017)
|
RissFreezeScale |
bool (−1/0) | nein | 0 (False) | Maßstab eingefroren (Konstantenname xn_RissMassstabEinfrieren ≠ Tag-String!)
|
RissSceneShowEnlargedSize |
ganzzahl | nein | 0 | Detail-Zoom-Größe bei eingefrorenem Maßstab (Konstantenname xn_RissMassstabEinfrierenDetailZoomSize)
|
RissGesperrt |
bool (−1/0) | nein | 0 (False) | Riss ist gegen Bearbeitung gesperrt |
CurrRissID
| Element | Typ/Format | Pflicht | Default | Bedeutung |
|---|---|---|---|---|
CurrRissID |
ganzzahl | nein | 0 | ID des beim Speichern aktiven Risses; muss auf einen RissEintrag_<ID> verweisen
|
ObjektAuswahlen (TCADSaveSelectionList)
Gespeicherte benannte Objekt-Auswahlen. Achtung, persistenter Tippfehler: Das Kindelement für die Koordinatensystem-ID heißt im Tag-String ObjektAuswahlKDID (nicht „KSID"!) — die Delphi-Konstante heißt korrekt xn_ObjektAuswahlKSID, ihr Tag-String enthält aber den historischen Tippfehler „KDID". Der Tippfehler ist auf beiden Seiten (Schreiben und Lesen) identisch und darf beim Erzeugen/Reparieren nicht korrigiert werden — ein Element ObjektAuswahlKSID würde ignoriert.
| Element | Typ/Format | Pflicht | Default | Bedeutung |
|---|---|---|---|---|
ObjektAuswahl<ID> |
Container | — | — | ein Eintrag je Auswahl; der Tag-Name muss mit ObjektAuswahl beginnen und mit einer Ganzzahl enden (sonst wird das Element beim Lesen nicht als Auswahl erkannt)
|
ObjektAuswahlName |
text | ja | — | Name der Auswahl; Pflicht fürs Lesen: Eintrag wird nur übernommen, wenn ID ≥ 0 UND Name ≠ leer |
ObjektAuswahlID |
ganzzahl | ja | −1 | ID der Auswahl (≥ 0) |
ObjektAuswahlKDID |
ganzzahl | nein | −1 | KSID des Koordinatensystems der Auswahl (Tippfehler-Tag, s. o.) |
ObjektAuswahlGUIDs |
GUID-Liste | nein | leer | GUIDs der ausgewählten Objekte als TStringList.Text — zeilenweise getrennt (echte Zeilenumbrüche im Elementtext). Die Auflösung der GUIDs erfolgt erst beim Aktivieren der Auswahl (mit CADID-Fallback); fehlende Ziele sind unkritisch.
|
Bearbeitungsgebiet
| Element | Typ/Format | Pflicht | Default | Bedeutung |
|---|---|---|---|---|
BearbeitungsgebietAutomatisch |
bool (−1/0) | nein | Initialwert (nur bei Abweichung geschrieben) | Gebiet wird automatisch ermittelt (dann wird kein Polygon gespeichert) |
BearbeitungsgebietAutoMitFlaechen |
bool (−1/0) | nein | Initialwert | automatische Ermittlung bezieht Flächen ein |
Bearbeitungsgebiet |
Container mit n×gml:pos |
nein | — | manuelles Bearbeitungsgebiets-Polygon; je Eckpunkt ein <gml:pos>X Y</gml:pos> (nur 2D, Float-Format). Wird nur geschrieben, wenn BearbeitungsgebietAutomatisch = False und das Polygon ≥ 3 Punkte hat.
|
Beispiele
Beispiel (Sachsen, echt) — Rissdaten mit mehreren Rissen
<Rissdaten>
<RissEintrag_0>
<RissName>[Standard]</RissName>
<RissID>0</RissID>
<RissSzenarioID>28</RissSzenarioID>
<RissViewMeasureScale>1</RissViewMeasureScale>
<RissViewMinX>3332480.51544114</RissViewMinX>
<RissViewMaxX>3332480.70299164</RissViewMaxX>
<RissViewMinY>5683146.38093415</RissViewMinY>
<RissViewMaxY>5683146.46763282</RissViewMaxY>
<RissSceneShowEnlargedSize>1000</RissSceneShowEnlargedSize>
</RissEintrag_0>
<RissEintrag_1>
<RissName>neue Grenzen</RissName>
<RissID>1</RissID>
<RissSzenarioID>32</RissSzenarioID>
<RissViewMeasureScale>7</RissViewMeasureScale>
<RissViewMinX>3332479.28436286</RissViewMinX>
<RissViewMaxX>3332483.40339641</RissViewMaxX>
<RissViewMinY>5683145.22719967</RissViewMinY>
<RissViewMaxY>5683147.13129865</RissViewMaxY>
<RissSceneShowEnlargedSize>458</RissSceneShowEnlargedSize>
</RissEintrag_1>
…
</Rissdaten>
<CurrRissID>0</CurrRissID>
<ObjektAuswahlen />
Minimalform (echt) — Rissdaten einer Nebensektion
<Rissdaten>
<RissEintrag_0>
<RissName>[Standard]</RissName>
<RissID>0</RissID>
</RissEintrag_0>
</Rissdaten>
<CurrRissID>0</CurrRissID>
Konstruiertes Beispiel — gefüllte ObjektAuswahl (kein Bestandsbeleg; in allen Beispielprojekten nur leer)
<ObjektAuswahlen>
<ObjektAuswahl0>
<ObjektAuswahlName>Grenzpunkte Nord</ObjektAuswahlName>
<ObjektAuswahlID>0</ObjektAuswahlID>
<ObjektAuswahlKDID>0</ObjektAuswahlKDID>
<ObjektAuswahlGUIDs>{4406BFC8-…}
{D3287E10-…}
{FE697113-…}</ObjektAuswahlGUIDs>
</ObjektAuswahl0>
</ObjektAuswahlen>
Konstruiertes Beispiel — Bearbeitungsgebiet (kein Bestandsbeleg)
<BearbeitungsgebietAutomatisch>0</BearbeitungsgebietAutomatisch> <Bearbeitungsgebiet> <gml:pos>545100.0 5721100.0</gml:pos> <gml:pos>545200.0 5721100.0</gml:pos> <gml:pos>545200.0 5721200.0</gml:pos> <gml:pos>545100.0 5721200.0</gml:pos> </Bearbeitungsgebiet>
(Nach den Code-Regeln konstruiert: manuelles Rechteck-Gebiet mit 4 Eckpunkten.)
Verfügbarkeit und Besonderheiten
- Struktur in allen Bundesland-Versionen identisch.
- Legacy-Aliase (werden gelesen, nicht mehr geschrieben):
RissViewScale(Float; bis 03/2025) → ersetzt durchRissViewMeasureScale(Integer); Umrechnung beim Schreiben:Round(PixelProPapierMeter/ViewScale).RissViewMoveX/RissViewMoveY(bis 05/2017) → ersetzt durch die AusdehnungRissViewMinX/RissViewMaxX/RissViewMinY/RissViewMaxY(die Move-Speicherung ließ die Szene bei Fenstergrößen-Änderung springen).
- Tippfehler-Tag
ObjektAuswahlKDIDist absichtlich persistent — nicht „reparieren". - In den drei untersuchten Bestandsprojekten kommen
ObjektAuswahlenausschließlich leer (<ObjektAuswahlen />) vor undBearbeitungsgebietgar nicht — die gefüllten Beispiele oben sind aus dem Code konstruiert. - Ältere Dateien enthalten nach
ObjektAuswahlendas inzwischen entfernte Element<AlkisStatusOptionen />— siehe Sektion VCCADDaten. - Fachliche Bedienung der Risse: CAD-Risse.
Quellen im Code
CAD\GLGeometrics.pas:72745-72869—TCADRissList.DataToXMLLite(alle Riss-Felder, Legacy-Umrechnung ViewScale)CAD\GLGeometrics.pas:72882-73005—TCADRissList.ReadFromXML(Legacy-Tags, Pflichtprüfung Name/ID, Standard-Riss-Zusammenführung)CAD\GLGeometrics.pas:74328-74449—TCADSaveSelectionList.DataToXMLLite/ReadFromXML(ObjektAuswahlen, Integer-Suffix-Prüfung)CAD\GLGeometrics.pas:74280-74298— GUID-Auflösung erst beim Aktivieren einer AuswahlCAD\GLGeometrics.pas:79596-79635—SaveXMLLite: CurrRissID und BearbeitungsgebietCAD\GLConsts.pas:152-162—CADRISS_DEFAULT_*-Defaultwerte;CAD\GLConsts.pas:776—cCAD_RISS_ID_STANDARD = 0VERMCAD\GlobalConsts.pas(Bereich xn_Rissdaten/xn_ObjektAuswahl*) — Tag-Konstanten inkl. Tippfehlerxn_ObjektAuswahlKSID = 'ObjektAuswahlKDID'