jalna Posté(e) le 3 février 2006 Posté(e) le 3 février 2006 :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 bienMaisJ'aimerais que le programme me divise le résultat (enfin je ne suis pas sur que ce soit cela!!)Je m'expliqueMon unitée est le cmImaginons un rectangle de 1m par 1mMoi je déssine 100/100 (unitée cm)Dons le résultat de surface va me donner 100/100 = 10000Alors 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 DammeMon forum : http://plexus.forumactif.org/
Tramber Posté(e) le 3 février 2006 Posté(e) le 3 février 2006 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 ./__\. (.°=°.)
jalna Posté(e) le 3 février 2006 Auteur Posté(e) le 3 février 2006 :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 DammeMon forum : http://plexus.forumactif.org/
(gile) Posté(e) le 3 février 2006 Posté(e) le 3 février 2006 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
lecrabe Posté(e) le 3 février 2006 Posté(e) le 3 février 2006 Bonjour En Lisp je ferais un truc du genre: (RTOS VAR1 2 2) ---> 2 décimales(RTOS VAR1 2 0 ) --> 0 décimale Si VAR1 est la variable réelle avec N décimales. mais en VLA, je ne sais pas ... Le Decapode "dépité" Autodesk Expert Elite Team
jalna Posté(e) le 3 février 2006 Auteur Posté(e) le 3 février 2006 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 DammeMon forum : http://plexus.forumactif.org/
jalna Posté(e) le 3 février 2006 Auteur Posté(e) le 3 février 2006 Bon!!J'ai encore une chose à vous demanderLe 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 : SURFPIECEtiquette : 000Invite : 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 DammeMon forum : http://plexus.forumactif.org/
zebulon_ Posté(e) le 3 février 2006 Posté(e) le 3 février 2006 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)
jalna Posté(e) le 3 février 2006 Auteur Posté(e) le 3 février 2006 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 DammeMon forum : http://plexus.forumactif.org/
zebulon_ Posté(e) le 3 février 2006 Posté(e) le 3 février 2006 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)
rebcao Posté(e) le 3 février 2006 Posté(e) le 3 février 2006 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 @)
jalna Posté(e) le 3 février 2006 Auteur Posté(e) le 3 février 2006 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.10Et 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 DammeMon forum : http://plexus.forumactif.org/
zebulon_ Posté(e) le 3 février 2006 Posté(e) le 3 février 2006 (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)
jalna Posté(e) le 6 février 2006 Auteur Posté(e) le 6 février 2006 :P OkMerci 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 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