web-dev-qa-db-fra.com

Comment ajouter une courbe ou un arc à un diagramme sur draw.io?

J'ai parcouru tous les éléments disponibles, mais je ne trouve pas de courbe ou d'arc à ajouter à mon diagramme. Est-ce qu'il y a quelque part?

7
Ian Gibbs

Vous pouvez faire glisser un nouvel Edge en tant que courbe à partir de la bibliothèque de connexions

The curved connector icon in the Connection library in draw.io

Vous pouvez également modifier une connexion existante en la sélectionnant et en choisissant une courbe dans la liste déroulante de la barre d’outils Style de contour.

enter image description here

2
David

Une approche plus manuelle pour obtenir des courbes dans draw.io consiste à éditer la forme d’un élément. Cela permet trois variations différentes des courbes, <arc ... />, <quad ... /> ou <curve ... />. L'image montre ces trois courbes, et plus bas, le code nécessaire pour produire ces éléments. L'image contient des instructions supplémentaires pour illustrer la génération de la courbe.

Example image of arc, quad and curve

Modification des formes

Nous sommes en mesure d’éditer le style et la forme des éléments dans draw.io. Tous les éléments n'ont cependant pas une forme à éditer. La plupart des éléments du menu Basic ont une forme à modifier.

La forme et le style peuvent être modifiés à partir du panneau de formatage  Ctrl+Shift+P dans l'onglet Style , et là vous avez des boutons bien nommés Modifier le style , Modifier l'image et/ou Modifier la forme . Les boutons affichés dépendent de l'élément sélectionné.

Pour cette réponse, nous nous concentrons sur le bouton Modifier la forme , et pour l'afficher, nous commençons par ajouter un Basic > Étoile à notre dessin. Draw.io a de la documentation sur édition de formes avec un petit exemple , et une référence à la documentation SVG sur dessin d'arcs , qui était la base pour moi expérimenter jusqu'à ce que j'ai trouvé les exemples de code utilisés dans cette réponse.

Pour chacun des exemples ci-dessous, insérez un élément avec une forme, sélectionnez-le et cliquez sur le bouton Modifier la forme . Insérez ou modifiez le texte qu'il contient et cliquez sur Aperçu pour obtenir un aperçu ou sur Appliquer pour fermer la boîte de dialogue et voir votre résultat final. Le résultat final de ce code, avec quelques lignes directrices ajoutées, donne cette image:

Editer une arc

L'arc est basé sur deux ellipses qui traversent le point de base et le point spécifique. Comme ils forment en réalité quatre chemins différents de la base au point final, vous devez choisir lequel de ces chemins vous utilisez.

Voici un exemple de code pour un segment de camembert de 240 °:

<shape aspect="variable" h="2.0" w="2.0" name="Angle" strokewidth="inherit">
  <connections/>
  <background>
    <path>
      <move x="2.0" y="1.0"/>
      <arc x="0.5" y="1.866" rx="1.0" ry="1.0" large-arc-flag="1" sweep-flag="0" x-axis-rotation="0"/>
      <line x="1.0" y="1.0"/>
      <close/>
    </path>
  </background>  
  <foreground>
    <fillstroke/>
  </foreground>
</shape>

Voici les détails expliquant pourquoi ce code dessine une segmentation de 240 degrés:

  • La plupart des formes devront avoir shape, background et/ou foreground. Quand j'ai choisi d'utiliser background c'est parce que cela me permet d'ajouter très facilement des ombres à la forme. J'ai créé un carré de hauteur et de largeur égale à 2,0 dans la toile de base de la forme afin de permettre l'inclusion d'un cercle complet dans la forme
  • Nous devons dessiner une path
    • Nous allons commencer à 0 degrés, ce qui se traduit par la commande <move x="2.0" y="1.0">
    • Nous dessinons ensuite une arc allant du point précédent du chemin jusqu'à un point final (x, y), avec les rayons des ellipses (rx et ry) où sweep-flag et large-arc-flag sélectionne la partie d'ellipse correcte et indique si ces ellipses sont pivotées (x-axis-rotation). Pour obtenir un degré 240, nous avons besoin de ce qui suit:
      • En utilisant trig de base ou un cercle unitaire interactif nous trouvons sur le cercle unitaire les coordonnées correspondant à 240 degrés: (cos(240°), sin(240°) = (-0.5, -0.866) qui se traduit dans notre forme doit être (1+x, 1-y) ce qui donne x="0.5" y="1.866"
      • Le degré est supérieur à 180, nous avons donc choisi large-arc-flag="1"
      • Et nous dessinons le chemin dans le sens inverse des aiguilles d'une montre, ce qui donne sweep-flag="0"
    • Pour en faire un segment de Nice, nous ajoutons un line au centre, coordonnées 1.0, 1.0, puis close le chemin.
  • Ceci définit le chemin entier, ce qui va créer une ombre, mais il n'a pas encore été tracé à proprement parler. Ceci est fait en utilisant la commande fillstroke dans la section foreground

Notez que si vous ne voulez que le segment d'arc, vous pouvez supprimer les balises line et close, et remplacer la fillstroke par un simple stroke. Faites des essais en changeant le sweep-flaget le large-arc-flag, ainsi que les autres tags Dans mon exemple, j'ai utilisé rx=ry=1 qui transforme les ellipses en cercles, mais expérimente avec des modifications du rayon, du balayage ou de l'arc en grand arc, et voit ce qui se passe.

Quelques autres coordonnées pour obtenir des angles standard sont les suivantes:

  • 45 ° sur le cercle unitaire: (0.707, 0.707) qui donne x="1.707" y="0.293"
  • 60 ° sur le cercle unitaire: (0.5, 0.866) qui donne x="1.5" y="0.134"
  • 225 ° = 180 ° + 45 °: (-0.707, -0.707) qui donne x="0.293" y="1.707"
  • n ° sur le cercle unitaire: (cos(n), sin (n) `` qui donne x="1+cos(n)" y="1-sin(n)"
  • Notez les valeurs 0.707 (& 0.293), 0.5, 0.866 (& 0.134), qui se reproduisent régulièrement par rapport aux 30 °, 45 ° & 60 ° et n*90° angles autour du cercle ...

Notez l'utilisation de move pour spécifier le point de base, puis le chaînage en chaîne de arc et line (et vous auriez pu utiliser quad et curve) produire un chemin plus long.

Editer une quad

Une courbe quad est une courbe quadratique, qui correspond à la courbe que vous obtenez lorsque vous commencez par une ligne allant du point de base au point de contrôle et que vous faites demi-tour jusqu'à ce que la ligne corresponde au point final.

Voici un exemple:

<shape aspect="variable" h="1" w="1" name="Quad" strokewidth="inherit">
  <connections />
  <background>
    <path>
      <move x="0" y="0"/>
      <quad x1="0.25" y1="1" x2="1" y2="1"/>
    </path>
  </background>
  <foreground>
    <stroke/>
  </foreground>
</shape>

Explication de la courbe quad:

  • Définir le point de base, <move x="0" y="0" />
  • Donnez un point de contrôle à la quad, x1="0.25" y1="1"
  • Et spécifiez le point final, x2="1" y2="1"

Ce type de courbe peut être utile lorsque vous souhaitez contrôler l'angle des segments de ligne de début et de fin de la courbe. Autrement dit, si vous voulez créer plusieurs segments de courbe et que vous voulez qu’ils aient des jonctions de Nice.

Editer une curve

La forme finale curve utilise deux points de contrôle qui fonctionnent comme des tractions gravitationnelles sur la ligne jusqu’au point final. Voici le code:

<shape aspect="variable" h="1" w="1" name="curve" strokewidth="inherit">
  <connections />
  <background>
    <path>
      <move x="0" y="0"/>
      <curve x1="0.1" y1="0.4" x2="0.9" y2="0.3" x3="1" y3="1"/>
    </path>
  </background>
  <foreground>
    <stroke/>
  </foreground>
</shape>
  • Définir le point de base, <move x="0" y="0" />
  • Donnez deux points de contrôle à la curve, x1="0.1" y1="0.4" x2="0.9" y2="0.3"
  • Et spécifiez le point final, x3="1" y3="1"

Notez que j'ai utilisé le coin supérieur gauche comme point de départ et le coin inférieur droit comme point final à la fois pour le quad et le curve, vous pouvez bien sûr le modifier si vous souhaitez une autre direction générale de la courbe. .

9
holroy

Pour tracer des arcs, faites glisser la courbe bidirectionnelle du panneau Divers vers la zone de dessin, puis cliquez sur la courbe pour afficher les points "de couleur bleue" appelés "points de passage". Vous pouvez supprimer ces points de cheminement pour modifier sa structure. Faites un clic droit et sélectionnez Supprimer le point de cheminement. Supprimez les points de cheminement inutiles jusqu'à ce que vous ayez seulement 3 points de cheminement, 2 aux bords et un autre entre les deux. En faisant glisser le point de cheminement situé entre les 2 points de cheminement, vous pouvez obtenir une courbe de courbures différentes.

1
Deepak Kiran