Aller au contenu

Bloc dynamique - Déplacement attribut selon état de visibilité


minus87

Messages recommandés

Bonjour,

Je recherche la méthode que je dois employer afin de pouvoir déplacer un objet (dans ce cas un attribut), selon l'état de visibilité.

Exemple tout simple :

bien entendu cette méthode sera utilisée avec différentes positions et plusieurs états de visibilité.

Un bloc avec 2 attributs, l'un en dessous de l'autre

  • un premier état de visibilité on affiche les deux attributs sans particularité
  • un second état de visibilité on affiche seulement un des deux attributs (celui qui est le plus bas). Celui-ci doit se déplacer automatiquement pour prendre la position de l'autre attribut (celui qui est le plus haut).

Mon objectif serait de ne pas devoir multiplier le nombre d'attribut pour obtenir le même résultat.

En vous remerciant d'avance.

Cordialement.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Minus

Je te joint un exemple .tst.dwg

Il te faut :
 - Un paramètre Position lié à l'attribut à déplacer, nombre de poignée = 0, propriétés d'affichage = non

 - Une visibilité qui gère l'affichage du bloc, l'attribut et le paramètre doivent être visibles dans les différent états, nombre de poignée = 0, propriétés d'affichage = non
 - Une Consultation qui orchestre les deux autres paramètres. LA tu laisses la poignée et l'affichage.

 

Dynamiquement, Vincent P.

  • Like 1
  • Upvote 1

Lispeur débutant!
Autocad Map3D 2023
Covadis-Autopist 18.0C

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Vincent,

Tout d'abord merci pour ta réponse illustrée qui marche parfaitement.

Cela me paraît tout d'un coup plus simple et surtout, réalisable.

Je m’obstinais avec des paramètres de contrainte (dimensionnelle) en essayant de mettre des conditions aux valeurs des contraintes selon l'état de visibilité sélectionné.

Avec du recul, je pense, sauf erreur de ma part, que cela n'est pas faisable sans un script.

Je comprends mieux l'utilité du paramètre de consultation qui devient un chef d'orchestre, qui d'une certaine manière, arrive à transmettre des valeurs conditionnelles.

 

J'ai un problème annexe, je travail sur autocad architecture et electrical.

Sur autocad electrical, j'ai créée un cartouche avec un paramètre de visibilité.

Celui me permet de modifier facilement le modèle de cartouche. En effet, dans autocad electrical, il y a un fichier DWG pour chacune des pages (dessins) du schéma, ce qui me permet, selon la complexité du dessin en question de modifier le modèle de cartouche.

Quand j'utilise l'utilitaire de mise à jour de cartouche d'autocad electrical, celui-ci fait appelle à un fichier .wdt dans lequel je donne le nom du bloc qui correspond au cartouche et j'indique tous les mappages de valeurs entre les attributs et les paramètres de projet et de dessin.

Au début, tout fonctionne le cartouche se met bien à jour, en revanche quand je change d'état de visibilité du cartouche et que je re-mets à jour le cartouche autocad m'informe de :

Citation

Occurrence du nom de cartouche introuvable=CARTOUCHE - Schéma électrique

Je me dis, bizarre le bloc cartouche n'a pas changé, uniquement l'état de visibilité.

J'essaie en utilisant l'utilitaire de configuration de cartouche de mapper manuellement les attributs avec les valeurs. Celui-ci me demande de sélectionner le bloc cartouche dans le dessin, chose que je fais et il m'indique :

Citation

Problème lors de la recherche d'attributs sur le(s) bloc(s): *U15

J'ignore d'où sort ce nom de bloc. J'ai essayer de purger, mais aucun bloc ne m'est proposé.

En résumé quand je change d'état de visibilité :

  • autocad ne trouve plus le bloc qui correspond à mon cartouche et qui se nomme "CARTOUCHE - Schéma électrique" lors de la mise à jour automatique du cartouche
  • autocad m'informe d'un bloc avec un nom inconnu lorsque je sélectionne mon cartouche pour essayer de re-mapper les valeurs manuellement.

Des idées ?

Merci par avance.

Cordialement.

 

Lien vers le commentaire
Partager sur d’autres sites

Alors je n'ai jamais manipulé Electrical, mais, Autocad et les blocs dynamiques...

Lorsque tu insert un bloc dynamique sans en changer ses paramètre, le bloc est reconnue par son nom (par exemple GATTE fonctionne très bien)
Par contre, si tu commence à jouer avec les paramètre dynamique de ton bloc, il deviens un *Uquelquechose et là, pas mal commande Autocad ne le reconnaisse plus(comme GATTE). Et ça ce fait de manière "transparentes", dans les propriétés de l'objet il porte toujours le même nom.

image.thumb.png.13b7f38e132d6e3d90015928e25bee4a.png

image.png.15973d683d87b5210584c7a4df883576.png

Je ne sais pas si c'est la source de ton problème, mais ça me semble probable.

Lispeur débutant!
Autocad Map3D 2023
Covadis-Autopist 18.0C

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @minus87,

Lorsqu'on modifie l'état de visibilité d'un bloc dynamique, AutoCAD récréé un bloc. Qu'il nomme *UXX

C'est la même chose lorsqu'on étire un bloc dynamique.

Dès qu'on modifie la définition de base d'un bloc dynamique, AutoCAD récréer un bloc appeler *UXX, sinon, ce sont toutes les références dudit bloc qui seraient inséré dans le dessin qui se modifieraient.

Par conséquent, lorsque tu modifies l'état de visibilité de ton cartouche dans AutoCAD Electrical, AutoCAD Electrical ne le reconnaît plus comme le bloc d'origine.

C'est le soucis avec les blocs dynamiques et certains produits verticaux AutoCAD comme AutoCAD Architecture par exemple.

Lorsqu'on créé une table de nomenclature avec des blocs classiques, tout vas bien, dès qu'on utilise les blocs dynamiques, on se retrouve avec des *UXX.

  • Like 1

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 @Steven, et re @Vincent P.,

Merci pour vos réponses.

Je pense que ceci explique cela ^^.

Comme vous l'expliquez, si le nom du bloc change lorsque l'on joue avec les paramètres, je comprends la réaction d'autocad electrical au moment de la mise à jour du cartouche. Il cherche en premier lieu dans le dessin, le nom du bloc "cartouche" que je lui ai renseigné dans le fichier default.dwt.

J'ignore si il y a des possibilités de contournement ou si je dois oublier les blocs dynamiques dans les cartouches d'autocad electrical.

J'ai un début de piste.

Dans le fichier .dwt je peux indiquer un ou plusieurs blocs. Autocad est capable de mettre à jour plusieurs bloc différents (plusieurs cartouches) dans un même dessin (fichier .dwg)

Voici un extrait de l'aide autodesk.

Citation

image.thumb.png.887c61cf244865c141d23ffb24a104b8.png

Mon idée serait de forcer autocad à nommer les nouveaux blocs qu'il créée en commençant toujours par le nom du bloc d'origine.

Imaginons le bloc qui s'appelle CARTOUCHE.

Je change d'état de visibilité (je joue avec les paramètres), autocad créée un bloc en conséquence et le nomme CARTOUCHE25.

25 serait un nombre (une référence) aléatoire et unique.

De cette manière dans le fichier .dwt j'indique à autocad electrical la ligne suivante :

BLOCK = CARTOUCHE*

Avec l'étoile à la fin et la règle de nommage cité ci-dessus, ça devrait fonctionner.

Ma question, est-il possible d'indiquer à autocad comment nommer les blocs qu'il créée automatiquement.

En vous remerciant d'avance.

Cordialement.

 

Lien vers le commentaire
Partager sur d’autres sites

J'ai trouvé une solution, je la trouve "bourrin" mais ça marche.

BLOCK = CARTOUCHE,`*U*

Je le force à aller regarder dans chaque bloc qui commence par *U

La première étoile devant le U pose problème si je ne l'échappe pas en utilisant l'apostrophe inversée.

Si vous avez une solution pour que ça ne soit pas autant "bourrin", je suis preneur.

Pour finir, je trouve bizarre que cette méthode fonctionne. En effet, lorsqu'au départ j'ai essayé de re-mapper les valeurs manuellement avec l'utilitaire de configuration de cartouche d'autocad electrical il m'avait donné ce message :

Citation

Problème lors de la recherche d'attributs sur le(s) bloc(s): *U15

En passant sans ce mode de configuration d'autocad, en attaquant directement le fichier .wdt, aucun problème, il trouve bien les attributs étant donné que la mise à jour fonctionne et je vois les valeurs changer.

Cordialement.

Lien vers le commentaire
Partager sur d’autres sites

Là, je pense que pour demander à AutoCAD de nommer un *U en CARTOUCHE avec un numéro qui s'incrémente, il faudrait passé par de la programmation.

Peut-être que si un pro de la programmation voit ton message, peut-être qu'il ou elle pourra t'aider.

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 @lecrabe

Dans mon cas je ne pense pas que cela soit pertinent étant donné qu'autocad electrical possède son "utilitaire" spécifique pour ré-évaluer toutes les repères à l'échelle d'un projet y compris les cartouches pour chaque dessin.

Sans utiliser cette fonction je ne vois pas comment mettre à jour toutes les données à l'échelle d'un projet.

Ne pas oublier c'est autocad electrical, s'imaginer un schéma électrique, par exemple de 100 pages avec des références croisées entre les pages.

Chaque page est égal à 1 ficher DWG. Et sur chaque page il y a un cartouche. Dans le jargon d'autocad une page est un dessin.

A l'échelle du projet, autocad gère l'ensemble des pages et se charge de mettre à jour les références croisées.

Dans le cartouche, cela permet de mettre à jour le numéro de folio, le numéro de page précédente ou suivante, les descriptions, etc.... qui sont personnelles pour chacune des pages, donc pour chacun des cartouches.

Dans ce cas de figure, je ne pense pas pouvoir me séparer de l'outil de mise à jour d'autocad electrical à l'échelle d'un projet. Et je ne vois pas comment l'outil GATTE peut m'être utile.

Cordialement.

Lien vers le commentaire
Partager sur d’autres sites

Coucou,
Je n'ai pas parfaitement bien cerné le problème mais si je résume ce que j'ai compris : tu as un bloc CARTOUCHE (dynamique) et tu veux avoir la possibilité de le mettre à jour à partir d'un gabarit DWT de ton cartouche. Le soucis c'est que les références de blocs dont les paramètres dynamiques sont modifiés sont toujours renommées implicitement par AutoCAD en *U##. Donc impossible de prévoir le nom d'une référence de bloc dynamique, et bien que l'utilisateur ne voit pas ce changement, AutoCAD lui ne considère que ce nom pour ses différentes commandes. Du coup, impossible pour toi de remplacer ta définition de bloc avec une autre, tout en conservant les propriétés du cartouche existant, car AutoCAD refuse de considérer l'EffectiveName de ta référence de bloc.

Si le but est donc de remplacer un bloc par un autre, peut-être voir du côté de RBLOC de Patrick_35 (il me semble que sa routine conserve les attributs et propriétés dynamiques) :

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @Luna

Avec autocad electrical j'ai la possibilité de lancer un script à l'échelle d'un projet. Voir pièce jointe.

Voici la (brève) documentation relatif à cette partie. Pour créer un fichier script à l'échelle du projet

Idée qui me traverse l'esprit, un script qui :

  • analyse chacun des blocs insérés
  • compare le nom du bloc de départ, d'après ce que je comprends, selon ton message cela s’appellerait EffectiveName
  • si la valeur est "CARTOUCHE", alors on renomme la bloc avec "CARTOUCHE<+nb incrémenté>" à la place du *U<x>.

De cette manière, lors de l'utilisation de l’outil de mise à jour des cartouches pour l'ensemble du projet, autocad arrivera à retrouver tous les blocs qui correspondent à des cartouches. Cela se fait via la modification du fichier .wdt avec l'instruction suivante. Comme indiqué plutôt dans la conversion, l'étoile permet de dire à autocad de prendre en compte tous les blocs dont le nom commence par CARTOUCHE afin qu'il mette à jour chaque attribut avec les nouvelles valeurs que l'on retrouve dans les propriétés du projet et des dessins.

Je viens de m’apercevoir que dans les messages précédents j'ai écrit .dwt au lieu de .wdt.

BLOCK = CARTOUCHE*

Cordialement.

image.png

Lien vers le commentaire
Partager sur d’autres sites

Coucou,
Il est apparemment possible de renommer ces blocs anonymisés (cf. >>ici<<) cependant je doute que cela solutionne ton soucis...
J'ai encore un peu du mal à saisir les différentes étapes et le but final. Que veux-tu dire par là ?

Citation

il mette à jour chaque attribut avec les nouvelles valeurs que l'on retrouve dans les propriétés du projet et des dessins.

Si je comprend bien, le but n'est pas de mettre à jour la définition de bloc...mais uniquement la valeur des attributs pour qu'ils aillent chercher des valeurs entrées dans les propriétés de dessin (projet ?). Comment accèdes-tu à ces propriétés ? Ne peut-on pas définir la valeur des attributs via un champ dynamique allant récupérer ces informations ?
Je ne m'y connais malheureusement pas suffisamment en AutoCAD Electrical et je m'en excuse >w<

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @Luna

En effet autocad electrical apporte sa propre logique.

Je vais essayer d'être explicite.

Autocad Electrical, hors mis sa particularité d'être spécialisé dans l'électrotechnique, il est capable de gérer un ensemble de dessin (.dwg) qui forment un projet.

L'objectif d'autocad electrical est l'établissement de schémas électriques uni ou multifilaires, l'encombrement des armoires électriques, etc... le tout relié les uns avec les autres.

A la création d'un projet, nous avons des champs personnalisables afin de stocker les informations "macro". Ces informations sont utilisés pour l'établissement de rapport et peuvent être récupérer pour alimenter les dessins (.dwg)

Pour chacun des dessins (.dwg) ajouté au projet, nous avons également des champs personnalisables afin de stocker des informations qui sont utilisées dans le dessin, mais également entre les différents dessins. Cela permet d'obtenir des références croisées automatiquement lors de l'établissement des schémas électriques ou autre.

Parallèlement les informations stockées à l'échelle du projet ou des dessins sont également utilisées dans un cartouche qui est présent dans chaque dessin.

Je dis "un" cartouche et pas "le" cartouche. Autrement dit les valeurs dans les cartouches ne sont pas forcément les mêmes entre les dessins.

Afin de personnaliser et de standardiser, pour éviter de refaire toujours les mêmes choses, j'ai fais un bloc CARTOUCHE qui contient plusieurs modèles de cartouches.

Vous comprendrez qu'avec ce niveau de personnalisation, un seul modèle de cartouche pour plusieurs projets n'est pas satisfaisant. Nous n'avons pas besoin des mêmes informations (attributs) dans les cartouches.

Je joins quelques captures d'écran pour illustrer.

Prenons par exemple :

L'image qui montre les paramètres d'un dessin. Vous voyez description 1 / 2 / 3.

Ces descriptions peuvent être unique pour chaque dessin.dwg et peuvent être reporté dans le cartouche du dessin.

Selon les besoins, la complexité du dessin, il se peut que nous ayons qu'une description, des fois nous aurons 2 ou 3 descriptions.

Cette exemple montre la raison pourquoi nous voudrions avoir différents modèles de cartouches qui jouent avec la visibilité et la position de différents attributs afin d'optimiser le cartouche :

  • Eviter les zones blanches
  • S'adapter à différent projets, dessins, selon les besoins et la complexité
  • In fine, éviter des cartouches trop volumineux dans le dessin

Revenons au fonctionnement d'autocad. J'invite à relire mes précédents messages, pour plus de détails, mais en gros il est capable de mettre à jour l'ensemble des cartouches d'un projet, automatiquement, avec des données macro (projet), micro (dessin). Nous devons jouer avec le fichier .wdt pour lui indiquer :

  • le ou les noms des blocs qui correspondent aux cartouches (avec la possibilité de mettre une étoile "*" à la fin du nom.
  • le mappage entre le nom de chacun des attributs présents dans les cartouches, et le nom des paramètres (projet et dessins).

Revenons à mon problème initial, ayant créée un bloc cartouche qui contient plusieurs cartouches (paramètre visibilité), si le nom du bloc qui est inséré dans le dessin change en *Uxx alors autocad est perdu.

Pour l'instant je contourne en le forçant à regarder tous les blocs qui commencent par *U en indiquant dans le fichier .wdt la ligne suivante :

BLOCK = CARTOUCHE,`*U*

Cette ligne lui indique le nom des cartouches dans lesquels ils doit lancer sa routine pour mettre à jour les attributs.

Pour finir, j'ai vu que dans les utilitaires de projet, autocad electrical donne la possibilité de lancer un script pour l'ensemble des dessins (.dwg) qui constituent le projet.

Je me dis avant de lancer la routine de mise à jour des cartouches, je lance un script qui renomme les blocs en "CARTOUCHExxxx". (Voir mon message précédent).

 

J'espère avoir été un minimum explicite.

Cordialement.

 

image.png.3e42c50e6f8828a061df23679df43438.png

1 - Informations à l'échelle du dessin.png

2 - Informations à l'échelle du projet.png

3 - Remplacement des LINEx par nos étiquettes que l'on retrouve dans les informations du projet.png

4 - Fichier .wdt qui indique le nom des blocs relatifs aux cartouches et mappage des attributs du cartouche avec les informations du projet et du dessin.png

Lien vers le commentaire
Partager sur d’autres sites

Il y a 3 heures, Luna a dit :

Il est apparemment possible de renommer ces blocs anonymisés (cf. >>ici<<) cependant je doute que cela solutionne ton soucis...

Re,

Je viens de regarder ce post, on est pas loin. Faudrait adapter ce code en ayant une recherche des noms effectifs de chacun de bloc afin de renommer uniquement ceux qui sont vraiment des cartouches.

Dans autocad electrical presque tout est un bloc dans un dessin. Le moindre symbole est un bloc, ce qui permet cette dynamique entre les .dwg à l'échelle d'un projet.

Le but du script est que la routine de mise à jour des cartouches ne fouillent pas dans tous les blocs qui commence par *Uxx, comme c'est le cas avec ma méthode de contournement actuelle. Cela permettrait :

  • d'améliorer les performances lors du lancement de la routine de mise à jour, ré-évaluation du projet, cartouche inclut. Je me dis, un schéma électriques de 100 pages (dessins .dwg) qui contient que des blocs, si autocad les nommes tous *Uxx (chose que je n'ai pas contrôlé), autocad est obliger d'analyser tous les attributs pour chacun des blocs *Uxx.
  • d'éviter de modifier la valeur d'un attribut dans un bloc *Uxx qui n'est pas un cartouche. Je me dis avec le hasard, un jour dans un bloc *Uxx il y aura une étiquette d'un attribut qui sera identique à l'un des attributs paramétrés pour le cartouche.

Cordialement.

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é