Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 24/07/2024 dans Messages

  1. Bonjour, Tout à fait d'accord avec vous, inutile de vouloir du code sans connaitre le code. Par contre, voici une exemple de prompt productif à mes yeux. [autolisp] Bonjour, met toi à la place d'un expert Autocad et Autolisp et dit moi comment on se sert de la fonction vl-catch-all-error-p. Merci. Essayez.
    1 point
  2. Merci à Luna pour ces explications....en effet je suis en anglais mais pas les métreurs que je supervise à qui je vais envoyer ce lisp au final. @didier je suis "encore" étonné de l orgueil de certains pourvu de quelques pouvoirs que ce soit.... votre message est méprisant! Si effectivement vous êtes pour le fonctionnement du cerveau humain je vous invite à utilisez le votre et revoir votre technique de modération. Il est clair qu'en terme d'apprentissage vous vous rapprochez d'une vision très "éducation nationale", la même pour tous ! Sachez que Chat GPT est, depuis mon avis de novice de 2 mois d' expérience sur Autocad (imaginez en lisp), nul.... il n est pas bon en syntaxe ni en logique, on lui demande quelque chose il change tout et même des éléments fonctionnels qui en deviennent mais c est une base avec laquelle on peut apprendre ne vous en déplaise. Il faut diversifier ses sources d'apprentissages bonnes et mauvaises.... Le message de Luna va m aider et je vais l analyser et retravailler mon lisp seul ou pas 😉 PS : J'irai quand même faire un tour sur votre site https://www.da-code.fr/😉 et merci pour le partage de vos connaissances
    1 point
  3. Coucou, Alors dans un premier temps, je remarque que ton ChatGPT ne connaît pas le principe des commandes/options internationales (ce qui peut poser problème si ton AutoCAD n'est pas anglais...). Pour cela, il suffit de rajouter un underscore _ devant les noms de commandes et/ou options (certaines commandes/options avaient déjà un underscore dans ton programme). Ci-dessous le programme avec les options internationales (j'ai ajouté en commentaire ce que j'ai ajouté dans la ligne) : (defun c:dxfauto (/ docName docPath dxfName cmd ss layoutName pdfFile allObjects) ;; Sauvegarder la valeur actuelle de CMDECHO (setq cmd (getvar 'cmdecho)) ;; Désactiver l'affichage des commandes (setvar 'cmdecho 0) ;; Enregistrer le fichier DWG en cours (command "_.QSAVE") ;; Mettre le calque COTATIONS en arrière-plan (setq ss (ssget "_X" (list (cons 8 "COTATIONS")))) ;;; _ (if ss (command "_.DRAWORDER" ss "" "_B") ;;; _ (princ "\nAucun objet trouvé sur le calque COTATIONS.") ) ;; Obtenir le nom et le chemin du fichier DWG ouvert (setq docName (getvar "DWGNAME")) (setq docPath (getvar "DWGPREFIX")) ;; Imprimer le layout "AVEC COTES" en PDF en couleur (setq layoutName "AVEC COTES") (if (member layoutName (layoutlist)) (progn (setq pdfFile (strcat docPath (vl-filename-base docName) "_AVEC_COTES.pdf")) (setvar 'CTab layoutName) (command "_-PLOT" ;;; _ "_Y" ;;; _ "" "DWG To PDF.pc3" "ISO_A4_(210.00_x_297.00_MM)" "_Millimeters" ;;; _ "_LANDSCAPE" ;;; _ "_N" ;;; _ "_E" ;;; _ "_F" ;;; _ "_C" ;;; _ "_Y" ;;; _ "" ;; Aucun style de tracé (pour couleur) "_Y" ;;; _ "_N" ;;; _ "_N" ;;; _ "_N" ;;; _ pdfFile "_N" ;;; _ "_Y" ;;; _ ) ) (princ "\nLe layout 'AVEC COTES' n'existe pas.") ) ;; Se positionner sur le calque COUPES BRUTES (command "_-layer" "_Set" "COUPES BRUTES" "") ;; Supprimer les calques spécifiés avec confirmation automatique (command "_-laydel" "name" "COTATIONS" "" "_Y") ;;; _ _ (command "_-laydel" "name" "INDICATIONS" "" "_Y") ;;; _ _ (command "_-laydel" "name" "PROLINER" "" "_Y") ;;; _ _ (command "_-laydel" "name" "CADRE" "" "_Y") ;;; _ _ ;; Revenir au layout "Model" (setvar 'CTab "Model") ;; Sélectionner tous les objets visibles (setq allObjects (ssget "_X")) ;; Exploser tous les objets sélectionnés (if allObjects (progn (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex allObjects))) (command "_.EXPLODE" ent "") ) ) ) ;; Créer le nom du fichier DXF (setq dxfName (strcat docPath (vl-filename-base docName) ".dxf")) ;; Enregistrer le fichier en DXF (command "_.DXFOUT" dxfName "16") ;; Ajouter un délai pour s'assurer que le fichier est bien enregistré (vl-cmdf "_.delay" 1000) ;; Ouvrir le fichier DXF dans un nouvel onglet en utilisant l'API ActiveX/COM (setq acadApp (vlax-get-acad-object)) (setq acadDocs (vla-get-documents acadApp)) (vla-open acadDocs dxfName) ;; Restaurer la valeur initiale de CMDECHO (setvar 'cmdecho cmd) ;; Afficher un message de confirmation (princ (strcat "\nFichier enregistré sous : " dxfName)) (princ) ) ;; Appel de la fonction principale (c:dxfauto) Ensuite concernant ta demande A ma connaissance un LISP n'est pas en mesure de s'exécuter d'un fichier à un autre. Donc si tu exécutes ton LISP dans ton DWG, et que tu ouvres un autre fichier pour le rendre courant (via le LISP) alors le programme continuera de s'exécuter dans ton DWG initial il me semble (ou bien il met fin à son exécution, je ne sais pas exactement). Donc sur le principe, il n'est pas possible de faire ce que tu souhaites en LISP, c'est-à-dire à partir d'un DWG, créer un DXF pour ensuite apporter des modifications dans ce nouveau fichier DXF. En revanche (bien que je n'y connais rien), je pense que ce genre de choses peuvent se faire via un script (donc externe à AutoCAD) pour ouvrir un DWG, faire les modifications DWG, créer un fichier DXF pour ensuite exécuter la suite du programme sur ce fichier. Enfin, pour cette demande si jamais tu as des commandes qui requiert des validations imprévues (cela ne fonctionne pas si tu dois saisir des options différentes cependant), tu peux vérifier la valeur de la variable "CMDACTIVE" (cf. >>ici<<) et l'intégrer dans une boucle comme ceci par exemple : (command "_.EXPLODE" ent "") (while (= 1 (logand 1 (getvar "CMDACTIVE"))) (command "") ) Et si tu veux filtrer ton jeu de sélection pour 3 calques uniquement alors il faut l'intégrer à ton (ssget) via le code DXF 2 comme ceci (tu remarqueras l'utilisation de la virgule , pour séparer 2 éléments au sein d'une chaîne de caractères) : (setq allObjects (ssget "_X" (list (cons 8 "Calque1,Calque2,Calque3")))) Désolée je manque de temps pour regarder ton problème plus en détail... Bisous, Luna
    1 point
  4. Bonjour @Reyoh j'aime comprendre comment fonctionne un outil avant de m'en servir Il y a des gens qui font leur possible pour que ceux qui veulent apprendre trouvent matière à ça. Auto-promo éhontée dans ma signature. Amicalement
    -1 points
×
×
  • 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é