jalna Posté(e) le 16 octobre 2008 Posté(e) le 16 octobre 2008 Bonjour,J'ai une question qui me trotte depuis un moment! J'utilise le lisp de Giles (pline_block) j'ai donc un bloc avec attribut contenant un nom de pièce et une surface. Ensuite je fais des extractions de données pour récupérer en tableau le nom et les surfaces afin de placer un champ avec une surface totale (addition de plusieurs blocs). Vu que je rencontre des problèmes avec les extractions (pas très au point à mon avis), j'aimerais savoir si il serait possible de placer un champ qui calcul le total des surfaces sans passer par un tableau AutoCAD. "Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."J-C Van DammeMon forum : http://plexus.forumactif.org/
lecrabe Posté(e) le 16 octobre 2008 Posté(e) le 16 octobre 2008 Hello Tu peux utiliser ma routine favorite ZTOTM pour totaliser les longueurs et surfaces de TOUS les objets graphiques (SAUF les lignes & arcs) ;;; 1st Routine for AUTOCAD R13, R14, R15 (OUPS ! 2000) - 04/2000;;; ;;; ZTOTM ou ZTOTCM.LSP - Version 1.0 by H LORIOT © 2000;;; ZTOTM.LSP et Fonction ZTOTM (Because DWG en METRE);;;;;; H LORIOT PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.;;; H LORIOT SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF;;; MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. ;;; H LORIOT DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM ;;; WILL BE UNINTERRUPTED OR ERROR FREE.;;;;;; Modification par Patrice - Version 1.1 en Lisp;;; +SPLINE, +ELLIPSE;;;;;; Modification par Gilles - Version 2.0 en Visual-Lisp;;; +MPOLYGON (de MAP ou CIVIL), +REGION;;;;;; Version 2.1 : Modif pour traiter AUSSI les Polylignes NON FERMEES/ NON CLOSES;;; VITAL pour faire la somme de polylignes "ouvertes" : Reseaux par exemple;;;;;; Commande au clavier : ZTOTM (defun c:ztotm (/ ss cnt area len)(vl-load-com)(setq cnt 0 area 0.0 len 0.0)(if (ssget (list'(-4 . "'(0 . "CIRCLE")'(-4 . "'(0 . "ELLIPSE")'(41 . 0.0)(cons 42 (* 2 pi))'(-4 . "AND>")'(-4 . "'(0 . "LWPOLYLINE");;; '(-4 . "&");;; '(70 . 1)'(-4 . "AND>")'(0 . "MPOLYGON")'(-4 . "'(0 . "POLYLINE");;; '(-4 . "&");;; '(70 . 1)'(-4 . "'(70 . 8)'(-4 . "AND>")'(0 . "REGION")'(-4 . "'(0 . "SPLINE")'(-4 . "&")'(70 . 9)'(-4 . "AND>")'(-4 . "OR>")) )(progn(vlax-for obj (setq ss (vla-get-ActiveSelectionSet(vla-get-ActiveDocument(vlax-get-acad-object))))(setq cnt (1+ cnt)area (+ area (vla-get-area obj))len (+ len(if (member (vla-get-ObjectName obj)'("AcDbMPolygon" "AcDbRegion"))(vla-get-Perimeter obj)(vlax-curve-getDistAtParamobj(vlax-curve-getEndParam obj)))))) (princ "\nZTOTM v2.1 - Cercle, Polyligne, Ellipse, Spline, Region, MPOLYGON")(princ (strcat "\n""TOTAUX -Surface: "(rtos area)" -Périmètre: "(rtos len)" -Objets: "(itoa cnt)))(vla-delete ss))(prompt "\n*** Rien de Valable "))(princ)) (princ "\n==> ZTOTM (Version 2.1) ")(princ) Le Decapode Autodesk Expert Elite Team
Patrick_35 Posté(e) le 16 octobre 2008 Posté(e) le 16 octobre 2008 Bonjour Tu peux utiliser les champs avec une expression diesel pour une addition, mais pas plus de 9 objets.Sinon, tu as aussi LATT qui fait une addition avec une mise à jour automatique dès le changement d'un des attributs choisis auparavant (il faut que le lisp soit uniquement chargé)Si tu ne veux pas des réacteurs, un bout de code vite fait. (defun c:tts(/ base ent tot val) (vl-load-com) (and (setq base (nentsel "\nSélectionnez l'attribut résultant : ")) (setq base (vlax-ename->vla-object (car base))) (eq (vla-get-objectname base) "AcDbAttribute") (progn (setq tot 0) (while (setq ent (nentsel "\nSélectionnez l'attribut à additionner :")) (and (setq ent (vlax-ename->vla-object (car ent))) (eq (vla-get-objectname ent) "AcDbAttribute") (setq val (vla-get-textstring ent)) (member (type (read val)) '(REAL INT)) (setq tot (+ tot (read val))) ) ) (vla-put-textstring base (if (eq (type tot) 'REAL) (rtos tot) (itoa tot) ) ) ) ) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
jalna Posté(e) le 16 octobre 2008 Auteur Posté(e) le 16 octobre 2008 Merci à vous Patrick_35, latt me convient tout à fait!Je vais essayer...............Merci "Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."J-C Van DammeMon forum : http://plexus.forumactif.org/
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