Aller au contenu

punky0147

Membres
  • Compteur de contenus

    28
  • Inscription

  • Dernière visite

Tout ce qui a été posté par punky0147

  1. Je suis pas très familiarisé avec ce genre de manip en vba, mais je regarde ca dès que j'ai mon pc avec autocad (demain normalement). C'est un sujet ntéressant
  2. punky0147

    trier

    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 as ensuite, 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 1 if k=0 then sens=1 else sens=-1 end if for 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)=tempo next i next 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 minimum la 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...
  3. Si j'ai bien compris ceque tu veux faire, tu as deux solutions : soit tu stoskes tout tes attributs dans un array et ensuite, tu recherches le plus grand, soit tu fais ca à la volée. Pour la volée (un peu moins lourd), ca donnera quelque chose de ce style : max=0 For Each Entity In objJeuSel ' Si il a des attributs If Entity.HasAttributes Then ' On les récupére Attributes = Entity.GetAttributes ' On parcourt le tableau For j = LBound(Attributes) To UBound(Attributes) If Attributes(j).TagString = "B" Then if max max=Attributes(j).textString end if End If Next j End If Next msgbox "Le maximum est : "+cstr(max) c'est bon ? sinon, expliques un peu plus clairement ce que tu veux faire
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité