muriel Posté(e) le 13 mars 2008 Posté(e) le 13 mars 2008 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!
muriel Posté(e) le 13 mars 2008 Auteur Posté(e) le 13 mars 2008 Je précise que je suis sur AutoCAD 2008.
(gile) Posté(e) le 13 mars 2008 Posté(e) le 13 mars 2008 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
muriel Posté(e) le 13 mars 2008 Auteur Posté(e) le 13 mars 2008 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....
muriel Posté(e) le 13 mars 2008 Auteur Posté(e) le 13 mars 2008 ... 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à!
(gile) Posté(e) le 13 mars 2008 Posté(e) le 13 mars 2008 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
muriel Posté(e) le 13 mars 2008 Auteur Posté(e) le 13 mars 2008 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
yusukens82 Posté(e) le 30 juillet 2008 Posté(e) le 30 juillet 2008 Merci GILE pour ce LISP, c'est vraiment fantastique se que tu fais. Amicalement
kclement Posté(e) le 9 septembre 2010 Posté(e) le 9 septembre 2010 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...
RhymOne Posté(e) le 10 septembre 2010 Posté(e) le 10 septembre 2010 Salut,Gile t'est au top un petit lisp en plus dans mon appli (tu est cité).... DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
pierrevigneux Posté(e) le 10 septembre 2010 Posté(e) le 10 septembre 2010 Bonjour (gile) Est-ce possible de modifier le lisp sans passer par les blocks-attributs? Merci @+ Acadnadien
(gile) Posté(e) le 10 septembre 2010 Posté(e) le 10 septembre 2010 Est-ce possible de modifier le lisp sans passer par les blocks-attributs? C'est à dire ?... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
pierrevigneux Posté(e) le 11 septembre 2010 Posté(e) le 11 septembre 2010 Bonsoir (gile) C'est à dire ?... J,aimerais changer l'altitude d'un point(Z) de la même façon que tu change l'attribut du point choisi et ce serait parfait pour moi. Merci! Acadnadien
didier Posté(e) le 11 septembre 2010 Posté(e) le 11 septembre 2010 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 Éternel débutant... Mon site perso : Programmer dans AutoCAD
pierrevigneux Posté(e) le 11 septembre 2010 Posté(e) le 11 septembre 2010 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,00Je ne sais pas si je suis assez clair? mais voila. Merci beaucoup. Acadnadien
RhymOne Posté(e) le 13 septembre 2010 Posté(e) le 13 septembre 2010 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), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
(gile) Posté(e) le 13 septembre 2010 Posté(e) le 13 septembre 2010 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
lecrabe Posté(e) le 13 septembre 2010 Posté(e) le 13 septembre 2010 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 / NonPour 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
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