Aller au contenu

Surfaces cumulées


(gile)

Messages recommandés

Salut,

 

Suite à ce sujet, j'ai essayé de finaliser la demande avec une routine aboutie (enfin, j'espère).

 

Le but est d'afficher dans un attribut de bloc (donc extractible) la somme des aires de plusieurs polylignes qui sont liées au bloc.

 

Je laisse le soin à chacun de créer son bloc à sa guise, il doit seulement respecter certains impératifs :

- être nommé "TotalArea"

- contenir au moins un attribut (étiquette "AREA") qui sera automatiquement renseigné avec la somme des aires des objets (polylignes Mpolygons) qui lui sont liés.

 

Si le bloc contient un second attribut (étiquette "NOBJ") celui ci sera aussi automatiquement renseigné avec le nombre d'objets liés.

 

Le LISP définit quatre commandes et une "variable système" :

- TOTALAREA pour insérer un bloc "TotalArea" après avoir sélectionné les polylignes auxquelles il sera lié ;

- AREACONV agit comme une variable système et gère le facteur de conversion entre l'unité du dessin et l'unité affichée dans l'attribut (ex : 10000 pour cm² en m²)

- AREAEDIT pour lier ou délier des polylignes à un bloc "TotalArea" ;

- AREASHOW pour mettre en surbrillance les polylignes liées à un bloc en passant le curseur sur le bloc ;

- AREAUPD pour mettre à jour le bloc "TotalArea" sélectionné si des polylignes qui lui sont liées ont été modifiées ou supprimées.

Une régénération provoque la mise à jour de tous les blocs "TotalArea".

Ceci étant du à un réacteur, il faut que les lignes de code (à la fin du LISP) qui définissent ce réacteur (ou l'intégralité du code) soient chargées automatiquement à chaque démarrage (valise de la BD APPLOAD, fichiers *.mnl ou acaddoc.lsp)

 

Par défaut, deux décimales sont affichées ainsi que les zéros de fin

Pour modifier ces paramètres, il faut modifier les codes de TOTALAREA et de

TotalAreaUpd (voir commentaires dans ces codes)

 

EDIT 1 : mise à jour automatique similaire à celle des champs dynamiques en fonction de la valeur de FIELDEVAL

 

EDIT 2 : réparé un dysfonctionnement dans le réacteur avec la commande ETRANSMIT.

 

EDIT 3 : création et attribution automatique d'un calque "Total_surface".

 

EDIT 4 : réparé un dysfonctionnement avec les blocs n'ayant plus aucune polyligne liée.

 

EDIT 5 : les entités MPOLYGON sont traitées

 

EDIT 6 : mise à jour automatique de tous les blocs avec les versions

 

EDIT 7 : Ajout de AREABOX, un boite de dialogue de lancement des commandes.

 

EDIT 8 : version 2.01 Deux attributs dynamiques : étiquette "AREA" pour la somme des aires des objets et "NOBJ pour le nombre d'objets.

 

EDIT 9 : version 2.02 Les régions et les hachures sont aussi traitées.

 

EDIT 10 : réparé un oubli d'initialisation de areaconv dans areabox.

 

TotalArea.zip version 2.04 le fichier contient le LISP , un exemple de bloc et un fichier texte explicatif.

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

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

je pensais que ces commandes étaient performantes, mais je n 'avais pas eu l 'occasion de m 'en servir.

J 'ai testé celle-ci ce matin, effectivement c'est efficace !!!!!

 

Et j 'imagine que les cas d 'utilisations probables sont nombreux....

Heureux les bénéficiaires de telles possibilités.

 

Super!!!!!!

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Voila une routine aboutie!!

Je dirais chapeau bas Monsieur!

 

Quand je pense à mes galères avec les extractions de données qui marchent une fois sur deux, la je dois dire, que grace à toi, je vais oublier tout ça et ne prendre que ta routine.

 

Si tu savais à quel point cela va me faciliter la tache, je pense que tu es loin de l'imaginer......

 

Depuis le temps que je cherche une routine de ce style, voila tu l'as fait........

 

Et de plus tu as ajouter des petits programmes sympa (AREASHOW........)

 

Et tu as eu une super idée avec AREACONV!!

 

Et tout cela avec des commentaires sur chaque routine!!!

 

Merci encore Gile

 

Mais comme je l'ai déja dit, je suis sur de ne pas être le seul à qui cela va faire plaisir!!

 

Tiens encore une chose

Extractions de données de surfaces dans un tableau AutoCAD sous 2008, ok

Passez votre fichier à une personne qui a 2006, il bosse dessus et enregistre, ok

Ouvrez le sur 2008, adieu extractions de données...................

 

Grace à TOTALAREA finit les galères.............

Bon j'arrête on se croirait dans un téléachat..................

 

Bon Week End

 

 

"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

Lien vers le commentaire
Partager sur d’autres sites

Salut Gile

 

Encore une petite chose qui pourrait etre sympa.......

-Créer un calque Total Surface automatiquement et mettre le bloc totalarea sur ce calque!

 

 

-Comme le pline block

 

(and
(vl-catch-all-error-p
(vl-catch-all-apply
'vla-item
(list (vla-get-Layers AcDoc)
"TEXTE-SURFACES"
)
)
)
(vla-add (vla-get-Layers AcDoc)
"TEXTE-SURFACES"
)
)
(vla-put-Layer ref "TEXTE-SURFACES")

 

Le problème c'est que je ne sais ou placer ce code!!!!!!!!!!!

"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

Lien vers le commentaire
Partager sur d’autres sites

Merci Gile!!

 

lili

Peut être rudement pratique aussi !

 

Pas tout compris! :casstet:

"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

Lien vers le commentaire
Partager sur d’autres sites

Oui

Un grand merci à Gile et à ce forum!! (merci à vous)

Pourvu que ça dure!!!!!!

 

Ok lili

 

Bonne journée................................................

"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

Lien vers le commentaire
Partager sur d’autres sites

J'ai un petit soucis!!!!!!!

 

Je fais le total de deux polylignes

J'en efface une et je regen, ça marche (mais à jour)

J'efface la deuxième, je regen, et la une fois sur deux il me met zéro en surface ou alors il garde la dernière surface!!

 

Bizarre :casstet:

"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

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Salut,

 

Je n'avais pas vu passer ton message.

J'ai effectivement trouvé un dysfonctionnement quand il n'y a aucune polyligne dans le dessin.

J'ai réparé ce dysfonctionnement ainsi que la possibilité de traiter un bloc qui n'aurait plus aucune polyligne liée (pour pouvoir lui en lier de nouvelles).

J'espère que la nouvelle version (1.06) fonctionne désormais correctement.

Merci pour ces retours.

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

Lien vers le commentaire
Partager sur d’autres sites

 

Hello Gilles

 

Attention: je débarque aves mes idées "saugrenues" !!! :P

 

1) Même routine "ou presque" pour traiter seulement les longueurs/perimètres

et non pas les surfaces ! bloc = TotalPerimeter

 

On peut être intéressé par les longueurs de polyligne sreprésentant du réseau (humide, energie, etc) par exemple ...

 

2) SVP serait-il possible d'inclure les fameux MPOLYGONs de MAP (ou CIVIL)

dans cette fabuleuse routine ?

 

Vue de loin, sachant que les fonctions (vla-get-area) & (vla-get-perimeter) traitent les MPOLYGONs, je pense que cela est possible "sans trop de boulot" !?

 

Le Decapode

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

 

Hello Gilles

 

Je viens de faire un test simple de TOTALAREA "dernier cri" avec MAP R6

(basé sur AutoCAD 2002) :

- 5 polylignes closes de Parcelles + 1 MPolygon

- totalarea sur les 6 objets : resultat dans le bloc totalarea OK

- etirer qq poignees de polylignes et/ou MPolygon

- regen

- bloc totalarea mis a jour correctement

 

AREAEDIT testé et OK

 

AREASHOW testé et OK

 

Verifications réalisées avec la routine "ZTOTM.lsp

 

Donc on peut supposer que cela va fonctionner sur tout AutoCAD ou MAP ou CIVIL

versions 2002 / 2004

 

Le Decapode

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

 

Hello Gilles

 

Je suggère une petite amélioration sur tes 2 excellentes routines TotalArea & TotalPerimeter ...

 

Si le bloc/symbole Totalxxxxx a au moins 2 attributs, alors utilisez le 2eme attribut pour indiquer le nbr d'éléments liés par ton réacteur à ce bloc de surface ou perimétre ! :P

 

D'ailleurs, ces 2 attributs peuvent être soit visibles, soit invisibles, donc on ne verra apparaître que ce qui nous intéresse :)

 

Le Decapode (et ses idées "saugrenues")

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Bjr à tous,

 

Le simple fait de relancer Areabox après une modif de surface, un update,

met à jour automatiquement l'aire de l'objet ... Le bouton AreaUpd n'a donc pas d'utilité dans ce cas ! Voir s'il faut rectifier pour une mise à jour "voulue" où laisser comme celà en automatique ...

Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

Je pense qu'il est intéressant de savoir si le bloc Totalxxxxxx est lié à qq objets seulement

ou bien à 10 000 Polylignes/MPolygons de parcelles par exemple !

 

Sinon pour moi, la routine est excellente telle quelle !! :)

 

Le Decapode "stoïque sur sa position"

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Bjr à tous,

 

Le simple fait de relancer Areabox après une modif de surface, un update,

met à jour automatiquement l'aire de l'objet ... Le bouton AreaUpd n'a donc pas d'utilité dans ce cas ! Voir s'il faut rectifier pour une mise à jour "voulue" où laisser comme celà en automatique ...

 

Areabox ne fait qu'ouvrir la BD et lancer la commande sélectionnée.

Les mise à jour se font :

- soit pour l'ensemble des blocs, de la même façon que pour les champs : à la régénération, à l'enregistrement, à l'ouverture, au traçage ou au lancement de ETRANSMIT en fonction du paramétrage de fIELDEVAL ;

- soit avec Areupd pour mettre à jour uniquement le bloc sélectionné (comme METTREAJOURCHAMP) ce qui devrait accélérer la procédure sur des fichiers un peu lourds contenant plusieurs blocs TotalArea.

 

lecrabe,

 

Je verrais ce que je peux faire pour ce second attribut ce soir...

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

Lien vers le commentaire
Partager sur d’autres sites

 

Hello Gilles

 

Merci il n'y a aucune urgence pour Totalxxxxx ! :)

 

Encore Merci pour ARCSEG qui fonctionne bien et qui permet meme de garder

les fameux Object Datas de MAP (ou CIVIL) car :

 

- Les polylignes sont modifiees en fait, donc pas de souci !

 

- Pours les Arcs et Cercles, il suffit de les transformer en PolyArcs AVANT par les outils de nettoyage de dessins de MAP, ainsi ils deviennet automatiquement des PolyArcs, donc on lance ARC2SEG APRES ... :D :cool:

 

Le Decapode "heureux"

 

PS: J'ai honte, je n'ai pas encore testé TotalPerimeter alors que c moi qui ... :P

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

J'ai modifié le LISP pour ajouter un second "attribut dynamique".

Pour éviter toute confusion, les attributs sont identifiés par leurs étiquettes :

AREA pour la somme des aires

NOBJ pour le nombre d'objets (optionel)

 

PS: J'ai honte, je n'ai pas encore testé TotalPerimeter alors que c moi qui ...

 

C'est un copier/coller à peine modifié de celui-ci

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

Lien vers le commentaire
Partager sur d’autres sites

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é