litelsousa Posté(e) le 5 octobre 2011 Posté(e) le 5 octobre 2011 Bonjour, J'ai un bloc contenant des attributs faits de champs pour me donner des renseignements sur un objet.On pourrait le comparer à une étiquette contenant: Couleur: ROUGECalque: BordureLongueur: 5.50 (les textes en italique sont donc les résultats des champs) Mon soucis est qu'en copiant ce bloc, je suis obligé de mettre à jour (sélectionner un nouvel objet) un à un les attributs de ce bloc. Existe-t-il une solution pour le faire en un clic? Merci pour votre aide, en espérant que vous m'aurez compris. Marqué RESOLU par didier, à la demande de l'auteur
fauxsuisse Posté(e) le 5 octobre 2011 Posté(e) le 5 octobre 2011 Ouai pas vraiment tout compris. Mais si tu veux que tous les nouveaux bloc ou alors certains aient les mêmes réponses dans leurs attributs il te suffit de les sélectionner et dans la palette des propriétés tu retrouves les étiquettes de ces attributs qu'il te suffit de remplir et tous les blocs sélectionné auront la même valeur.
litelsousa Posté(e) le 6 octobre 2011 Auteur Posté(e) le 6 octobre 2011 Bonjour et merci Ce n'est pas tout à fait ce que j'aimerais, en fait ce qu'il me faut, c'est attribuer un nouvel objet au bloc. mais en faisant ça, je suis obligé de mettre à jour manuelement les attribuer (leur atribuer le nouvel objet de référence). En espérant être plus clair... Salutations
ludo07 Posté(e) le 6 octobre 2011 Posté(e) le 6 octobre 2011 Bonjour. J'ai le même cas que toi. J'ai un bloc avec atribut champs qui renseigne des données d'un autre bloc de porte dynamique. Pour que cela fonctionne il faut que je selectionne les 2 blocs que je l'ai copie ensemble. Ainsi le nouveau bloc atribut me donne bien les indications de mon nouveau bloc porte copié.
litelsousa Posté(e) le 6 octobre 2011 Auteur Posté(e) le 6 octobre 2011 Hello merci, Mais (il y a toujours un mais...) malheureusement je dois mettre ces "étiquettes" sur un plan déja existant... ... mais ce qui me rassure, c'est que ma question est à peu près compréensible.L'espoire fait vivre.
ludo07 Posté(e) le 6 octobre 2011 Posté(e) le 6 octobre 2011 Oui ta question est claire. Peux tu nous dire quel est le type d'objet que ton bloc avzc attribut doit renseigner? Ligne? Polyligne? Hachure?????
litelsousa Posté(e) le 7 octobre 2011 Auteur Posté(e) le 7 octobre 2011 Bonjour, Il sagit principalement de polyligne, mais il peut y avoire quelques lignes et arc. Le bloc doit me renseigner sur: - le calque- la couleur- la longueur Merci
bryce Posté(e) le 8 octobre 2011 Posté(e) le 8 octobre 2011 Bonjour, Tu peux essayer avec ce lisp : http://www.creao.fr/uploads/lisp/etiquette.lsp Avant de l'utiliser, il faut ouvrir le fichier et remplacer dans la partie config le nom du bloc à utiliser, ainsi que les étiquettes des attributs à renseigner. ;) Le code : (defun c:ETIQUETTE ( / GetBlock GetObjectID PutAttValue InsertBlock BOBJ DOC ENT BLOC BLOCPL CTAG LTAG PTAG CONVLONG OBJ PT RESULT SPC TAG VALUE PCONV OLDCLAYER OLDCECOLOR OLDCELTYPE OLDCELWEIGHT OLDCMDECHO OLDERR DECIMALES) (vl-load-com) ;; Brice Studer, octobre 2011 ;~~~ CONFIG ~~~ (setq bloc "etiquette") ;; Nom du bloc à insérer (doit exister dans le dessin) (setq ctag "COULEUR") ;; Etiquette de l'attribut qui affichera la couleur (setq ltag "CALQUE") ;; Etiquette de l'attribut qui affichera le calque (setq ptag "LONGUEUR") ;; Etiquette de l'attribut qui affichera la longueur (setq blocpl "etiquettes") ;; Calque sur lequel insérer le bloc ;(setq blocpl nil) ;; enlever le 1er ; pour utiliser le calque courant (setq convlong T) ;; remplacer T par nil pour désactiver la conversion des longueurs en m (setq decimales "2") ;; Nombre de décimales pour la longueur ;~~~ FIN CONFIG ~~~ (defun initerr() (setq oldclayer (getvar "clayer")) (setq oldcecolor (getvar "cecolor")) (setq oldceltype (getvar "celtype")) (setq oldcelweight (getvar "celweight")) (setq oldcmdecho (getvar "cmdecho")) (setq olderr *error*) (setq *error* trap) (setvar "cecolor" "bylayer") (setvar "celtype" "bylayer") (setvar "celweight" -1) (setvar "cmdecho" 0) (princ) ) (defun reset() (setq *error* olderr) (setvar "clayer" oldclayer) (setvar "cecolor" oldcecolor) (setvar "celtype" oldceltype) (setvar "celweight" oldcelweight) (setvar "cmdecho" oldcmdecho) (princ) ) (defun trap(errmsg) (command nil nil nil) (princ (strcat "\nErreur: " errmsg "\n")) (setq *error* olderr) (setvar "clayer" oldclayer) (setvar "cecolor" oldcecolor) (setvar "celtype" oldceltype) (setvar "celweight" oldcelweight) (setvar "cmdecho" oldcmdecho) (vla-regen doc acActiveViewport) (princ) ) (defun GetObjectID (obj / acobj) (if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj))) (if (< 40 (strlen (vl-princ-to-string (setq acobj (vlax-get-acad-object))))) (vlax-invoke-method (vla-get-utility (vla-get-activedocument acobj)) "GetObjectIdString" obj :vlax-false) (itoa (vla-get-objectid obj)) ) ) (defun PutAttValue ( object tag value ) ;; Lee Mac ~ 05.05.10 (mapcar (function (lambda ( attrib ) (and (eq tag (vla-get-TagString attrib)) (vla-put-TextString attrib value) ) ) ) (vlax-invoke object 'GetAttributes) ) value ) (defun InsertBlock ( Block Name Point ) (if (not (vl-catch-all-error-p (setq result (vl-catch-all-apply (function vla-insertblock) (list Block (vlax-3D-point point) Name 1. 1. 1. 0.) ) ) ) ) result ) ) (initerr) (setq spc (if (or (eq AcModelSpace (vla-get-ActiveSpace (setq doc (vla-get-ActiveDocument (vlax-get-acad-object) ) ) ) ) (eq :vlax-true (vla-get-MSpace doc)) ) (vla-get-ModelSpace doc) (vla-get-PaperSpace doc) ) ) (if (tblsearch "BLOCK" bloc) (while (progn (setq ent (car (entsel "\nChoix de l'objet: "))) (if blocpl (command "_.-layer" "_T" blocpl "_ON" blocpl "_m" blocpl "")) (cond ( (eq 'ENAME (type ent)) (setq obj (vlax-ename->vla-object ent)) (if (and (setq pt (getpoint "\nSpécifiez le point d'insertion du bloc: ")) (setq bObj (InsertBlock spc bloc pt)) ) (progn (setq pconv "1") (if convlong (cond ((= (getvar "insunits") 4) (setq pconv "0.001")) ((= (getvar "insunits") 5) (setq pconv "0.01")) ) ) (and ctag (PutAttValue bObj ctag (strcat "%<\\AcObjProp Object(%<\\_ObjId " (GetObjectID obj) ">%).TrueColor>%" ) ) ) (and ltag (PutAttValue bObj ltag (strcat "%<\\AcObjProp Object(%<\\_ObjId " (GetObjectID obj) ">%).Layer>%" ) ) ) (if (vlax-property-available-p obj 'Length) (and ptag (PutAttValue bObj ptag (strcat "%<\\AcObjProp Object(%<\\_ObjId " (GetObjectID obj) ">%).Length \\f \"%lu2%pr" decimales "%ct8[" pconv "]\">%" ) ) ) ) ) ) ) ) ) ) (princ "\n** Bloc non trouvé **") ) (reset) (vla-regen doc acActiveViewport) (princ) ) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
litelsousa Posté(e) le 10 octobre 2011 Auteur Posté(e) le 10 octobre 2011 Merci Je vais tester ça dans la journée et je vous tiens au courant.
litelsousa Posté(e) le 11 octobre 2011 Auteur Posté(e) le 11 octobre 2011 Splendide!!!C'est exactement ce qu'il me fallait. Merci
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