ayoros Posté(e) le 25 août 2008 Partager Posté(e) le 25 août 2008 Bonjour tout le monde Voici mon souci ,je voudrais que lorsque je copie mon bloc avec mes attributs, les renseignements indiquer à mon premier bloc se modifie par la même occasion.Donc une fois ma copie terminer et que je change la valeur de mes attributs dans mon 1er bloc il se modifie dans l'autre par la même occasion.Le bloc le fait naturellement sauf qu'il faut l'éditer et changer tout les renseignements un par un donc je voulais combinez les avantages de chacun d'entre eux. Merci d'avance pour vos renseignement [Edité le 25/8/2008 par ayoros] Lien vers le commentaire Partager sur d’autres sites More sharing options...
rebcao Posté(e) le 25 août 2008 Partager Posté(e) le 25 août 2008 Bonjour, Essayes de voir plutôt avec une combinaison BLOC et XREF Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @) Lien vers le commentaire Partager sur d’autres sites More sharing options...
ayoros Posté(e) le 25 août 2008 Auteur Partager Posté(e) le 25 août 2008 Merci de m'avoir répondu Je vais essayer de voir avec les éléments que tu m as passer bonne journée Lien vers le commentaire Partager sur d’autres sites More sharing options...
Serge Posté(e) le 26 août 2008 Partager Posté(e) le 26 août 2008 ayoros Avant de répondre, je voudrais mieux comprendre la question. Si je reformule : Tu disposes de 2 (ou plusieurs) blocs portant le même nom, avec les mêmes définitions d'attribut. Lorsque tu édites l'un (via une boite de dialogue ou sur la ligne de commande), que l'autre se modifie automatiquement. Est-ce bien cela ? Serge Lien vers le commentaire Partager sur d’autres sites More sharing options...
Serge Posté(e) le 26 août 2008 Partager Posté(e) le 26 août 2008 ayoros Finalement, j'ai fait une solution, en espérant qu'elle corresponde au besoin. [surligneur] À modifier[/surligneur], la liste des noms de blocs à surveiller. ;;; Réacteurs permettant de synchroniser les attributs au travers de blocs homonymes ;;; Limites: AutoCAD n'empêche pas qu'un bloc ait 2 attributs portant le même nom d'étiquette (tag) ;;; Si une telle situation se présente, le texte de la première étiquette sera extraite. ;;; De plus, si de nouveaux blocs sont insérés (e.g. via _INSERT ou INSERER), les nouveaux blocs ;;; ne seront pas surveiller. On peut facilement modifier cette routine pour inclure l'événement ;;; ou encore on peut relancer (SetReactors) pour rafraichir. ;;; IMPORTANT : Vous devez corriger la liste des noms de bloc à surveiller ;;; Variable *BlockNamesToWatch* ;;; ;;; Par Serge Camiré, 2008-08-26 ;;; Déterminer la liste des noms de bloc à surveiller [surligneur] (setq *BlockNamesToWatch* (list "Bloc1" "Bloc2"))[/surligneur] ;;; ======================================================================= ;;; Ne pas modifier la suite (defun BlockReactorObjectClosed ( object calling-reactor arg-list / attributes attributesSafeArray attributesVariant BlockName infos ObjectId Occurences ) ;; BlockReactorObjectClosed ;; Fonction callback de l'événement :vlr-objectClosed. Filtre l'information puis délègue le traitement ;; à la fonction CustomModification. Les arguments proviennent du notifier. (and (not *CustomModification*) (not (vl-catch-all-error-p (setq BlockName (vl-catch-all-apply 'vla-get-name (list object))))) (setq ObjectId (vla-get-ObjectID object)) (setq Occurences (GetBlockOccurences BlockName)) (setq Occurences (vl-remove-if '(lambda (x) (= (vla-get-ObjectID x) ObjectId)) Occurences)) (setq attributesVariant (vla-GetAttributes object)) (setq attributesSafeArray (safearray-value (variant-value attributesVariant))) (foreach x attributesSafeArray (setq infos (append infos (list (cons (vla-get-TagString x) (vla-get-TextString x)))))) (progn (setq *CustomModification* t) (foreach Occurence Occurences (CustomModification Occurence infos)) (setq *CustomModification* nil) ) ) ) (defun CustomModification ( object infos / attributesSafeArray attributesVariant info tag ) ;; CustomModification ;; objet: objet à modifier ;; infos : 'LIST, (list (cons tag1 . texte1) (cons tag2 . texte2) ...) en référence (setq attributesVariant (vla-GetAttributes object)) (setq attributesSafeArray (safearray-value (variant-value attributesVariant))) (foreach x attributesSafeArray (setq tag (vla-get-TagString x)) (if (setq info (assoc tag infos)) (vla-put-TextString x (cdr info))) (vla-Update x) ) ) (defun GetAllBlockOccurences (BlockNames / AllOccurences Occurences) ;; GetAllBlockOccurences ;; Retourne tous les occurences de bloc correspondant à la liste de noms ;; BlockNames : 'LIST, (list "Nom1" "Nom2" "Nom3" ...) (setq Occurences nil) (setq AllOccurences nil) (foreach BlockName BlockNames (setq Occurences (GetBlockOccurences BlockName)) (if Occurences (setq AllOccurences (append AllOccurences Occurences)) ) ) AllOccurences ) (defun GetBlockOccurences (BlockName / BlockTable) ;; GetBlockOccurences ;; Reçoit le nom d'un bloc puis retourne la liste de toutes ses occurences en format vla (setq BlockTable (tblobjname "block" BlockName)) (if BlockTable (vl-remove-if '(lambda (x) (not x)) (mapcar 'vlax-ename->vla-object (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= 331 (car x))) (entget (cdr (assoc 330 (entget BlockTable)))) ) ) ) ) ) ) (defun SetReactors ( / AllOccurences ) ;; SetReactors ;; Création d'un réacteur (un abonnement) entre une liste d'objets à surveiller ;; et des paires (événement fonctions) devant être interpellées lors du dit événement. (setq AllOccurences (GetAllBlockOccurences *BlockNamesToWatch*)) (if *BlockReactor* (vlr-remove *BlockReactor*)) (setq *BlockReactor* (vlr-object-reactor AllOccurences nil '((:vlr-objectClosed . BlockReactorObjectClosed) ) ) ) ) (SetReactors) ; Self-execute (princ) Serge Lien vers le commentaire Partager sur d’autres sites More sharing options...
ayoros Posté(e) le 27 août 2008 Auteur Partager Posté(e) le 27 août 2008 Bonjour Serge Je te remercie de ton aide mais j'ai pas tous saisie sur les manipulations à réaliser. Ta reformulation est bonne. Apparemment sur ton dernier message tu as écrit un lisp le souci c'est que je ne suis pas balèse dans se domaine et donc je ne comprend pas toutes les manipulations. Peux tu me décrire plus précisément les étapes à faire stp Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 27 août 2008 Partager Posté(e) le 27 août 2008 Bonjour à toutes et tous, (Gile) a fait un tuto ici ! Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
ayoros Posté(e) le 27 août 2008 Auteur Partager Posté(e) le 27 août 2008 Bonjour Le souci est qui à plusieurs defun donc je ne sais pas quel commande est la bonne pour l'action que je dois effectuer. cordialement Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 27 août 2008 Partager Posté(e) le 27 août 2008 Re, Tu copies le code de serge et tu le colles directement en ligne de commande,ensuite, suit les étapes,... Je n'ai pas trop compris ton besoin, puisque quand tu édites un bloc, ils se mettent tous à jour,non ? Ou bien, pourquoi 2 blocs différents avec le même non ? Merci d'avance de tes réponses,.. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
ayoros Posté(e) le 27 août 2008 Auteur Partager Posté(e) le 27 août 2008 C est simple j ai plusieurs renseignement à rentrer dans mon bloc vue que c'est un cartouche et donc si je dois le modifié en tant que bloc je dois effectuer plusieurs édition de texte pour remplir tout les renseignements hors si je mais des attributs, je peux via la commande attedit tout remplir en une seul fois sous forme de formulaire.Si je copie le bloc avec mes attributs ils ne changeront pas si je modifie les information dans celui d'origine.Ce que je voulais savoir c'est si mes attributs peuvent se comporte comme un bloc via une comande , variable ect .... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Serge Posté(e) le 27 août 2008 Partager Posté(e) le 27 août 2008 ayoros Désolé de ne pas avoir été plus explicite. Il n'y a aucune commande à taper. Le programme crée un réacteur qui va surveiller le dessin en temps réel. Ceci veut dire que lorsque tu utilises DDATTE ou autre commande d'édition, chaque copie sera automatiquement mise à jour. Dans les commentaires, j'écrivais que si des nouveaux blocs sont copiés, il seront surveillés. Si des blocs sont insérés (via Inserer ou un Drag & Drop), il ne seront pas surveillés si ceux-ci servent de référence à la commande DDATTE mais le seront si la référence est un bloc déjà présent au moment du chargement de la routine. Voir les commentaires pour la suite des explications. Pour ce qui est concerne ton besoin, il serait intéressant d'étudier les jeux de feuilles (Sheet Sets) ainsi que les champs (Fields). C'est un sujet trop long pour ce fil mais je t'encourage à regarder les tutoriels. Serge Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 27 août 2008 Partager Posté(e) le 27 août 2008 Re, En ce qui me concerne, j'utilise LXL de Patrick_35 et c'est vraiment Nickel !!! :P Dans le style, tu as aussi "LAT" du même auteur,.. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Serge Posté(e) le 27 août 2008 Partager Posté(e) le 27 août 2008 lili2006 J'ai regardé (vite) LXL mais il me semble que ce soit un utilitaire d'extraction vers Excel et non un utilitaire qui synchronique les attributs de blocs. Serge Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 27 août 2008 Partager Posté(e) le 27 août 2008 Re, Oui serge, en fait je répondais à => C est simple j ai plusieurs renseignement à rentrer dans mon bloc vue que c'est un cartouche et donc si je dois le modifié en tant que bloc je dois effectuer plusieurs édition de texte pour remplir tout les renseignements En fait j'utilise une feuille EXcel par cartouche mais ne change que les quelques variables,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
ayoros Posté(e) le 28 août 2008 Auteur Partager Posté(e) le 28 août 2008 Bonjour J ai trouver une solution à mon problème car malgrès vos aides apportés je n'arrivé pas au résultat que je souhaité. Donc je me suis dit que sa peut intérésser d'autre personne dans le même cas. La solution est simple il suffit de prendre le bloc avec les attributs et de recréer un bloc par dessus. Je dois donc encore allez dans l'éditeur de bloc mais avec la fonction ddattte ou attedit ce qui me permet de changer toutes les informations dans le formulaire et que mes attributs se copie dans tous les bloc du même nom. Serge encore merci pour le lisp mais apparemment je dois mal l'utiliser car je n'avais pas le résultat. Merci à tous pour votre aide Ciao Lien vers le commentaire Partager sur d’autres sites More sharing options...
FRAXA Posté(e) le 28 août 2008 Partager Posté(e) le 28 août 2008 Avant de répondre, je voudrais mieux comprendre la question. Si je reformule : Tu disposes de 2 (ou plusieurs) blocs portant le même nom, avec les mêmes définitions d'attribut. Lorsque tu édites l'un (via une boite de dialogue ou sur la ligne de commande), que l'autre se modifie automatiquement. Est-ce bien cela ? As tu essayé les champs? Tu crées des propriétés personnalisées dans ton fichier (menu fichier => propiétés du dessin => onglet personnaliser).Tu crées ton bloc cartouche et tu inséres pour chaque attribut un champ correspond à l'une des propriétés personnalisées du fichier. Ainsi quand tu veux changer l'une des valeurs des attributs, tu passe par les propriétés personnalisées du fichier et tu changes la valeur. Un coup de REGEN et ton attribut est modifé dans tous blocs. HPZ400 Workstation Intel Xeon W3550 3.07 GHz 6 Go ram QUADRO FX 1800 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Serge Posté(e) le 28 août 2008 Partager Posté(e) le 28 août 2008 ayoros Si j'ai bien compris, c'est que tu aurais disons 20 attributs et que les 10 premiers sont communs et les 10 suivants sont distincts. Ta manipulation consiste a créer un bloc de 10 attributs qui est ensuite inclus dans un super bloc qui comporte les 10 autres. Est-ce bien cela ? Serge Lien vers le commentaire Partager sur d’autres sites More sharing options...
ayoros Posté(e) le 28 août 2008 Auteur Partager Posté(e) le 28 août 2008 Non en fait tout mes attributs sont commun au bloc. Par contre fraxa de te remercie grandement la solution marche encore mieux. Je cherche juste un champs qui indique le nom de ma présentation avec ceci le nombre de mes pages sera rempli automatiquement. Lien vers le commentaire Partager sur d’autres sites More sharing options...
FRAXA Posté(e) le 28 août 2008 Partager Posté(e) le 28 août 2008 Je cherche juste un champs qui indique le nom de ma présentation avec ceci le nombre de mes pages sera rempli automatiquement. Cest toi qui le crées dans les propriétés du dessin, onglet personnaliser. Exemple nom présentation, nombre total de présentation, etc... Ensuite quand tu veux insérer un champ dans ta définition d'attribut, tu choisis la catégorie champ "document" et tu trouveras les champs présentation, nombre total de présentation, etc... HPZ400 Workstation Intel Xeon W3550 3.07 GHz 6 Go ram QUADRO FX 1800 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 28 août 2008 Partager Posté(e) le 28 août 2008 Salut Peut-être que LATT répond à ton besoin. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant