Communauté
AutoCAD – tous produits - Français
Bienvenue sur les forums AutoCAD d’Autodesk. Partagez vos connaissances, posez des questions, et explorez les sujets AutoCAD populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

AutoCAD : Lisp etransmit + avec publication en PDF joint au etransmit

14 RÉPONSES 14
RÉSOLU
Répondre
Message 1 sur 15
YAYA.SADA
264 Visites, 14 Réponses

AutoCAD : Lisp etransmit + avec publication en PDF joint au etransmit

Bonjour,

Je tente de réaliser un lisp qui pourrait me publier mon fichier dwg en en PDF et le joindre au etransmit.

j'ai fait ça

mais j'ai un message nombre d'arguments insuffisants.

 

une personne pourrait m'aider à résoudre ce problème svp?

merci d'avance


Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
Lisp etramit + avec publication en PDF joint au etransmit

14 RÉPONSES 14
Message 2 sur 15
Luna1
en réponse à: YAYA.SADA

Coucou,

En l'état je ne peux pas t'aider car il me manque trop d'infos :
 - Quelle est la définition de ta fonction (filep) ? Car ce n'est pas une fonction AutoLISP donc déjà, impossible de tester quoi que ce soit.
 - quelle valeur renseignes-tu pour l'argument (= 'dwgname') de ta fonction ? Est-ce un (getvar 'DWGNAME) ?

 - La commande "_ETRANSMIT" ouvre une boîte de dialogue, donc ton programme n'ira pas plus loin. Si tu veux la version sans boîte de dialogue c'est la commande "_-ETRANSMIT".
 - A chaque fois qu'on lance une commande ETRANSMIT, chat demande si l'on souhaite enregistrer le dessin avant de faire un Etransmit, or ton programme ne prends pas cette demande en compte donc tu ne réponds pas aux questions correctement avec le programme (il faut en premier lieu répondre "Oui").

 - Pour moi un Etransmit créer un .zip donc à quoi correspond ton .etx ?
 - Idem, si tu créer un module de transfert alors cela ouvre une boîte de dialogue pour sélectionner l'emplacement du fichier. Si tu veux palier à ce problème il te faut mettre FILEDIA à 0

(setvar "FILEDIA" 0)

Et chat n'est que le début...
Loin de moi l'idée de critiquer mais, as-tu réellement écrit ce programme de toi même ou bien est-ce un programme pondu par le biais d'une IA ? Car dire "mais j'ai un message nombre d'arguments insuffisants." en voyant le nombre d'erreurs à chaque ligne, c'est sûrement parce que tu n'as pas programmé cette fonction.

Donc le plus simple serait d'avoir les données d'entrées pour que l'on crée nous-même un programme qui réponde à ton besoin plutôt que d'essayer de débugger un programme d'IA.

Désolée si je semble aggressive, ce n'est pas mon but évidemment 🙂

 

Bisous,
Luna


Message 3 sur 15
YAYA.SADA
en réponse à: YAYA.SADA

Merci pour ta réponse, en faite, j'ai sollicité une IA pour créer ce lisp, je l'avais déja fait auparavant et cela avait fonctionné

en fait je souhaiterai créer un lisp qui m'exporte le fichier autocad en PDF et me l'intègre dans un etransmit.

 

  1. Vérification du fichier DWG:

La fonction utilise la fonction filep pour vérifier si le fichier DWG spécifié par dwgname existe. Si le fichier n'existe pas, un message d'erreur est affiché.

  1. Définition des variables:

Deux variables sont définies :

  • pdfname : Le nom du fichier PDF généré, concaténant le préfixe défini par dwgprefix, le nom du fichier DWG, le nom de la table de couleurs (ctab) et l'extension .pdf.
  • etransmitname : Le nom du fichier eTransmit généré, suivant la même logique que pdfname mais avec l'extension .etx.
  1. Vérification des variables:

La fonction vérifie si les variables dwgprefix et ctab sont définies. Si une des deux variables est absente, un message d'erreur est affiché.

  1. Publication du DWG en PDF:

La commande _EXPORTER est utilisée avec les options "_PDF" et "T" pour exporter le fichier DWG au format PDF avec le nom spécifié par pdfname.

  1. Création du fichier eTransmit:

La commande _etransmit est utilisée avec les options "_créer" et "N" pour créer un nouveau fichier eTransmit avec le nom etransmitname.

  1. Ajout du PDF au fichier eTransmit:

La commande _etransmit est utilisée avec l'option "_ajouter" pour ajouter le fichier PDF pdfname au fichier eTransmit.

  1. Enregistrement et fermeture du fichier eTransmit:

La commande _etransmit est utilisée avec les options "_enregistrer" et "_fermer" pour enregistrer et fermer le fichier eTransmit.

  1. Affichage de messages de confirmation:

Deux messages de confirmation sont affichés :

  • Le nom du fichier PDF généré.
  • Le nom du fichier eTransmit généré.
Message 4 sur 15
Luna1
en réponse à: YAYA.SADA

C'est bien ce qu'il me semblait... Il faut savoir que l'AutoLISP n'est pas suffisamment commun pour permettre aux IA de faire le moins d'erreurs possible. Autrement dit, c'est un miracle quand une IA est capable de produire une programme LISP qui marche. Et même s'il marche, très souvent le programme possède des failles que les utilisateurs ne voit pas forcément (jusqu'à ce qu'ils se trouvent dans une situation spécifique et le programme plante).

Je ne comprends pas la suite de ton message cependant. Est-ce là ce que tu as demandé à l'IA pour le paramétrage ou bien est-ce ce que les explications de l'IA sur le déroulement du programme réalisé par ses soins ?

Le fichier DWG que tu souhaites publier, c'est bien ton fichier DWG courant n'est-ce pas ? Donc par "vérifier le fichier DWG" c'est vérifier si ton fichier DWG a été enregistré ou non (donc (getvar "DWGTITLED") suffit).

Que faut-il faire si les documents existent déjà ?

 

Je regarderais chat quand j'aurais un peu de temps 🙂

 

Bisous,
Luna

Message 5 sur 15
YAYA.SADA
en réponse à: Luna1

oui pour les 2 choses que je t'ai ecrite c'est bien l'IA et oui c'est bien le fichier courant que je souhaite exporter en PDF et intégrer en PDF, s'il existe déja, l'écraser

Message 6 sur 15
Luna1
en réponse à: YAYA.SADA

Coucou,
Il y a un point que je ne comprends pas :

(setq pdfname (strcat (getvar "dwgprefix") "pdf\\" dwgname "_" (getvar "ctab") ".pdf"))
; ...
(command "_-EXPORTER" "_PDF" "T" pdfname)

Le "T" correspond à l'option "Tout" (c'est-à-dire que tu va imprimer toutes tes présentations dans un fichier PDF unique), donc pourquoi faut-il renseigner le nom de la présentation courante (getvar "CTAB") dans le nom du PDF ? Car si je ne dis pas de bêtises, ton fichier PDF contiendra plusieurs présentations, donc le (getvar "CTAB") ne fait aucun sens ici...


@YAYA.SADA  a écrit :
pdfname : Le nom du fichier PDF généré, concaténant le préfixe défini par dwgprefix, le nom du fichier DWG, le nom de la table de couleurs (ctab) et l'extension .pdf.

Et pardonne-moi mais cela ne m'explique absolument rien (notamment parce que "CTAB" n'a strictement rien à voir avec la table de couleurs ??) donc serait-il possible de m'expliquer avec tes mots les noms de fichiers et leur emplacement respectif pour que je sache quoi définir ?

Pour être honnête je préfère avoir tes besoins, expliqués par tes soins, plutôt qu'un texte généré par une IA qui ne sait rien... >w<

Un .dwg d'exemple + nom du PDF/Etranmit correspondant serait plus que bienvenu 🙂

 

Bisous,
Luna

Message 7 sur 15
YAYA.SADA
en réponse à: Luna1

Bonjour,

 

Oui tu as raison, 1 seule fichier PDF avec toutes les présentations dedans.

T'en fait je sais ce que s'est un fichier CTB (fichier plume et couleur calque etc.). En faite, j'ai des fichiers *.dwg dans un répertoire (Ex DT5000, DT5011 etc.) je souhaiterai publier chacun de ces fichiers en PDF, qui porteront le même nom, avec bien-sûr l'extension *.PDF et créer un fichier eTransmit par fichier DWG, en y ajoutant le PDF à l'intérieur correspondant au nom du fichier DWG.

je te remercie, je sais que je ne suis pas expert en lisp je bidouille.

Merci d'avance à toi pour le temps que je te fais perdre.

 

Message 8 sur 15
Luna1
en réponse à: YAYA.SADA

Coucou,

Je n'ai pas vraiment compris ton message et je n'ai pas vraiment eut toutes les infos demandées mais essaye ceci :

(defun c:TRANSMITPUBLISH (/ *error* get-or-create-folder filedia cmdecho tilemode folder dwgname pdfname etsname)
  (defun *error* (msg)
    (setvar "FILEDIA" filedia)
    (setvar "CMDECHO" cmdecho)
    (princ msg)
  )
  (defun get-or-create-folder (str)
    (if (null (vl-file-directory-p str)) (vl-mkdir str))
    str
  )
  (setq
    filedia (getvar "FILEDIA")
    cmdecho (getvar "CMDECHO")
    tilemode (getvar "TILEMODE")
    folder (getvar "DWGPREFIX")
    dwgname (getvar "DWGNAME")
    dwgname (substr dwgname 1 (- (strlen dwgname) 4))
  )
  (if (= 1 (getvar "DWGTITLED"))
    (progn
      (mapcar 'setvar '("FILEDIA" "CMDECHO" "TILEMODE") '(0 0 0))
      (setq
        pdfname (strcat (get-or-create-folder (strcat folder "pdf\\")) dwgname ".pdf" )
        etsname (strcat (get-or-create-folder (strcat folder "etransmit\\")) dwgname ".zip")
      )
      (if (findfile pdfname)
        (command "_-EXPORT" "_PDF" "_All" pdfname "_Yes")
        (command "_-EXPORT" "_PDF" "_All" pdfname)
      )
      (command "_QSAVE")
      (if (findfile etsname)
        (command "_-ETRANSMIT" "_Create" etsname "_Yes")
        (command "_-ETRANSMIT" "_Create" etsname)
      )
      (mapcar 'setvar '("FILEDIA" "CMDECHO" "TILEMODE") (list filedia cmdecho tilemode))
      (princ
        (strcat
          "\nLes fichiers ont été créé avec succès :"
          "\n  --> " pdfname
          "\n  --> " etsname
        )
      )
    )
    (princ "\nVeuillez enregistrer le dessin dans un dossier avant d'exécuter cette commande...")
  )
  (princ)
)

En théorie (si j'ai compris le besoin) cela devrait fonctionner...

Bisous,
Luna

Message 9 sur 15
YAYA.SADA
en réponse à: Luna1

Bonjour,

je vais essayer merci

Message 10 sur 15
YAYA.SADA
en réponse à: YAYA.SADA

je viens de tester, le souci c'est que cela me créer 2 dossier dans lequel je retrouve un fichier etransmit et un autre dossier PDF, ce je souhaiterai c'est le fichier PDF s'intègre à l'intérieur du fichier ZIP.

Je sias que ce n'est pas évident

Message 11 sur 15
Luna1
en réponse à: YAYA.SADA

Coucou,

Evidemment que je crée un dossier pour chaque, car c'est les infos que tu m'as donné justement... D'où l'importance de toujours fournir TOUTES les informations telles que souhaitées de manière écrite ! Ce qui est évident pour vous ne l'est pas pour d'autres...
Je suis dans l'incapacité (pour moi) de créer un fichier PDF dans un fichier ZIP (probablement car je pense qu'un ZIP est considéré comme un fichier et non comme un dossier). Donc je te propose de simplement créer le PDF et ZIP dans le dossier dans lequel ton DWG est enregistré.

(defun c:TRANSMITPUBLISH (/ *error* filedia cmdecho tilemode folder dwgname pdfname etsname)
  (defun *error* (msg)
    (setvar "FILEDIA" filedia)
    (setvar "CMDECHO" cmdecho)
    (princ msg)
  )
  (setq
    filedia (getvar "FILEDIA")
    cmdecho (getvar "CMDECHO")
    tilemode (getvar "TILEMODE")
    folder (getvar "DWGPREFIX")
    dwgname (getvar "DWGNAME")
    dwgname (substr dwgname 1 (- (strlen dwgname) 4))
  )
  (if (= 1 (getvar "DWGTITLED"))
    (progn
      (mapcar 'setvar '("FILEDIA" "CMDECHO" "TILEMODE") '(0 0 0))
      (setq
        pdfname (strcat folder dwgname ".pdf" )
        etsname (strcat folder dwgname ".zip")
      )
      (if (findfile pdfname)
        (command "_-EXPORT" "_PDF" "_All" pdfname "_Yes")
        (command "_-EXPORT" "_PDF" "_All" pdfname)
      )
      (command "_QSAVE")
      (if (findfile etsname)
        (command "_-ETRANSMIT" "_Create" etsname "_Yes")
        (command "_-ETRANSMIT" "_Create" etsname)
      )
      (mapcar 'setvar '("FILEDIA" "CMDECHO" "TILEMODE") (list filedia cmdecho tilemode))
      (princ
        (strcat
          "\nLes fichiers ont été créé avec succès :"
          "\n  --> " pdfname
          "\n  --> " etsname
        )
      )
    )
    (princ "\nVeuillez enregistrer le dessin dans un dossier avant d'exécuter cette commande...")
  )
  (princ)
)

Désolée..

 

Bisous,
Luna

Message 12 sur 15
YAYA.SADA
en réponse à: Luna1

merci tout de même, le truc, c'est des que tu créer un fichier etransmit, et que tu as la fentre qui apparait pour te demander ou tu souhaites enregistrer les fichier, à ce moment la tu peux faire un glisser-déposer d'un fichier PDF pour qu'il te l'ajoute au zip, mais la question est "est ce qu'il y a une fonction ajouter ?" sans le glisser deposer si tu vois ce que je veux dire. la réponse est oui, mais comment faire? c'était ça le fameux "_ADD"

Message 13 sur 15
Luna1
en réponse à: YAYA.SADA

Coucou,

Je suppose que tu fais référence au bouton "Ajouter Fichiers" présent dans la boîte de dialogue ? Malheureusement (pour une raison que j'ignore), cette option ne semble pas être disponible dans la version ligne de commande pour "_-ETRANSMIT". De ce fait, je ne peux pas vraiment faire plus. Il y a les configurations mais on ne peut choisir que des configurations déjà définie hors de la commande "_-ETRANSMIT". Et je ne sais même pas si c'est une piste ou juste une impasse.
Donc en l'état et au vu de mes compétences actuelles en matière d'impression de documents, je ne peux pas faire plus.

 

Bisous,
Luna

Message 14 sur 15
YAYA.SADA
en réponse à: Luna1

oui tout à fait merci merci tout de même

c'est bien cette commande mais comme tu le dis on ne peut pas faire un add ou ajouter

en tout cas je te remercie beaucoup

 

Message 15 sur 15
patrick.emin
en réponse à: YAYA.SADA

Bonjour @YAYA.SADA 

Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton  APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Cela facilitera la navigation de nos utilisateurs qui pourront directement atteindre la solution

Sachez qui si vous avez marqué une réponse comme solution par erreur, vous pouvez annuler ce marquage en cliquant sur le menu du fil (les trois points verticaux) et choisir "pas la solution"
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums  

Autodesk Design & Make Report