sail Posté(e) le 5 février 2007 Posté(e) le 5 février 2007 bonjour Dans mon dessin j'ai un bloc inséré x fois . il posséde un attribut que je veux incrementer automatiquement . Pour cela je selectionne tous les blocs (par un jeu de selection)qui m'intéresse et je lance ma routine mais évidement mon attribut s'incremente dans l'ordre du dernier bloc inseré au premier . He voila le probléme . Je voudrais qu'il s'incrémente selon l'option que je choisi , c'est à dire de gauche à droite et d'en haut en bas (par colonnes et rangées) etc . Pour cela je récupére le point d'insertion du bloc mais aprés il faudrait pouvoir trier les coordonnées en x et y pour que je puisse incrementer mes attributs selon l'option que choisi . si quelqu'un à la solution d'ailleur elle doit éxister merci d'avance .
punky0147 Posté(e) le 7 mai 2007 Posté(e) le 7 mai 2007 Je pense que la meileure solution consiste à passer tous les blocs de ton dessin, et à stocker dans un array les coordonnées x et y. tu auras donc un array du style :coord(1 to nbblocs,0 to 1) avec nbblocs le nombre de blocs que tu asensuite, le principe c'est de faire deux fois une boucle pour trier les blocs de gauche à droite (coordonnée x croissante) et de haut en bas (coordonnée x décroissante) pour qu'à la fin, ton array contienne les coordonnées des blocs dans l'ordre que tu as spécifié. ca donne qqch de ce genre (j'ai pas VB pour tester ce que je tape) : 'on tri d'abord l'array par coordonnée x croissante : for k=0 to 1if k=0 thensens=1elsesens=-1end iffor i=1 to nbblocs-1 ligne=0 val=coord(i,k) for j=i+1 to nbblocs if coord(j,k)*sens val=coord(j,k) ligne=j end if next j tempo=coord(ligne,0) coord(ligne,0)=coord(i,0) coord(i,0)=tempo tempo=coord(ligne,1) coord(ligne,1)=coord(i,1) coord(i,1)=temponext inext k je pense que ce code doit fonctionner, je l'essayerai sur un autre PC si j'ai le temp. La variable sens sert à inverser l'inégalité puisqu'on tri par croissant en x et par décroissant en y.La variable ligne repère la ligne du minimumla variable val contient la valeur minimale en cours (ou maximale pour y)après le next j, on permute la ligne courante et la ligne du min. tient moi au courant...
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant