Aller au contenu

Créer un seul bloc avec des attributs déjà renseignés


Fruity

Messages recommandés

Bonjour a tous!

Je souhaite créer un seul bloc avec des attributs déjà renseignés.

Dis comme ca, ca semble facile, mais le truc, c'est que les attributs sont différents selon la pièce où ils sont.

Je vais simplifier:

2 pièces, l'un a un attribut "500W", l'autre "1000W".

Je voudrais créer un bloc "puissance" identique pour les 2 pièces, chacun avec son attribut donc.

Je ne pense pas que ce soit possible, mais je demande au cas où.

Merci

Lien vers le commentaire
Partager sur d’autres sites

Salut.

 

Alors ça semble un peut trop simple pour un vétéran de tocad et du forum, mais tu crée ton bloc, tu met comme valeur par défaut de l'attribut juste le "W", tu l’insère, et tu l'édite l'attribut directement dans le dessin (comme un texte) en faisant un double-clic sur le W en maintenant la touche [Ctrl] enfoncée.

 

J'aie mal compris la question ? C'est pour un usage particulier ?

 

Cordialy.

Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux.
Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage !
Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;])

Utilisateur d'AutoCAD 2021 sous Windows 10

Lien vers le commentaire
Partager sur d’autres sites

En effet, ce n'est pas aussi simple.

En faisant ca, il faudrait que je retape tous les attributs un par un. C'est justement ce que je souhaite éviter.

D'ailleurs, je viens de me rendre compte que la création du bloc réinitialise les attributs, et donc ce que j'avais déjà renseigné... grr.

Lien vers le commentaire
Partager sur d’autres sites

Si tu n'a pas trop de valeurs tu peut passer par un état de visibilité, mais ça signifierait un attribut (ou simplement texte) par état, d'où la question : pour quelle usage ?

 

Si c'est pour ressortir les valeurs avec EXTRACTDONNES tu peut très bien sélectionner non pas ton attribut mais le nom de l'état de visibilité actif de ton bloc. Et si tu te retrouve au milieu d'un dessin et que tu doit ajouter une valeur à la liste tu peut éditer ton bloc ou le mettre à jours sans péter la visibilité active des blocs déjà insérés.

Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux.
Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage !
Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;])

Utilisateur d'AutoCAD 2021 sous Windows 10

Lien vers le commentaire
Partager sur d’autres sites

L'usage, c'est de simplement indiquer la puissance nécessaire par appareil.

L'état de visibilité, ca revient au même, au moment de la création du bloc, la valeur de la définition d'attribut saute.

Fais le test, crée une définition d'attribut, mets lui un chiffre. Copie la, et change la valeur.

Ensuite fais un rectangle et crée un bloc avec un des attributs. Non seulement la valeur disparait, mais tu ne pourras pas injecter la valeur de l'autre attribut automatiquement dans le bloc (ce qui est tout a fait normal en fait, maintenant que je l'écris je me rends compte que ma question était stupide...(rires forts)).

Je crois que je vais être obligé de me les taper a la main comme je le pensais.

Lien vers le commentaire
Partager sur d’autres sites

Je reformule pour être sur de bien comprendre, tu veut créer un bloc avec un attribut dont la valeur est équivalant à un attribut déjà dans ton dessin ? J’avoue, j'aurais jamais imaginé faire un truc comme ça en natif blink.gif

 

Ça doit être possible en LISP, genre cliquer sur l’attribut dans le dessin, extraire sa valeur et l’injecter à l’attribut du bloc inséré à la place de l'attribut cliqué, mais c'est largement en deçà de mes compétences.

 

Ou alors c'est que j'aie toujours pas compris, désolé.

Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux.
Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage !
Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;])

Utilisateur d'AutoCAD 2021 sous Windows 10

Lien vers le commentaire
Partager sur d’autres sites

Salut Fruity,

 

Je ne suis pas sûr d'avoir tout compris mais est-ce ce genre de bloc que tu souhaites faire ?

 

BLOC-AVEC-CHAMP-ET-VISIBILITE.gif

 

Si c'est le cas, il faut te créer un bloc avec un paramètre de visibilité. Tu créés deux états de visibilité; 500W et 1000W.

Tu créés ensuite une définition d'attribut. Dans la valeur par défaut, tu insères un champ > Catégorie de champ Objets > Noms de champs EspaceRéservéBloc > Propriété Visibilité 1 > OK

 

 

Aleck Ulmtimate était sur la bonne voie. Cependant, il suffit d'un seul attribut. Pas besoin d'un attribut par état wink.gif

 

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Je guette les réponses car je n'ai pas vraiment compris la demande

Merci Steven des efforts que tu fais avec tes GIF,

On aimerait que les questions soient aussi clairement exposées, ce serait plus sympa d'y répondre.

Fruity, à toi de valider les réponses, ou de la reposer différemment en déposant un schéma ou un dessin

 

Amicalement

 

Lien vers le commentaire
Partager sur d’autres sites

  • 4 semaines après...

Rebonjour tous.

Le confinement étant passé, je reviens et vois vos réponses.

Désolé pour le délai du coup.

Donc pour faire simple, aucune des idées apportées ne peuvent être utilisées. Non pas qu'elles soient mauvaises, mais ca ne correspond pas a ma demande initiale, qui était sans doute un peu confuse.

 

Mais comme je le disais, je pense que ce n'est tout simplement pas possible, il faudrait que le bloc prenne la place de la définition d'attributs. En fait, je m'y suis mal pris au début, j'aurais dû créer un bloc bidon avec les attributs qui m’intéressaient, pour pouvoir modifier ensuite le dessin l'appareil tout en conservant les valeurs des attributs renseignés.

Bref.

Dans tous les cas, j'ai terminé mon plan, j'ai tout tapé à la main.

 

Désolé de vous avoir fait perdre votre temps!

Lien vers le commentaire
Partager sur d’autres sites

Rebonjour tous.

Le confinement étant passé, je reviens et vois vos réponses.

Désolé pour le délai du coup.

Donc pour faire simple, aucune des idées apportées ne peuvent être utilisées. Non pas qu'elles soient mauvaises, mais ca ne correspond pas a ma demande initiale, qui était sans doute un peu confuse.

 

Mais comme je le disais, je pense que ce n'est tout simplement pas possible, il faudrait que le bloc prenne la place de la définition d'attributs. En fait, je m'y suis mal pris au début, j'aurais dû créer un bloc bidon avec les attributs qui m’intéressaient, pour pouvoir modifier ensuite le dessin l'appareil tout en conservant les valeurs des attributs renseignés.

Bref.

Dans tous les cas, j'ai terminé mon plan, j'ai tout tapé à la main.

 

Désolé de vous avoir fait perdre votre temps!

 

Salut,

 

Ta question n'est pas claire du tout...

 

Pourquoi la solution que je t'ai donné en réponse #4 n'est pas bonne, sachant que je me suis basé sur ta première question sachant que les 2 blocs sont identiques et ont chacun un attribut différent ?

 

Bonjour a tous!

Je souhaite créer un seul bloc avec des attributs déjà renseignés.

Dis comme ca, ca semble facile, mais le truc, c'est que les attributs sont différents selon la pièce où ils sont.

Je vais simplifier:

2 pièces, l'un a un attribut "500W", l'autre "1000W".

Je voudrais créer un bloc "puissance" identique pour les 2 pièces, chacun avec son attribut donc.

Je ne pense pas que ce soit possible, mais je demande au cas où.

Merci

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Si j'avais bien compris la question, il y avait au départ XX blocs différents avec des étiquettes d'attribut différentes, mais déjà renseignées avec la bonne valeur.

Le but étant de sélectionner un attribut (quelque soit le bloc et l'étiquette), de récupérer sa valeur, de récupérer le point d'insertion de l'attribut (ou du bloc) et d'insérer sur ces coordonnées le nouveau bloc générique et remettre dans l'attribut la valeur stockée précédemment, puis de boucler tant qu'il y a des attributs à traiter.

Par programmation, on peut faire quelque chose de rapide, mais avec AutoCAD de base sans programme, ça doit être possible, mais en bidouillant:

ATTOUT pour sortir tous les attributs

Sous excel, remettre toutes les valeurs dans une seule et unique colonne et la renommer avec le nom de l'étiquette du nouveau bloc

Sous AutoCAD, substituer tous les anciens blocs par le nouveau (en espérant que ça conserve son Handle)

BATTMAN pour remettre l'attribut (vide) sur tous les blocs

ATTIN pour recharger les valeurs

 

Sans garantie, mais ça s'essaie.

 

Olivier.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Ta question n'est pas claire du tout...

 

Pourquoi la solution que je t'ai donné en réponse #4 n'est pas bonne, sachant que je me suis basé sur ta première question sachant que les 2 blocs sont identiques et ont chacun un attribut différent ?

 

En fait, dans les solutions proposées, le bloc existe déjà. Or ce n'était pas mon cas.

Et dans ton exemple, et bien tu crées le bloc avec le menu déroulant, mais tu renseignes l'info et place le bloc alors que le but était de ne pas refaire tout le boulot puisque les infos (les attributs) étaient déjà tous remplis et placés sur la plan.

Mais encore une fois, je suis sûr a 99% que c'est impossible. On ne peut pas remplacer un attribut par un bloc tout en récupérant l'info.

 

Bonjour,

 

Si j'avais bien compris la question, il y avait au départ XX blocs différents avec des étiquettes d'attribut différentes, mais déjà renseignées avec la bonne valeur.

Le but étant de sélectionner un attribut (quelque soit le bloc et l'étiquette), de récupérer sa valeur, de récupérer le point d'insertion de l'attribut (ou du bloc) et d'insérer sur ces coordonnées le nouveau bloc générique et remettre dans l'attribut la valeur stockée précédemment, puis de boucler tant qu'il y a des attributs à traiter.

Par programmation, on peut faire quelque chose de rapide, mais avec AutoCAD de base sans programme, ça doit être possible, mais en bidouillant:

ATTOUT pour sortir tous les attributs

Sous excel, remettre toutes les valeurs dans une seule et unique colonne et la renommer avec le nom de l'étiquette du nouveau bloc

Sous AutoCAD, substituer tous les anciens blocs par le nouveau (en espérant que ça conserve son Handle)

BATTMAN pour remettre l'attribut (vide) sur tous les blocs

ATTIN pour recharger les valeurs

 

Sans garantie, mais ça s'essaie.

 

Olivier.

 

Non a la base je n'avais aucun bloc, simplement des définitions d'attributs. Je pensais pouvoir créer un bloc en récupérant tous les attributs.

Lien vers le commentaire
Partager sur d’autres sites

Mais encore une fois, je suis sûr a 99% que c'est impossible. On ne peut pas remplacer un attribut par un bloc tout en récupérant l'info.

 

Un attribut tout seul n'existe pas. C'est forcement un bloc avec attribut.

 

Soit, il n'est constitué que d'une étiquette d'attribut avec une valeur mais celà reste une définition de bloc avec attribut.

 

De ce fait, tu peux remplacer un bloc avec un attribut par un autre bloc avec attribut en conservant la valeur de l'attribut avec le lisp RBLOC der Patrick_35 en prenant soins de cocher Conserver les attributs.

 

 

REMPLACER-BLOC-AVEC-ATTR-AVEC-AUTRE-BLOC.gif

 

 

Cependant, il faut que le bloc de remplacement ai la même étiquette que le bloc à remplacer.

 

En revanche, le bloc de remplacment n'est pas obligé d'avoir une valeur par défaut.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Un attribut tout seul n'existe pas. C'est forcement un bloc avec attribut.

 

Soit, il n'est constitué que d'une étiquette d'attribut avec une valeur mais celà reste une définition de bloc avec attribut.

 

De ce fait, tu peux remplacer un bloc avec un attribut par un autre bloc avec attribut en conservant la valeur de l'attribut avec le lisp RBLOC der Patrick_35 en prenant soins de cocher Conserver les attributs.

 

 

REMPLACER-BLOC-AVEC-ATTR-AVEC-AUTRE-BLOC.gif

 

 

Cependant, il faut que le bloc de remplacement ai la même étiquette que le bloc à remplacer.

 

En revanche, le bloc de remplacment n'est pas obligé d'avoir une valeur par défaut.

 

Une "définition d'attribut" peut être créer sans bloc. C'est d'ailleurs comme ca que je crée les blocs avec attributs.

Quand je parle d'attribut, je parle bien de définition d'attribut (ATTDEF).

D'où la confusion peut-etre.

Lien vers le commentaire
Partager sur d’autres sites

Une "définition d'attribut" peut être créer sans bloc. C'est d'ailleurs comme ca que je crée les blocs avec attributs.

Quand je parle d'attribut, je parle bien de définition d'attribut (ATTDEF).

D'où la confusion peut-etre.

 

Une définition d'attribut (ATTDEF) seule ne sert à rien.

Une définition d'attribut contient une étiquette, un invité et une valeur. Cette dernière peut être nulle.

En l'état, elle ne sert à rien.

 

DEFINITION-D-ATTRIBUT-003.png

 

 

 

 

Si tu créés un bloc avec une seule définition d'attribut, c'est une référence de bloc. Un bloc avec attribut n'est pas forcément constitué avec des lignes, des polylignes, etc, et des attributs. Un bloc peut être constitué que d'attributs. Sans rien d'autre.

 

Comme le dit si bien Didier, le vocabulaire est très important. C'est ce qui évite toute confusion...

 

 

Une définition d'attribut n'est pas un bloc.

 

DEFINITION-D-ATTRIBUT.png

 

 

Un bloc avec attribut peut être constitué que d'une seule définition d'attribut ou de plusieurs définitions d'attributs aux quelles ont peut y ajouter une valeur.

 

DEFINITION-D-ATTRIBUT-002.png

 

Tu le dis toi-même, tu créés des blocs avec attributs.

Une "définition d'attribut" peut être créer sans bloc. C'est d'ailleurs comme ca que je crée les blocs avec attributs.

Quand je parle d'attribut, je parle bien de définition d'attribut (ATTDEF).

D'où la confusion peut-etre.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Ceci dit, est-ce que lisp RBLOC de Patrick_35 règle ton soucis ? smile.gif

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Il m'est déjà arrivé de recevoir un plan topo où chaque texte d'altitude était effectivement une définition d'attribut dont l'étiquette correspondait à la valeur du Z.

 

Avec un bout de code comme cela (merci Lee-Mac pour les fonctions génériques)

(vl-load-com)

;; Set Attribute Value  -  Lee Mac
;; Sets the value of the first attribute with the given tag found within the block, if present.
;; blk - [vla] VLA Block Reference Object
;; tag - [str] Attribute TagString
;; val - [str] Attribute Value
;; Returns: [str] Attribute value if successful, else nil.

(defun LM:vl-setattributevalue ( blk tag val )
   (setq tag (strcase tag))
   (vl-some
  	'(lambda ( att )
           (if (= tag (strcase (vla-get-tagstring att)))
               (progn (vla-put-textstring att val) val)
           )
       )
       (vlax-invoke blk 'getattributes)
   )
)

(defun C:ATT2BLK ( / I JEU oAttDef PT sValue sBlkName sTagName)
 (setq sBlkName "MON_BLOC")		;;; Nom d bloc à insérer
 (setq sTagName "PUISSANCE")		;;; étiquette de l'attribut à renseigner

 (if (setq JEU (ssget (list (cons 0 "ATTDEF"))))
   (progn
     (setq I 0)
     (repeat (sslength JEU)
(setq oAttDef (ssname JEU I))
(setq I (1+ I))
(if (or (/= (cdr (assoc 72 (entget oAttDef))) 0) (/= (cdr (assoc 74 (entget oAttDef))) 0))
 	(setq PT (cdr (assoc 11 (entget  oAttDef))))
 	(setq PT (cdr (assoc 10 (entget  oAttDef))))
)
(setq sValue (cdr (assoc 2 (entget  oAttDef))))
(setvar "ATTREQ" 0)
(command "_-INSERT" sBlkName (trans PT 0 1) "1" "1" "")
(setvar "ATTREQ" 1)
(LM:vl-setattributevalue (vlax-ename->vla-object (entlast)) sTagName sValue)
     )
   )
 )
)

 

 

Olivier

Lien vers le commentaire
Partager sur d’autres sites

Une définition d'attribut (ATTDEF) seule ne sert à rien.

Une définition d'attribut contient une étiquette, un invité et une valeur. Cette dernière peut être nulle.

En l'état, elle ne sert à rien.

 

DEFINITION-D-ATTRIBUT-003.png

 

 

 

 

Si tu créés un bloc avec une seule définition d'attribut, c'est une référence de bloc. Un bloc avec attribut n'est pas forcément constitué avec des lignes, des polylignes, etc, et des attributs. Un bloc peut être constitué que d'attributs. Sans rien d'autre.

 

Comme le dit si bien Didier, le vocabulaire est très important. C'est ce qui évite toute confusion...

 

 

Une définition d'attribut n'est pas un bloc.

 

DEFINITION-D-ATTRIBUT.png

 

 

Un bloc avec attribut peut être constitué que d'une seule définition d'attribut ou de plusieurs définitions d'attributs aux quelles ont peut y ajouter une valeur.

 

DEFINITION-D-ATTRIBUT-002.png

 

Tu le dis toi-même, tu créés des blocs avec attributs.

 

Je suis tout a fait d'accord avec toi.

Et on parle bien de la même chose.

 

Ceci dit, est-ce que lisp RBLOC de Patrick_35 règle ton soucis ? smile.gif

 

Non car rbloc remplace un bloc par un autre, or je n'ai pas encore de bloc dans mon exemple, le but étant de le créer, et comme je l'ai dit, la question n'est plus d'actualité.

Si vraiment vous voulez vous creuser la tête, je peux faire quelques captures d'écran pour que ce soit plus clair, mais ce sera uniquement pour le plaisir de chercher :)

Lien vers le commentaire
Partager sur d’autres sites

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é