Aller au contenu

Comment mettre à jour les attributs du bloc insérer ?


DenisHen

Messages recommandés

Bonjour à la communauté.
Voilà, j'ai réussi à insérer un bloc, mais je ne sais pas comment "remplir" ses attributs selon des TextBox qui sont dans mon UserForm.
Si quelqu'un a une astuce, un conseil, une idée, je suis preneur...
Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

j'ai répondu a au moins 5 sujets pour ça ^^

et je te le répète : Fait des functions pour ne l'écrire qu'une fois !

 

For Each ATT In blockrefobj.GetAttributes
    If ATT.TagString = NOM_ATT Then
      ATT.TextString = VALEUR
        Exit For
    Else
    End If
Next ATT

 

Lien vers le commentaire
Partager sur d’autres sites

Merci pour votre aide.

J'ai donc écris ceci dans mon UserForm :

    InsBlk = ThisDrawing.Utility.GetPoint(, vbCr & "Point d'insertion de la semelle : ")
    RotBlk = ThisDrawing.Utility.GetAngle(InsBlk, vbCr & "Rotation de la semelle : ")
    Set BlkRefObj = ThisDrawing.ModelSpace.InsertBlock(InsBlk, "SemelleIsoléePlan.dwg", TxtLong.Value, TxtLarg.Value, 1, RotBlk)
    Temp = MajAttrib("LONG", TxtLong.Value)

Et une fonction (😉) dans un module :

Public Function MajAttrib(Attribut As String, Text As String)
    For Each ATT In BlkRefObj.GetAttributes
        If ATT.TagString = Attribut Then
            ATT.TextString = Text
            Exit For
        Else
        End If
    Next ATT
End Function

Mais VBA bloque au "For Each ATT", "Objet requis"...

@(gile): je suis désolé, mais je n'ai absolument rien compris dans l'aide AutoCAD "GetAttributes Method (ActiveX)" qui est en anglais.

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Il y a 4 heures, DenisHen a dit :

@(gile): je suis désolé, mais je n'ai absolument rien compris dans l'aide AutoCAD "GetAttributes Method (ActiveX)" qui est en anglais.

Si tu ne fais pas l'effort de comprendre les pages de l'aide (certes en anglais, mais il existe de nombreux outils de traduction sur le web) qui sont toujours organisées de la même façon et qui fournissent des exemples, tu auras toujours besoin de demander de l'aide à d'autres ce qui ne te feras pas vraiment progresser.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

@(gile): je suis bien d'accord avec toi, mais là, ça me parait pointu, et j'ai cru comprendre, dans l'exemple anglais, qu'on créait un attribut après avoir créer le bloc.
Généralement, je m'en sors en anglais (j'ai plusieurs langues natales (dont le Ch'ti), mais l'anglais n'en fait pas parti), mais là, j'avoue être perdu...

Ce qu'il serait judicieux, c'est qu'AutoDesk fasse des aides dans toutes les langues... Et pas que pour les anglophones...

Cela dit, bonne soirée à toi et à la communauté...

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Il y a 5 heures, DenisHen a dit :

Mais VBA bloque au "For Each ATT", "Objet requis"...

D'où vient BlkRefObj dans la fonction MajAttrib ?

D'ailleurs, pour être rigoureux (et rigueur et logique sont fondamentales en programmation) MajAttrib devrait être une procédure (Sub) plutôt qu'une fonction (Function) puisque la méthode ne renvoie rien, mais la rigueur n'est vraiment pas une caractéristique du VB(A).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Je ne sais pas trop quoi dire...
On m'a conseillé une fonction...
Ne devrais-je pas ?
Je n'ai pas tout saisis...
Je découvre le VBA dans AutoCAD...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

C'était juste une remarque "pour être rigoureux", car je pense que c'est une qualité primordiale quand on se lance dans la programmation. Mais le VB(A) tolère ce genre de manque de rigueur et c'est une des raisons pour lesquelles je n'aime pas ce langage.
Ceci n'est pas propre au VBA AutoCAD, c'est une caractéristique de tous les dialectes du VB.

Sinon, plus important, ma première remarque devrait répondre à pourquoi : VBA bloque au "For Each ATT", "Objet requis"...

Tu utilises dans ta procédure BlkRefObj qui n'est ni un argument de la procédure, ni une variable initialisée dans la procédure qui doit donc être Nothing d'où le : "Objet requis".
Je pense que BlkRefObj devrait être un argument de la procédure MajAtt comme Attribut et Texte.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Il y a 14 heures, DenisHen a dit :

Ce qu'il serait judicieux, c'est qu'AutoDesk fasse des aides dans toutes les langues... Et pas que pour les anglophones...

@DenisHen, les aides AutoDesk pour bon nombre de sujets sont traduites dans de nombreuses langues. La raison : elles sont destinées pour un utilisateur lambda des produits d'AutoDesk et sont donc susceptibles d'être consulté par le premier venu. Concernant la programmation, c'est un domaine où habituellement les développeurs sont en mesure de comprendre l'anglais vu que toutes les fonctions sont en anglais de toutes façons. Et le nombre d'utilisateurs en mesure de faire de la programmation représente un pourcentage assez faible pour les utilisateurs d'AutoCAD, donc seules les fonctions "primaires" possède des traductions dans plusieurs langues mais plus on fait appel à des fonctions dites "complexes", plus le nombre de développeurs potentiel réduit drastiquement. Donc je pense simplement que passer du temps à traduire des pages dans de nombreuses langues pour une petite poignées de personnes (alors qu'il existe des traducteurs online suffisamment performants pour comprendre le message d'une page) ne vaut pas le coup pour AutoCAD.

De toutes façons, il suffit de regarder le nombre de messages dans les forums, le calculs est vite fait sur l'utilité ou non de traduire une page :
- 396 000 messages sur le forum AutoDesk (EN) - Visual LISP, AutoLISP and General Customization
- 92 000    messages sur le forum AutoDesk (EN) - VBA
- 71 000    messages sur le forum AutoDesk (FR) - AutoCAD – tous produits - Français
- 42 000   messages sur le forum CADxp (FR) - LISP et Visual LISP
- 5 000     messages sur le forum CADxp (FR) - VBA

Autrement dit, 10% des développeurs LISP sont francophones et seulement 5% des développeurs VBA sont francophones. Donc tu auras plus de chance en apprenant l'anglais qu'en attendant une traduction des pages en français.. 😉

Bisous, Luna

Lien vers le commentaire
Partager sur d’autres sites

Mouais... Pas vraiment d'accord avec toi @Luna.

Perso, le code (lisp) ce n'est pas mon truc, mais j'ai quand même regarder, essayé de comprendre certaines choses et même développé 2-3 bricoles. Et les seules fois ou je me suis plongé dedans heureusement que l'aide de @(gile) (et maintenant le site de @didier) était là, car sinon j'aurais lâché l'affaire direct.

Comment attirer les gens vers de la programmation si rien est fait pour que cela soit compris par tout le monde.

Perso, je comprend mieux :
La fonction setq sert à définir des variables en affectant à un symbole (premier argument), une expression
(second argument).

Que :
Sets the value of a symbol or symbols to associated expressions

EDIT : Et je ne vois pas le rapport entre SETQ et l'anglais. Même dans l'aide...

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

Citation

Et je ne vois pas le rapport entre SETQ et l'anglais

je suis pas anglophone non plus

le Set je le comprend (c'est pour moi" un ensemble, une collection...)

le Q je sais pas une convention ou le type du set ?

un peu comme si on ne disait plus integer mais % à la place ?

Dim exemple As Integer
peut etre écrit :
Dim exemple%

La première chose que je fais pour apprendre un language c'est connaitre les types, les opérateurs, et les affectations,

le reste c'est le programme qui me les donne, je suis bon en VBA mais le VBE est tellement meilleur ! xD

Il me donne les méthodes, sur chaque type, les méthode que je peux utiliser etc... j'ai juste à "tester" pour voir ce que ça fait et j'ai le résultat.

 

Lien vers le commentaire
Partager sur d’autres sites

@La Lozère,

il y a 34 minutes, La Lozère a dit :

Et je ne vois pas le rapport entre SETQ et l'anglais. Même dans l'aide...

le verbe Set peut se traduire par "Définir" donc on se doute que cette fonction va définir quelque chose. Donc avec

(setq symbol expression)

on sait que l'on va définir un 'Symbol' (= "Variable", ou caractère) avec une 'Expression' (= une expression représente à la fois un 'Symbol' et/ou une fonction). Concernant le Q, je ne saurais pas forcément l'expliqué, mais il a forcément un lien de traduction, en plus de faire la distinction entre les fonctions (set) et (setq).

Un autre exemple où l'anglais permet d'expliquer le nom de la fonction : (rtos)
RTOS = Real TO String, soit nombre réel vers chaîne de caractères. On se doute bien que le but de cette fonction est de convertir un nombre réel en une chaîne de caractères.

Bref, je ne dis pas que c'est mieux si les aides ne sont pas traduites en français, je dis juste que le français est connu (et reconnu) pour sa capacité de se plaindre de tout avant de faire le moindre effort.
Durant mes études je faisais partie des plus nuls en anglais, j'étais incapable de parler correctement l'anglais. Cela ne m'a pas empêcher de faire quelques effort pour rattraper le niveau et c'est justement en comprenant le nom des fonctions par rapport à l'anglais que j'ai pu apprendre aussi vite la programmation. Si tu crées un langage de programmation en japonais, tu seras incapable de te souvenir du nom des fonctions et de leur utilité si tu n'arrives pas à comprendre la raison derrière leur nom (c'est pareil lorsque tu crées tes propres fonctions, tu fais en sorte de leur donner un nom qui fait du sens à tes yeux mais qui ne soit pas trop long à écrire si tu veux l'utiliser régulièrement). Depuis que je fais de la programmation, je ne regarde plus aucun film en français, uniquement VOST parce que j'ai besoin d'entraîner ma compréhension orale et très souvent lorsque je réfléchis, je le fait en anglais, encore une fois parce que cela est un petit travail quotidien mais qui me force à travailler mon vocabulaire, mes construction de phrases, etc...

Bref, apprendre l'anglais, c'est très certainement la chose la plus simple de nos jours lorsqu'on voit l'importance de cette langue (et la simplicité des conjugaisons comparé à la conjugaison française). L'anglais à l'heure d'aujourd'hui est devenu monnaie courante car il s'agit d'un langage qui transcende les frontières. Donc je comprends parfaitement l'envie de voir des aides en français, mais pour être honnête, je perçois cela comme une vision purement française, consistant à attendre que les autres s'abaisse à notre niveau plutôt que de chercher à s'élever au niveau des autres. D'un point de vue purement scolaire, la France est classée 23ème/79 en 2021 au classement Pisa et on pourrait être bien plus haut dans le classement. Le pire c'est la différence de niveau notable entre l'élite et la moyenne. C'est pas pour rien que les français sont aussi peu performant en maths, anglais, ... c'est uniquement parce qu'on s'attend à ce que tout nous tombe dans la main...

M'enfin.. c'est juste un point de vue, qui est le mien et même si j'avoue qu'avoir les sites francophones pour mieux comprendre la programmation c'est mieux (d'ailleurs, je ne vois pas où est le problème du coup car je pense que les deux sites francophones dont tu parles sont très complets sur de très nombreux sujets et remplacent majoritairement l'aide AutoCAD non francophone), je pense sincèrement que si l'on veut vraiment se lancer dans la programmation, la première leçon qu'il faudrait apprendre c'est d'étendre son horizon et reconnaitre que l'on ne sait rien ^^"

Mais ce n'est pas le bon endroit pour discuter de cela malheureusement..

Bisous,
Luna

  • Like 2
Lien vers le commentaire
Partager sur d’autres sites

Les "djeunes", je suis désolé de jouer les "vieux cons", mais il faut vous rendre à la raison, se lancer dans la programmation suppose qu'il va falloir faire des efforts (beaucoup) et qu'apprendre demande du travail (mes connaissances en programmation ne sont pas tombées du ciel, elle sont le fruit d'une vingtaine d'années d'apprentissage).
Apprendre les rudiments d'anglais technique nécessaire pour comprendre les différentes aides ce n'est pas comme lire du Shakespeare dans le texte et ce n'est vraiment pas grand chose comparé à apprendre à utiliser un langage informatique.
À mon avis, si on ne sent pas capable de faire ce petit effort (avec l'aide des traducteurs en ligne si besoin), ce n'est pas la peine d'aller plus loin...

  • Like 2
  • Upvote 1

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

La programmation c'est comme un jeu.
Si tu t'y intéresses t'as envie d'aller plus loin et donc d'en apprendre plus.
C'est le fruit d'expérience suite à de nombreux échecs.
Mais rester dans son coin c'est arriver très vite à ses limites et à la démotivation.

 

@Luna

Citation

le français est connu (et reconnu) pour sa capacité de se plaindre de tout avant de faire le moindre effort.

Pour une fois que le français est doué dans un domaine on va pas se plaindre, non ? 😂

Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, Luna a dit :

Concernant le Q, je ne saurais pas forcément l'expliqué, mais il a forcément un lien de traduction, en plus de faire la distinction entre les fonctions (set) et (setq).

Le 'q' vient de la fonction quote (ne pas évaluer) : set quote.

(setq a 1) est équivalent à : (set 'a 1) qui est une abréviation pour : (set (quote a) 1).

  • Like 2

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Citation

traduire des pages dans de nombreuses langues pour une petite poignées de personnes (alors qu'il existe des traducteurs online suffisamment performants pour comprendre le message d'une page) ne vaut pas le coup pour AutoCAD.

@Luna

En Même Autodesk ne fait pas beaucoup d'effort...

Au temps des version DOS, le logiciel été livré avec manuel papier de programmation en "Français", gratuitement jusqu'à la version R13 payant à partir de R14 (Manuel que je possède d'ailleurs et que je garde précieusement)

Donc logiquement ils ont les sources numérique de ces fichier d'aide anciens, une mise à jour serait simple, sans parler des nouvelles fonctions vl ou vlax qui là demande un travail certain.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é