CAD XML Syntax-Objekt VC_Plotrahmen
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, nichtVC_CADPlotrahmen(Konstantexn_CADPlotrahmentä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
GetEntryByIDder 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=cadPlotFrameist 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— KlassendeklarationT2DPlotFrame(erbt vonT2DAreaBase)CAD\GLGeometrics.pas:65733-65882—T2DPlotFrame.DataToXMLLite(alle Elemente bedingungslos; Text/DocFileName nur bei Abweichung vom globalen Wert)CAD\GLGeometrics.pas:65884-65952—InternalCreateFromXMLinkl. Legacy-MappingPlotrahmen_Text*→ Default-GUIDsCAD\GLGeometrics.pas:65954ff—InternalCreateComplexStructsFromXML(Texte-/Dokumente-Container, Zuordnung perGetEntryByID)CAD\GLGeometrics.pas:66359-66363— Bitmasken-AuswertungPlotFrameNameAnzeigeOrteIncluded;CAD\GLTypes.pas:1128— EnumTPlotFrameNameAnzeigeOrtVERMCAD\GlobalConsts.pasca. 4372-5004 — Tag-Konstanten (xn_Plot*)