Aller au contenu

Un lisp qui affiche en m² des surfaces en cm²


Messages recommandés

Posté(e)

Bonjour forum !

 

Je dessine des plans en cm, mais quand il s'agit de mesurer des surfaces de pièces, les cm² ça le fait pas !

Je sais bidouiller des lisp existants, mais je ne suis pas capable d'inventer un lisp tout simple, qui me permettrait d'obtenir, sur la ligne de commande, la surface d'une polyligne exprimée en m² (disons avec 1 décimale).

 

Quelqu'un pourrait-il m'aider siouplé ?

 

Merci !

Posté(e)

Salut.

 

Je ne sais pas comment tu procèdes précisément mais tu peux:

a) dessiner ta pièce en cm

b) l'insérer en bloc dans un dessin en mètres pour faire tes métrés

 

Je crais qu'un lisp qui bidouille les résultats ne soit plus une source d'erreurs qu'autre chose (à part éventuellement une hérésie, je rigole bien sûr)

 

Le mieux c'est tout de même de bosser dans l'unité des résultats qu'on veut obtenir.

 

Par exemple, en VRD je saisis des mètres (plus partique pour moi) dans des dessins 'sans unité' (pour ne pas rencontrer de problèmes lors de l'insertion de plans en unités alien).

 

Et AutoCAD se tourna vers le dessinateur à bout de nerfs, et lui dit:

"ERREUR FATALE: Unhandled Access Violation Reading 0x5e43dff0 Exception at 5e43dff0h"

Ce à quoi le dessinateur répondit:

"Ca tombe bien je vais en profiter pour écouter un peu de rock qui décrasse les esgourdes"

http://www.facebook.com/pages/Ex-Voto/206836112741129?sk=wall

Posté(e)

Je me suis inspiré de cela pour créer ceci :

*^C^C_area;o;\texteval;1;-texte;auc;@;;;Surface=$m=$(rtos,$(/,$(getvar,area),10000),2,2);deplacer;d;;auc;@;auc;\

 

Donc, ca n'est pas du lisp mais du DIESEL. Bon à glisser dans un bouton ou sur une palette.

Voir si ca convient.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

 

Hello

 

Et si tu veux traiter N polyligne, cercle, region, spline, MPolygon en une seule fois

 

Voici ma bonne vieille routine ZTOTM / ZTOTCM , ici dans sa version ZTOTCM

ou les resultats sont divises par 100 (pour les longueurs) et 10000 (pour les surfaces)

 

Je l'utilise tres souvent sur dessins de batiments en CM !

 

Le Decapode

 

 


;;; 1st Routine for AUTOCAD R13, R14, R15 (OUPS ! 2000) - 04/2000
;;; 
;;; ZTOTM ou ZTOTCM.LSP - Version 1.0 by H LORIOT (C) 2000
;;; ZTOTCM.LSP et Fonction ZTOTCM (Because DWG en CENTIMETRE)
;;;
;;; 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 B. - Version 1.1 en Lisp
;;; +SPLINE, +ELLIPSE
;;;
;;; Modification par Gilles C.  - 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 :  ZTOTCM

(defun c:ztotcm (/ ss cnt area len)
(vl-load-com)
;; (setq cnt 0 area 0.0 len 0.0)
  (setq cnt 0 area 0.0 len 0.0 cm_area 0.0 cm_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)
)
)
)
)
)

;; 2 NOUVELLES LIGNES (Because DWG en CENTIMETRE)
(setq cm_area (/ area 10000.0))
(setq cm_len  (/ len  100.0))

(princ "\nATTENTION: on suppose le DWG en CENTIMETRE et on donne un resultat en METRE")
(princ "\n     DONC: le perimetre est divise par 100.0 et la surface par 10000.0 ")

(princ "\nZTOTCM v2.1 - Cercle, Polyligne, Ellipse, Spline, Region, MPOLYGON")
(princ (strcat "\n""TOTAUX -Surface: "(rtos cm_area)
" -Périmètre: "(rtos cm_len)" -Objets: "(itoa cnt)
)
)
(vla-delete ss)
)
(prompt "\n*** Rien de Valable ")
)
(princ)
) 
(princ "\n==> ZTOTCM (Version 2.1) ")
(princ) 

 

 

Autodesk Expert Elite Team

Posté(e)

Merci beaucoup pour vos réponses !

 

@ACAD666 :

Je souhaite obtenir la surface de tas de polylignes, donc une solution qui passe par la création de blocs me parait trop lourde...

 

@Tramber :

Je saurais mettre en place cette expression DIESEL dans AutoCad 2004 les doigts dans le nez. Mais, étant novice en AutoCAD 2010, je suis à la peine. Par ailleurs, un lisp aurait l'intérêt à mes yeux de pouvoir être répété un grand nombre de fois sans avoir à faire d'allers-retours à la souris entre le bouton à créer et chacune des polylignes...

 

@lecrabe :

tout ça m'a l'air bel et bon, mais mon AutoCad 2010 n'aime pas. Il me répond :

 

; error: no function definition: VLAX-GET-ACAD-OBJECT

 

 

A tous les 3 (et aux autres) : ce qui correspondrait le mieux à mon usage d'AutoCad serait un lisp qui récupère la valeur de la surface d'une polyligne, la divise par 10000, puis l'affiche dans la ligne de commande avec le suffixe "m²".

 

D'avance, merci !

Posté(e)

Salut,

 

Regarde TotalArea sur cette page.

 

C'est effectivement plutôt 'du lourd' avec :

- 4 commandes et 2 variables système

- possibilité de d'ajouter les aires de plusieurs objets ;

- utilisation d'un bloc/attribut (exemple fourni) ;

- mise à jour automatique en cas de modification (réacteurs) ;

- possibilité d'utiliser un facteur de conversion entre l'unité de dessin et l'unité affichée (variable AREACONV) ;

- un fichier d'aide

 

Mais c'est tout fait et offert...

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

 

Hello

 

Je n'ai pas un AutoCAD 2010 sous la main !

 

Qq'un peut il verifier si le Lisp (ZTOTCM.lsp) fourni fonctionne ou pas !

 

Merci d'avance, Le Decapode

 

 

 

Autodesk Expert Elite Team

Posté(e)
Qq'un peut il verifier si le Lisp (ZTOTCM.lsp) fourni fonctionne ou pas !

 

Ca a l'air.

 

gloub

Pour répondre à ta remarque me concernant, il y a un * qui répète indéfiniment la routine. Mais il faudrait l'adapter si tu ne veux pas déposer de texte et affichier seulement une fois la valeur. Ceci dit je suis d'accord qu'un lisp sera plus adapté.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

@ gile

 

Merci pour ta réponse. Ça a l'air super.

 

Malheureusement, j'ai trop peu de temps, et mes dessins sont trop avancés pour pouvoir les adapter maintenant à l'organisation qu'impose ton lisp (en revanche, je l'appliquerai volontiers si on gagne le concours).

 

Posté(e)

bonjour gloub

j'ai un lisp que j'utilise pour faire mes métré

je souhaite te le donner voici mon adresse mail (martial.nouzille@icade-arcoba.fr)

tu n'auras plus qua l'adapter à tes besoin

@+

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é