JEFF.COSTES Posté(e) le 17 mars 2020 Posté(e) le 17 mars 2020 Bonjour J'ai un bloc de repérage avec 2 attributs. Un qui me permet d'avoir un nom de repère et un second avec le linéaire du repérage (celui ci lié à une distance dynamique.) J'ai sur mes plans plusieurs types d’éléments à repérer avec des noms différent. Mais chacun de ces type peut avoir plusieurs lignes de repérage différente avec des longueurs différentes aussi éparpiller. Il faut donc faire le tri. Je jongle avec 2 Lisp que j'utilise pour cela : TABCOUNT qui permet de lister les attribut différents avec des valeur différente et leur quantité présente sur le plan (tant de M1, tant de M2, tant de M3 etc.... ) mais sans donner le linéaire associé à chaque type. Et un variante du LISP POIDS D'ACIER qui me donne la valeur cumulé des attributs. (mais c'est la somme total de toutes les valeurs de cet attribut sans faire de différence entre les type d’élément (tant de linéaire de murs certes, mais combien pour les M1 ? combien pour les M2 etc...). Bref! je n'ai pas le détail par type d'élément J'aimerai savoir si il est possible de créer un Lisp qui soit, permettrait de copier x fois un bloc et de donner ensuite dans un champs TXT le cumule des valeurs ainsi créé (il faudrait bien sur pouvoir spécifier la longueur de chaque éléments au moment de la création. Ou alors comme TABCOUNT, de faire le cumul linéaire des repère par type.? merci de votre réponse
lecrabe Posté(e) le 17 mars 2020 Posté(e) le 17 mars 2020 Hello SVP un DWG avec qq exemples des Blocs sources et le Resultat VOULU !? Le TOUT dans un lien Download Free / WETransfert / etc ... LA SANTE, Bye, lecrabe "triste"Automne 2020, la retraite ... Autodesk Expert Elite Team
JEFF.COSTES Posté(e) le 17 mars 2020 Auteur Posté(e) le 17 mars 2020 Hello Merci pour ta réponse LeCrabe. voici le liens de téléchargement du dwg avec le résultat souhaité :https://wetransfer.com/downloads/3a0c4c641a05a9fc0ad8b4367ab9eaed20200317173632/1192d7baa62a7ee63304a3e5dbd5283320200317173707/afd5a8 Les blocs de repérage des linéaire sur le repérage sont liés a des formules dans les textes de cumuls (en jaune à la marge de la page A3) + les attributs "linéaire" des blocs des chaînage d'attentes, eux, sont liés à ces fameux cumuls. Pour le moment les addition sont réalisé manuellement via le LISP FIELDARITHMETIC mais ça prend un certain temps et ce n'est pas exempt d'erreur. Attribut non comptabilisé ou comptabilisé en double. merci Pourquoi Triste ? c'est pas Bien la retraite?
JEFF.COSTES Posté(e) le 17 mars 2020 Auteur Posté(e) le 17 mars 2020 https://wetransfer.com/downloads/3a0c4c641a05a9fc0ad8b4367ab9eaed20200317173632/1192d7baa62a7ee63304a3e5dbd5283320200317173707/afd5a8
JEFF.COSTES Posté(e) le 20 mai 2020 Auteur Posté(e) le 20 mai 2020 Hello Aviez vous pu voir pour ma question. Vous m'aviez demandé les éléments que je vous avais transféré . Mais je n'ai pas eu de réponse de votre part. Cordialement Hello SVP un DWG avec qq exemples des Blocs sources et le Resultat VOULU !? Le TOUT dans un lien Download Free / WETransfert / etc ... LA SANTE, Bye, lecrabe "triste"Automne 2020, la retraite ...
Luna Posté(e) le 20 mai 2020 Posté(e) le 20 mai 2020 Salut, Je ne me suis pas vraiment penchée sur ton problème donc on va faire ça par étape, si tu veux bien :3 1°) Le lien WeTransfert est expiré, serait-il possible d'en refaire un si possible ? 2°) As-tu des connaissances dans le langage LISP ou pas du tout ? 3°) Si oui, as-tu besoin de pistes de recherches pour t'aider dans l'écriture de ton programme ? Si non, cela signifie que tu as besoin d'un programme fonctionnel tout fait et s'appliquant à ce problème spécifique (ou bien tu as quelques notion te permettant d'étaler l'utilisation de ce programme dans d'autres circonstances ?) 4°) Quel genre de programme as-tu besoin exactement : un minimum d'intervention utilisateur (sélection automatique des blocs car nom unique, pas de pré-sélection des blocs à prendre en compte, ...), un programme esthétique et agréable à utiliser (utilisation de boîte de dialogue pour choisir le nom du bloc, pré-sélection possible de la part de l'utilisateur et possibilité de lancer la commande sur une sélection spécifique ou bien une sélection totale, ...), ou bien quelque chose d'efficace pour une utilisation quotidienne (nom du bloc à entrer à la main, possibilité de conserver le nom comme valeur par défaut pour les prochains lancements, ...) ? 5°) A quel genre de retour as-tu besoin : une liste dans l'historique de commande, une simple fenêtre d'information d'AutoCAD (pas de trace), un fichier .txt, un fichier .xls ? 6°) Quel est le taux de détail dont tu as besoin : A - une liste des attributs "repères" triée avec la longueur totale pour chacun des repères :Résultats :- "M1" : Lg. = 253.21mNb. = 8u- "M2" :Lg. = 1581.90mNb. = 42u... B - une liste des attributs "repères" triée avec des informations intermédiaires pour la répartition des longueurs pour chacun des repères :Résultats :- "M1" (8u) : Lg. totale = 253.21mLg. moyenne = 43.95mLg. min = 3.10mLg. max = 147.86m- "M2" (42u) : Lg. totale = 1581.90mLg. moyenne = 89.12mLg. min = 7.63mLg. max = 364.23m... C - une liste des attributs "repères" triée avec un résumé (liste A ou B ) à la fin des résultats ainsi que l'ensemble des longueurs pour chaque attribut "repère"Résultats :- "M1" :Obj. n°1 -> 3.10mObj. n°2 -> 6.45m...- "M2" :Obj. n°1 -> 7.63mObj. n°2 -> 18.76m...Résumé :- "M1" (8u) : Lg. totale = 253.21mLg. moyenne = 43.95mLg. min = 3.10mLg. max = 147.86m- "M2" (42u) : Lg. totale = 1581.90mLg. moyenne = 89.12mLg. min = 7.63mLg. max = 364.23m... Cela me permettra d'avoir une idée un peu plus précise de ce dont tu as besoin exactement et ainsi t'aider au mieux :3 Bisous,Luna
lecrabe Posté(e) le 21 mai 2020 Posté(e) le 21 mai 2020 Hello BOF je ne te suis pas vraiment !? MAIS BON comme tu parles d'Attributs sur des Blocs avec une valeur numerique, je redonne A TOUT HAZARD "mes" 3 routines favorites dans ce domaine ! ATT_TOT par Gilles : Total des valeurs de UN Attribut sur N BlocsAvec en plus definition possible d un Seuil de traitement (Inferieur / Superieur) ATT_ADD par Gilles : Addition d une valeur numerique sur UN Attribut sur N Blocs ATT_MUL par Gilles : Multiplication d une valeur numerique sur UN Attribut sur N Blocs MERCI MERCI MERCI Gilles !!! Le TOUT puise dans mon stock de 3000 Routines ... LA SANTE (Stay Safe), Bye, lecrabe "triste"Automne 2020, la retraite ;;; ;;; Addition de la valeur d un attribut sur un bloc/symbole ;;; par GC le 09/08/2008 - Anciennement ADDATTVAL ;;; ;;; On selectionne d'abord un attribut ;;; puis APRES par une selection AutoCAD classique ;;; tous les blocs/symboles "concernes" seront traites ;;; ;;; Nouvelles options : Choix d un seuil de traitement ;;; en mode >= ou en mode <= ;;; (defun c:ATT_TOT (/ seuil ing att elst tag ss n tot blk) (princ "\nTotal des Valeurs de N Blocs sur UN Attribut numerique " ) (princ "\nAvec Choix eventuel d un Seuil Inferieur ou Superieur ... " ) (initget "Oui Non") (if (= "Oui" (setq seuil (getkword "\nChoix d un Seuil [Oui/Non] <Non> : ")) ) (progn (initget "Inferieur Superieur") (or (setq ing (getkword "Choisissez une option [inferieur/Superieur] : " ) ) (setq ing "Superieur") ) (initget 1) (setq seuil (getreal "\nValeur du Seuil : ")) ) (setq seuil nil) ) (and (setq att (car (nentsel "\nSelectionnez un Attribut : "))) (setq elst (entget att)) (= (cdr (assoc 0 elst)) "ATTRIB") (setq tag (cdr (assoc 2 elst))) (princ "\nSelectionnez les Blocs ou <Tous> : ") (or (setq ss (ssget (list '(0 . "INSERT") (assoc 2 (entget (cdr (assoc 330 elst)))) ) ) ) (setq ss (ssget "_X" (list '(0 . "INSERT") (assoc 2 (entget (cdr (assoc 330 elst)))) ) ) ) ) (setq n -1) (setq tot 0) (while (setq blk (ssname ss (setq n (1+ n)))) (setq att (entnext blk)) (while (and att (setq elst (entget att)) (/= (cdr (assoc 2 elst)) tag) ) (setq att (entnext att)) ) (if (setq val (distof (cdr (assoc 1 elst)))) (if seuil (if (= ing "Superieur") (and (<= seuil val) (setq tot (+ tot val))) (and (<= val seuil) (setq tot (+ tot val))) ) (setq tot (+ tot val)) ) ) ) ) ;;;;;;;;;; ALERT ou PRINC ;; (alert (strcat "Total = " (vl-princ-to-string tot))) (princ (strcat "Total = " (vl-princ-to-string tot))) (princ) ) ;; ;; Commande: ATT_ADD ;; par GC (Anciennement ADDATT) ;; Pour ajouter/soustraire une valeur numerique SIMPLE ;; a un Attribut SIMPLE sur un Bloc SIMPLE ;; (defun c:att_add (/ att lst tag nam add ss n) (if (and (setq att (car (nentsel "\nSelectionnez un attribut a modifier: "))) (setq lst (entget att)) (= (cdr (assoc 0 lst)) "ATTRIB") (numberp (read (cdr (assoc 1 lst)))) (setq tag (cdr (assoc 2 lst))) (setq nam (cdr (assoc 2 (entget (cdr (assoc 330 lst)))))) ) (if (and (setq add (getreal "\nEntrez la valeur a ajouter ou soustraire : ")) (princ "\nSélectionnez les blocs à modifier.") (setq ss (ssget (list '(0 . "INSERT") (cons 2 nam)))) (setq n 0) ) (while (setq blc (ssname ss n)) (setq att (entnext blc) lst (entget att) ) (while (= (cdr (assoc 0 lst)) "ATTRIB") (if (and (= (cdr (assoc 2 lst)) tag) (numberp (setq val (read (cdr (assoc 1 lst))))) ) (progn (entmod (subst (cons 1 (rtos (+ val add))) (assoc 1 lst) lst ) ) (entupd blc) ) ) (setq att (entnext att) lst (entget att) ) ) (setq n (1+ n)) ) ) (princ "\nL objet selectionne n'est pas un attribut ! ") ) (princ) ) ;; ;; Commande: ATT_MUL ;; par GC (Anciennement MULATT) ;; Pour ajouter/soustraire une valeur NUMERIQUE ;; a un Attribut NUMERIQUE SIMPLE sur un Bloc SIMPLE ;; (defun c:att_mul (/ att lst tag nam add ss n) (if (and (setq att (car (nentsel "\nSelectionnez un attribut a modifier: "))) (setq lst (entget att)) (= (cdr (assoc 0 lst)) "ATTRIB") (numberp (read (cdr (assoc 1 lst)))) (setq tag (cdr (assoc 2 lst))) (setq nam (cdr (assoc 2 (entget (cdr (assoc 330 lst)))))) ) (if (and (setq add (getreal "\nEntrez la valeur a multiplier ou diviser : ")) (princ "\nSélectionnez les blocs à modifier.") (setq ss (ssget (list '(0 . "INSERT") (cons 2 nam)))) (setq n 0) ) (while (setq blc (ssname ss n)) (setq att (entnext blc) lst (entget att) ) (while (= (cdr (assoc 0 lst)) "ATTRIB") (if (and (= (cdr (assoc 2 lst)) tag) (numberp (setq val (read (cdr (assoc 1 lst))))) ) (progn ;; (entmod (subst (cons 1 (rtos (+ val add))) (entmod (subst (cons 1 (rtos (* val add))) (assoc 1 lst) lst ) ) (entupd blc) ) ) (setq att (entnext att) lst (entget att) ) ) (setq n (1+ n)) ) ) (princ "\nL'objet selectionne n'est pas un attribut ! ") ) (princ) ) 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