Aller au contenu

appliquer attributs Z d\'un bloc


Messages recommandés

Posté(e)

Bonjour, j'aimerais appliquer à une série de blocs leurs attributs d'altitude (tous différents bien sur) pour que le point d'insertion du bloc soit à l'altitude indiquée dans son attribut, est-ce que quelqu'un connait une routine qui pourrait faire ça, et inversement - et encore plus fot - renseigner l'attribut en fonction de l'altitude du point d'insertion du bloc?

J'ai cherché dans les routines de Giles, de Patrick_35, et dans les forums mais je n'ai rien trouvé, je n'ai pas bien cherché ou bien peut être que tout le monde a Mensura ou Covadis...qui font ça en un clin d'oeuil.

 

Merci!

Posté(e)

Salut,

 

Il me semblait bien avoir déjà écrit quelque chose de ce genre.

 

EDIT : code corrigé

 

(defun c:bloc-alt (/ att elst blk tag ss n ins)
 (if
   (and
     (setq att (car (nentsel "\nSélectionnez l'attribut \"altitude\": ")))
     (setq elst (entget att))
     (= (cdr (assoc 0 elst)) "ATTRIB")
     (setq blk (cdr (assoc 330 elst)))
     (setq name (cdr (assoc 2 (entget blk))))
     (setq tag (cdr (assoc 2 elst)))
     (setq ss (ssget "_X" (list '(0 . "INSERT") (assoc 2 (entget blk)))))
     (setq n -1)
   )
    (progn
      (while (setq blk (ssname ss (setq n (1+ n))))
 (setq elst (entget blk)
       ins  (cdr (assoc 10 elst))
       att  (entnext blk)
 )
 (while	(and att (= (cdr (assoc 0 (entget att))) "ATTRIB"))
   (if (= (cdr (assoc 2 (entget att))) tag)
     (entmod
       (subst
	 (list 10
	       (car ins)
	       (cadr ins)
	       (atof (cdr (assoc 1 (entget att))))
	 )
	 (assoc 10 elst)
	 elst
       )
     )
   )
   (setq att (entnext att))
 )
      )
      (vl-cmdf "_.attsync" "_n" name)
    )
 )
 (princ)
) 

 

[Edité le 13/3/2008 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Alors, oui ça marche et c'est déjà impressionant, mais tous mes blocs prennent l'altitude du bloc que j'ai sélectionné, alors que je voulais que chaque bloc ait sa propre altitude....

Posté(e)

... enfin quand je dis ça marche, sur la 2007, pas sur la 2008 qui m'a fait des écrans bloqués très bizarres, peut-être parceque mes blocs avaient des échelles annotatives, c'est fragile ces petites choses là!

Posté(e)

Oupss, j'avais oublié un petit test.

Le code ci dessus est corrigé.

 

enfin quand je dis ça marche, sur la 2007, pas sur la 2008

Je ne connais pas 2008 (et à ce que je peux lire, je ne suis pas très pressé de connaître) je n'ai testé que sur 2007.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Ca marche et c'est magique, encore un petit fichier de 1ko qui change la vie...un concentré d'astuces, merci vous êtes vraiment des boss sur ce forum

  • 4 mois après...
  • 2 ans après...
Posté(e)

Bonjour,

 

Je viens d'essayer ce lisp sur Autodesk Architectural Desktop 2008.

 

Il met bien les blocs au bon Z mais après il fait un ATTSYNC et là, tous mes attributs passent à 0.00 (valeur par défaut de l'attribut) !

 

Si ensuite je fais juste une annulation, l'attribut revient à la bonne valeur mais le bloc reste avec le Z correspondant...

 

Vous me direz, en attendant ça peut marcher comme ça, mais bon, ce serait mieux si ça faisait pas ça, vous trouvez pas ?

 

Merci de vos réponses...

Posté(e)

Salut,

Gile t'est au top un petit lisp en plus dans mon appli (tu est cité)....

DAO: AutoCAD(2D & 3D), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

coucou

 

je m’immisce dans la conversation pour répondre à pierrevigneux,

le souci, c'est que ton point est renseigné comment pour son altitude ?

 

il y a un texte à côté ?

c'est ce texte dont on doit extraire la valeur pour indiquer l'altitude du point ?

 

pas assez précise ta question pour y répondre concrètement.

amicalement

 

Posté(e)

bonjour didier

 

il y a un texte à côté ?

c'est ce texte dont on doit extraire la valeur pour indiquer l'altitude du point ?

 

Oui il y aun texte à côté, il faudrait changer l'altitude et du poin et du texte.

 

Ex: +100,00

Je ne sais pas si je suis assez clair? mais voila.

 

Merci beaucoup.

Acadnadien

Posté(e)

Salut,

Le problème est autre si le bloc est décomposée,.............Ardghhhhh complexes....

Il faut passé par des rayons de recherche car ton texte n'a rien avoir avec ton point..

Sa devient du lourd comme le dit didier !

DAO: AutoCAD(2D & 3D), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

Salut,

 

Est-ce que le point d'insertion du texte est confondu avec le point ou toujours à la même position par rapport au point ?

Si ce n'est pas le cas, c'est plus difficile d'automatiser...

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

 

Hello

 

Je me permet de reformuler le CDC/CCTP pour un traitement plus general !

 

Pour les points releves sur le terrain, en general le Text (ou MText) qui indique l'altitude est "proche" du point graphique ou bloc (avec ou sans attribut) !

et donc il faut chercher le texte dans un certain rayon R

 

Question 1 : Traitement de points OU de blocs

 

Question 2 (pour les blocs) : Montee en altitude du bloc : Oui / Non

Pour les points, on va toujours les monter en altitude

 

Question 3 (pour les blocs) : Nom de l'attribut qui doit "refleter" le texte et donc en fait l'altitude

 

Question 4 : Rayon de recherche R

 

A partir d'une selection classique d'AutoCAD, on ne retient que les points ou les blocs

puis traitement et en sortie, on indique le nbr d'objets traites et aussi le nbr d'objets en Vert, Rouge, Bleu

 

- trouver LE texte puis "monter" le point a l'altitude ou le bloc a l'altitude et eventuellement mettre a jour un CERTAIN attribut sur le bloc

puis on force en VERT le point ou bloc !

 

- pour les points / ou blocs pour lesquels on ne trouve AUCUN Texte

on force en ROUGE le point / bloc !

 

- pour les points / ou blocs pour lesquels on trouve 2 Textes (ou plus)

on force en BLEU le point / bloc !

 

Qu'en pensez vous ?

 

Le Decapode

 

 

 

 

 

Autodesk Expert Elite Team

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é