In der vorherigen Lektion haben wir uns mit der Anzeige einfacher Zeichenfolgen befasst. Wir werden hier über die Bildung zusammengesetzter Linien sprechen, einschließlich Abweichungen und Brüche. Wir werden solche Linien mit der
ksText- Methode
erzeugen , die wir zuvor untersucht haben. Genau genommen ist diese Methode nicht dazu gedacht, komplexe Zeichenfolgen auszugeben. In der heutigen Lektion werden wir jedoch eine Reihe von Flaggen kennenlernen, die eine Schlüsselrolle bei der Bildung zusammengesetzter Linien spielen.

Der Inhalt der Unterrichtsreihe „Arbeiten mit der KOMPAS-3D-API“
- Die Grundlagen
- Zeichnungsentwurf
- Richtige Verbindung zu KOMPAS
- Hauptinschrift
- Grafische Grundelemente
- Speichern eines Dokuments in verschiedenen Formaten
- Einstellungen kennenlernen
- Anspruchsvollere Schreibmethoden im Schriftfeld
- Beschriftungszellen lesen
- Sonderzeichen einschließlich einer Zeichenfolge
- Einfache Textbeschriftungen
- Zusammengesetzte Zeichenfolgen
Obwohl die beschriebenen Methoden zur Konstruktion von Abweichungen und Brüchen nicht dokumentiert sind, funktionieren sie, wie meine Experimente zeigen, bei modernen Versionen von KOMPAS (überprüft auf 15, 16 und 17) korrekt. Dieses Verhalten kann jedoch in zukünftigen Versionen geändert werden.
Die „richtigen“ Methoden zum Erstellen zusammengesetzter Zeichenfolgen werden in den folgenden Lektionen beschrieben.
Kursiv, fett und unterstrichen
Kursive, fette und unterstrichene Stile werden durch die in der folgenden Tabelle gezeigten Flags gesteuert. Sie werden in der Header-Datei
ldefin2d.h deklariert .

In der
ksText- Methode beschränkt
sich die Wirkung jedes dieser Flags auf den Aufruf dieser Methode. Das folgende Beispiel zeigt ein Programm, das die Ausgabe von Linien mit unterschiedlichen Stilen demonstriert.
Document2D->ksText(100, 100, 0, 0, 0, 0 , SysAllocString(L" ")); Document2D->ksText(100, 90, 0, 0, 0, ITALIC_OFF , SysAllocString(L" ")); Document2D->ksText(100, 80, 0, 0, 0, BOLD_ON , SysAllocString(L" ")); Document2D->ksText(100, 70, 0, 0, 0, UNDERLINE_ON, SysAllocString(L" "));
In diesem Beispiel wird der Einfachheit halber der Code weggelassen, der für die Erstellung und Ausführung des Dokuments verantwortlich ist (dieses Thema wurde in früheren Lektionen behandelt), sowie für die Freigabe von Ressourcen (auch nach dem Aufruf der
SysAllocString- Funktion).
Bitte beachten Sie: Standardmäßig zeigt KOMPAS kursiven Text an. Um
Kursivschrift abzubrechen
, verwenden wir daher das Flag
ITALIC_OFF . Die folgende Abbildung zeigt die von diesem Programm ausgegebenen Zeilen.

Die gleichzeitige Verwendung gepaarter Flags (z. B.
BOLD_ON und
BOLD_OFF ) hat keinen Einfluss auf die Anzeige der Zeichenfolge. Es wird so angezeigt, wie es angezeigt würde, wenn keines dieser Flags gesetzt wäre.
Obere und untere Abweichungen
Die oberen und unteren Abweichungen werden mit den in der folgenden Tabelle aufgeführten Flags festgelegt.

Das folgende Beispiel zeigt ein Programm, das die Ausgabe einer Zeile mit oberen und unteren Abweichungen demonstriert.
double x = 100.0; double y = 100.0; BSTR str = SysAllocString(L" "); long itext = Document2D->ksText(x, y, 0, 0, 0, 0, str); SysFreeString(str); x += Document2D->ksGetTextLengthFromReference(itext) + 2.0; str = SysAllocString(L" "); itext = Document2D->ksText(x, y, 0, 0, 0, UPPER_DEVIAT, str); SysFreeString(str); double dx1 = Document2D->ksGetTextLengthFromReference(itext); str = SysAllocString(L" "); itext = Document2D->ksText(x, y, 0, 0, 0, LOWER_DEVIAT, str); SysFreeString(str); double dx2 = Document2D->ksGetTextLengthFromReference(itext); x += max(dx1, dx2); str = SysAllocString(L" "); Document2D->ksText(x, y, 0, 0, 0, 0, str); SysFreeString(str);
In diesem Beispiel berechnen wir jedes Mal die Koordinaten der Ankerpunkte der angezeigten Linien neu, um zu wissen, wo sie ausgegeben werden sollen. Verwenden
Sie dazu die in der vorherigen Lektion beschriebene Methode
ksGetTextLengthFromReference . Bitte beachten Sie: Nur die horizontale Koordinate wird neu berechnet, die vertikale ändert sich nicht. KOMPAS selbst bestimmt den gewünschten vertikalen Linienversatz. Die folgende Abbildung zeigt die von diesem Programm erzeugte zusammengesetzte Linie.

Bruchteil
Das Rendern von Brüchen wird durch die in der folgenden Tabelle aufgeführten Flags festgelegt.

Das folgende Beispiel zeigt ein Programm, das die Ausgabe eines Bruchs in einer Textzeichenfolge demonstriert.
double x = 100.0; double y = 100.0; BSTR str = SysAllocString(L" "); long itext = Document2D->ksText(x, y, 0, 0, 0, 0, str); SysFreeString(str); x += Document2D->ksGetTextLengthFromReference(itext) + 2.0; str = SysAllocString(L""); itext = Document2D->ksText(x, y, 0, 0, 0, NUMERATOR, str); SysFreeString(str); double dx1 = Document2D->ksGetTextLengthFromReference(itext); str = SysAllocString(L""); itext = Document2D->ksText(x, y, 0, 0, 0, DENOMINATOR, str); SysFreeString(str); double dx2 = Document2D->ksGetTextLengthFromReference(itext); x += max(dx1, dx2); str = SysAllocString(L" "); Document2D->ksText(x, y, 0, 0, 0, 0, str); SysFreeString(str);
Es ist leicht zu bemerken, dass dieses Beispiel dem vorherigen ähnlich ist. In der Tat unterscheidet sich die Ausgabe von Abweichungen und Brüchen nur in den verwendeten Flags. Die folgende Abbildung zeigt das Ergebnis des Programms.
FazitIn dieser Lektion haben wir uns mit dem Erstellen zusammengesetzter Zeichenfolgen mit der
ksText- Methode befasst. Die hier beschriebene Methode ist nicht dokumentiert, daher sollten Sie sie nicht in Ihren Anwendungen verwenden. In den folgenden Lektionen werden wir uns die dokumentierten Möglichkeiten zum Erstellen zusammengesetzter Zeichenfolgen genauer ansehen. Und dort brauchen wir die Flaggen, die wir heute getroffen haben.
Um fortzufahren, folgen Sie den Nachrichten des Blogs.
Sergey Norseev, Ph.D., Autor des Buches "Anwendungsentwicklung für COMPAS in Delphi".