Aller au contenu

Messages recommandés

Posté(e)

Bonjour à toutes et tous,

 

Jusque là, pas de pb pour le titre de mon post,...

 

Sauf, que sur ce fichier passé à travers je ne sais quelle moulinette avant d'arriver en ".dxf", dans l'éditeur de bloc rien que le point de définition du bloc !

 

Un peu compliqué pour gérer l'affichage des attributs puisqu'ils n'apparaissent pas ! :o

 

Si vous avez une idée, sur ce bloc, c'est uniquement le renseignement de l'attribut "TOPONYME" que je souhaite garder à l'affichage !

 

Pour les autres attributs, ils doivent exister (base de données) mais pas apparaitre sur le plan !

 

http://db.tt/mnMCJ6b

 

Une idée ?

 

Merci d'avance,

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Bonjour,

Tu édite ton bloc avec l'editeur de bloc et tu modifie les propriétés de ton attribut sélectionne

 

j'ai ouvert le fichier mais lors de l'édition du bloc les attributs n'apparaissent pas, il n'y a que le point d'insertion?...

 

pour l'instant c'est un mystère pour moi :casstet:

 

[Edité le 23/5/2011 par wookichu]

Posté(e)

J'ai regardé ton fichier

la conversion a crée un bloc a chaque insertion

 

en lisp on peut récupérer les valeurs des attributs

- insérer un nouveau bloc qui va bien avec les valeurs d'attribut

et le tour et joué

encore faut il avoir le temps de le faire

 

Vous fîtes ce que vous pûtes

et vous m'épatâtes !!!!

Invité Patrick
Posté(e)

Si c'est un bloc dynamique les attributs peuvent n'être visibles que dans certains états de visibilité... c'est le piège classique, j'en sais quelque chose... :casstet:

Posté(e)

voici ptite moulinette vite fait qui va changer le calque de l'attribut en question

 

 

 

 

(defun c:toto  ()
 (setq sel (ssget "x" '((0 . "INSERT") (2 . "BLK_FV_TXVOI*"))))
 (setq	cpt    0
newlay "toto")
 (repeat (sslength sel)
   (setq ent (ssname sel cpt))
   (upd_blk ent "TOPONYME" 8 newlay)
   (setq cpt (+ cpt 1))

   )
 )
(defun upd_blk	(obj eti code txt)
 (setq ent_att (entnext obj))
 (while (/= (cdr (assoc 0 (entget ent_att))) "SEQEND")
   (if	(= (cdr (assoc 2 (entget ent_att))) eti)
     (progn
(setq e (entget ent_att))
(entmod (subst (cons code txt) (assoc code e) e))
(entupd obj)
)
     )
   (setq ent_att (entnext ent_att))
   )
 )


 

[Edité le 23/5/2011 par capde06]

Vous fîtes ce que vous pûtes

et vous m'épatâtes !!!!

Posté(e)

Bonjour

 

Ma réponse au quiz du jour.

Je pense que les attributs n'ont plus le mode invisible (code dxf 70) ou encore que la variable ATTMODE est sur 2.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Bonjour,

 

Les attributs n'existent qu'au niveau des références de blocs, mais pas au niveau des définitions de blocs, ce qui fait qu'on ne peut utiliser ni l'éditeur de blocs, ni le gestionnaire d'attributs...

:casstet:

Le fichier a été exporté depuis quel logiciel ?

 

Voici un petit lisp qui permet de rendre visibles tous les attributs qui ont la même étiquette :

 

(defun c:ATTVIS (/ doc tag atts)
(vl-load-com)
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(if (/= "" (setq tag (strcase (getstring "\nEtiquette de l'attribut à rendre visible: "))))
(vlax-for item (vla-get-modelspace doc)
	(if (wcmatch (vla-get-objectname item) "AcDbBlockReference")
		(progn
			(if (setq atts (vlax-invoke item 'getattributes))
				(foreach att atts
					(if (= (vla-get-tagstring att) tag)
						(vla-put-invisible att 0)
					)
				)
			)
		)
	)
)
)
(princ)
)

 

Il faudra aussi penser à remettre ATTECRAN à Normal. ;)

 

 

 

 

[Edité le 23/5/2011 par bryce]

Posté(e)

Re,

 

Merci encore à tous,

 

Patrick_35,

 

Oui, j'avais essayé des choses avant de poster,...

 

capde06

 

Merci bien mais si je gèle le calque du bloc, même si l'attribut "TOPONYME" est sur un autre calque, il se gèle avec le bloc,...

 

Mais ce lisp m'intéresserait pour le filtrage en z de certains points topo si on pouvait geler les calques indépendamment du bloc,...

 

 

bryce

 

Merci ce lisp correspond parfaitement aux besoins !

 

J'ai juste changer l'invite "Etiquette de l'attribut à rendre invisible: "(Il faut alors se mettre en mode "normal", mais c'est peut-être fait exprès,...)

 

par "Etiquette de l'attribut à laisser visible:", Non ?

 

Par contre lorsque l'on fait un retour en arrière, tous les attributs sont invisibles ??!!

 

Le fichier a été exporté depuis quel logiciel ?

 

L'ancien étudiant qui m'a fait passer ce fichier ne sait pas,...

 

Je pense qu'il à d'autre chose à faire sur celui-ci mais je ne sais pas encore quoi vraiment,...

 

Encore merci à tous, ;)

 

Je reviens dés que j'ai des news,.. :P

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

par "Etiquette de l'attribut à laisser visible:", Non ?

 

Oui, je suis un peu étourdi parfois... :P

 

Par contre lorsque l'on fait un retour en arrière, tous les attributs sont invisibles ??!!

S'ils étaient invisibles oui...

Ils se remettent dans l'état dans lequel ils étaient avant le lancement du lisp.

Ça vient peut-être de ATTECRAN. ;)

Posté(e)

Re,

 

Salut Bryce,

 

Nos messages se sont croisés puisque j'ai édité ma réponse précédente entre temps,...

 

S'ils étaient invisibles oui...

Ils se remettent dans l'état dans lequel ils étaient avant le lancement du lisp.

 

Pourtant non, ils étaient tous visibles comme sur le fichier déposé sur mon premier post ("Normal").

 

Merci encore,

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Invité Patrick
Posté(e)

J'ai ouvert ton fichier; il s'agit de définitions d'attributs en mode invisible et comme tu as ATTMODE à 2, tu les vois. Pour éditer tes attributs, clic droit et éditer le bloc dans le dessin même. Je n'ai pas vu d'anomalie.

Posté(e)

boujour,

Je me permet de poser une methode

J'ai eu le même problème avec des info sur des schémas électriques ,( les attributs ne sont pas existant dans la définition du bloc)

 

J'ai donc crée un bloc propre avec les noms des attributs "Identique au non de base"

Puis j'ai utiliser un lisp de remplacement des blocs par mon nouveau bloc

 

Dans express tu as un outil ("blockreplace") de transfère d un bloc par un autre

Je vais rechercher mon lisp de base : transfère x noms de blocs par un seul

 

Posté(e)

bonjour ,

je n'est pas retrouvée le lisp de base , mais j'ai quand meme un ptit lisp (bidouiller )

 

(defun c:chgbloc ()
(setq rep3 "c:/be/affair97/97_29_00/annecy/bloc/blocsymb/")
(prompt "\nMise a jour des blocs selectionnes ") (terpri)
  (setq s (ssget))
  (if s (progn (setq rep
     (getstring "Donnez le repertoire  :") )
     (if (= rep "") (setq rep rep3) )
     (setq e (ssname s 0) n 1 newnom "" fi nil)
     (while (= newnom "")
        (setq newnom (getstring T"\nDonnez le nom du nouveau symbole : ") )
        (if (= newnom "") (setq newnom rep) (progn
; recherche dans la section block
           (setq li (tblnext "BLOCK" "t"))
           (while li
             (setq nom (cdr (assoc '2 li)))
             (if (= nom newnom)
               (setq li nil fi "newnom")
            (setq li (tblnext "BLOCK"))
            )
         )
; recherche dans le repertoire indiqu‚
           (if (= fi nil) (progn
              (setq fi (open (strcat rep newnom ".dwg") "r")
                    newnom (strcat rep newnom) )
              (if fi (close fi))
           ))
           (if (= fi nil)
              (progn  (terpri) (princ newnom)
              (prompt " ---- SYMBOLE INCONNU ----") (terpri)
              (setq newnom "")
           )   )
        ))
     )
     (if (or (= newnom "") (= newnom rep))
        (prompt (strcat "Nom du symbole = " newnom " ??? ")) (progn
        (while e
        (setq li (entget e))
        (setq bi (cdr (assoc '0 li)))
        (if (= bi "INSERT") (acet-block-replace (cdr (assoc '2 li)) newnom);(progn
         ;  (setq ori (cdr (assoc '10 li))
         ;        ax  (cdr (assoc '41 li))
         ;        ay  (cdr (assoc '42 li))
         ;        ang (* (/ (cdr (assoc '50 li)) pi) 180.))
         ;  (entdel e)
        ;   (command "-inserer" newnom ori ax ay ang "" "" "" "")
		; ) 
	 )
        (setq e (ssname s n) n (+ n 1) )
        )
     ))
  ))
)
; ******************************************************************** 

 

ce liste il te faut un bloc propre avec les meme nom d'attribut (exemple: bloc1)

-tu selection les objet que tu veut changer

-tu rentre " " pour le repertoire de stokage

-tu lui donne ton nom de bloc (exemple bloc1)

 

 

fait un essai sur une copie au cas ou cela ne te convient pas

PS : cela ne fonstion que si tu as les outils express (acet-block-replace bnan bnan2)

 

[Edité le 25/5/2011 par sbosarl]

Posté(e)

bonjour ,

hier j'ai fait un essais http:// http://dl.free.fr/rQfJTWS1a

 

il faut lancer la commande de express "blockreplace" pour valider le lisp

 

commande longue pour remplacement des 400 bloc BLK_FV_TXVOI_P..........

il as fallu 30 minute

pour les autres blocs je n'est aucune idee commant récupere les infos sans perdre le lien avec le tracer

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é