Zum Inhalt springen

CAD XML Syntax-Objekt VC_Plotrahmen

Aus VermCAD Hilfe Wiki
Version vom 20. Juli 2026, 13:50 Uhr von Hahn (Diskussion | Beiträge) (CAD-XML-Syntax-Dokumentation (automatischer Import))
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Der Plotrahmen definiert einen druckbaren Kartenausschnitt (Drucker, Layout, Papierformat, Maßstab) als Flächenobjekt im CAD. Delphi-Klasse ist T2DPlotFrame (CAD\GLGeometrics.pas), abgeleitet von der Flächen-Basisklasse T2DAreaBase. Achtung: Das XML-Tag heißt VC_Plotrahmen — OHNE das sonst übliche „CAD" im Namen (wie auch VC_Hintergrundbild).

Strukturregel

<VC_Plotrahmen>
  <VermCadID> … </VermCadID>                     (siehe VermCadID-Block; CADObjektArt=cadPlotFrame)
  [Basiselemente]                                (siehe Basiselemente; Layer ist Pflicht,
                                                  in der Praxis System-Layer -11)
  <Rand>
    <Exterior GUID="guid"/>                      (Rahmen-Geometrie, wie bei VC_CADFlaeche)
  </Rand>
  <Plotrahmen_Printer>text</Plotrahmen_Printer>                      (alle folgenden Elemente
  <Plotrahmen_LayoutID>ganzzahl</Plotrahmen_LayoutID>                 werden IMMER geschrieben)
  <Plotrahmen_LayoutName>text</Plotrahmen_LayoutName>
  <Plotrahmen_Papersize>text</Plotrahmen_Papersize>
  <Plotrahmen_ResolutionHorizontal>ganzzahl</Plotrahmen_ResolutionHorizontal>
  <Plotrahmen_ResolutionVertical>ganzzahl</Plotrahmen_ResolutionVertical>
  <Plotrahmen_Scale1To>ganzzahl</Plotrahmen_Scale1To>
  <Plotrahmen_Alpha>bool</Plotrahmen_Alpha>
  <Plotrahmen_Texte>
    {<Plotrahmen_Text_Eintrag>
       <Plotrahmen_Text_Eintrag_ID>guid</Plotrahmen_Text_Eintrag_ID>     (GUID als Elementtext!)
       [<Plotrahmen_Text_Eintrag_Text>text</Plotrahmen_Text_Eintrag_Text>]  (nur wenn vom
     </Plotrahmen_Text_Eintrag>}*                                            globalen Text abweichend)
  </Plotrahmen_Texte>
  <Plotrahmen_Dokumente>
    {<Plotrahmen_Dokument_Eintrag>
       <Plotrahmen_Dokument_Eintrag_ID>guid</Plotrahmen_Dokument_Eintrag_ID>
       [<Plotrahmen_Dokument_Eintrag_DocFileName>text</Plotrahmen_Dokument_Eintrag_DocFileName>]
     </Plotrahmen_Dokument_Eintrag>}*
  </Plotrahmen_Dokumente>
  <Plotrahmen_NameAnzeigeOrte>ganzzahl</Plotrahmen_NameAnzeigeOrte>  (Bitmaske, siehe unten)
</VC_Plotrahmen>

Geerbte Elemente: VermCadID-Block, Basiselemente, Rand-Mechanik siehe VC_CADFlaeche; Werteformate: Werteformate. Da T2DPlotFrame direkt von T2DAreaBase erbt (nicht von T2DArea), gibt es KEINEN BoeschungsInfos-Container.

Elemente

Alle eigenen einfachen Elemente werden bedingungslos geschrieben (kein Default-Vergleich):

Element Typ/Format Pflicht Bedeutung
Plotrahmen_Printer String nein Druckername (z. B. Microsoft Print to PDF)
Plotrahmen_LayoutID Int nein ID des Plot-Layouts
Plotrahmen_LayoutName String nein Layout-Name (z. B. FR_A3Q)
Plotrahmen_Papersize String nein Papierformat (z. B. A3)
Plotrahmen_ResolutionHorizontal / …Vertical Int nein Druckauflösung in dpi
Plotrahmen_Scale1To Int nein Maßstab 1:n (z. B. 500)
Plotrahmen_Alpha bool (-1/0) nein Transparenz-Flag
Plotrahmen_Texte Container nein Rahmen-Texte, je Eintrag ein Plotrahmen_Text_Eintrag. Die …_ID ist die GUID eines global konfigurierten Plotrahmen-Texts (VcPrefs), als Elementtext — KEINE CAD-Objekt-Referenz. …_Text nur, wenn der lokale Text vom globalen abweicht
Plotrahmen_Dokumente Container nein analog: Plotrahmen_Dokument_Eintrag mit …_ID und optional …_DocFileName (nur bei Abweichung vom globalen Wert)
Plotrahmen_NameAnzeigeOrte Int (Bitmaske) nein Anzeigeorte des Rahmennamens; Bit je TPlotFrameNameAnzeigeOrt-Wert: 1 = pfnaoLO (links oben), 2 = pfnaoRO (rechts oben), 4 = pfnaoRU (rechts unten), 8 = pfnaoLU (links unten); Kombinationen als Summe

Referenzen

Referenz Ziel Pflicht Verhalten bei fehlendem Ziel
Exterior (im Rand) geschlossene Kurve, i. d. R. VC_CADKompo aus den 4 Rahmenlinien ja harte Referenz wie bei der Fläche: ohne auflösbares, geschlossenes Exterior wird der Plotrahmen beim Referenzen-Update verworfen
Plotrahmen_Text_Eintrag_ID / Plotrahmen_Dokument_Eintrag_ID global konfigurierter Text-/Dokument-Eintrag (kein CAD-Objekt) nein weich: unbekannte IDs werden beim Lesen ignoriert (der Eintrag verfällt)

Minimalform

<VC_Plotrahmen>
  <VermCadID>
    <GUID>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</GUID>
    <ObjektArt>oaCAD</ObjektArt>
    <CADObjektArt>cadPlotFrame</CADObjektArt>
  </VermCadID>
  <Layer>-11</Layer>
  <Rand>
    <Exterior GUID="{XXXX…}"/>
  </Rand>
</VC_Plotrahmen>

Alle Plotrahmen_*-Elemente dürfen beim Erzeugen fehlen (die Werte bleiben dann leer/0 und werden aus den globalen Einstellungen ergänzt); die Rahmen-Geometrie über Rand/Exterior ist Pflicht.

Beispiele

Beispiel (Sachsen, echt — einziges Bundesland mit Bestandsbelegen, 17 Exemplare)

<VC_Plotrahmen>
  <VermCadID>
    <GUID>{CA72551A-…}</GUID>
    <ObjektArt>oaCAD</ObjektArt>
    <CADObjektArt>cadPlotFrame</CADObjektArt>
  </VermCadID>
  <Name>1</Name>
  <Layer>-11</Layer>
  <Rand>
    <Exterior GUID="{4138C046-…}" />
  </Rand>
  <Plotrahmen_Printer>Microsoft Print to PDF</Plotrahmen_Printer>
  <Plotrahmen_LayoutID>3</Plotrahmen_LayoutID>
  <Plotrahmen_LayoutName>FR_A3Q</Plotrahmen_LayoutName>
  <Plotrahmen_Papersize>A3</Plotrahmen_Papersize>
  <Plotrahmen_ResolutionHorizontal>600</Plotrahmen_ResolutionHorizontal>
  <Plotrahmen_ResolutionVertical>600</Plotrahmen_ResolutionVertical>
  <Plotrahmen_Scale1To>500</Plotrahmen_Scale1To>
  <Plotrahmen_Alpha>-1</Plotrahmen_Alpha>
  <Plotrahmen_Texte>
    <Plotrahmen_Text_Eintrag>
      <Plotrahmen_Text_Eintrag_ID>{XXXXXXXX-…}</Plotrahmen_Text_Eintrag_ID>
    </Plotrahmen_Text_Eintrag>
    … (im Original 22 Einträge, gekürzt) …
  </Plotrahmen_Texte>
  <Plotrahmen_Dokumente />
  <Plotrahmen_NameAnzeigeOrte>1</Plotrahmen_NameAnzeigeOrte>
</VC_Plotrahmen>

Plotrahmen_Dokumente kommt in allen Bestandsbelegen nur leer vor; das gefüllte Format ist aus dem Code abgeleitet.

Verfügbarkeit und Besonderheiten

  • Code-Verfügbarkeit: alle Bundesland-Versionen (Factory-Eintrag ohne IFDEF); Bestandsbelege nur im Sachsen-Beispielprojekt.
  • Tag ohne „CAD"-Präfix: VC_Plotrahmen, nicht VC_CADPlotrahmen (Konstante xn_CADPlotrahmen täuscht).
  • Legacy-Aliase (nur Lesen, alte Plotrahmen): Plotrahmen_TextOben, Plotrahmen_TextUnten, Plotrahmen_TextLinks, Plotrahmen_TextRechts, Plotrahmen_TextAllgemein — Einzeltexte, die beim Lesen auf Standard-Text-Einträge mit festen Default-GUIDs (PLOTFRAME_DEFAULT_ID_TEXT*) gemappt werden.
  • Die Text-/Dokument-Listen werden beim Schreiben gegen die globalen Listen synchronisiert (gleiche Anzahl erwartet, sonst Warn-Log); beim Lesen werden Einträge über GetEntryByID der globalen Liste zugeordnet — ein leeres …_Text-Element setzt den Text bewusst auf leer.
  • In der Praxis liegt der Plotrahmen auf dem System-Layer -11; CADObjektArt=cadPlotFrame ist der erste (unterste) Wert der Renderreihenfolge.
  • Schreibreihenfolge im Manager: Plotrahmen als vorletzte Objektgruppe (nach Hintergrundbildern, vor Böschungen).

Quellen im Code

  • CAD\GLGeometrics.pas:3704ff — Klassendeklaration T2DPlotFrame (erbt von T2DAreaBase)
  • CAD\GLGeometrics.pas:65733-65882 — T2DPlotFrame.DataToXMLLite (alle Elemente bedingungslos; Text/DocFileName nur bei Abweichung vom globalen Wert)
  • CAD\GLGeometrics.pas:65884-65952 — InternalCreateFromXML inkl. Legacy-Mapping Plotrahmen_Text* → Default-GUIDs
  • CAD\GLGeometrics.pas:65954ff — InternalCreateComplexStructsFromXML (Texte-/Dokumente-Container, Zuordnung per GetEntryByID)
  • CAD\GLGeometrics.pas:66359-66363 — Bitmasken-Auswertung PlotFrameNameAnzeigeOrteIncluded; CAD\GLTypes.pas:1128 — Enum TPlotFrameNameAnzeigeOrt
  • VERMCAD\GlobalConsts.pas ca. 4372-5004 — Tag-Konstanten (xn_Plot*)



[Nach oben]