Zum Inhalt springen

CAD XML Syntax-Rissdaten an Objekten

Aus VermCAD Hilfe Wiki

Risse sind projektspezifische Zeichnungs-Sichten (siehe klassische Wiki-Seite CAD-Risse). Viele CAD-Objekte können rissabhängige Werte speichern — z. B. eine je Riss abweichende Punktnummern-Verschiebung oder eine riss-spezifische Unsichtbarkeit. Diese Querschnittsseite beschreibt das gemeinsame XML-Muster RissEintrag_<RissID> und die vier Container, in denen es an Objekten vorkommt. Die Riss-Verwaltung selbst (Liste der Risse mit Name, Maßstab, Ansicht) steht nicht am Objekt, sondern am Anfang jeder VCCADDaten-Sektion — siehe Sektion Rissdaten und Auswahlen.

Strukturregel

Gemeinsames Muster: Ein Container-Element am Objekt enthält je Riss ein Element bzw. einen Unter-Container, dessen Tag-Name aus dem Präfix RissEintrag_ (Konstante xn_RissEintrag) plus der Integer-Riss-ID zusammengesetzt ist. Der Standard-Riss hat immer die ID 0 (cCAD_RISS_ID_STANDARD, Name [Standard]) und existiert in jedem Projekt.

(1) RissSichtbarkeit — an JEDEM CAD-Objekt (Basisklasse T3DBaseObject):
<RissSichtbarkeit>
  {<RissEintrag_ID>0</RissEintrag_ID>}*          (Wert immer '0' = unsichtbar in diesem Riss)
</RissSichtbarkeit>

(2) RissKoordinaten + RissPktNrTextType — an VC_CADPunkt/VC_CADBMPunkt (T3DPointRissValueList):
<RissKoordinaten>
  {<RissEintrag_ID>zahl zahl zahl</RissEintrag_ID>}*      (dX dY dZ = Koordinaten-DELTAS zum Standard)
</RissKoordinaten>
<RissPktNrTextType>
  {<RissEintrag_ID>enum:TPktNrTextType</RissEintrag_ID>}*
</RissPktNrTextType>

(3) Text_RissDaten — an allen Textobjekten (T2DTextRissValueList):
<Text_RissDaten>
  {<RissEintrag_ID>
     [<Text_RissRefPktMove>zahl zahl 0</Text_RissRefPktMove>]
     [<Text_RissDrehwinkel>zahl</Text_RissDrehwinkel>]
     [<Text_RissNieAufDemKopf>ganzzahl</Text_RissNieAufDemKopf>]
     [<Text_RissAusrichtungRefLinieGUID GUID="guid"/>]
     [<Text_RissAmRefObjAusr>ganzzahl</Text_RissAmRefObjAusr>]
     [<Text_RissStrStauHor>zahl</Text_RissStrStauHor>]
     [<Text_RissStrStauVert>zahl</Text_RissStrStauVert>]
   </RissEintrag_ID>}*
</Text_RissDaten>

(4) Bemassung_RissDaten — an VC_CADBemassung (T3DBemassungRissValueList):
<Bemassung_RissDaten>
  {<RissEintrag_ID>
     [<Bemassung_RissDistToBase>zahl</Bemassung_RissDistToBase>]
   </RissEintrag_ID>}*
</Bemassung_RissDaten>

Zwei Bauformen des RissEintrag_ID-Elements:

  • Wert-Element (RissSichtbarkeit, RissKoordinaten, RissPktNrTextType): der Wert steht direkt als Textknoten im Element.
  • Unter-Container (Text_RissDaten, Bemassung_RissDaten): der Eintrag enthält eigene Kind-Elemente, jedes optional.

Elemente

Container An Objekttyp Eintrag je Riss Schreibbedingung Bedeutung
RissSichtbarkeit alle CAD-Objekte (Basiselement) Wert immer 0 (BoolToStr(False)) Container nur, wenn das Objekt in mindestens einem Riss unsichtbar ist; je unsichtbarem Riss ein Eintrag Objekt ist in den gelisteten Rissen unsichtbar (fehlender Eintrag = sichtbar)
RissKoordinaten VC_CADPunkt, VC_CADBMPunkt dX dY dZ (drei Floats, leerzeichengetrennt) Container wird beim Speichern IMMER geschrieben (meist leer <RissKoordinaten />); Eintrag nur, wenn mind. ein Delta ≠ 0 und kein Fehlwert riss-spezifische Koordinaten-Deltas zur echten Punktposition (Position/gml:pos enthält immer die echten Koordinaten)
RissPktNrTextType VC_CADPunkt, VC_CADBMPunkt Enum-Name aus TPktNrTextType Container wird IMMER geschrieben (meist leer); Eintrag nur ≠ TT_UNDEFINED riss-spezifische Art des Punktnummern-Texts (überstimmt PktNrTextType des Punkts im jeweiligen Riss)
Text_RissDaten alle Textobjekte (VC_CADText, PNR-Texte) Unter-Container mit bis zu 7 Kindern (s. u.) Container wird IMMER geschrieben (meist leer <Text_RissDaten />); je Kind nur, wenn Wert ≠ Fehlwert riss-spezifische Text-Darstellung
Bemassung_RissDaten VC_CADBemassung Unter-Container mit Bemassung_RissDistToBase Container wird IMMER geschrieben; Kind nur, wenn kein Fehlwert riss-spezifischer Abstand der Maßlinie zur Basislinie

Kinder eines Text_RissDaten-Eintrags

Jedes Kind entspricht einem Element des Textobjekts und überstimmt es im jeweiligen Riss:

Kind-Element Typ/Format Gegenstück am Objekt
Text_RissRefPktMove dX dY 0 (drei Floats; dritter Wert immer 0) Text_RefPktMoveX/Text_RefPktMoveY
Text_RissDrehwinkel zahl Text_Drehwinkel
Text_RissNieAufDemKopf ganzzahl (Bool/Inherit-kodiert) Text_NieAufDemKopf
Text_RissAusrichtungRefLinieGUID GUID-Attribut-Element Text_AusrichtungRefLinieGUID — gleiche Schreiblogik inkl. NOTHING-GUID {AD59FD8E-A1B2-40E8-B2E3-199A7F3E7F89} für aktiv „ENTFERNT“ (Bugfix 01/2022: GUID wird auch geschrieben, wenn die Referenz noch nicht aufgelöst wurde, damit die Riss-Ausrichtung beim Speichern ohne Riss-Öffnung nicht verloren geht)
Text_RissAmRefObjAusr ganzzahl Text_AmRefObjAusrichten
Text_RissStrStauHor / Text_RissStrStauVert zahl Text_StrStauHor/Text_StrStauVert

Enum TPktNrTextType (alle Werte)

TT_NONE, TT_NR, TT_NVNR, TT_SPECIAL, TT_INHERITED, TT_UNDEFINED (TT_UNDEFINED = kein riss-spezifischer Wert, wird nicht geschrieben).

Beispiele

Beispiel (Sachsen) — gefüllte RissKoordinaten am Punkt

<VC_CADPunkt>
  … (VermCadID, Layer, PunktQualitaet, Position) …
  <PointSymbolGUID GUID="{49A895D7-…}" />
  <RissKoordinaten>
    <RissEintrag_0>-0.000279225409030914 0.000412030145525932 0</RissEintrag_0>
  </RissKoordinaten>
  <RissPktNrTextType />
</VC_CADPunkt>

Beispiel (Sachsen) — Text_RissDaten mit Einträgen für mehrere Risse (Punktnummerntext)

<VC_CADVCPNRText>
  … (VermCadID, Layer, Text_Referenzobjekt, VC_CADText) …
  <Text_RissDaten>
    <RissEintrag_0>
      <Text_RissRefPktMove>-6.13705911999569 2.45703685283661 0</Text_RissRefPktMove>
    </RissEintrag_0>
    <RissEintrag_1>
      <Text_RissRefPktMove>-6.13705911999569 2.45703685283661 0</Text_RissRefPktMove>
    </RissEintrag_1>
    <RissEintrag_2>
      <Text_RissRefPktMove>-6.13705911999569 2.45703685283661 0</Text_RissRefPktMove>
    </RissEintrag_2>
  </Text_RissDaten>
</VC_CADVCPNRText>

Konstruiertes Beispiel — RissSichtbarkeit (kein Bestandsbeispiel in den drei Beispielprojekten)

<VC_CADSimpleLine>
  … (VermCadID, Layer, Startpunkt, Endpunkt) …
  <RissSichtbarkeit>
    <RissEintrag_1>0</RissEintrag_1>
    <RissEintrag_3>0</RissEintrag_3>
  </RissSichtbarkeit>
</VC_CADSimpleLine>

(Nach den Regeln konstruiert: die Linie ist in den Rissen 1 und 3 unsichtbar, in allen anderen sichtbar.)

Konstruiertes Beispiel — Bemassung_RissDaten (kein Bestandsbeispiel)

<VC_CADBemassung>
  … (VermCadID, Layer, MemberGroup, BasePoint1/2, BemassungDistToBase) …
  <Bemassung_RissDaten>
    <RissEintrag_2>
      <Bemassung_RissDistToBase>1.25</Bemassung_RissDistToBase>
    </RissEintrag_2>
  </Bemassung_RissDaten>
</VC_CADBemassung>

Verfügbarkeit und Besonderheiten

  • Das Muster ist in allen Bundesland-Versionen identisch.
  • Riss-ID-Bezug: Die ID im Tag-Namen muss zu einem RissEintrag_<ID> der Riss-Verwaltung in derselben VCCADDaten-Sektion gehören (Sektion Rissdaten und Auswahlen); die Riss-Verwaltung wird VOR den Objekten geschrieben/gelesen. Standard-Riss-ID 0 existiert immer.
  • Leere Container: RissKoordinaten, RissPktNrTextType, Text_RissDaten und Bemassung_RissDaten werden beim Speichern auch ohne Einträge geschrieben (z. B. <Text_RissDaten />) — fürs Erzeugen dürfen sie fehlen. RissSichtbarkeit wird dagegen NUR geschrieben, wenn mindestens ein Unsichtbar-Eintrag existiert.
  • Belege aus den Beispielprojekten (getrennt von der Code-Verfügbarkeit): gefüllte RissKoordinaten und gefüllte Text_RissDaten (Text_RissRefPktMove, Text_RissDrehwinkel) nur in Sachsen belegt; RissPktNrTextType kommt ausschließlich leer vor; RissSichtbarkeit und Bemassung_RissDaten sind nicht belegt (Beispiele oben konstruiert).
  • Fehler beim Schreiben einzelner Riss-Einträge brechen das Speichern nicht ab (nur Logeintrag; Absicherung nach Praxisfällen 2021/2022).
  • Die riss-spezifischen Werte sind immer Abweichungen vom Standardwert des Objekts — die echten Koordinaten/Texteinstellungen stehen weiterhin in den regulären Elementen; ein Reparierer darf Riss-Deltas nicht in die Hauptkoordinaten einrechnen.

Quellen im Code

  • CAD\GLGeometrics.pas:21178-21278 — T3DPointRissValueList.DataToXMLLite (RissKoordinaten, RissPktNrTextType; ReadFromXML ab 21313)
  • CAD\GLGeometrics.pas:47496-47628 — T2DTextRissValueList.DataToXMLLite (Text_RissDaten inkl. GUID-Schreiblogik)
  • CAD\GLGeometrics.pas:59037-59079 — T3DBemassungRissValueList.DataToXMLLite (Bemassung_RissDaten)
  • CAD\GLGeometrics.pas:6738-6775 — T3DBaseObject.DataToXMLLite (RissSichtbarkeit)
  • CAD\GLGeometrics.pas:72745-72869 — TCADRissList.DataToXMLLite (Riss-Verwaltung in der Sektion, zum Abgleich der Riss-IDs)
  • VERMCAD\GlobalConsts.pas:4736-4742 — Tag-Konstanten xn_TxtRissDaten*; ca. 4372-5004 — xn_RissEintrag (Präfix!), xn_RissKoordinaten, xn_RissPktNrTextType, xn_RissSichtbarkeit, xn_BemassungRissDaten
  • VERMCAD\GlobalConsts.pas:1965 / CAD\GLConsts.pas:454 — NOTHING-GUID (MisGUIDString = PROPERTY_GUID_VALUE_NOTHING)



[Nach oben]