llefevre Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Bonjour à tous, Lorsque je mets un attribut avec un champ comme valeur dans un bloc (par ex. EffectiveName pour avoir le nom du bloc), je n'arrive pas à afficher ce nom. Il ne m'affiche que 'EffectiveName' en lieu et place du nom du bloc. J'ai du oublier qqchose en route mais quoi? Merci d'avance
Matt666 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Euh...Hein ?? :o Tu as un bloc. Tu redéfinis le bloc en ajoutant un attribut nommé EffectiveName.Et après tu voudrais que cet attribut affiche le nom du bloc que tu viens de redéfinir ?? C'est ça ??? C'est un peu bizarre, quand même !!! Je comprends pas du tout là... (par ex. EffectiveName pour avoir le nom du bloc)Tu veux dire cette fonction VLISP (vla-get-EffectiveName obj) ? je n'arrive pas à afficher ce nom. Il ne m'affiche que 'EffectiveName' en lieu et place du nom du bloc. C'est totalement logique... Un attribut ne peut pas retrouver le nom du bloc dans lequel il est... Et puis de toute façon ça ne sert à rien !! Si tu redéfinis ton bloc en insérant un texte avec comme valeur le nom de ton bloc, c bon !!! Pourquoi mettre un attribut alors qu'il ne changera jamais !!! comprends vraiment pas :( "Chacun compte pour un, et nul ne compte pour plus d'un."
llefevre Posté(e) le 28 septembre 2007 Auteur Posté(e) le 28 septembre 2007 OU LA Je précise ce que je veux faire.J'ai toute un bibliothèque de profils. Sur beaucoup de plans je rajoute la référence du profil "à l'os".En fait au lieu de retaper toutes les références dans les blocs, j'espèrai pouvoir créer un attribut avec champ et le copier de bloc en bloc pour insérer la référence du profil. Fainéantise quand tu nous tient. Merci pour ta réponse
Matt666 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 "à l'os"C'est quoi ? Ta bib de profils, c'est un bloc par dessin, ou tous les blocs dans un seul ? Je pense toujours que Tu n'as pas besoin d'attributs !! Insère un texte plutôt, avec le nom du bloc comme valeur, c'est tout !! A moins que tu veuilles que l'attribut soit invisible... et le copier de bloc en blocCa veut dire que ta bib c'est un seul fichier avec tous tes blocs dedans ? Fainéantise quand tu nous tientC'est ente autre le but du lisp, avec le gain de temps !! :cool: Référence du profil = A l'os = Nom du bloc ?? "Chacun compte pour un, et nul ne compte pour plus d'un."
llefevre Posté(e) le 28 septembre 2007 Auteur Posté(e) le 28 septembre 2007 Merci de te pencher sur cas. Mes blocs sont réparti sur plusieurs dessin en fonction des gammes. Je dois avoir env. 400 blocs en tous.Je voudrais éviter de devoir rajouter un texte comme tu le dis 400 fois.N'ayant jamais fais de Lisp, je comptai réduire le boulot en copiant/collant dans l'éditeur de bloc un champ ayant pour valeur le nom du bloc. En fait j'économise la frappe au clavier de la référence avec les risques d'erreur. Je pense qu'il y a plus simple, mais chacun selon ses moyens. Merci Nota: quand j'essaye d'insérer un champs dans l'éditeur de blocs, je n'ai pas accès à EspaceRéservéBlocs
Matt666 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Le pb de le faire en auto, via le lisp, c'est qu'il faut un point d'insertion du texte... Dans tes 400 blocs, y a t'il un point récurrent... Genre le pt zéro !! Comprends bien : je suppose que tous tes blocs sont différents. Le bloc 1 est un profil U, et le bloc 2 un profil rond. A partir de là où veux-tu mettre tes textes reprenant le nom du bloc ?? Autre chose : 400 blocs, ou 400 références de blocs ??? Nota: quand j'essaye d'insérer un champs dans l'éditeur de blocs, je n'ai pas accès à EspaceRéservéBlocsJe ne comprends pas ce que tu veux dire, désolé... On va y arriver !! :) "Chacun compte pour un, et nul ne compte pour plus d'un."
llefevre Posté(e) le 28 septembre 2007 Auteur Posté(e) le 28 septembre 2007 J'ai 400 Blocs avec autant de noms différents. Dans l'ensemble un point d'insertion du texte justifier à gauche à -20,-10 du point d'insertion irait déjà pour env. 80% des cas. Je ne comprends pas ce que tu veux dire, désolé... Dans la boite de dialogue inséré un champ tu as dans 'noms de champs' la famille 'EspaceRéservéBlocs' dans laquelle tu trouve la propriéte de référence du bloc 'nom'. Je pensai pouvoir passer par là.
Patrick_35 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Salut Et avec battman ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Matt666 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 essaie ça pour voir... Ça fonctionne sur BricsCAD, je sais pas si c bon sur AutoCAD...;;; Génère automatiquement une liste des entités d'une des tables de la bd graphique. ;;; (LSTAB "layer") -> ("0" "structure") (defun LSTAB ( TABL / LB X ) (if (member (strcase tabl) '("APPID" "BLOCK" "DIMSTYLE" "LAYER" "LTYPE" "STYLE" "UCS" "VIEW" "VPORT") ) (progn (setq lb (cons (cdr (assoc 2 (tblnext tabl T))) lb)) (while (setq x (cdr (assoc 2 (tblnext tabl)))) (setq lb (cons x lb)) ) (if (/= (strcase tabl) "BLOCK") (setq lb (acad_strlsort lb)) lb ) ) ) ) (defun c:mbloc (/ cmdecho attreq ent tout s_set) (setq cmdecho (getvar "cmdecho") attreq (getvar "attreq") ) (setvar "cmdecho" 0) (setvar "attreq" 0) (command "_undo" "d") (setq ent (entlast)) (if (setq tout (vl-remove-if '(lambda (x) (eq (substr x 1 1) "*")) (lstab "block") ) ) (progn (foreach pt tout (setq s_set (ssadd) elts (cdr (assoc -2 (tblsearch "block" pt))) ) (while elts (ssadd elts s_set) (setq elts (entnext elts)) ) (entmake (list (cons 0 "TEXT") (cons 1 pt) (cons 10 (list -0.20 -0.10 0.00)) (cons 8 "0") (cons 40 0.05) ) ) (if (/= (entlast) ent) (ssadd (entlast) s_set) ) (command "-bloc" pt "o" "0,0,0" s_set "") ) (princ (strcat "\n" (itoa (length tout)) " références de blocs modifiées." ) ) ) ) (command "_undo" "f") (setvar "attreq" attreq) (setvar "cmdecho" cmdecho) (princ) ) Tu tapes MBLOC et tu vois ce que ça donne... Niveau de la hauteur du texte, c'est en mm... A bientot !Matt. [Edité le 29/9/2007 par Matt666] "Chacun compte pour un, et nul ne compte pour plus d'un."
llefevre Posté(e) le 28 septembre 2007 Auteur Posté(e) le 28 septembre 2007 En fait ton Lisp me remplace mes blocs par leur nom. Je pense que je vais devoir me rectifier tous mes blocs un par un. Merci du temps passé.
lili2006 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Bonsoir à toutes et tous, Et avec battman ? Tu as essayé ? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
llefevre Posté(e) le 28 septembre 2007 Auteur Posté(e) le 28 septembre 2007 Bonsoir, Oui mais ça m'ouvre le gestionnaire d'attribut qui ne m'avance pas à grand chose en fait. Merci
lili2006 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Re, Pourtant il y a pas mal d'option avec cette commande. Mais je t'avouerai que je n'ai pas bien compris ce que tu voulais faire,alors;... Désolé de ne pouvoir t'aider. Bon courage, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
llefevre Posté(e) le 29 septembre 2007 Auteur Posté(e) le 29 septembre 2007 Bonjour, En fait je cherche à écrire le nom du bloc dans le bloc, mais étant donné que j'en ai env. 400, j'aimerai me simplifier la vie. Merci
Matt666 Posté(e) le 29 septembre 2007 Posté(e) le 29 septembre 2007 Bing !Bon cette fois, avec l'aide de (Gile) voici la routine que tu voulais :;;; Génère automatiquement une liste des entités d'une des tables de la bd graphique. ;;; (LSTAB "layer") -> ("0" "structure") (defun LSTAB (TABL / LB X) (if (member (strcase tabl) '("APPID" "BLOCK" "DIMSTYLE" "LAYER" "LTYPE" "STYLE" "UCS" "VIEW" "VPORT") ) (progn (setq lb (cons (cdr (assoc 2 (tblnext tabl T))) lb)) (while (setq x (cdr (assoc 2 (tblnext tabl)))) (setq lb (cons x lb)) ) (if (/= (strcase tabl) "BLOCK") (setq lb (acad_strlsort lb)) lb ) ) ) ) (defun c:mbloc (/ cmdecho attreq ent tout s_set) (setq cmdecho (getvar "cmdecho") attreq (getvar "attreq") ) (setvar "cmdecho" 0) (setvar "attreq" 0) (command "_undo" "d") (setq ent (entlast)) (if (setq tout (vl-remove-if '(lambda (x) (eq (substr x 1 1) "*")) (lstab "block") )) (progn (foreach pt tout (command "-inserer" pt "0,0" "" "" "" "_explode" (setq bl (entlast)) ) (setq sset (ssget "P")) (entmake (list (cons 0 "TEXT") (cons 1 pt) (cons 10 (list -20 -10 0.00)) (cons 8 "0") (cons 40 5) ) ) (if (/= (entlast) ent bl)(ssadd (entlast) sset)) (command "-bloc" pt "o" "0,0,0" sset "") ) (princ (strcat "\n" (itoa (length tout)) " références de blocs modifiées." )) ) ) (command "_undo" "f") (setvar "attreq" attreq) (setvar "cmdecho" cmdecho) (princ) ) Tu vois, il suffit juste d'être patient !Dis moi si ça fonctionne ! Je l'ai testée sur Acad2006. A bientot.Matt. "Chacun compte pour un, et nul ne compte pour plus d'un."
llefevre Posté(e) le 1 octobre 2007 Auteur Posté(e) le 1 octobre 2007 Bonjour à tous, MERCI beaucoup Matt666 et gile pour ce Lisp, il va bien me simplifier la vie. :D A bientôt
FRAXA Posté(e) le 10 janvier 2008 Posté(e) le 10 janvier 2008 Bonjour à tous!J'ai voulu tester le lisp sur autocad 2005 mais j'obtiens un message d'erreur:; erreur: type d'argument incorrect: lselsetp nilPourquoi? HPZ400 Workstation Intel Xeon W3550 3.07 GHz 6 Go ram QUADRO FX 1800
lili2006 Posté(e) le 10 janvier 2008 Posté(e) le 10 janvier 2008 Bonsoir à toutes et tous, Bonjour à tous!J'ai voulu tester le lisp sur autocad 2005 mais j'obtiens un message d'erreur:; erreur: type d'argument incorrect: lselsetp nilPourquoi? Idem sur une V2008, et avant même de selectionner qoui que ce soit,... Commande: mblocNe peut pas décomposer ce bloc.; erreur: type d'argument incorrect: lselsetp nil Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
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