CadXP: Sortir les attributs des blocs - CadXP

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Sortir les attributs des blocs

#1 L'utilisateur est hors-ligne   Seysou 

  • ceinture blanche
  • Groupe : Membres
  • Messages : 4
  • Inscrit(e) : 25-janvier 21

Posté 25 janvier 2021 - 11:31

Helloooooooo !! i neeeeed helpppppp !!
Je vais faire un exemple pour mieux comprendre
j'ai plusieurs blocs dans un dessin avec 2 attributs chaque bloc.
je vais extraire les attributs de la façon suivante:
l'utilisateur clique sur les blocs (bloc par bloc): par exemple il a cliqué sur 6 blocs; après un clic sur entrée je veux:
Ouvrir un fichier excel ou bien il modifie sur un fichier déjà ouvert:
Inserer les informations suivantes sur l'excel:
ligne N°1
place dans la colonne A l'attribut 1 du premier bloc
place dans la colonne B l'attribut 2 du premier bloc
place dans la colonne C l'attribut 1 du 2eme bloc
place dans la colonne D l'attribut 2 du 2eme bloc

ligne N°2
place dans la colonne A l'attribut 1 du 2eme bloc
place dans la colonne B l'attribut 2 du 2eme bloc
place dans la colonne C l'attribut 1 du 3eme bloc
place dans la colonne D l'attribut 2 du 3eme bloc

Ligne N°n-1:
place dans la colonne A l'attribut 1 du n-1eme bloc
place dans la colonne B l'attribut 2 du n-1eme bloc
place dans la colonne C l'attribut 1 du neme bloc
place dans la colonne D l'attribut 2 du neme bloc

J'ai essayé de le faire mais je n'arrive pas :(
Des pistes pour m'aider svp
0

#2 L'utilisateur est hors-ligne   Curlygoth 

  • ceinture marron
  • Groupe : Membres
  • Messages : 206
  • Inscrit(e) : 09-mai 19
  • LocationJuste devant toi

Posté 25 janvier 2021 - 14:02

moi je creerais un tableau dynamique que tu remplis a chaque fois que tu cliques sur un bloc avec
Redim preserve


pour extraire j'utilise ça

'X c'est l'incrément de ta boucle

                If blockrefobj.HasAttributes = True Then 'pas obligatoire
                        For Each att In blockrefobj.GetAttributes
                                If att.TagString = "ATT1" Then 'le nom de ton attribut
                                TAB_(X,0) = att.TextString 'la valeur de l'attribut
                                Else
                                End If

                                If att.TagString = "ATT2" Then 'le nom de ton attribut
                                TAB_(X,1) = att.TextString 'la valeur de l'attribut
                                Else
                                End If
      
                        Next
                Else
                End If


des qu'il y a une erreur une message box pour demander si tu souhaites sortir ou non de ta sélection

ensuite tu crées un classeur excel en vba via la reference Microsoft Excel XX.X Objet Librairy

où tu transpose ton tableau apres soit vers un tableau exoistant soit un nouveau
et c'est comme excel grace à la reference ;-)
Je dessine sur Autocad depuis mes 16 ans, je fais tout avec 2D/3D etc...
Et maintennant ? Ben, je ne dessine quasiment plus...
Je programme pour que mon ordinateur travail à ma place
Et je créé des outils pour gérer planning, mail auto, rapport issu du dessin et j'en passe.
(Uniquement en VBA et VB.net / Sql)

Mon site Web (en cours de construction) : Site
0

#3 L'utilisateur est hors-ligne   Seysou 

  • ceinture blanche
  • Groupe : Membres
  • Messages : 4
  • Inscrit(e) : 25-janvier 21

Posté 25 janvier 2021 - 16:05

Voir le messageCurlygoth, le 25 janvier 2021 - 14:02 , dit :

moi je creerais un tableau dynamique que tu remplis a chaque fois que tu cliques sur un bloc avec
Redim preserve


pour extraire j'utilise ça

'X c'est l'incrément de ta boucle

                If blockrefobj.HasAttributes = True Then 'pas obligatoire
                        For Each att In blockrefobj.GetAttributes
                                If att.TagString = "ATT1" Then 'le nom de ton attribut
                                TAB_(X,0) = att.TextString 'la valeur de l'attribut
                                Else
                                End If

                                If att.TagString = "ATT2" Then 'le nom de ton attribut
                                TAB_(X,1) = att.TextString 'la valeur de l'attribut
                                Else
                                End If
      
                        Next
                Else
                End If


des qu'il y a une erreur une message box pour demander si tu souhaites sortir ou non de ta sélection

ensuite tu crées un classeur excel en vba via la reference Microsoft Excel XX.X Objet Librairy

où tu transpose ton tableau apres soit vers un tableau exoistant soit un nouveau
et c'est comme excel grace à la reference ;-)



Merci pour votré réponse;
j'ai pensé de faire le boucle do until (jusqu'à l'utilisateur clique sur entrée) comment écrire ça ?
0

#4 L'utilisateur est hors-ligne   Curlygoth 

  • ceinture marron
  • Groupe : Membres
  • Messages : 206
  • Inscrit(e) : 09-mai 19
  • LocationJuste devant toi

Posté 25 janvier 2021 - 17:10

si tu veux un résultat rapide sans prise de tete (chercher les références qui gère le clavier pendant une instruction, gérer les commandes clavier etc...)

fait juste une messagebox tu y gagnera ton temps pour cette petite procédure ;-)

"genre voulez vous continuer ?" ou "Voulez vous arreter ?" et la suivant la réponse ton prog part d'une maniere ou d'une autre

sinon faut verifier l'entrée clavier chr(10)
Je dessine sur Autocad depuis mes 16 ans, je fais tout avec 2D/3D etc...
Et maintennant ? Ben, je ne dessine quasiment plus...
Je programme pour que mon ordinateur travail à ma place
Et je créé des outils pour gérer planning, mail auto, rapport issu du dessin et j'en passe.
(Uniquement en VBA et VB.net / Sql)

Mon site Web (en cours de construction) : Site
0

#5 L'utilisateur est hors-ligne   Seysou 

  • ceinture blanche
  • Groupe : Membres
  • Messages : 4
  • Inscrit(e) : 25-janvier 21

Posté 26 janvier 2021 - 12:19

Voir le messageCurlygoth, le 25 janvier 2021 - 17:10 , dit :

si tu veux un résultat rapide sans prise de tete (chercher les références qui gère le clavier pendant une instruction, gérer les commandes clavier etc...)

fait juste une messagebox tu y gagnera ton temps pour cette petite procédure ;-)

"genre voulez vous continuer ?" ou "Voulez vous arreter ?" et la suivant la réponse ton prog part d'une maniere ou d'une autre

sinon faut verifier l'entrée clavier chr(10)


Bonjour, Merci pour votre réponse,
mais j'ai pas compris ça :(chercher les références qui gère le clavier pendant une instruction, gérer les commandes clavier etc...)
Merci par avance
0

#6 L'utilisateur est hors-ligne   Curlygoth 

  • ceinture marron
  • Groupe : Membres
  • Messages : 206
  • Inscrit(e) : 09-mai 19
  • LocationJuste devant toi

Posté 26 janvier 2021 - 13:46

https://docs.microso.../keypress-event

ça c'est la page pour l'évenement quand vous appuyez sur une touche... facile pas compliqué

par contre si votre programme tourne et attends la sélection d'un bloc et que vous faites la touche entrée (il va générer une erreur car ce n'est pas ce qu'il demande)

c'est pour ça que quand je fais des choses comme ça, je le rentre dans une gestionnaire d'erreur et ensuite je la traite.

Maintennnant si vous voulez absolument faire entrée à ce moment la, alors que dans votre procédure vous demande de sélectionner un objet, il va falloir chercher la référence qui permet ça...)

car de base le VBA ne fait pas de multi-threading et si tu veux le faire faut ajouter des références au projets
Je dessine sur Autocad depuis mes 16 ans, je fais tout avec 2D/3D etc...
Et maintennant ? Ben, je ne dessine quasiment plus...
Je programme pour que mon ordinateur travail à ma place
Et je créé des outils pour gérer planning, mail auto, rapport issu du dessin et j'en passe.
(Uniquement en VBA et VB.net / Sql)

Mon site Web (en cours de construction) : Site
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)