Aller au contenu

Olivier Eckmann

Membres
  • Compteur de contenus

    2 348
  • Inscription

  • Dernière visite

  • Jours gagnés

    119

Tout ce qui a été posté par Olivier Eckmann

  1. OK, juste un hyperlien sur des textes (on se fout des rectangles) et l'hyperlien est constitué de la chaine du texte + .DWG (defun C:TXT2HL ( / I ssText oText) (if (setq ssText (ssget (list (cons 0 "TEXT")))) (progn (setq I 0) (repeat (sslength ssText) (setq oText (ssname ssText I)) (setq I (1+ I)) (seturl oText (strcat (cdr (assoc 1 (entget oText))) ".DWG")) ) ) ) ) Olivier
  2. Le calque 0 ne serait pas inactif ou gelé? Olivier
  3. Bonjour @William44850, A moins que l'on parle d'un objet carroyage type COVADIS, mais sinon l'objet carroyage n'existe pas dans AutoCAD. Est une polyligne? un bloc? une présentation? est-ce qu'il y a bien 1888 carroyages? Chaque carroyage possède un "identifiant unique". Sous quelle forme? un attribut de bloc? une donnée d'objet Map? le nom de la présentation? Un hyperlien vers un fichier fonctionne selon le principe des chemins relatif ou absolu? Est-ce que tu veux un chemin absolu ou relatif? Si j'ai renvoyé sur cette discussion, c'est que le programme lisp contient l'instruction permettant d'affecter un hyperlien à un objet via la commande (seturl ... Olivier
  4. Bonsoir, Si je reprends : écrire la fonction en "français" c'est à dire comme un algorithme ça pourrait donner ça ; définit comme variable d'entrée : la liste MaListe , la variable Old : 1er indice à permuter, la variable New : 2nd indice à permuter ; les indices dans une liste commence à 0, mais tu souhaites compter à partir de 1 donc on enlève 1 pour convertir ton indice en indice base 0 ; stocke le nombre d'élémentde MaListe dans la variable NbElt ; stocke/initialise la valeur 0 dans un compteur/indice nommé I ; stocke/initialise une liste vide dans la variable NewList ; boucle sur les nombre d'élément de la liste ; SI le compteur (indice) est égal à Old-1 ALORS ; Ajoute l'élément d'indice New-1 à la nouvelle liste ; SINON, SI le compteur (indice) est égal à New-1 ALORS ; Ajoute l'élément d'indice Old-1 à la nouvelle liste ; SINON Ajoute l'élément d'indice courant à la nouvelle liste ; passe à l'élément suivant ; renvoie la nouvelle liste Ensuite sous chaque ligne de commentaire tu écris la fonction lisp correspondante ; définit comme variable d'entrée : la liste MaListe , la variable Old : 1er indice à permuter, la variable New : 2nd indice à permuter ; les indices dans une liste commence à 0, mais tu souhaites compter à partir de 1 donc on enlève 1 pour convertir ton indice en indice base 0 (defun DeplElemList (MaListe Old New / i NewList) ; stocke le nombre d'élémentde MaListe dans la variable NbElt (setq NbElt (length MaListe)) ; stocke/initialise la valeur 0 dans un compteur/indice nommé I (setq I 0) ; stocke/initialise une liste vide dans la variable NewList (setq NewList nil) ; boucle sur les nombre d'élément de la liste (repeat NbElt ; SI le compteur (indice) est égal à Old-1 ALORS (if (= I (1- Old)) ; Ajoute l'élément d'indice New-1 à la nouvelle liste (setq NewList (append NewList (list (nth (1- New) MaListe)))) ; SINON, SI le compteur (indice) est égal à New-1 ALORS (if (= I (1- New)) ; Ajoute l'élément d'indice Old-1 à la nouvelle liste (setq NewList (append NewList (list (nth (1- Old) MaListe)))) ; SINON Ajoute l'élément courant à la nouvelle liste (setq NewList (append NewList (list (nth I MaListe)))) ) ) ; passe à l'élément suivant (setq I (1+ I)) ) ; renvoie la nouvelle liste NewList ) Et voilà ... Ce beaucoup moins fun à écrire que la fonction récursive de @(gile), mais comme dirait @didier autant commencer à apprendre à marcher avant de courir 🙂 Il n'y a que 11 lignes que l'on peut encore raccourcir sans problème (remplacer les if par un cond par ex), mais comme chaque étape est décortiquée à son maximum, peu de risque de s'embrouiller les pinceaux. Olivier
  5. Bonjour, Tu peux essayer de t'inspirer de cette discussion : https://forums.autodesk.com/t5/autocad-tous-produits-francais/import-en-masse-d-hyperliens-vers-des-blocs/td-p/10523126 Olivier
  6. Je ne t'ai jamais dit d'utiliser subst, il suffit d'avoir un compteur qui s'incrémente et créer un nouvelle liste dans laquelle tu ajoutes soit l'élément courant, soit le OLD, soit le NEW. Olivier
  7. Ecris le en français, puis passe au code ensuite quand c'est bien clair. "Problème clairement exposé à 90% résolu" Olivier
  8. Je suis sûr que l'on peut faire mieux, mais en version la plus simple (et intuitive peut-être) pour une permutation : Tu crées une boucle pour parcourir ta liste avec un indice courant qui s'incrémente de 0 à n-1 Et 3 conditions : - si l'indice courant est égal à l'indice OLD tu ajoutes à la nouvelle liste, l'élément d'indice NEW - si l'indice courant est égal à l'indice NEW tu ajoutes à la nouvelle liste, l'élément d'indice OLD - sinon tu ajoutes l'élément d'indice courant Olivier
  9. Bonjour, ici : https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/dcl-button-images/td-p/9863170 il y a une discussion intéressante, mais c'est un "subterfuge" compliqué pour simuler quelque chose non prévue, donc c'est compliqué à mettre en œuvre. Soit l'interface permet juste d'obtenir des infos, et quand tu cliques OK, ça fait le boulot. Dans ce cas tu fais le dialogue dans le langage que tu souhaites (VBA) puis tu lances la commande lisp avec tous les paramètres issus du dialogue. Soit tu dois interagir avec AutoCAD pendant ton dialogue, et là, soit tu fais tout en VBA soit tu passes à quelque chose de plus robuste DotNet (C# de préférence, éventuellement VB.Net si tu es allergique aux points virgules🙂 ) et tu fais tout avec 1 seul langage. Faire du DCL pour avoir de joli interface, ça ne fonctionne pas ou bien au prix d'effort "quasi insurmontable" Olivier
  10. Olivier Eckmann

    ChatGPT

    Bonjour, Je n'y connais rien, donc je vais dire des bêtises, mais tant pis, je me lance. Si j'ai tout bien compris, l'IA apprend à partir de données (grandes quantités d'info). Ces informations sont-elles contrôlées par les humains pour les valider, ou bien est-ce qu'elle pioche toute seule dans tout ce qui existe sur internet, réseau sociaux... Car dans ce cas, on sait qu'il y a beaucoup de fake news relayées par les réseaux sociaux : la dernière en date qui m'a assis par terre "1 jeune sur 6 croit que le terre est plate" : https://www.europe1.fr/societe/la-terre-est-plate-les-contreverites-scientifiques-gagnent-du-terrain-chez-les-jeunes-4164999 Si l'IA se base sur ces informations pour se "construire" est-ce qu'un jour si je lui demande la forme de la terre, elle risque de me répondre que la terre est plate? A partir de quand un humain saura que c'est une erreur? Dans quelque années, un jeune qui n'aura "appris/vécu" que grâce à l'IA, n'aura plus aucune culture/connaissance pour démêler le vrai du faux? Si un humain publie un texte (ou une information) généré par l'IA, est-ce qu'elle va les utiliser comme des données "humaines" pour apprendre? Donc elle apprend de ce qu'elle produit elle-même? Ca me laisse perplexe. Olivier
  11. Salut @Steven, C'est ça que tu veux? Olivier BLOCS_AVEC_ATT_COUL_FORCEES.dwg
  12. Bonjour, Il y a cette discussion à voir : https://cadxp.com/topic/41480-dessiner-un-pavage-en-arc-de-cercle/ Olivier
  13. Bonjour, Dans ton espace Dessin, tu n'as aucun menu affiché, seulement les onglets du ruban. Ci-joint la vidéo pour les remettre en place : https://autode.sk/3WSrPKX Olivier
  14. Bonjour, Pour les points 2 (et peut-être 3), à la ligne de commande, taper MAPIOPTIONS (attention, il y a bien un i entre MAP et OPTIONS) Puis décocher la dernière option (sélection d'image par Maj+click) dans l'onglet préférences Olivier
  15. Bonjour, Le nom de la XRef correspond par défaut au nom du DWG, par contre, on peut la renommer comme on le veut. Donc : Nommer la XREF n°1 par exemple XREFV1, puis faire son état de calque et l'exporter en .LAS Renommer la XREFV1 en XREFV0, puis la seconde XRef en XREFV1, importer le LAS Renommer XREFV1 en XREFV2 Renommer XREFV0 en XREFV1 Olivier
  16. Bonjour, Jamais rencontré ce problème, mais tu peux éventuellement mettre la variable SAVETIME dans la liste des variable à suivre, comme ça tu auras une notification quand elle change et tu pourras peut-être l'associer à une commande ou une action spécifique. Olivier
  17. Bonjour, Dans la barre d'assainissement, dernier menu déroulant. Olivier
  18. Bonjour, Tu as Cov3D / Visualisation du relief / Création maillage régulier. Ca permet de créer un MNT carré à la taille de grille souhaitée. Olivier Eckmann
  19. Olivier Eckmann

    Liseuse / Viewer REVIT

    Salut @GEGEMATIC, A priori si tu utilises Revit en mode viewer, pas de souci, tu peux installer la version que tu veux, sans être en infraction sur ta licence 2021. Olivier
  20. Olivier Eckmann

    Archive

    Bonjour, Dans cet article, on trouve la routine pour sélectionner tous les groupes : https://adndevblog.typepad.com/autocad/2012/05/obtaining-group-names-as-a-list-using-autolisp.html Dans cette discussion (message 5), il y a la fonction selgrp qui permet de sélectionner tous les objets d'un groupe donné : https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programmatically-find-a-group-s-quot-insert-quot-point/td-p/7311913 En combinant les 2, ça doit le faire. Olivier
  21. Je ne sais pas si c'est la capture d'écran qui a été déformée, mais les textes ont l'air écrasé en largeur et les cercles ressemblent à des ellipses verticales. C'est quoi la résolution? Conforme à l'écran? Olivier
  22. Comme ça, je pense que tu es sur un écran 4K avec une police à 125%. Je crois que la version 2018 ne prenais pas en compte les écrans 4K. Olivier
  23. Bonjour, Avec la version 2023, 2 commandes françaises ont été modifiées, mais pas dans le PGP. POLYLIGN est devenue POLYLIGNE (avec un E à la fin) DECOMPOS est devenu DECOMPOSER (avec ER à la fin) Olivier
  24. Olivier Eckmann

    Archive

    Ca ressemble à de l'IA via ChatGPT qui génère du Lisp ou autre langage via l'analyse des programmes. En général, ça fait n'importe quoi, et ensuite comme ça ne fonctionne pas, on retrouve les demandes sur les forums pour corriger le code. Olivier
  25. Bonjour @bonuscad, Avec la commande ARX, puis GROUPE, tu as la liste des groupes de commandes déclarés dans les ARX. Avec la commande ARX, puis COMMANDES, tu as la liste des commandes définies par groupe (précédemment vus). En chargeant les ARX 1 par 1, tu devrais pouvoir récupérer le(s) groupe(s) de commande supplémentaires, puis les commandes définies dans ce groupe. Je en sais pas si Covadis peut-être utilisé en mode console, mais si tu tapes le nom de l'arx en ligne de commande, cela te donne la liste de toutes les commandes définies dans cet ARX. C'est bien pratique. Olivier
×
×
  • 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é