Aller au contenu

Luna

Membres
  • Compteur de contenus

    1 113
  • Inscription

  • Dernière visite

  • Jours gagnés

    42

Luna a gagné pour la dernière fois le 8 juin

Luna a eu le contenu le plus aimé !

Profile Information

  • Gender
    Female

Visiteurs récents du profil

6 408 visualisations du profil

Luna's Achievements

Experienced

Experienced (11/14)

  • Well Followed Rare
  • Very Popular Rare
  • Reacting Well Rare
  • Posting Machine Rare
  • Conversation Starter Rare

Recent Badges

144

Réputation sur la communauté

1

Community Answers

  1. Coucou, Malheureusement nan, je n'ai pas vraiment eu le temps d'étudier le sujet. Désolée, Luna
  2. Oki I get it ! Simplement il faut mettre le nom de tes grues entre guillemets ^^' (MDT219 Ici cela indique qu'il faut exécuter la fonction nommée (MDT219). Il te faut écrire : "MDT219" Bisous, Luna
  3. Coucou, J'ai testé sans problème... Peux-tu m'envoyer l'erreur que tu rencontres ? Bisous, Luna
  4. Coucou, En me basant sur les lignes de codes suivantes : ;; ---------[ DEVELOPPER PARAMS ]--------- ;; ;; This section allows the developper to change quickly the parameters used by the program based on their need ;; Each parameters can be set as constants, ignored (= nil) or develop a full question if it needs to be set ;; by the user instead. (setq dimtxt nil ; Defines the text height (nil → use DIMTXT value instead) angtxt nil ; Defines the axis angle on which the text will be aligned on (nil → 0 (East)) algtxt nil ; Defines the text alignment mode (cd. MTEXT(DXF), code 71) (nil → 5 (Middle Center)) radiusPrec nil ; Defines the precision (number of decimal) for the crane boom length (nil → 2) weightPrec nil ; Defines the precision (number of decimal) for the weight (nil → 2) maskBoxScale 1.2 ; Defines the fill box scale value for the text background mask (nil → no mask) capacities ; Defines the different capacities based on the crane model and their length '( ;; ---------[ GRUE_DIAG219 ]--------- ;; (219 (25 (20 20) (25 8.4)) (30 (20 10) (25 8.6) (30 7)) (35 (21 10) (25 8.5) (30 6.9) (35 5.8)) (40 (20 10) (25 8.4) (30 6.9) (35 5.8) (40 5)) (45 (20 10) (25 8.3) (30 6.8) (35 5.7) (40 4.9) (45 4.3)) (50 (20 10) (25 8.3) (30 6.7) (35 5.6) (40 4.7) (45 4) (50 3.5)) (55 (20 10) (25 7.9) (30 6.4) (35 5.4) (40 4.5) (45 3.9) (50 3.3) (55 2.95)) (60 (20 9.4) (25 7.3) (30 6) (35 4.6) (40 4.2) (45 3.6) (50 3.1) (55 2.6) (60 2.2)) (65 (20 8.88) (25 6.9) (30 5.6) (35 4.6) (40 3.9) (45 3.3) (50 2.85) (55 2.4) (60 1.95) (65 1.6)) ) ; End GRUE_DIAG219 params ) ) ; End of DEVELOPPER PARAMS ;; You can change the default value below if needed also (setq dimtxt (cond (dimtxt) ((getvar "DIMTXT"))) angtxt (cond (angtxt) (0)) algtxt (cond (algtxt) (5)) radiusPrec (cond (radiusPrec) (2)) weightPrec (cond (weightPrec) (2)) ) ; End default params values Pour ajouter des nouveau modèles de grues, il suffit d'ajouter une liste comme ceci : ;; ---------[ GRUE_DIAG219 ]--------- ;; (219 (25 (20 20) (25 8.4)) (30 (20 10) (25 8.6) (30 7)) (35 (21 10) (25 8.5) (30 6.9) (35 5.8)) (40 (20 10) (25 8.4) (30 6.9) (35 5.8) (40 5)) (45 (20 10) (25 8.3) (30 6.8) (35 5.7) (40 4.9) (45 4.3)) (50 (20 10) (25 8.3) (30 6.7) (35 5.6) (40 4.7) (45 4) (50 3.5)) (55 (20 10) (25 7.9) (30 6.4) (35 5.4) (40 4.5) (45 3.9) (50 3.3) (55 2.95)) (60 (20 9.4) (25 7.3) (30 6) (35 4.6) (40 4.2) (45 3.6) (50 3.1) (55 2.6) (60 2.2)) (65 (20 8.88) (25 6.9) (30 5.6) (35 4.6) (40 3.9) (45 3.3) (50 2.85) (55 2.4) (60 1.95) (65 1.6)) ) ; End GRUE_DIAG219 params Le premier élément de la liste (ici 219) sert de clé. En l'état actuel j'ai considéré que les clés étaient de type integer mais cela peut se changer "relativement" facilement (il faut cependant modifier le code également un peu plus bas, ligne 88 du fichier : (getkdh (quote (getint msg)) ;; <-- line 88 "\nVeuillez sélectionner le type de grue" (list (apply 'strcat (mapcar '(lambda (x) (strcat (vl-princ-to-string (car x)) " ")) capacities))) ": " (caar capacities) "" ;You can add any help message for this question in order to guide the users on the options ) Remplacer (getint) par (getkword), comme ceci : (getkdh (quote (getkword msg)) "\nVeuillez sélectionner le type de grue" (list (apply 'strcat (mapcar '(lambda (x) (strcat (vl-princ-to-string (car x)) " ")) capacities))) ": " (caar capacities) "" ;You can add any help message for this question in order to guide the users on the options ) Pour l'explication (getint) ne permet que la saisie de nombres entiers, tandis que (getkword) attend la saisie de mots clés (vui c'est dans le nom ^^). Comme tu souhaites utiliser des clés sous forme de chaîne de caractères (offrant plus de libertés), la fonction (getkword) est plus adaptée. Et pour ce qui est de la fonction (getkdh), c'est une fonction que j'utilise absolument partout qui me permet de construire facilement des questions utilisateurs (de son nom complet GET-Keywords/Default/Help). C'est sûrement un peu (très beaucoup) compliqué à lire comme programme donc c'est juste un petit plus dont je ne peux plus me passer quand je programme. C'est à la suite de ta clé principale de la liste 'capacities'. Mais comme tu as trouvé, je suppose que tout va bien ! L'angle et la hauteur de texte sont défini au début dans les "Paramètres développeurs". Pour le style de police, il s'agit du code DXF 7 (cf. >>ici<<), par défaut AutoCAD considère "STANDARD" si non précisé. Pour l'ajouter, c'est ici à la fin de la (list) : (list '(0 . "MTEXT") '(100 . "AcDbEntity") '(100 . "AcDbMText") (cons 10 pt0txt) (cons 40 dimtxt) (cons 50 (- angtxt (/ pi 2.))) (cons 71 algtxt) (cons 1 (strcat (rtos radius 2 radiusPrec) "m - " (rtos weight 2 weightPrec) "t")) ; ← if you need to change the text output ; ex: "25.00m - 7.90t" (cons 7 "MyWonderfulFont") ; <-- Remplacer "MyWonderfulFont" par la police souhaitée, ou bien même une variable déclarée plus haut dans les params développeurs ) Le code DXF 8 permet de définir le calque d'un objet, si pas précisé il considère le calque courant. Si jamais c'est un calque connu et toujours le même, je dirais qu'il faut faire exactement comme pour le code DXF 7. Si c'est un choix utilisateur, ma solution préférée est (ListBox) développé par (gile) (cf. >>ici<< par exemple). Sinon libre à toi. Il faut cependant checker me semble-t-il si le calque existe (à vérifier). Attention à ajouter ce code DXF 8 aux deux types d'entités crées : MTEXT et CIRCLE ! Si tu ne veux pas t'embêter, le plus simple et juste de copier/coller le contenu de chaque fichier dans 1 seul et unique fichier à la suite (par exemple tu colles tous les fichiers "Ut..." à la suite dans le fichier "GRUE.lsp"). Si je comprends bien tu insères un bloc dynamique de grue (qui n'intègre pas les courbes de charge) et le LISP a pour but de créer une nouvelle définition de bloc (si pas déjà existante) puis d'insérer une référence de ce bloc au point d'insertion du bloc grue ? Dans ce cas j'ai plusieurs questions : Pourquoi ne pas intégrer les courbes de charge directement dans le bloc (dans un calque spécifique) et ainsi il suffit uniquement de geler/dégeler le calque pour voir les courbes momentanément ? Cela permettra notamment de gérer qu'un seul et unique bloc. (Bien que je reconnais que du coup, le bloc risque d'être un peu vénère) Est-ce qu'un simple groupe peut satisfaire le besoin ? j'avais une autre question mais j'ai un trou de mémoire, sorry... Bisous, Luna
  5. Coucou, Juste à titre d'exemple (désolée, la passion à pris le dessus ^^') j'ai retravaillé ton code dans sa globalité pour qu'il soit un peu plus poussé (sans intégrer la partie concernant les blocs) et plus facilement modifiable (les paramètres développeurs notamment, car je reconnais que pour le reste c'est peut-être plus difficile à comprendre désormais). Il s'agit du fichier GRUE.lsp (mais il est dépendant des fonctions (getkdh), (lst2str) et (str2lst) d'où leur présence également mais rien ne t'empêche de tout regrouper dans le même fichier) et le nom de la commande est GRUE. Bisous (et désolée pour le dérangement), Luna UtDac . lst2str.lsp UtDac . str2lst.lsp UtUse . getkdh.lsp GRUE.lsp
  6. Coucou, Tu parles d'avoir les courbes de charge de plusieurs grues sous forme de commandes séparées, or je doute que le fond du code change drastiquement. Je suppose que les seules informations qui changent réellement sont celles que l'on trouve dans la variable 'capacites' ? Au vu du programme, il y a de nombreuses choses que l'on peut vraiment améliorer pour un rendu plus professionnel, mais pour cela il faudrait l'ensemble du LISP et quelques infos supplémentaires (notamment qu'entends-tu par "les courbes de charge soient crées dans un bloc" ?). Si en revanche tu souhaites effectuer ces modifications de ton côté : Il faut ajouter : (setq point (getpoint "\nSpécifier le point d'insertion : ") x (car point) y (cadr point) ) juste après la ligne (setq valeur ... et modifier les 2 lignes comme suit : ;; remplacer '(0 0) par point (command "_circle" point (rtos rayon 2 2)) ;; remplacer (list rayon 0) par (list (+ x rayon) y) afin d'ajouter les coordonnées du point d'origine au calcul des coordonnées du texte (command "_text" (list (+ x rayon) y) "1" "90" (strcat (rtos rayon 2 2) "m - " (rtos charge 2 2) "t")) Pour cela, j'aurais besoin d'un peu plus de détail et en fonction des réponses, cela changera la nature du code. Souhaite tu créer des définitions de blocs ou souhaites-tu insérer des références de blocs ? Dans le premier cas, ne serait-il pas plus simple de créer les définitions de blocs à la main (puisqu'il ne me semble pas que cela représente de nombreuses heures de travail) et cela permettrait en plus de créer des blocs dynamiques. Dans le second cas, cela suppose que les définitions de blocs existent déjà. Ou bien est-ce un programme qui se veut "intelligent" c'est-à-dire qu'il insère des références de blocs, et si la définition de bloc n'existe pas encore dans le dessin, alors il faut dans un premier temps créer cette définition de bloc pour ensuite insérer une référence de bloc ? Pour poser une question à un utilisateur (et dans ton cas je te suggère de n'autoriser que certaines valeurs), tu peux utiliser (getkword) avec la fonction (initget). Voir un exemple ci dessous (pas le plus opti) : (initget 1 "219 218 178") (setq grueNum (getkword "\nVeuillez choisir le type de grue [219/218/178] : ")) (cond ((grueNum = "218") (c:GRUE_DIAG218)) ((grueNum = "219") (c:GRUE_DIAG219)) ((grueNum = "178") (c:GRUE_DIAG178)) ) Bisous, Luna
  7. Coucou, Cela signifie que les "textes" en question sont des attributs je pense et donc lorsque tu décomposes un bloc (via la commande DECOMPOSER), c'est la définition d'attribut qui apparaît (avec le nom de l'étiquette et non la valeur de ton attribut de référence de bloc). Pour cela, je te conseille plutôt la commande BURST des ExpressTools, cela permet de convertir les attributs en TEXT ou MTEXT lors de la décomposition d'une référence de bloc en conservant ainsi la valeur de texte. De manière générale, en CAO c'est normal de devoir prendre le temps de nettoyer et corriger les fichiers que l'on reçoit (dans la limite des contraintes client évidemment) en faisant attention tout de même de ne pas engendrer de problèmes lors de futur échanges de fichier (modification de la localisation du projet, etc...), d'où l'intérêt des XREF. Donc il est souvent nécessaire d'adapter nos méthodes de nettoyage de fichiers en fonction des dessins que l'on reçoit. Sinon, de manière bourrine il existe toujours des solutions en LISP (non testée donc j'ai peut-être fait des erreurs) : (defun c:TXTHEIGHT-ALL (/ hgt txt blc jsel i name entlist b blk) (setq hgt (cond ((getdist (strcat "\nVeuillez définir la hauteur de texte <" (getvar "DIMTXT") "> : "))) ((getvar "DIMTXT"))) jsel (ssget "_X" '((0 . "TEXT,MTEXT"))) txt 0 blc 0 ) (princ "\n...Processing the TEXT and MTEXT entities . . . ") (repeat (setq i (sslength jsel)) (setq name (ssname jsel (setq i (1- i))) entlist (entget name) ) (entmod (subst (cons 40 hgt) (assoc 40 entlist) entlist)) (setq txt (1+ txt)) ) (princ (strcat "\nUn total de " (itoa txt) " textes du dessin ont été traités (hauteur = " (rtos hgt 2 2) ")")) (setq txt 0) (princ "\n\n...Processing the BLOCK DEFINITION entities . . . ") (while (setq blk (tblnext "BLOCK" (not b))) (setq name (cdr (assoc -2 (entget blk)))) (while name (if (member (cdr (assoc 0 (setq entlist (entget name)))) '("TEXT" "MTEXT")) ;; Add "ATTRIB" to the list if needed (ATTSYNC would be necessary) (progn (entmod (subst (cons 40 hgt) (assoc 40 entlist) entlist)) (setq txt (1+ txt)) ) ) (setq name (entnext name)) ) (entupd blk) (setq blc (1+ blc) b T ) ) (princ (strcat "\nUn total de " (itoa txt) " textes présent dans les " (itoa blc) " définitions de blocs du dessin ont été traités (hauteur = " (rtos hgt 2 2) ")")) (princ) ) Bisous, Luna
  8. Coucou, En commande, je sais qu'il existe StripMText (mais du coup cela modifie les entités or tu veux juste récupérer la valeur textuelle sans modifier l'objet). Sinon il semblerait que Lee Mac ait travaillé sur une fonction à cet effet (cependant je ne l'ai jamais utilisé donc je ne sais pas si cela correspond à ton besoin : https://www.lee-mac.com/gettruecontent.html Edit: Olivier aura été plus réactif :3 Bisous, Luna
  9. Coucou @DessProj429, En complément des réponses de Didier et Olivier, je te suggère dans un premier temps de consulter ce post (>>ici<<) concernant le chargement d'un fichier .lsp dans AutoCAD. Car, comme le souligne si bien Olivier, avant même de parler de programmation il faut savoir comment implémenter ces programmes LISP dans AutoCAD et pouvoir les utiliser. Une fois ces différentes solutions maîtrisées (chargement ponctuel, chargement automatique, utilisation de fichiers LISP définis par AutoCAD ou des fichiers personnels, etc..), on peut alors s'attaquer aux bases de la programmation. Pour cela, de nombreux sites très bien fait peuvent t'aider à explorer le monde de la programmation AutoLISP : https://www.da-code.fr/ https://programmation.developpez.com/tutoriels/autolisp/introduction-autolisp/ Maintenant si l'on rentre un peu plus dans le vif du sujet, il n'existe jamais une seule et unique solution de programmation pour un problème bien défini. Avant même de parler d'AutoLISP (qui est un langage permettant d'écrire des programmes complexes), on peut déjà considérer des solutions beaucoup plus adaptées lorsqu'on débute en programmation AutoCAD, au même titre que les macros Excel. Pour cela, rien de bien compliqué puisqu'il suffit de réaliser la manipulation manuellement et de noter l'ensemble des commandes, options, données utilisateurs nécessaires à la suite d'instructions. Dans ton cas, il suffit de comprendre ton besoin : Tracer une polyligne Décaler la dernière polyligne crée d'une valeur rentrée par l'utilisateur Ajouter un sommet depuis le dernier sommet de la polyligne n°1 vers le dernier sommet de la polyligne n°2 Joindre les 2 polylignes Clore la polyligne L'ensemble de ces manipulations font appel à des commandes et des entrées utilisateur, donc cela peut être traduit par une suite d'instruction qui fait appel aux commandes. On appelle cela des macros, comme par exemple la macro donnée par Olivier qui répond aux points 3 et 4 (si je ne dis pas de bêtises). Évidemment, plus on progresse en programmation et plus on va chercher à optimiser notre programme pour améliorer sa performance, étendre son principe de fonctionnement, gestion des erreurs, etc... C'est d'ailleurs pour cela qu'il faut prendre les problèmes comme un ensemble de sous-problèmes, plus simple à traiter individuellement puis de les mettre bout à bout. Viendra ensuite l'optimisation de la programmation (par exemple, commencer par écrire une macro qui n'est rien d'autre que la suite d'instructions que tu effectues manuellement, puis ensuite d'essayer de traduire cela en AutoLISP simple, avec des (command) et ensuite on pourra encore améliorer avec des (entget), (entmake), ...), mais chaque choses en son temps. Si je comprends ta démarche d'utilisateur, tu désires apprendre/comprendre le code que tu comptes utiliser et donc pour cela, il ne faut pas partir d'une programmation complexe dès le début. Je pense donc en effet que la meilleure démarche pour ce genre de demande est de commencer par écrire la suite d'instructions que tu fais en ligne de commande, voir quelles options peuvent être directement renseignées (par exemple par le biais de variables système ou des constantes) et lesquelles requiert une intervention utilisateur. Cela permettra donc de connaître et d'identifier rapidement l'ensemble des informations requises pour faire fonctionner le programme et parmi ces informations, lesquelles sont déjà accessibles et lesquelles ne le sont pas. Ensuite lorsque tu voudras optimiser le programme tu verras que tu pourras supprimer certaines interventions utilisateur. Bref, donc pour la partie "joindre" 2 polylignes, tu as déjà la macro proposée par Olivier mais si on s'amuse à la décrypter on a : ^C^C correspond à un double Echap (permet de s'assurer qu'aucun programme n'est en cours d'utilisation à l'exécution de notre macro), cf. https://help.autodesk.com/view/OARXMAC/2024/FRA/?guid=GUID-D991386C-FBAA-4094-9FCB-AADD98ACD3EF _PEDIT; Lancement de la commande PEDIT en langue internationale grâce au caractère "_" (la commande _PEDIT est ici nommée PEDIT aussi bien international qu'en FR, mais par exemple la commande COPIER en FR est _COPY en international). Cela est une "convention" en programmation afin de s'assurer que quelque soit la langue locale de l'AutoCAD utilisant notre programme, le résultat soit identique (pas d'erreur car la commander COPIER par exemple n'est pas reconnue sur un AutoCAD anglophone). Le caractère ";" est équivalent à une validation (ENTER). _M; correspond à l'option _Multiple de la commande _PEDIT, afin de sélectionner plusieurs entités, cf. https://help.autodesk.com/view/ACD/2024/ENU/?guid=GUID-0C422AA9-23DD-4650-AD66-68E9D7989E3F \\; correspond à une pause, indiquant ici que l'utilisateur doit répondre à la question de la commande (en l'occurrence ici il s'agit de la sélection des 2 polylignes que l'on souhaite joindre). Je tiens tout de même signaler que cela peut poser un problème syntaxique, car comme le souligne Olivier, il n'y a pas de contrôle. Par exemple l'option _Multiple peut poser une question supplémentaire si certains objets sélectionnés ne sont pas des polylignes (en effet, _PEDIT va alors demander si Oui ou Non on désire convertir les objets en polylignes, à condition évidemment que la variable PEDITACCEPT est à 0). _J; correspond à l'option _Join de la commande _PEDIT. ... Bref tu vois le principe. En conclusion, décortiquer un problème en sous-problèmes simples ; commencer par des instructions basiques et compréhensibles ; améliorer au fur et à mesure que tu maîtrises les bases. Si tu as des questions, n'hésite pas ! Comme tu peux le voir tu trouveras toujours des personnes qui accepteront de t'aider, sous réserve que la demande est claire, concise et que tu précises le type d'aide que tu souhaites (pistes de recherche, solution toute faite et "parfaite", documentation, etc...). Bisous, Luna
  10. Luna

    variable cotation

    Coucou, Je pense que ce dont suggérait @didier c'est que les info-bulles proposées par AutoCAD sont parfois pleines de ressources ! La plupart du temps lorsqu'une case à cocher ou à remplir fait référence à une variable système, AutoCAD affiche des info-bulles (il suffit de laisser sa souris au-dessus de la case) pour expliquer le rôle de cette option et également la référence par rapport à la variable système associée. Ce qui est très pratique lorsqu'on sait où modifier l'option manuellement dans une boîte de dialogue et que l'on cherche à faire la même opération mais en programmation 🙂 Bisous, Luna
  11. Coucou @nen, En complément de la réponse de @(gile), qui fait alors référence à une commande, je te propose la fonction de LeeMac à cet effet : https://www.lee-mac.com/boundingbox.html Cependant, cela ne permet d'obtenir que le plus petit rectangle englobant une unique entité selon le SCG. Je me souviens avoir développé une fonction en m'appuyant sur le travail de LeeMac, (gile) et Douglas C. Broad. La fonction (UCSssBoundingBox) permet, comme son nom l'indique de renvoyer les coordonnées bas/gauche et haut/droit du plus petit rectangle englobant un jeu de sélection passé en argument en considérant le SCU courant pour chaque objet. Pour cela elle s'appuie sur les fonctions (WCS2UCSMatrix) et (UCS2WCSMatrix) de Douglas, et le reste de la fonction n'est qu'une piètre adaptation des codes de LeeMac et (gile). Tu trouveras également en PJ la fonction (LM:ssBoundingBox) développée par LeeMac qui fait le même travail mais sans la conversion vers le SCU des coordonnées d'objets. Dans les deux cas, les coordonnées du rectangles sont calculées selon les axes SCG. Je m'autorise également une petite remarque concernant ton filtre de sélection (setq ss (ssget '((0 . "INSERT")))) ; Sélection des blocs En effet tu marques dans ton message que tu ne traites que les blocs avec attributs : Pour cela, au lieu de sélectionner uniquement l'ensemble des blocs (0 . "INSERT"), tu ajoutes un filtre supplémentaire pour justement ne conserver que les blocs avec attributs (code DXF 66) : (setq ss (ssget '((0 . "INSERT") (66 . 1)))) ; Sélection des blocs Et si jamais tu souhaites traiter des blocs ayant une dénomination particulière, alors il suffit de rajouter un code DXF 2 (ATTENTION aux blocs dynamiques cependant !). Je vous laisse y réfléchir pour intégrer tout chat comme vous le souhaitez et si vous avez encore besoin d'aide/conseils surtout n'hésitez pas :3 Bisous, Luna DtSel . UCSssBoundingBox.lsp DtSel . LM.ssBoundingBox.lsp VlMet . UCS2WCSMatrix.lsp VlMet . WCS2UCSMatrix.lsp
  12. Coucou, En programmation, la clé c'est de toujours se demander "quelles sont les manipulations que je fais à la main ?" pour ensuite les décortiquer et les traduire sous forme de langage informatique. En l'occurrence ici si je comprends bien, on peut décortiquer ainsi : 1. Création d'une polyligne ayant 4 sommets 2. Sélection de la polyligne dernièrement crée 3. Création d'une hachure à partir du contour de la polyligne sélectionnée Ensuite en langage AutoLISP, pour l'étape 1, si je comprends bien c'est déjà fait. Pour l'étape 2, tu peux utiliser la fonction (entlast) et pour l'étape 3, je te conseille de passer par la commande en ligne de commande (donc ajouter un "-" devant le nom de la commande) pour crée ta hachure. Si jamais tu as besoin de plus d'aide, n'hésite pas. Bisous, Luna
  13. Luna

    Macro : Bloc

    Coucou, Petite question juste pour être sûre : tu cherches à remplacer les propriétés (calques, couleur, type de ligne) pour les objets devant composer la nouvelle définition de bloc, ou bien pour la nouvelle référence de bloc ? Car si c'est bien les sous-objets, je pense qu'il est alors préférable de faire ces modifications en amont afin de lancer la commande BLOC à la toute fin. Le problème des boîtes de dialogue dans une macro ou autre, c'est qu'une fois qu'elle est ouverte, le programme n'a plus la main sur quoi que ce soit et donc rien ne se fait. C'est pour cela que les commandes utilisant des boîtes de dialogue ont toujours une version homonyme qui utilisent uniquement la ligne de commande (il suffit d'ajouter un "-" devant le nom de la commande). Je ne maîtrise pas les macros mais peut-être que dans ce genre de cas, afin de permettre à la macro de terminer son exécution, il utilise les versions sans boîtes de dialogue si jamais des actions sont nécessaires après l'exécution de la boîte de dialogue. Bisous, Luna
  14. Coucou @VDH-Bruno, Ahah vui, c'est sûr que se pencher sur les programmes de cette nature écrit par les grands noms de la programmation LISP, chat peut prendre un peu de temps. J'avais moi aussi quelques programmes/idées qu'il me faudrait étudier car le sujet est remarquablement intéressant. Mais pour l'instant je vais surtout essayer de me concentrer sur l'apprentissage d'un nouveau langage 🙂 Bon courage pour tes recherches en tout cas ! Bisous, Luna
  15. Coucou, Commande PURGER et Trouver élém. non purgeables : https://help.autodesk.com/view/ACD/2024/FRA/?guid=GUID-C6B62BBD-C363-4DC7-AF43-036A7B287473 Il te suffit ensuite de sélectionner les styles de texte et regarder où ils sont référencés 🙂 (enfin c'est une des solutions, si chat se trouve ils font autrement ^^') Bisous, Luna
×
×
  • 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é