Zum Inhalt springen

CAD XML Syntax-Sektion Rissdaten und Auswahlen

Aus VermCAD Hilfe Wiki

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 durch RissViewMeasureScale (Integer); Umrechnung beim Schreiben: Round(PixelProPapierMeter/ViewScale).
    • RissViewMoveX/RissViewMoveY (bis 05/2017) → ersetzt durch die Ausdehnung RissViewMinX/RissViewMaxX/RissViewMinY/RissViewMaxY (die Move-Speicherung ließ die Szene bei Fenstergrößen-Änderung springen).
  • Tippfehler-Tag ObjektAuswahlKDID ist absichtlich persistent — nicht „reparieren".
  • In den drei untersuchten Bestandsprojekten kommen ObjektAuswahlen ausschließlich leer (<ObjektAuswahlen />) vor und Bearbeitungsgebiet gar nicht — die gefüllten Beispiele oben sind aus dem Code konstruiert.
  • Ältere Dateien enthalten nach ObjektAuswahlen das 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 Auswahl
  • CAD\GLGeometrics.pas:79596-79635 — SaveXMLLite: CurrRissID und Bearbeitungsgebiet
  • CAD\GLConsts.pas:152-162 — CADRISS_DEFAULT_*-Defaultwerte; CAD\GLConsts.pas:776 — cCAD_RISS_ID_STANDARD = 0
  • VERMCAD\GlobalConsts.pas (Bereich xn_Rissdaten/xn_ObjektAuswahl*) — Tag-Konstanten inkl. Tippfehler xn_ObjektAuswahlKSID = 'ObjektAuswahlKDID'



[Nach oben]