Aller au contenu

Calcul d\'aire par sélection (suite)


jalna

Messages recommandés

:D Un grand merci à Tramber pour m'avoir aidé sur ma demande!!

Mais j'ai encore une chose à demander!!

Voila le lisp (MNT-Tramber)

 

(defun c:stot ( / )

(setq *delobj*(getvar "DELOBJ"))

(setvar "DELOBJ" 0)

(prompt "\nChoisir les polylignes ....")

(setq gr (ssget '((0 . "LWPOLYLINE"))) )

(setq tot 0 cont 0)

(setq ent1(vlax-ename->vla-object(ssname gr cont)))

(if(=(vla-get-closed ent1):vlax-true)

(progn

(command "_region" (ssname gr cont)"")

(setq ent1(entlast))

(if(=(vla-get-ObjectName(vlax-ename->vla-object(entlast)))"AcDbRegion")

(progn

(repeat(1- (sslength gr))

(setq cont (+ 1 cont))

(setq ent2(vlax-ename->vla-object(ssname gr cont)))

(if(=(vla-get-closed ent2):vlax-true)

(progn

(command "_region" (ssname gr cont)"")

(if(=(vla-get-ObjectName(vlax-ename->vla-object(entlast)))"AcDbRegion") (progn

(command "_union" ent1 (entlast)"")

)))))))))

(if(=(vla-get-ObjectName(vlax-ename->vla-object ent1))"AcDbRegion")

(progn

(alert(strcat "\nSurface totale: "(VL-PRINC-TO-STRING(vla-get-Area(vlax-ename->vla-object ent1)))))

(command "_Erase" ent1 ""))

(princ"\Pas de résultat")

)

(setvar "DELOBJ" *delobj*)

(princ)

)

 

Cela fonctionne tres bien

Mais

J'aimerais que le programme me divise le résultat (enfin je ne suis pas sur que ce soit cela!!)

Je m'explique

Mon unitée est le cm

Imaginons un rectangle de 1m par 1m

Moi je déssine 100/100 (unitée cm)

Dons le résultat de surface va me donner 100/100 = 10000

Alors que moi j'aimerais qu'il me donne 1.00 (1m/1m=1.00m²) je sais c'est tres dur en calcul!!))

Donc si cela était possible j'aimerais bien avoir le résultat sous cette forme dans la boite de dialogue du lisp.

 

Merci de votre aide est peut etre que vous avez d'autres idées!!!

 

:P 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

Remplace :

 

(alert(strcat "\nSurface totale: "(VL-PRINC-TO-STRING(vla-get-Area(vlax-ename->vla-object ent1)))))

 

par :

 

(alert(strcat "\nSurface totale: "(VL-PRINC-TO-STRING(/(vla-get-Area(vlax-ename->vla-object ent1))10000.0))))

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

:P Merci Tramber!!

Et pour arrondir à 2chiffres apres la virgule! (désolé mais jsuis pas bon du tout)

 

Merci et @+

"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,

 

Je m'immisce :

 

Et pour arrondir à 2chiffres apres la virgule!

 

Remplace :

 

(alert(strcat "\nSurface totale: "(VL-PRINC-TO-STRING(/(vla-get-Area(vlax-ename->vla-object ent1))10000.0))))

 

par :

 

(alert(strcat "\nSurface totale: "(rtos(/(vla-get-Area(vlax-ename->vla-object ent1))10000.0)2 2)))

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

Lien vers le commentaire
Partager sur d’autres sites

Ok super!!

Merci à vous, mais je crois que je dois absolument me mettre au lisp!! (quand j'aurais trouvé le temps)

 

Bonne journée :mad: (chez moi ca caille et brouillard!!)

"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

Bon!!

J'ai encore une chose à vous demander

Le programme me correspond, mais j'ai encore une chose et la ca serait super méga cool!!!

 

Voila

 

Apres avoir le résultat de ma surface en m², j'aimerais pouvoir copier ce résultat et le coller sur un attribut de surface (j'imagine un bouton copier sur la boite de dialogue)

 

Voici le détail de mon bloc surface

 

Nom du bloc : SURFPIEC

Etiquette : 000

Invite : Surface de la pièce

 

Je suis sur que cela est réalisable non!!

:P Apres sur je vous laisse tranquille (enfin on sais jamais!!)

 

:) 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

Lien vers le commentaire
Partager sur d’autres sites

en rajoutant la commande insérer après le alert (ou à la place ?)

 

(command "_INSERT" "SURFPIEC" Pause "1" "1" "0" (rtos(/(vla-get-Area(vlax-ename->vla-object ent1))10000.0)2 2))

 

 

ou quelque chose comme ça.

 

Attention à la variable ATTREQ qui devrait être à 1.

Pour l'echelle du bloc, j'ai mis 1. On peut imaginer mettre une echelle en fonction de l'echelle de tracé.

 

Il faudrait aussi que le bloc se situe dans un répertoire référencé dans la liste des chemins de fichiers de support, sinon le lisp ne va pas le trouver.

 

Amicalement

 

Zebulon_

 

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Merci Zebulon pour ton aide!!

 

Mais il y a un problème car je cherche à remplacer un attribut qui est déja sur mon dessin!

Je ne cherche pas à l'inserer!!

 

:P Merci et bonne A-M

"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

Donc le bloc SURFPIEC est déjà inséré dans le fichier et il faut éditer son attribut "000" pour y coller le résultat du calcul ?

 

(defun c:stot ( / )
(setq *delobj*(getvar "DELOBJ"))
(setvar "DELOBJ" 0)
(prompt "\nChoisir les polylignes ....")
(setq gr (ssget '((0 . "LWPOLYLINE"))) )
(setq tot 0 cont 0)
(setq ent1(vlax-ename->vla-object(ssname gr cont)))
(if(=(vla-get-closed ent1):vlax-true)
(progn
(command "_region" (ssname gr cont)"")
(setq ent1(entlast))
(if(=(vla-get-ObjectName(vlax-ename->vla-object(entlast)))"AcDbRegion")
(progn
(repeat(1- (sslength gr))
(setq cont (+ 1 cont))
(setq ent2(vlax-ename->vla-object(ssname gr cont)))
(if(=(vla-get-closed ent2):vlax-true)
(progn
(command "_region" (ssname gr cont)"")
(if(=(vla-get-ObjectName(vlax-ename->vla-object(entlast)))"AcDbRegion") (progn
(command "_union" ent1 (entlast)"")
)))))))))
(if(=(vla-get-ObjectName(vlax-ename->vla-object ent1))"AcDbRegion")
(progn
(setq RESULT (rtos(/(vla-get-Area(vlax-ename->vla-object ent1))10000.0)2 2))
(command "_Erase" ent1 "")
(alert(strcat "\nSurface totale: " RESULT))
(prompt "\nSélectionner le bloc de destination : ")
(setq ss (ssget "_+.:e:s" '((0 . "INSERT") (2 . "SURFPIEC"))))
(if ss
 (progn
   (setq e (ssname ss 0))
   (setq a (entget e))
   (while (/= (cdr (assoc 0 a)) "SEQEND")
     (if (= (cdr (assoc 0 a)) "ATTRIB")
       (progn
         (setq NOMATT (cdr (assoc 2 a)))
         (cond
           ((= NOMATT "000")
             (setq a
               (subst (cons 1 RESULT)
                 (assoc 1 a)
                  a
               )
             )
             (entmod a)
             (command "_REGEN")
           )
         )
       )
     )
     (setq e (entnext e))
     (setq a (entget e))
   )
 )
)
)
(princ"\Pas de résultat")
)
(setvar "DELOBJ" *delobj*)
(princ)
) 

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Ou une Macro très simple....

 

^C^C-attedit;o;*;*;*; [surligneur] D[/surligneur];;V;R;_TON_NOUVEAU_TEXTE;;

 

D = dernier objet ou s' il faut le sélectionner mettre un \

 

Pas toujours besoin d'écrire des longues lignes de prog... ;)

 

Chrichri

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Lien vers le commentaire
Partager sur d’autres sites

Super Zebulon c'est exactement ca!!

Encore une toute petite chose (promis j'arrete apres!!)

Le cas ou j'ai une surface arrondie, j'aimerais avoir le zéro de fin!

ex:

10.1 j'aimerais 10.10

Et avoir aussi le m² derriere (si possible)

Bon sinon jsuis super content de vous!!

 

Merci à vous!!!

"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

(setvar "DIMZIN" 0) ; pour que le rtos ne sucre pas les zero

à rajouter tout au début

 

et

 

(setq RESULT (rtos(/(vla-get-Area(vlax-ename->vla-object ent1))10000.0)2 2))

 

à remplacer par

 

(setq RESULT (strcat (rtos(/(vla-get-Area(vlax-ename->vla-object ent1))10000.0)2 2) " m2"))

 

 

Amicalement

 

Zebulon_

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

:P Ok

Merci Zebulon, ca fonctionne à merveille!!

@+

"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

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é