Aller au contenu

Attributs et champs


llefevre

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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."

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

"à 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 bloc

Ca veut dire que ta bib c'est un seul fichier avec tous tes blocs dedans ?

 

Fainéantise quand tu nous tient

C'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."

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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éBlocs

Je 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."

Lien vers le commentaire
Partager sur d’autres sites

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à.

Lien vers le commentaire
Partager sur d’autres sites

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."

Lien vers le commentaire
Partager sur d’autres sites

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."

Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...

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 nil

Pourquoi?

 

 

Idem sur une V2008, et avant même de selectionner qoui que ce soit,...

 

Commande: mbloc

Ne 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/

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é