|
Points de liaison dans diagramme |
Started by JCM, Oct., 21 2024 9:59 AM - 9 replies |
| |
| | | |
|
| |
Registered member 12 messages |
|
Posted on October, 21 2024 - 9:59 AM |
Bonjour,
est-ce qu'il est possible dans win2024 d'augmenter le nombre de points d'intersections sur un rectangle dans un champ diagramme ? Comme dans l'exemple ici, je voudrais pouvoir mettre un plus grand nombre de liaisons (flèches...) entre les deux formes,

merci 
JCM
-- JCM V2024 WB WD WDMMessage modified, October, 21 2024 - 10:00 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 950 messages |
|
Posted on October, 21 2024 - 11:41 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 12 messages |
|
Posted on October, 21 2024 - 3:38 PM |
Bonjour @Cédric_34,
merci, on parle dans la doc de points par programmation, je cherche à pouvoir augmenter le nombre de points disponibles lorsque l'utilisateur exploite le champ diagramme, est-ce que c'est possible ? Sur l'exemple affiché ci-dessus j'aimerai par exemple avoir 15 points sur la verticale... je ne vois pas comment faire, merci 
-- JCM V2024 WB WD WDMMessage modified, October, 21 2024 - 3:39 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 950 messages |
|
Posted on October, 21 2024 - 5:03 PM |
Dans ce cas, créez un : diagPolygone (Type de variable) https://aide.pcsoft.fr/fr-FR/…
Vous créez ce rectangle avec plusieurs points par arête, par exemple pour l'arête Haute x=0, y=0, x=25, y=0, x=50, y=0 puis vous descendez de même pour l'arête droite, etc... Ainsi vous avez pour l'arête haute 3 segments, chaque segment à ces points d'attache (3 par segment). A vous de créer autant de segment que nécessaire et enfin vous sauvez la forme (le polygone) dans la bibliothèque.
CdltMessage modified, October, 21 2024 - 5:06 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 950 messages |
|
Posted on October, 21 2024 - 5:14 PM |
Résultat

sur cette image, un lien part pour chaque point d'attache. |
| |
| |
| | | |
|
| | |
| |
Registered member 950 messages |
|
Posted on October, 21 2024 - 9:12 PM |
Bonsoir, Une information que j'ai oublié de transmettre, dans la version de Windev que j'ai utilisé, il faut déclarer les propriétés (MaForme.Largeur) et (MaForme.Hauteur) avant de décrire les coordonnées des points sinon vous aurez les poignées de redimensionnement de la forme qui ne correspondront pas à la dimension de la forme. De plus, si vous utilisez : MaForme.Ouvert = Faux, la description de 3 cotés du rectangle devrait suffire (les points d'attache du coté non décrit correspondront aux points d'attache du coté opposé).
MaForme est un diagPolygone
MaForme.Largeur = 50 MaForme.Hauteur = 100
MaForme.Point[1].X = 0 MaForme.Point[1].Y = 0 MaForme.Point[2].X = 25 MaForme.Point[2].Y = 0 MaForme.Point[3].X = 50 MaForme.Point[3].Y = 0 MaForme.Point[4].X = 50 MaForme.Point[4].Y = 25 MaForme.Point[5].X = 50 MaForme.Point[5].Y = 50 MaForme.Point[6].X = 50 MaForme.Point[6].Y = 75 MaForme.Point[7].X = 50 MaForme.Point[7].Y = 100 MaForme.Point[8].X = 25 MaForme.Point[8].Y = 100 MaForme.Point[9].X = 0 MaForme.Point[9].Y = 100
MaForme.X = 100 MaForme.Y = 100
MaForme.Ouvert = Faux
MonDiagramme est un Diagramme <- MonDiag Ajoute(MonDiagramme.Forme, MaForme)

Cdlt |
| |
| |
| | | |
|
| | |
| |
Registered member 12 messages |
|
Posted on October, 22 2024 - 9:42 AM |
Bonjour, merci beaucoup, je vais tester tout ça  JCM
-- JCM V2024 WB WD WDM |
| |
| |
| | | |
|
| | |
| |
Registered member 950 messages |
|
Posted on June, 19 2025 - 3:21 PM |
Points d’Attache champ éditeur de Diagramme
Bonjour, Suite à une demande sur la possibilité de placer des points d’attache sur une forme dans l’éditeur de Diagramme pour créer des composants type Circuit Intégré, j’ai repris le projet pour lequel j’avais fourni une méthode (post #4, #5, #6, ci-dessus). Le moins que l’on puisse dire, c’est que cette méthode n’est finalement pas concluante (Présence des points aléatoire, impossible de placer les points avec précision, etc… , donc résultat très limite).
Je me suis orienté vers la propriété "PointDAttache" en programmation pour un résultat bien plus précis.
J’ai placé sur ma fenêtre un Champ Saisie (en haut sur la copie d’écran) contenant les coordonnées des points d’attache à placer sur la forme. Le champ de Saisie contient :
200,5;200,15;200,50;200,70;200,80;200,120;200,150;200,180;200,220;200,240;200,260
(Les couples de coordonnées sont séparés par des points Virgule, et les coordonnées X et Y d’un couple sont séparées par une virgule) Je place les points d’attache sur une forme (rectangle) de 200 de large et 400 de haut, mes points d’attache sont donc situés pour cet exemple sur la Hauteur Droite du rectangle (Tous les X à 200).

VarN, ID_Attache sont des entiers TabCoordonnees est un tableau de * par 2 entiers MaForme1, MaForme2 sont des diagRectangles
ChaîneVersTableau(SansCaractèreDroite(Saisie1, ";"), TabCoordonnees, ";", ",")
MonDiagramme est un Diagramme <- EDiag_MonDiagramme
Fen_Diag1.AffichageActif = Faux
MaForme1.X = 100 MaForme1.Y = 100 MaForme1.Largeur = 200 MaForme1.Hauteur = 400 MaForme1.Fond.Couleur = RougePastel
VarN = Ajoute(MonDiagramme.Forme, MaForme1)
"MaForme1" <- MonDiagramme.Forme[VarN]
MaForme2.X = 500 MaForme2.Y = 100 MaForme2.Largeur = 100 MaForme2.Hauteur = 100
POUR ID_Attache = 1 _À_ TableauOccurrence(TabCoordonnees) MonLien1 est un diagLien VarN = Ajoute(MonDiagramme.Forme, MonLien1) MonLien1 <- MonDiagramme.Forme[VarN] MonLien1.Départ.PointDAttache = MaForme1.PointDAttache[ID_Attache] MonLien1.Départ.PointDAttache.X = TabCoordonnees[ID_Attache, 1] MonLien1.Départ.PointDAttache.Y = TabCoordonnees[ID_Attache, 2] MonLien1.Arrivée.PointDAttache = MaForme2.PointDAttache[1] MonLien1.Arrivée.PointDAttache.X = 0 MonLien1.Arrivée.PointDAttache.Y = 50 VarN = Supprime(MonDiagramme.Forme, VarN) FIN
DiagrammeSelectMoins(EDiag_MonDiagramme)
sFichier est une chaîne = ComplèteRep(fRepExe) + "Multi_Attaches.wddiag" MonDiagramme.Sauve( sFichier )
MaBibli est une diagBibliothèque MaBibli.ChargeBibliothèque( sFichier ) MaBibli.Nom = "Electro"
Ajoute(EDiag_MonDiagramme.Bibliothèque, MaBibli )
Fen_Diag1.AffichageActif = Vrai
ToastAffiche( "La bibliothèque personnelle a été ajoutée dans la liste" )
Les points d’attache sont conservés dans la sauvegarde de la forme et sont utilisables sur les formes stockées dans une bibliothèque.
Comme d’habitude, je livre ici le code test, pas le code finalisé avec la gestion des erreurs, etc…
Si ça peut aider l’un d’entre vous. Cdlt |
| |
| |
| | | |
|
| | |
| |
Registered member 950 messages |
|
Posted on June, 22 2025 - 2:09 PM |
Bonjour Je poursuis les test pour répondre à la demande qui m'a été faite. Voici un test avec création dynamique des variables DiagLiens via la fonction "Compile" (pas vraiment utile pour le cas présent car un tableau suffit, mais je voulais savoir si c'était possible avec les DiagLiens). Cette fois, je n'utilise pas le rectangle forme2 et donc pas de point d'attache à créer sur ce rectangle (évidemment )
Toujours avec la méthode de la zone de Saisie décrite au post #8.
Je livrerai le test avec un Agrandissement de Tableau sur le prochain Post.
VarN, i sont des entiers sMonLien, sresultat, sresultatCompile sont des chaînes
TabCoordonnees est un tableau de * par 2 entiers
MaForme1 est un diagRectangle
ChaîneVersTableau(SansCaractèreDroite(Saisie1, ";"), TabCoordonnees, ";", ",")
MonDiagramme est un Diagramme <- EDiag_MonDiagramme
Fen_Diag1.AffichageActif = Faux
MaForme1.X = 100 MaForme1.Y = 100 MaForme1.Largeur = 200 MaForme1.Hauteur = 400 MaForme1.Fond.Couleur = RougePastel
VarN = Ajoute(MonDiagramme.Forme, MaForme1) "MaForme1" <- MonDiagramme.Forme[VarN]
POUR i = 1 _À_ TableauOccurrence(TabCoordonnees) sMonLien = "MonLien" + i + " est un diaglien" sMonLien = "Global" + RC + sMonLien sresultatCompile = Compile("Liens_Dynamiques", sMonLien) SELON sresultatCompile CAS "" : ExécuteTraitement("Liens_Dynamiques", trtProcedure) CAS "ERR" : Info("Compilation impossible. " + RC + ErreurInfo()) AUTRE CAS : sresultat = sresultatCompile FIN {"MonLien" + (i) + ".Départ.PointDAttache", indVariable} = MaForme1.PointDAttache[i] {"MonLien" + (i) + ".Départ.PointDAttache.X", indVariable} = TabCoordonnees[i, 1] {"MonLien" + (i) + ".Départ.PointDAttache.Y", indVariable} = TabCoordonnees[i, 2] FIN
DiagrammeSelectMoins(EDiag_MonDiagramme)
sFichier est une chaîne = ComplèteRep(fRepExe) + "Multi_Attaches_2.wddiag" MonDiagramme.Sauve( sFichier )
Fen_Diag1.AffichageActif = Vrai
ToastAffiche( "Le Diagramme a été enregistré sous le nom " + fExtraitChemin(sFichier, fFichier))
CdltMessage modified, June, 22 2025 - 2:12 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 950 messages |
|
Posted on June, 22 2025 - 4:49 PM |
Essai avec déclaration dynamique des Diagliens via un agrandissement de Tableau (ainsi, tous les couples de coordonnées de la zone de saisie sont traités). (Pour la Zone de Saisie, voir post '#8').

VarN, VarL, i sont des entiers TabCoordonnees est un tableau de * par 2 entiers
TabLiens est un tableau <agrandissement> de diagLiens
MaForme1 est un diagRectangle MaForme2 est un diagRectangle
ChaîneVersTableau(SansCaractèreDroite(Saisie1, ";"), TabCoordonnees, ";", ",")
MonDiagramme est un Diagramme <- EDiag_MonDiagramme
Fen_Diag1.AffichageActif = Faux
MaForme1.X = 100 MaForme1.Y = 100 MaForme1.Largeur = 200 MaForme1.Hauteur = 400 MaForme1.Fond.Couleur = RougePastel
VarN = Ajoute(MonDiagramme.Forme, MaForme1) "MaForme1" <- MonDiagramme.Forme[VarN]
MaForme2.X = 500 MaForme2.Y = 100 MaForme2.Largeur = 200 MaForme2.Hauteur = 400
VarN = Ajoute(MonDiagramme.Forme, MaForme2) "MaForme2" <- MonDiagramme.Forme[VarN]
POUR i = 1 _À_ TableauOccurrence(TabCoordonnees) VarL = Ajoute(MonDiagramme.Forme, TabLiens[i]) TabLiens[i] <- MonDiagramme.Forme[VarL] TabLiens[i].Départ.PointDAttache = MaForme1.PointDAttache[i] TabLiens[i].Départ.PointDAttache.X = TabCoordonnees[i, 1] TabLiens[i].Départ.PointDAttache.Y = TabCoordonnees[i, 2] TabLiens[i].Arrivée.PointDAttache = MaForme2.PointDAttache[i] TabLiens[i].Arrivée.PointDAttache.X = 0 TabLiens[i].Arrivée.PointDAttache.Y = TabCoordonnees[i, 2] FIN
DiagrammeSelectMoins(EDiag_MonDiagramme)
sFichier est une chaîne = ComplèteRep(fRepExe) + "Multi_Attaches_3.wddiag" MonDiagramme.Sauve( sFichier )
Fen_Diag1.AffichageActif = Vrai
ToastAffiche( "Le Diagramme a été enregistré sous le nom " + fExtraitChemin(sFichier, fFichier))
CdltMessage modified, June, 22 2025 - 4:51 PM |
| |
| |
| | | |
|
| | | | |
| | |
|