Hydro8 Posté(e) le 25 février 2021 Auteur Posté(e) le 25 février 2021 En effet petite erreur de ma part ^^"cette fois-ci j'ai testé et chat marche ! Code mis à jour sur le post#14 Malheureusement j'ai toujours une erreur. J'ai mis le fichier dwg en pièce jointe, peut-être une erreur avec nos textes ?Export2.zip
Hydro8 Posté(e) le 25 février 2021 Auteur Posté(e) le 25 février 2021 Bon j'ai du mal me débrouiller, cela fonctionne bien ! Merci beaucoup pour ton travail ! Concernant le MTEXT, la première ligne a bien sûr un formatage spécial La ligne apparaît : {\fTahoma|b1|i0|c0|p34;\H3x;7f1\fTahoma|b0|i0|c0|p34; Vu que c'est tout le temps le même formatage, on peut imaginer supprimer "{\fTahoma|" et "|i0|c0|p34;\H3x;7f1\fTahoma|b0|i0|c0|p34;" ou cela ne fonctionnerait pas ?
lecrabe Posté(e) le 25 février 2021 Posté(e) le 25 février 2021 Hello SVP ton DWG et ton Lisp actuel en ZIP !? Merci, La Sante, Bye, lecrabe "fatigue" Autodesk Expert Elite Team
Luna Posté(e) le 25 février 2021 Posté(e) le 25 février 2021 C'est un peu trop incertain pour être honnête...il suffit d'une différence pour que cela ne fonctionne pas.. Est-ce une obligation que le texte soit en gras ?De plus la taille de la police est forcée, y a-t-il une raison ? Selon le formatage il est possible de démarrer au ";" mais cela ne fonctionne que dans certains cas particuliers, ce qui n'est pas le tien. On peut éventuellement ajouter (setq str (vl-string-left-trim "{\fTahoma|b1|i0|c0|p34;\H3x;7f1\fTahoma|b0|i0|c0|p34;" str)) et ajouter le "}" pour la recherche du "\\P" au besoin. Bisous,Luna
Hydro8 Posté(e) le 25 février 2021 Auteur Posté(e) le 25 février 2021 Hello SVP ton DWG et ton Lisp actuel en ZIP !? Merci, La Sante, Bye, lecrabe "fatigue" J'envoi ça demain :) C'est un peu trop incertain pour être honnête...il suffit d'une différence pour que cela ne fonctionne pas..Est-ce une obligation que le texte soit en gras ?De plus la taille de la police est forcée, y a-t-il une raison ?Selon le formatage il est possible de démarrer au ";" mais cela ne fonctionne que dans certains cas particuliers, ce qui n'est pas le tien.On peut éventuellement ajouter (setq str (vl-string-left-trim "{\fTahoma|b1|i0|c0|p34;\H3x;7f1\fTahoma|b0|i0|c0|p34;" str)) et ajouter le "}" pour la recherche du "\\P" au besoin.Bisous,Luna A quelle endroit devrait-on modifier la variable str ? J'ai essayé différent endroit notamment quand on recherche \P mais cela ne change rien ou provoque une erreur.
Luna Posté(e) le 25 février 2021 Posté(e) le 25 février 2021 Le soucis vient du fait que SI le programme supprime le formatage (si formatage il y a plus exactement), alors il faut s'arrêter à "}\\P" et non "\\P" uniquement. Bref la gestion des formatages en MTEXT peut s'avérer délicat en fonction du dessin (et du dessinateur/dessinatrice !) donc je ferais une modification à partir de ton .dwg, mais sera du coup coincé dans un fonctionnement basé sur vos pratiques. Donc si vous changez vos pratiques (même ponctuellement) le programme ne sera plus fonctionnel.
lecrabe Posté(e) le 25 février 2021 Posté(e) le 25 février 2021 Hello +1 avec Luna ! ... Ca me parait tres RISQUE !! Et si tu copiais tes MTEXTs sur un autre calque ! Puis decomposer / exploser ...Tu en as beaucoup ?? La Sante, Bye, lecrabe "fatigue" Autodesk Expert Elite Team
GEGEMATIC Posté(e) le 25 février 2021 Posté(e) le 25 février 2021 Salut Luna,Pour les formatages de MText , connais-tu stripmtext ?site originalma version de stripmtextDans ma version j'ai juste fait une modif pour extraire en Lisp la chaine sans le formatage:usage type: (stripformat (vla-get-TextString (pw_to_object etxt) ) "*" ) a+gégé ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
lecrabe Posté(e) le 25 février 2021 Posté(e) le 25 février 2021 Hello J ai meme un StripMText v5.0D ! ... Voir ZIP joint ... C une routine INDISPENSABLE pour "zigouiller" TOUT le Formatage des MTexts ! La Sante, Bye, lecrabe "fatigue"StripMtext__v5-0d.zip Autodesk Expert Elite Team
Luna Posté(e) le 25 février 2021 Posté(e) le 25 février 2021 Coucou GEGEMATIC, non je ne connaissais absolument pas et cela à l'air vraiment intéressant pour le coup ! Je m'étais déjà penchée sur l'écriture du formatage mais par manque de documentation sur le sujet (et de temps surtout) j'ai laissé cela de côté...Cela paraît être une excellente solution pour convertir les textes formatés avant l'exécution de la commande SURFAREA pour éviter tout problème avec la version originale et si je comprends bien, ta version permet d'extraire le texte réel sans modifier l'objet "MTEXT" ? Autrement il est toujours possible de placer une Marque avec la commande ANNULER, lancer la commande STRIPMTEXT pour purger les textes, lancer SURFAREA et Retourner à la marque une fois le fichier .csv édité :3J'utilise beaucoup cette fonctionnalité, chat dépanne bien souvent (et économise des crampes aux doigts ^^) Merci Gégé !
GEGEMATIC Posté(e) le 25 février 2021 Posté(e) le 25 février 2021 J ai meme un StripMText v5.0D ! ... Voir ZIP joint ...Incroyable ce vieux Crabe, toujours un truc dans sa poche !Franchement je ne pensais pas qu'il y avait une nouvelle version.. non je ne connaissais absolument pas et cela à l'air vraiment intéressant pour le coup ! Je m'étais déjà penchée sur l'écriture du formatage mais par manque de documentation sur le sujet (et de temps surtout) j'ai laissé cela de côté...Cela paraît être une excellente solution pour convertir les textes formatés avant l'exécution de la commande SURFAREA pour éviter tout problème avec la version originale et si je comprends bien, ta version permet d'extraire le texte réel sans modifier l'objet "MTEXT" ?J'avais commencé a réfléchir à mon propre "stripmtext", et franchement, devant l’ampleur de la tache, même en utilisant les expression régulières, j'avais renoncé.Puis j'ai découvert cet excellent Lisp de Joe Burcke,Il est bien codé avec les expression régulières, et pour moi il a toujours marché(or (vl-bb-ref '*REX*) (vl-bb-set '*REX* (vlax-create-object "VBScript.RegExp")) ) la seule chose que j'ai fait, c'est bien d'en faire une commande Lisp qui extrait le texte sans toucher à l'original, car c'était mon besoin.a+, gégé ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
Hydro8 Posté(e) le 26 février 2021 Auteur Posté(e) le 26 février 2021 Bonjour, Voici le zip avec les fichiers actuels. J'ai mis deux MTEXT qu'on utilise, le format reste le même, seul le numéro change et les XXX sont remplacés. Merci GEGEMATIC pour cette fonction ! Il faut que je prenne le temps de l'essayer, en gros je récupère le texte d'un MTEXT sans tout le formatage ? Très intéressant !Lisp.zip
bonuscad Posté(e) le 26 février 2021 Posté(e) le 26 février 2021 Bien que je pense que Luna a bien avancé sur ta demande, je vais faire part de 2 routines que j'avais publier sur un forum US, bien que pas adapté à tes désirs ça peut donner des idées.... La première pour fixer les données et la deuxième pour l'export vers Excel. (vl-load-com) (defun c:ROOM_DATA ( / AcDoc Space old_lay sel ent vla_obj) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (cond ((null (tblsearch "LAYER" "AREA_ROOM")) (vlax-put (vla-add (vla-get-layers AcDoc) "AREA_ROOM") 'color 3) ) ) (setq old_lay (getvar "CLAYER")) (setvar "CLAYER" "AREA_ROOM") (setq pt (getpoint "\nFirst point of polyline or enter for select one: ")) (if pt (command "_.pline" pt (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) (while (not (setq sel (ssget "_+.:E:S" '((0 . "*POLYLINE") (-4 . "<NOT") (-4 . "&") (70 . 120) (-4 . "NOT>")))))) ) (cond (sel (setq ent (ssname sel 0) vla_obj (vlax-ename->vla-object ent) ) (vlax-put-property vla_obj "Layer" "AREA_ROOM") ) (T (setq ent (entlast) vla_obj (vlax-ename->vla-object ent))) ) (vlax-ldata-put vla_obj "ROOM_NAME" (getstring T "\nName of room : ")) (vlax-ldata-put vla_obj "ROOM_AREA" (vlax-get-property vla_obj "Area")) (vlax-ldata-put vla_obj "ROOM_PERIMETER" (vlax-get-property vla_obj "Length")) (vlax-ldata-put vla_obj "ROOM_FLOOR" (getstring T "\nFloor of room : ")) (setvar "CLAYER" old_lay) (princ "\nPolyline have this data:") (print (vlax-ldata-list vla_obj)) (prin1) ) (defun c:ROOM_DATA_OUT ( / sel output doc xls wks column nb ename k_list count) (setq sel (ssget "_X" '((0 . "*POLYLINE") (8 . "AREA_ROOM") (-4 . "<NOT") (-4 . "&") (70 . 120) (-4 . "NOT>"))) file_output (strcat (getvar "DWGPREFIX") (substr (getvar "DWGNAME") 1 (- (strlen (getvar "DWGNAME")) 4)) ".xlsm") ) (cond ((and sel file_output) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (setq xls (vlax-get-or-create-object "Excel.Application")) (vlax-invoke (vlax-get xls 'workbooks) 'Add) (vlax-put xls 'Visible :vlax-true) (setq wks (vlax-get xls 'ActiveSheet) column 65 count 1 ) (vlax-put (vlax-get-property wks 'range (strcat "A1:E" (itoa (sslength sel)))) 'Cells "") (foreach el '("HANDLE" "ROOM_NAME" "ROOM_FLOOR" "ROOM_PERIMETER" "ROOM_AREA") (vlax-put (vlax-get-property wks 'range (strcat (chr column) (itoa count))) 'value el) (setq column (1+ column)) ) (repeat (setq nb (sslength sel)) (setq ename (ssname sel (setq nb (1- nb))) k_list (list (cons "HANDLE" (strcat "'" (cdr (assoc 5 (entget ename)))))) ) (foreach el '("ROOM_NAME" "ROOM_FLOOR" "ROOM_PERIMETER" "ROOM_AREA") (setq k_list (cons (cons el (vlax-ldata-get ename el)) k_list)) ) (setq count (1+ count) column 65 ) (foreach el (reverse (mapcar 'cdr k_list)) (vlax-put (vlax-get-property wks 'range (strcat (chr column) (itoa count))) 'value el) (setq column (1+ column) ) ) (setq k_list nil) ) (mapcar 'vlax-release-object (list wks xls)) (gc) (vla-endundomark doc) ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Luna Posté(e) le 26 février 2021 Posté(e) le 26 février 2021 Coucou, Petite remarque : dans ton .dwg tu sembles exclure des poteaux des surfaces en faisant un décroché de ton contour et ainsi tu as plusieurs fois le même sommet dans ta polyligne (à l'aller et au retour). Cette configuration génère bien souvent des erreurs pour les sélections d'objets sous forme de fenêtres ou de captures. La fonction (ssget) est alors incapable de déterminer une emprise et se résulte par la sélection d'aucun objet. Ainsi tu as tes terrasses (ou jardins) qui sont exportés en surface mais sans aucun nom associé à la surface. Donc rien de grave étant donné que la surface est tout de même exportée mais les noms, eux, ne pourront pas être exportés. Il existe la solution au pire de ne séparer les sommets d'aller des sommets du retour par un espace d'1mm voire moins pour ne pas perturber AutoCAD :3 Bon du coup j'ai ajouté la fabuleuse fonction proposée par GEGEMATIC (et je sens que je vais y passer des heures pour la décortiquer de mon côté, merci Gégé !) au fichier de SurfArea que je te transmet ci-joint. J'ai ajouté l'impression des résultats dans l'historique de commande afin de contrôler directement dans AutoCAD les valeurs associées au besoin (temps d'exécution identique). J'ai testé sur ton .dwg et aucun problème apparent (mise à part l'exclusion des poteaux qui empêche l'export du nom des pièces), dis-moi si cette version te convient bien :3 Bisous,LunaSurfArea v1.1.0 26-02-2021 (Luna).lsp
Hydro8 Posté(e) le 26 février 2021 Auteur Posté(e) le 26 février 2021 Bien que je pense que Luna a bien avancé sur ta demande, je vais faire part de 2 routines que j'avais publier sur un forum US, bien que pas adapté à tes désirs ça peut donner des idées.... Merci pour ces Lisps, ils vont me permettre d'en apprendre un peu plus :D
Hydro8 Posté(e) le 26 février 2021 Auteur Posté(e) le 26 février 2021 Coucou, Petite remarque : dans ton .dwg tu sembles exclure des poteaux des surfaces en faisant un décroché de ton contour et ainsi tu as plusieurs fois le même sommet dans ta polyligne (à l'aller et au retour). Cette configuration génère bien souvent des erreurs pour les sélections d'objets sous forme de fenêtres ou de captures. La fonction (ssget) est alors incapable de déterminer une emprise et se résulte par la sélection d'aucun objet. Ainsi tu as tes terrasses (ou jardins) qui sont exportés en surface mais sans aucun nom associé à la surface. Donc rien de grave étant donné que la surface est tout de même exportée mais les noms, eux, ne pourront pas être exportés. Il existe la solution au pire de ne séparer les sommets d'aller des sommets du retour par un espace d'1mm voire moins pour ne pas perturber AutoCAD :3 Bon du coup j'ai ajouté la fabuleuse fonction proposée par GEGEMATIC (et je sens que je vais y passer des heures pour la décortiquer de mon côté, merci Gégé !) au fichier de SurfArea que je te transmet ci-joint. J'ai ajouté l'impression des résultats dans l'historique de commande afin de contrôler directement dans AutoCAD les valeurs associées au besoin (temps d'exécution identique). J'ai testé sur ton .dwg et aucun problème apparent (mise à part l'exclusion des poteaux qui empêche l'export du nom des pièces), dis-moi si cette version te convient bien :3 Bisous,Luna Alors là c'est super ! Pour le problème des poteaux, j'ai bien compris le truc, je vais voir comment on peut faire facilement de notre côté.Pour les MTEXT, c'est top on va pouvoir l'utiliser dans plusieurs domaines :) Une dernière chose, à quel endroit gère-t-on l'arrondi de la surface ?Il faudrait que je rajoute une colonne "Surface arrondie" avant la colonne "Surface" avec les surfaces au décimètre. Merci beaucoup luna ! Ca va être très utile :D :D
GEGEMATIC Posté(e) le 26 février 2021 Posté(e) le 26 février 2021 Salut Luna,bien content que ça t'ouvre des perspectives, et tu verra que les expressions régulières sont un outil indispensable dès qu'on veut avoir des traitements un peu "intelligents" des entrées utilisateurs ou des données.Bon du coup j'ai ajouté la fabuleuse fonction proposée par GEGEMATIC la vie est ainsi faite que, pour une fois qu'un Lisp que je propose crée autant d’enthousiasme, et ben il est pas de moi ! mais je me fais pas de soucis, la relève est là !a+gégé ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
GEGEMATIC Posté(e) le 26 février 2021 Posté(e) le 26 février 2021 Un peu hors sujet, mais très utile lorsque regex n'est pas suffisant:les fonction de similarité de texte par Giles: ;;************************************************************************ ;;§/STR/définie le nombre minimal de caractères qu'il faut remplacer, insérer ou modifier pour transformer la chaîne $str1 en $str2/ $str1 $str2 ;;La complexité de l'algorithme est en O(m*n), où n et m sont les tailles respectives de $str1 et $str2 : ;;c'est plutôt bien, en comparaison de similar_text(), qui est en O(max(n,m)**3), mais cela reste très coûteux. ;;http://cadxp.com/topic/46142-utiliser-une-fonction-php-avec-lisp/page__gopid__268839#entry268839 ;;(C) Giles Chanteau ;;(LevenshteinDistance (strcase "str1") (strcase "Str2"))-> 1 (defun LevenshteinDistance (str1 str2 / lst1 lst2 len1 len2 matrix i j cost) (vl-load-com) (setq lst1 (vl-string->list str1) len1 (length lst1) lst2 (vl-string->list str2) len2 (length lst2) ) (cond ((zerop len1) len2) ((zerop len2) len1) ) (setq matrix (vlax-make-safearray vlax-vbInteger (cons 0 len1) (cons 0 len2))) (setq i 0) (repeat (1+ len1) (vlax-safearray-put-element matrix i 0 i) (setq i (1+ i)) ) (setq j 0) (repeat (1+ len2) (vlax-safearray-put-element matrix 0 j j) (setq j (1+ j)) ) (setq i 1) (repeat len1 (setq j 1) (repeat len2 (setq cost (if (= (nth (1- i) lst1) (nth (1- j) lst2)) 0 1 ) ) (vlax-safearray-put-element matrix i j (min (1+ (vlax-safearray-get-element matrix (1- i) j)) (1+ (vlax-safearray-get-element matrix i (1- j))) (+ (vlax-safearray-get-element matrix (1- i) (1- j)) cost) ) ) (setq j (1+ j)) ) (setq i (1+ i)) ) (vlax-safearray-get-element matrix len1 len2) ) ;;************************************************************************ ;;§/STR/donne le pourcentage de similarité entre 2 chaines de texte/str1 str2 ;;http://cadxp.com/topic/46142-utiliser-une-fonction-php-avec-lisp/page__gopid__268839#entry268839 ;;(C) Giles Chanteau ;;(Similarity (strcase "str1") (strcase "Str2"))-> 0.75 (defun Similarity (str1 str2) (- 1. (/ (float (LevenshteinDistance str1 str2)) (max (strlen str1) (strlen str2)))) ) ;;************************************************************************ ;;§/STR/donne le pourcentage de similarité entre 2 noms de fichier, sans prendre en compte ni le chemin ni l'extension/str1 str2 ;;http://cadxp.com/topic/46142-utiliser-une-fonction-php-avec-lisp/page__gopid__268839#entry268839 ;;(C) Giles Chanteau ;;(SimilarityFile (strcase "str1.pdf") (strcase "Str2.dwg"))-> 0.75 (defun SimilarityFile (str1 str2) (setq str1 (vl-filename-base str1) str2 (vl-filename-base str2) ) (- 1. (/ (float (LevenshteinDistance str1 str2)) (max (strlen str1) (strlen str2)))) ) ;;************************************************************************ ;;§/STR/donne le pourcentage de similarité entre 2 chaines de texte/str1 str2 ;;http://cadxp.com/topic/46142-utiliser-une-fonction-php-avec-lisp/page__gopid__268839#entry268839 ;;(C) Giles Chanteau ;;(similartext (strcase "str1") (strcase "Str2")) (defun similartext (str1 str2 / similarStr similarSum lst1 lst2) (defun similarStr (begin1 len1 begin2 len2 / pos1 pos2 len end1 end2 p q r pr qr isEqual) (setq pos1 begin1) (setq pos2 begin2) (setq len 0) (setq end1 (+ begin1 len1) end2 (+ begin2 len2) ) (setq p begin1) (repeat len1 (setq q begin2) (repeat len2 (setq r 0 pr p qr q isEqual T ) (while (and (< pr end1) (< qr end2) isEqual ) (if (= (nth pr lst1) (nth qr lst2)) (setq r (1+ r)) (setq isEqual nil) ) (setq pr (1+ pr) qr (1+ qr) ) ) (if (< len r) (progn (setq len r) (setq pos1 p) (setq pos2 q) ) ) (setq q (1+ q)) ) (setq p (1+ p)) ) (list pos1 pos2 len) ) (defun similarSum (begin1 len1 begin2 len2 / lst pos1 pos2 len sum e1 e2) (setq lst (similarStr begin1 len1 begin2 len2) pos1 (car lst) pos2 (cadr lst) len (caddr lst) ) (setq sum len) (if (/= sum 0) (progn (if (and (< begin1 pos1) (< begin2 pos2)) (setq sum (+ sum (similarSum begin1 (- pos1 begin1) begin2 (- pos2 begin2)))) ) (setq e1 (+ pos1 len) e2 (+ pos2 len) ) (if (and (< e1 (+ begin1 len1)) (< e2 (+ begin2 len2))) (setq sum (+ sum (similarSum e1 (+ len1 begin1 (- e1)) e2 (+ len2 begin2 (- e2))))) ) ) ) sum ) (setq lst1 (vl-string->list str1) len1 (length lst1) lst2 (vl-string->list str2) len2 (length lst2) ) (if (= 0 (+ len1 len2)) '(0 0.0) (list (setq similar (similarSum 0 len1 0 len2)) (/ (* similar 200.) (+ len1 len2)) ) ) ) Aujourd'hui je suis étonné que beaucoup de programmateur web ne prennent même plus la peine d'utiliser un applet pour corriger un numéro de téléphone ou un code INSEEIl m'arrive souvent d'être face à une page qui refuse de valider, bien entendu sans aucun message intelligible, parcequ'il y a un espace devant le numéro ...a+gégé ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
Luna Posté(e) le 26 février 2021 Posté(e) le 26 février 2021 (modifié) Coucou, Hydro8Une dernière chose, à quel endroit gère-t-on l'arrondi de la surface ? Il s'agit du second 2 à chaque (rtos), par exemple pour celui-ci (rtos (apply '+ (mapcar 'cadr y)) 2 2) on peut isoler les 3 arguments comme suit : (rtos (apply '+ (mapcar 'cadr y)) ;; le nombre réel que l'on souhaite convertir sous format texte 2 ;; l'écriture que l'on souhaite appliquer lors de la conversion (ici le 2 correspond à l'écriture décimale) 2 ;; la précision (donc ici on oblige à écrire le nombre avec 2 décimales après la virgule) ) La surface est située au (cadr y) ou (cadr r) tandis que le périmètre est situé au (caddr y) ou (caddr r) ou si tu préfères les virgules servent de séparateurs pour le fichier .csv donc tu as :Nom , Surface , PérimètreDonc si tu repères les virgules, la surfaces correspond aux (rtos) situés entre les deux virgules :3 Il est possible de supprimer la précision (pour ne pas la forcer) afin que seule la précision indiquée dans le format du dessin (cf. variable système LUPREC, ou Format > Contrôle des unités... > Longueur "Précision") soit prise en compte.Les arrondis se font automatiquement lors de la conversion du nombre en texte en fonction de la précision indiquée. Par exemple : (rtos 2 2 2) renvoie "2.00" (rtos 2.01536484529 2 3) renvoie "2.015" (rtos 2.6131861 2 0) renvoie "3" (rtos 2.1536 2) renvoie "2.1536" Pour simplifier la modification du code, il est possible de remplacer cette valeur 2 à chaque occurrence par une seule variable et de définir cette nouvelle variable en dur en début de programme (pour n'avoir à la modifier qu'à un seul endroit). GEGEMATICbien content que ça t'ouvre des perspectives, et tu verra que les expressions régulières sont un outil indispensable dès qu'on veut avoir des traitements un peu "intelligents" des entrées utilisateurs ou des données.Vouih, je les avais également vu passer lorsque j'avais eut un soucis avec la fonction (vl-sort) et (gile) l'avait évoqué également mais je n'ai pas vraiment eut le temps d'étudier le programme (et surtout la moitié du programme utilise des fonctions que je ne connais pas donc la lecture est d'autant plus complexe et longue) mais je me rend bien compte qu'il va bien falloir que je passe par là si je veux continuer à progresser :3 (et accessoirement aussi parce que je refuse d'utiliser un programme sans savoir pourquoi et comment chat marche >w<)Donc merci beaucoup pour m'avoir partagé cela et vraiment désolée si tu ne peux pas t'attribuer tout le mérite, promis je montrerais plus d’enthousiasme sur tes partages de fonctions à l'avenir <3 Bisous,Luna Modifié le 26 février 2021 par Luna
Hydro8 Posté(e) le 26 février 2021 Auteur Posté(e) le 26 février 2021 J'ai essayé de remplacer les 2 par des 1 dans les fonctions rtos mais j'obtiens des valeurs avec exposant dans le csv : D�nomination,Surface (m�),P�rim�tre (m)APPART 101,4.0E+01,5.5E+01 Edit : pardon j'ai rien dit, je dois modifier que le deuxième 2...
Hydro8 Posté(e) le 26 février 2021 Auteur Posté(e) le 26 février 2021 Alors j'ai bien réussi à faire mon arrondi et à l'afficher dans une troisième colonne, super ! Maintenant, est-il possible dans la somme des surfaces du calque, en plus de la somme actuelle, de faire la somme des surfaces arrondies à la décimale ?
Luna Posté(e) le 26 février 2021 Posté(e) le 26 février 2021 J'avoue ne pas bien comprendre la demande pour le coup... l'arrondi c'est juste une question de décimale donc qu'elle différence existe-t-il entre la colonne "Surface arrondie" et "Surface" mise à part le nombre de décimales après la virgule ?Et du coup quel est l'intérêt d'avoir une colonne avec 1 décimales et une autre avec 2 ? L'export est strictement identique, on ne fait qu'écrire deux fois la même chose donc il est plus simple de modifier cela directement sur Excel, nan ? Bisous,Luna
Hydro8 Posté(e) le 26 février 2021 Auteur Posté(e) le 26 février 2021 Effectivement cela est réalisable en faisant des manipulations sur Excel, c'était histoire de gagner du temps :) En gros il affiche les surfaces à 2 décimales et les surfaces arrondies à 1 décimale pour chaque pièce.Pour la somme, fait-il la somme des surfaces à 2 décimales ? J'imagine que oui. Du coup cette somme arrondie n'est pas forcément égale à la somme des arrondis. Par exemple, la surface de l'appartement me donne 40.48m² donc son arrondi donne 40.5.La somme des arrondis des pièces me donne 40.4. Je sais donc que j'ai 0.1m² à compenser quelque part. L'idée était d'afficher dans une troisième colonne ce calcul afin que cela soit déjà fait :(rires forts):
lecrabe Posté(e) le 26 février 2021 Posté(e) le 26 février 2021 Hello Hydro8 C sur que vu le prix du M2 sur les Champs Elysees : 0.1 M2 c important !? SVP tu me rappelles la tolerance d erreur en % (sur les surfaces) pour la loi Carrez ? La Sante, Bye, lecrabe "fatigue" Autodesk Expert Elite Team
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