Utilisation de l'API KOMPAS-3D → Leçon 12 → Lignes composées

Dans la leçon précédente, nous avons examiné l'affichage de chaînes simples. À ce sujet, nous parlerons de la formation de lignées composées, y compris les écarts et les fractions. Nous générerons de telles lignes en utilisant la méthode ksText , que nous avons étudiée précédemment. À strictement parler, cette méthode n'est pas destinée à produire des chaînes complexes. Néanmoins, dans la leçon d'aujourd'hui, nous allons nous familiariser avec un certain nombre de drapeaux qui jouent un rôle clé dans la formation de lignes composées.




Le contenu de la série de leçons «Travailler avec l'API KOMPAS-3D»


  1. Les bases
  2. Conception de dessin
  3. Connexion correcte à KOMPAS
  4. Inscription principale
  5. Primitives graphiques
  6. Enregistrement d'un document dans différents formats
  7. Connaître les paramètres
  8. Méthodes d'écriture plus sophistiquées dans le cartouche
  9. Lecture des cellules de légende
  10. Caractères spéciaux dont une chaîne
  11. Étiquettes de texte simples
  12. Chaînes composées

Bien que les méthodes décrites pour la construction des écarts et des fractions ne soient pas documentées, elles, comme mes expériences le montrent, fonctionnent correctement sur les versions modernes de KOMPAS (vérifiées les 15, 16 et 17). Mais ce comportement peut être modifié dans les futures versions.

Les méthodes «correctes» pour construire des chaînes composées seront décrites dans les leçons suivantes.

Italique, gras et souligné


Les styles italiques, gras et soulignés sont contrôlés par les indicateurs indiqués dans le tableau ci-dessous. Ils sont déclarés dans le fichier d'en-tête ldefin2d.h .



Dans la méthode ksText, l' effet de chacun de ces indicateurs est limité à l'appel de cette méthode. Ce qui suit est un exemple de programme qui illustre la sortie de lignes avec différents styles.

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" ")); 

Par souci de simplicité, cet exemple omet le code responsable de la création et de l'exécution du document (ce sujet a été discuté dans les leçons précédentes), ainsi que de la libération des ressources (y compris après avoir appelé la fonction SysAllocString ).

Remarque: par défaut, KOMPAS affiche le texte en italique. Par conséquent, pour annuler l' italique, nous utilisons le drapeau ITALIC_OFF . La figure ci-dessous montre les lignes produites par ce programme.



L'utilisation simultanée de drapeaux appariés (par exemple, BOLD_ON et BOLD_OFF ) n'affecte pas l'affichage de la chaîne. Il est affiché comme il le serait si aucun de ces indicateurs n'était défini.

Écarts supérieurs et inférieurs


Les écarts supérieurs et inférieurs sont définis à l'aide des drapeaux indiqués dans le tableau ci-dessous.



Ce qui suit est un exemple de programme qui illustre la sortie d'une ligne contenant des écarts supérieurs et inférieurs.

 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); 

Dans cet exemple, nous recalculons à chaque fois les coordonnées des points d'ancrage des lignes affichées afin de savoir où les sortir. Pour ce faire, utilisez la méthode ksGetTextLengthFromReference décrite dans la leçon précédente. Attention: seule la coordonnée horizontale est recalculée, la verticale ne change pas. KOMPAS détermine lui-même le décalage vertical souhaité. La figure ci-dessous montre la ligne composite générée par ce programme.



Fraction


Le rendu des fractions est défini par les indicateurs répertoriés dans le tableau ci-dessous.



Voici un exemple de programme qui illustre la sortie d'une fraction dans une chaîne de texte.

 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); 

Il est facile de remarquer que cet exemple est similaire au précédent. En effet, la sortie des écarts et des fractions ne diffère que par les drapeaux utilisés. La figure ci-dessous montre le résultat du programme.



Conclusion

Dans cette leçon, nous avons examiné la création de chaînes composites à l'aide de la méthode ksText . La méthode décrite ici n'est pas documentée, vous ne devez donc pas l'utiliser dans vos applications. Dans les leçons suivantes, nous examinerons de plus près les moyens documentés de créer des chaînes composées. Et là, nous aurons besoin des drapeaux que nous avons rencontrés aujourd'hui.

Pour continuer, suivez l'actualité du blog.

Sergey Norseev, Ph.D., auteur du livre "Application Development for COMPAS in Delphi".

Source: https://habr.com/ru/post/fr424509/


All Articles