Zum Inhalt springen

CAD XML Syntax-Objekt VC_CADBemassung

Aus VermCAD Hilfe Wiki

Die Bemaßung stellt den Abstand zwischen zwei Basispunkten mit Maßlinie und Maßtext dar. Delphi-Klasse ist T3DBemassung (CAD\GLGeometrics.pas), XML-Tag VC_CADBemassung. Sie erbt von T3DKompo (VC_CADKompo): die Darstellungs-Hilfsobjekte der Bemaßung (Punkte, Linien, Texte) stehen als Member in der geerbten MemberGroup, die beiden vermessenen Basispunkte zusätzlich als eigene Referenzen.

Strukturregel

<VC_CADBemassung>
  <VermCadID> … </VermCadID>                     (siehe VermCadID-Block; CADObjektArt=cadKompo)
  [Basiselemente]                                (siehe Basiselemente; Layer ist Pflicht)
  <MemberGroup>
    {<Member GUID="guid"/>}*                     (geerbt von VC_CADKompo; min. 2)
  </MemberGroup>
  <BasePoint1 GUID="guid"/>                      (Pflicht)
  <BasePoint2 GUID="guid"/>                      (Pflicht)
  [<BemassungDistToBase>zahl</BemassungDistToBase>]
  [<Bemassung_RissDaten>
     {<RissEintrag_ID>
        <Bemassung_RissDistToBase>zahl</Bemassung_RissDistToBase>
      </RissEintrag_ID>}* </Bemassung_RissDaten>]
</VC_CADBemassung>

Geerbte Elemente: VermCadID-Block, Basiselemente, MemberGroup siehe VC_CADKompo; Werteformate: Werteformate.

Elemente

Nur die eigenen Elemente von T3DBemassung:

Element Typ/Format Pflicht Default Bedeutung
BasePoint1 GUID-Attribut-Element ja — erster Basispunkt der Bemaßung
BasePoint2 GUID-Attribut-Element ja — zweiter Basispunkt der Bemaßung
BemassungDistToBase Float nein Fehlwert (nicht geschrieben) Abstand der Maßlinie zur Basislinie (durch die beiden Basispunkte)
Bemassung_RissDaten Container nein leer rissabhängiger Maßlinien-Abstand: je Riss ein RissEintrag_<RissID>-Container mit Bemassung_RissDistToBase (Float, nur wenn ≠ Fehlwert) — Details: Rissdaten an Objekten

Das zugehörige Rück-Referenz-Element ReferenzPunkteInBemassungen steht nicht hier, sondern an den referenzierten Punkten (Basiselement, siehe Basiselemente).

Referenzen

Referenz Ziel Pflicht Verhalten bei fehlendem Ziel
BasePoint1 / BasePoint2 VC_CADPunkt ja harte Referenz: fehlende/ungültige GUID oder nicht auffindbarer Punkt → „Objekt wird nicht eingelesen" — die Bemaßung wird beim Referenzen-Update verworfen und zerstört
Member (geerbt) Hilfsobjekte der Maßdarstellung (Punkte/Linien/Texte) ja (min. 2) wie beim VC_CADKompo: unauflösbare Member führen zum Verwerfen, als fehlerhaft bekannte Member werden übersprungen

Zur Laufzeit gilt eine Bemaßung außerdem als gelöscht, sobald einer ihrer Basispunkte gelöscht ist.

Minimalform

<VC_CADBemassung>
  <VermCadID>
    <GUID>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</GUID>
    <ObjektArt>oaCAD</ObjektArt>
    <CADObjektArt>cadKompo</CADObjektArt>
  </VermCadID>
  <Layer>-102</Layer>
  <MemberGroup>
    <Member GUID="{XXXX…}"/>
    <Member GUID="{XXXX…}"/>
  </MemberGroup>
  <BasePoint1 GUID="{XXXX…}"/>
  <BasePoint2 GUID="{XXXX…}"/>
</VC_CADBemassung>

Beide BasePoint-GUIDs müssen auf existierende VC_CADPunkt-Objekte zeigen und die MemberGroup mindestens 2 auflösbare Member enthalten — sonst wird die Bemaßung beim Laden verworfen.

Beispiele

Beispiel (KONSTRUIERT nach den Code-Regeln — in keinem der drei Beispielprojekte BW/Sachsen/THR kommt eine Bemaßung vor)

<VC_CADBemassung>
  <VermCadID>
    <GUID>{0AB1C2D3-…}</GUID>
    <ObjektArt>oaCAD</ObjektArt>
    <CADObjektArt>cadKompo</CADObjektArt>
  </VermCadID>
  <Layer>346</Layer>
  <MemberGroup>
    <Member GUID="{11A2B3C4-…}"/>
    <Member GUID="{22B3C4D5-…}"/>
    <Member GUID="{33C4D5E6-…}"/>
  </MemberGroup>
  <BasePoint1 GUID="{44D5E6F7-…}"/>
  <BasePoint2 GUID="{55E6F7A8-…}"/>
  <BemassungDistToBase>2.5</BemassungDistToBase>
  <Bemassung_RissDaten>
    <RissEintrag_0>
      <Bemassung_RissDistToBase>3.1</Bemassung_RissDistToBase>
    </RissEintrag_0>
  </Bemassung_RissDaten>
</VC_CADBemassung>

Verfügbarkeit und Besonderheiten

  • Code-Verfügbarkeit: alle Bundesland-Versionen (Factory-Eintrag ohne IFDEF). Kein Bestandsbeleg in den drei Beispielprojekten — das Format ist ausschließlich aus dem Code abgeleitet.
  • CADObjektArt: Als Kompo-Ableitung nutzt die Bemaßung cadKompo — die Enum TCADObjArt kennt keinen eigenen Bemaßungs-Wert; die Objektklasse ergibt sich allein aus dem Wurzeltag VC_CADBemassung.
  • Die referenzierten Basispunkte erhalten beim Speichern die Rückreferenz ReferenzPunkteInBemassungen/ReferenzPunkteInBemassungenMember (Basiselement am Punkt) — beim Erzeugen einer Bemaßung sollte diese Rückreferenz an beiden Punkten mit angelegt werden.
  • Die Kompo-Regel „leer wird nicht gespeichert" gilt auch hier: eine Bemaßung ohne Member-Kinder schreibt keine VermCadID und geht damit beim nächsten Speichern verloren.
  • Verknüpfungen einer Bemaßung werden beim Bearbeiten nie gelöst (VerknuepfungenLoesen ist leer überschrieben) — die Geometrie folgt immer den Basispunkten.

Quellen im Code

  • CAD\GLGeometrics.pas:59810-59871 — T3DBemassung.DataToXMLLite (BasePoint1/2, DistToBase, Rissdaten)
  • CAD\GLGeometrics.pas:59335-59368 — InternalCreateComplexStructsFromXML (BPkt-GUIDs, Bemassung_RissDaten)
  • CAD\GLGeometrics.pas:59370-59393 — InternalCreateFromXML (BemassungDistToBase)
  • CAD\GLGeometrics.pas:59268-59333 — SetReferencesAndUpdate (harte BasePoint-Referenzen, „Objekt wird nicht eingelesen")
  • CAD\GLGeometrics.pas:59255-59266 — GetDeleted_Notice_BaseObjectsDeleted (gelöschte Basispunkte)
  • CAD\GLGeometrics.pas:59037-59079 — T3DBemassungRissValueList (Riss-Struktur)
  • CAD\GLGeometrics.pas:57251-57347 — geerbtes Member-Verhalten (T3DKompo.SetReferencesAndUpdate)
  • VERMCAD\GlobalConsts.pas ca. 4372-5004 — Tag-Konstanten xn_CADBemassung, xn_BPkt1=BasePoint1, xn_BPkt2=BasePoint2, xn_BemassungDistToBase, xn_BemassungRissDaten=Bemassung_RissDaten



[Nach oben]