Aller au contenu

Somme de surfaces


Messages recommandés

Posté(e)

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 Damme

Posté(e)

 

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

obj

(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

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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 Damme

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é