Aller au contenu

[lisp] et [pdf]


lenoil

Messages recommandés

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)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 @)

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

C'est cette solution qui est à mon sens la plus propre et la plus complète

J'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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

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

;)

Lien vers le commentaire
Partager sur d’autres sites

;;; 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\,1

NOTEPAD, START NOTEPAD, 1,*Fichier à éditer:,

TDA, START WINWORD c:\mydocs\tcards3.doc,1

TCD, START EXCEL c:\mydocs\tcards3.xls,1

PBRUSH, 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))

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é