Aller au contenu

appliquer attributs Z d\'un bloc


muriel

Messages recommandés

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!

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

  • 4 mois après...
  • 2 ans après...

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

 

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

 

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

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é