CAD XML Syntax-Objekt VC_CADBemassung
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ßungcadKompo— die EnumTCADObjArtkennt keinen eigenen Bemaßungs-Wert; die Objektklasse ergibt sich allein aus dem WurzeltagVC_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 (
VerknuepfungenLoesenist 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.pasca. 4372-5004 — Tag-Konstantenxn_CADBemassung,xn_BPkt1=BasePoint1,xn_BPkt2=BasePoint2,xn_BemassungDistToBase,xn_BemassungRissDaten=Bemassung_RissDaten