lenoil Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 salut à tous, est-il possible de pouvoir ouvrir un document pdf en utilisant une commande lisp et que l'utilisateur puisse le visualiser ? Merci
bonuscad Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 Sans avoir fait l'essai, je pense que oui. Il faut éditer le fichier AutoCAD.PGP et rajouter dans la section "; Exemples de commandes externes pour Windows" la commande appropriée. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
zebulon_ Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 J'ai eu une question similaire, mais pour ouvrir un document dwf.J'ai utilisé la commande dos_execute, issue DOSLIB http://www.mcneel.com/download.htm (if (not (dos_execute (strcat "DwfViewer " DWFNAME)))(alert "Pour visualiser le fichier\nil faut installer\nExpressViewer\net rajouter le chemin d'installation\ndans les chemins de recherche par défaut")) Il suffirait de remplacer DwfViewer par AcroRd32 et DWFNAME par le nom du fichier pdf à ouvrir. Il faut aussi, je pense, rajouter le répertoire d'installlation de l'acrobate reader dans les chemins de recherche par défaut d'autocad, sinon le dos_execute risque de ne pas trouver le programme externe à exécuter. Il y a peut être quelque chose d'équivalent en Visual LISP ? Amicalement Zebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
lenoil Posté(e) le 21 septembre 2005 Auteur Posté(e) le 21 septembre 2005 En essayant le startapp du autolisp je n'arrive pas à faire décoller tout ça: (startapp "\"C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe\"" "monfichier.pdf") j'ai l'impression que les espaces dans le nom du fichier exe ne passe pas .... Avez vous la même erreur ?Pouvez vous faire un test ? Merci car je suis bloqué et je ne souhaite pas utilisé un api externe pour l'instant
lenoil Posté(e) le 21 septembre 2005 Auteur Posté(e) le 21 septembre 2005 Excusez moi j'avais oublié un test parmi tout ceux que j'avais fait la réponse est (startapp "\"c:\\program files\\Adobe\\Acrobat 7.0\\reader\\AcroRd32.exe\"" "c:\\mondoc.pdf") Merci encore
zebulon_ Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 ben voilà, STARTAPP.Je pensais bêtement que, comme quelqu'un s'était donné la peine de faire une fonction DOS_EXECUTE, elle n'existait pas dans le lisp. If an argument has embedded spaces, it must be surrounded by literal double quotes. For example, to edit the file my stuff.txt with Notepad, use the following syntax: Command: (startapp "notepad.exe" "\"my stuff.txt\"") Eh oui, comme il y a un espace entre Acrobat et 7.0, c'est un peu plus compliqué. Et maintenant, on se dit que si demain tu installes Acrobat reader 8.0 ou si quelqu'un n'a que la version 5, ça ne marchera plus.Le top serait de faire trouver le fichier exécutable associé par défaut à une extension .pdf (s'il existe) et lancer celui-là, peu importe sa version et l'endroit où il est installé. C'est possible ? Amicalement Zebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
bonuscad Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 Voilà quelque lignes adapté à ta version Acrobat (defun c:read_pdf ( / id_file) (setq id_file (getfiled "Sélectionner un fichier PDF" "" "pdf" 16)) (startapp "C:\\Program Files\\Adobe\\Acrobat 7.0\\Reader\\AcroRd32.exe" id_file) (prin1)) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
rebcao Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 Même sans LISP ça marche... _Ai_STARTAPP pour LT ou START pour la complète... exemple : START (entrée) C:\DocTechnique\Folio01.PDF (entree) et le fichier s'ouvre directement avec l'appli par défaut ! Il suffit de se créer une simple Macro ! Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
zebulon_ Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 Et si on fouille un peu dans les registres, ça pourrait donner ça... (defun c:read_pdf ( / id_file VERSION CHEMIN) (setq VERSION (car (vl-registry-descendents "HKEY_LOCAL_MACHINE\\SOFTWARE\\ADOBE\\Acrobat Reader"))) (setq CHEMIN (vl-registry-read (strcat "HKEY_LOCAL_MACHINE\\SOFTWARE\\ADOBE\\Acrobat Reader\\" VERSION "\\InstallPath"))) (setq id_file (getfiled "Sélectionner un fichier PDF" "" "pdf" 16)) (startapp (strcat CHEMIN "\\AcroRd32.exe") id_file) (prin1)) Chez moi, ça marche avec la version 7. La question est de savoir si la structure du registre est, était et restera la même pour toutes les versions. Amicalement Zebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
zebulon_ Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 Start, c'est encore mieux. Et en lisp, ça pourrait donner : (defun c:read_pdf ( / id_file) (setq id_file (getfiled "Sélectionner un fichier PDF" "" "pdf" 16)) (command "_start" id_file) (prin1)) sauf quand il y a un espace dans le nom du fichier... Merci pour le tuyau, rebcao Amicalement Zebulon_ [Edité le 21/9/2005 par zebulon_] C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
bonuscad Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 Zebulon Ta précédente solution fonctionne mieux.avec start, s'il y a des espaces dans le nom du dossier ou le nom du fichier, ça plante! Ou alors changer avec:(command "_start" (strcat "\"" id_file "\"")) [Edité le 21/9/2005 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
zebulon_ Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 Je viens de m'en appercevoir aussi :mad: Mais je pense qu'avec des guillemets supplémentaires, je sais pas encore comment, on devrait pouvoir s'en sortir Amicalement Zebulon_ Voilà, maintenant je sais. Voir ci-dessus... :) [Edité le 21/9/2005 par zebulon_] C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
zebulon_ Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 euhhh, ben ça a pas l'air de marcher avec les "\" supplémentaires ?.. C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
bonuscad Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 C'est pas "\" mais "\"" Le slash sert à introduire le caractère spécial guillemet et les guillemets supplémentaires sont là pour dire que c'est une chaine de caractère. Mais il est possible (si syntaxe correct) que sous XP cela soit mal interprété. Personellement je préfère ta 1ere solution qui évite d'avoir une fenêtre DOS qui souvre temporairement. [Edité le 21/9/2005 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
zebulon_ Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 Ma syntaxe est correcte et je suis sous xp. J'ai essayé avec SHELL et là, ça marche. (defun c:read_pdf ( / id_file) (setq id_file (getfiled "Sélectionner un fichier PDF" "" "pdf" 16)) (command "_shell" (strcat "\"" id_file "\"")) (command "_shell" "exit") (prin1)) Mais cela ouvre temporairement une antique fenêtre DOS, et je pense également que l'utilisation du STARTAPP est plus propre, quitte à fouiller un peu dans les registres.Sauf que, si par exemple l'éditeur d'un logiciel s'amuse à changer de structure de registre ou même à changer le nom du fichier exécutable d'une version à l'autre, dans ce cas la deuxième solution est préférable.Par exemple, si vous installez une version autocad 2004, vous aurez un dwf viewer qui ne s'appelle pas DwfViewer.exe, mais ExpressViewer.exe (ou quelque chose comme ça, je ne sais plus puisque j'ai installé une mise à jour depuis) et là le lisp qui utilise startapp risque un jour de ne plus marcher si d'aventure demain DwfViewer.exe s'appelle DwfViewer32.Exe Amicalement Zebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
Patrick_35 Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 Bonjour,C'est cette solution qui est à mon sens la plus propre et la plus complèteJ'ai repris le code de zebulon_ en y ajoutant deux conditions et ça fonctionne aussi pour la version 6 @+(defun c:read_pdf ( / id_file VERSION CHEMIN) (if (setq VERSION (car (vl-registry-descendents "HKEY_LOCAL_MACHINE\\SOFTWARE\\ADOBE\\Acrobat Reader"))) (progn (setq CHEMIN (vl-registry-read (strcat "HKEY_LOCAL_MACHINE\\SOFTWARE\\ADOBE\\Acrobat Reader\\" VERSION "\\InstallPath"))) (if (setq id_file (getfiled "Sélectionner un fichier PDF" "" "pdf" 16)) (startapp (strcat CHEMIN "\\AcroRd32.exe") id_file) ) ) (princ "\nAcrobat Reader n'est pas installé") ) (prin1) ) Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
zebulon_ Posté(e) le 21 septembre 2005 Posté(e) le 21 septembre 2005 Et maintenant, je voudrais faire la même chose pour DwfViewer... Va trouver dans les registres où c'est installé :casstet: C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
x13 Posté(e) le 22 septembre 2005 Posté(e) le 22 septembre 2005 Voiçi une partie du lisp de mon fichier d'aide de mon menu personnalisé (defun OU () (if (not (setq OUT (findfile "menu_express_eric_guelen.pdf") ) ;_ end of setq ) ;_ end of not (alert "Désolé - Fichier Outils Express manquant") (progn (startapp "C:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe" OUT) (c:estbaide) ) ) ;_ end of if (princ) ) ;_ end of defun Fonctionne très bien sur Autocad 2000 et win 98 ;)
x13 Posté(e) le 22 septembre 2005 Posté(e) le 22 septembre 2005 ;;; Exemples de commandes externes pour Windows;;; Explorer=Windows explorer,Excel=Microsoft Excel,Winword=Microsoft Winword,http:\\www.=adresse web ;;; Voir aussi la fonction AUTOLISP (startapp) pour une méthode alternative.;;; Permet d'appeler d'autres programmes, utilitaires DOS ou WINDOWS au travers AutoCad ;;; (sans sortir d'AutoCad) EXPLORER, START EXPLORER, 1,,WRITE, START WRITE, 1,,ACAD, START AutoCAD, 1,,EXCEL, START EXCEL, 1,,BD, START EXPLORER r:\acad\misc\library\,1NOTEPAD, START NOTEPAD, 1,*Fichier à éditer:,TDA, START WINWORD c:\mydocs\tcards3.doc,1TCD, START EXCEL c:\mydocs\tcards3.xls,1PBRUSH, START PBRUSH, 1,,TC, http://taylor3/intranet/lisp/Taacad.html,0 helpme,start myhelp.chm, 1,, GRPHELP, STARTAPP"hh" "J:\\ESTB\\Grplayer.chm";;;Dans un menu [Convertisseur d'unités] (Startapp "G:/Esbpcs/utils/ESBUnitConv.exe") ;;;Dans une macro activant un bouton ^C^C^P(startapp "explorer" (strcat "/e," (getvar "dwgprefix"))) ;;; Dans une routine LISP(defun C:DIRR ()(COMMAND ".BROWSER" (GETVAR "DWGPREFIX"))) ;;; (command "start" (findfile "Myfile.pdf))
lenoil Posté(e) le 22 septembre 2005 Auteur Posté(e) le 22 septembre 2005 Merci les gars pour toutes vos suggestions. A la limite faut presque mieux faire un fichier ini qui demande à l'utilisateurson fichier d'installation d'acrobat => au moins on est tranquille et je me fais une petite fonction qui lit ce fichier ini ....
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