lecrabe Posté(e) le 7 août 2008 Partager Posté(e) le 7 août 2008 Hello Je n'ai pas trouvé mon bonheur ! Je desire une routine Lisp ou V-Lisp qui me permette a partir d'une selection AutoCAD classique (Fenetre, CP, Tout, etc) Me demande de selectionner un bloc puis un nom d'attribut (Etiquette) et fasse la somme numerique du contenu de l'attribut pour tous les blocs contenus dans la selection ! Si le contenu de l'attribut est Non numerique, on le considere a ZERO ! Rappel: Les routines ADDATT/MULATT de Gilles sont Tip Top mais elles modifient les contenus des attributs par une valeur numerique Bien sur, je pourrais faire une extraction du contenu des attributs puis un tableau et/ou un export vers Excel mais c trop long et "complique" !!! Merci d'avance, Le Decapode Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 7 août 2008 Partager Posté(e) le 7 août 2008 coucou, je n'ai pas de pinces, mais j'ai tapé ça :dans mes tests ça fonctionne, mais dans ton fichier ? (setq blocgenre (entsel "\nchoix\n"))(redraw (car blocgenre) 3)(setq blocatt (nentsel "\nchoix\n"))(setq nomatt (cdr (assoc 2 (entget (car blocatt)))))(redraw (car blocgenre) 4) (setq nombloc (cdr (assoc 2 (entget (car blocgenre)))))(alert (strcat "Bloc Choisi : " nombloc "\nAttribut Choisi :" nomatt )) (setq jeubloc (ssget "x" (list (cons 0 "INSERT") (cons 2 nombloc) ) ))(setq lonjeubloc (sslength jeubloc) n 0 addition 0) (repeat lonjeubloc (setq bloc (ssname jeubloc n)) (setq test (entnext bloc));;;;;;;;;;;;;;;;;;;;;;;;;;;;; (while (/= (cdr (assoc 2 (entget test))) nomatt) (setq test (entnext test)) );;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq addition (+ (atof (cdr (assoc 1 (entget test)))) addition)) (setq n (+ 1 n)))(alert (strcat " addition des attributs: " nomatt ">>" (rtos addition) )) tu me tiendras au courant ? amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 7 août 2008 Auteur Partager Posté(e) le 7 août 2008 Hello J'ai plein d'erreurs de syntaxe, sniff ! Le Decapode "patient" Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 7 août 2008 Partager Posté(e) le 7 août 2008 coucou comment ça des erreurs de syntaxe ? la Saint Taxe, c'est quand ? amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 7 août 2008 Partager Posté(e) le 7 août 2008 coucou comme je te l'ai dit, c'est vitele principe : tu choisis un bloc à l'écranil se met en surbrillance,tu choisis un attribut de ce blocune case ALERT t'indique le nom du bloc et l'étiquette de l'atributil n'y a pas de contrôle donc c'est juste une infoc'est améliorablepuis le dessin est scanné par un ssget qui cherche TOUSles blocs nommésdans ces blocs, tous les attributs de l'étiquette choisieensuite, je fais une addition de toutes les valeurs numériques trouvéesqui sont stockées dans la variable ADDITION. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 8 août 2008 Auteur Partager Posté(e) le 8 août 2008 Hello Didier Désolé, mais je n'arrive pas à utiliser ton bout de Lisp ! :o C' la grosse fatigue, mais heureusement je suis en vacs ce soir ! NeanmoinsSVP si qq'un pouvait me faire un Lisp sympa, le retour de vacs s'annoncera "favorable" :) Merci d'avance, Le Decapode "fatigué" Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 8 août 2008 Partager Posté(e) le 8 août 2008 Salut, Comme ça, ça va ? On sélectionne d'abord l'attribut, ça permet de récupérer le nom du bloc pour filtrer la sélection (defun c:addattval (/ att elst tag ss n tot blk) (and (setq att (car (nentsel "\nSélectionnez un attribut: "))) (setq elst (entget att)) (= (cdr (assoc 0 elst)) "ATTRIB") (setq tag (cdr (assoc 2 elst))) (princ "\nSélectionnez les blocs ou [b]:") (or (setq ss (ssget (list '(0 . "INSERT") (assoc 2 (entget (cdr (assoc 330 elst)))) ) ) ) (setq ss (ssget "_X" (list '(0 . "INSERT") (assoc 2 (entget (cdr (assoc 330 elst)))) ) ) ) ) (setq n -1) (setq tot 0) (while (setq blk (ssname ss (setq n (1+ n)))) (setq att (entnext blk)) (while (and att (setq elst (entget att)) (/= (cdr (assoc 2 elst)) tag) ) (setq att (entnext att)) ) (if (setq val (distof (cdr (assoc 1 elst)))) (setq tot (+ tot val)) ) ) ) (alert (strcat "Total = " (vl-princ-to-string tot))) (princ) ) [Edité le 9/8/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
thry0 Posté(e) le 8 août 2008 Partager Posté(e) le 8 août 2008 Ben ... non ! :casstet: Tout d'abord comment sélectionner un attribut dans un bloc ?Je ne peux que sélectionner le bloc "constitué", si je ne m'abuse ....Et puis le total donne toujours 1 à priori :o Pas tout compris du fonctionnement Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 9 août 2008 Partager Posté(e) le 9 août 2008 Salut, Tout d'abord comment sélectionner un attribut dans un bloc ?Je ne peux que sélectionner le bloc "constitué", si je ne m'abuse .... La fonction LISP nentsel (Nested ENTity SELection) permet de sélectionner une entité imbriquée, un attribut par exemple. Commande: ADDATTVALSélectionnez un attribut: cliquer sur l'attribut à additionnerSélectionnez les blocs ou : faire une sélection ou Entrée, Espace ou clic droit pour sélectionner tous les blocs insérésChoix des objets: Spécifiez le coin opposé: 4 trouvé(s) Choix des objets: valider la sélectionTotal = 22.0 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
thry0 Posté(e) le 9 août 2008 Partager Posté(e) le 9 août 2008 Re,tout est clair et fonctionne correctement ...J'avais simplement fait un bloc à plusieurs attributs dont un seul numériqueet je ne devais pas systématiquement cliquer dessus :cool:ne connaissant pas la petite subtilité, mais ta mise au point à fait tilt dans ma petite têteMerçi Lien vers le commentaire Partager sur d’autres sites More sharing options...
PHILPHIL Posté(e) le 13 septembre 2008 Partager Posté(e) le 13 septembre 2008 hello tous gile est ce que ta routine lisp pourrait faire la meme chose en additionnant les "mtext" afficher des cotations l'interet ??? simple routine de verifications de cotes :celles qui sont existantes mais ne pointent plus réellement l'entiteou celle qui sont forcées merci phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 13 septembre 2008 Partager Posté(e) le 13 septembre 2008 Bonjour à toutes et tous, ou celle qui sont forcées En ce qui concerne les cotes forcées, tu as "dimreassoc" des express, Ou bien la combine depuis un filtre => http://images4.hiboox.com/images/3708/26ef0fe9feeb2603b404d49b8c43a6f6.jpg Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
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