miamar Posté(e) le 23 octobre 2004 Posté(e) le 23 octobre 2004 Salut, Est-ce que quelqu'un a déjà travaillé avec DOSLIB pour lancer des applications DOS à partir d'autolisp?Mon besoin est le suivant : lancer une application pour décrypter des fichiers dwg initialement cryptés. Parait-il DOSLIB contient tout ce qu'il faut pour ça mais je n'y arrive pas. Regardez le code suivant : (defun c:ados () (dos_exewait "atbash2.exe" " /d dessin1.zlh" dessin1.dwg password") (princ) );defun où Atbash2.exe est le logiciel de cryptage et dessin1.zlh est le fichier crypté. Atbash2.exe et dessin1.zlh sont tous les deux dans le répertoire support, pourtant j'ai comme résultat nil. J'ai testé aussi : (defun c:ados () (setq pat (dos_search "Atbash2.exe"));cherche atbash2.exe et retourne le chemin complet (" c:\\program files\\acad2000\\support\\Atbash2.exe") (dos_exewait (strcat pat " /d dessin1.zlh dessin1.dwg password)) (princ) );defun là j'ai comme message "can't open file dessin1.zlh" Je ne comprends pas. Est-ce qu'on peut faire la même chose avec la commande "start" ou "startapp" (defun c:ados () (command "start" "atbash2.exe" "/d dessin1.zlh dessin1.dwg password") );là encore ça marche pas!!! DOSLIB contient une fonction qui crypte et décrypte les fichiers, j'ai testé ça aussi : (defun c:ados () (dos_encrypt "dessin1.dwg" "password") (princ) );defunl'ennui c'est que ça ne reconnait pas le chemin du fichier dessin1.dwg malgré qu'il est dans le dossier support. Il faut écrire tout le chemin ce qui n'est pas pratique comme ceci : (defun c:ados () (dos_encrypt "c:\\program files\\acad2000\\support\\dessin1.dwg" "password") (princ) );defun Merci pour votre aideSalutations
Tramber Posté(e) le 23 octobre 2004 Posté(e) le 23 octobre 2004 Salut Miamar. J utilise personnellement quelques fonctions de DOSLIB (pour l insertion de blocs par exemple), mais ton message est bien difficile. Qui pratique ? Il faut ajouter des infos. DOSlib est dispo ici chez MCneel (si vous lisez mon reportage sur Penguin vous en saurez un peu plus sur cette entreprise) C est tout !(message envoyé à partir d'un appareil mobile)[Edité le 23/10/2004 par Tramber](message envoyé à partir d'un appareil mobile) [Edité le 23/3/2005 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
miamar Posté(e) le 23 octobre 2004 Auteur Posté(e) le 23 octobre 2004 Salut Tramber, Moi je trouve que l'aide fournie avec DOSLIB n'est pas bien fournie, et puis il n' y a pas assez d'exemples ce qui ne facilite pas la tâche. Merci
Patrick_35 Posté(e) le 25 octobre 2004 Posté(e) le 25 octobre 2004 SalutAs tu essayé avec la commande sh ? ex : (command "sh" "dir *.* > resultat.txt") @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
miamar Posté(e) le 25 octobre 2004 Auteur Posté(e) le 25 octobre 2004 Salut Non j'ai pas testé, je connais pas. c'est pourquoi faire pour lister les fichier existants dans un répertoire?La syntaxe que j'utilise est la suivante :Atbash2.exe /d fichier.dfg fichier.dwg passwordoù "Atbash2.exe" est le logiciel de cryptage/decryptage "/d" pour decrypter "fichier.dfg" est le fichier crypté "fichier.dwg" est le fichier original "password" est le mot de passe.Quand j'utilise cette syntaxe avec la commande "Start", comme il démarre sur le répertoire courant, il ne reconnait pas les fichiers installés dans ..\Support\personal, et il me donne comme msg "can't open fichier.dfg. Merci pour votre réponse
bonuscad Posté(e) le 25 octobre 2004 Posté(e) le 25 octobre 2004 Salut, Je t'invite à regarder les fonctions Lisp suivantes, l'une d'elle résoudra peut être ton problème. (getenv "ACAD") ou autre variable d'environnement(findfile "Atbash2.exe") recherche ce fichiers dans les dossier de recherche(setcfg) et (getcfg) Voir l'aide pour plus de précision. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Patrick_35 Posté(e) le 25 octobre 2004 Posté(e) le 25 octobre 2004 Salut,Le dir est juste pour l'exemple. C'est un vieux truc de dinosaure qui revient à faire un shell dans autocad et de lancer la commande dos souhaitéeDans ton cas un (command "sh" "Atbash2.exe /d fichier.dfg fichier.dwg password") devrait fonctionner (avec un chemin complet s'il n'est pas défini dans le path pour le fichier.dfg) Et encore une chose, fait directement sur la ligne de commande sh+2 fois entrée, juste pour voir @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
miamar Posté(e) le 27 octobre 2004 Auteur Posté(e) le 27 octobre 2004 Deux contraintes : 1- le logiciel Atbash2.exe n'accepte pas lechemin complet, mais juste le nom du fichier.2- Atbash2.exe et les fichiers cryptés doivent être dans le même répertoire. quand on lance le shell, le répertoire courant est par exemple c:\program files\acad2000 quand j'écris (command "sh" "Atbash2.exe /d fichier.dfg fichier.dwg password") j'ai comme message "can't open file fichier.dfg" (mon fichier fichier.dfg est dans le répertoire support\personal, ce répertoire je l'ai déclaré dans les supprts). J'ai même fait un test en copiant le fichier Atbash2.exe et fichier.dfg dans le répertoire support, mais en vain.ce que je ne comprends pas c'est qu'il ne reconnait pas le chemin du support, c'est soit à cause du shell soit à cause de Atbash2.exe. c'est ce que j'ai dit dans mes deux messages lorsque j'ai parlé de la commande "start". En fait "sh" et "start" je crois c'est la même chose. @+
bonuscad Posté(e) le 27 octobre 2004 Posté(e) le 27 octobre 2004 Salut Je ne sais pas si ma réponse va t'aider.Toujours est-il que j'ai eu aussi un problème pour lancer une application externe en lisp depuis Autocad suivant la plateforme: windows XP/NT (NTFS) ou windows 98 ME 2000 (FAT32) sous version XP ou NT:(setq folder (substr (findfile "triangle.exe") 1 (- (strlen (findfile "triangle.exe")) 12)))(command "_shell" (strcat "triangle.exe -pcrq " "\"" folder "bonus.pol" "\""))fonctionne sous les autres version:(setq folder (substr (findfile "triangle.exe") 1 (- (strlen (findfile "triangle.exe")) 12)))(command "_shell" (strcat "\"" folder "\"" "triangle.exe -pcrq " "\"" folder "bonus.pol" "\""))donne le même résultat La diffèrence est minime mais l'interprétation est diffèrente suivant la plateforme. Je crois que tu vas être obligé de tatonner comme je l'ai fait car je n'ai pas d'explication a avancer sur ce phénomène d'interprétation sur la syntaxe du chemin fourni :mad: Voilà pour la réponse que je peux te faireSii quelqu'un a des explications plus précices, je suis tout ouie. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Patrick_35 Posté(e) le 27 octobre 2004 Posté(e) le 27 octobre 2004 SalutJuste une précision, ton prog ne travail peut être pas en 32 bits, alors comme c'est du dos, fais attention aux noms (pas plus de 8 caractères) du style c:\progra~1\.... et pas plus de 127 caractères en tout (j'ai un doute, c'est 127 ou 143, je ne sais plus) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
miamar Posté(e) le 28 octobre 2004 Auteur Posté(e) le 28 octobre 2004 Salut,J'ai trouvé une autre solution que de lancer une application externe, mais n'empeche je veux bien comprendre celà, un autre jour j'en aurait besoin. Bonuscad,je vais tester ce que tu m'as donné, je verrais, j'essaierais, j'essaierais et encore j'essaierais jusqu'à trouver la solution. Patrick_35,Atbash2.exe n'accepte pas les chemins complets et mes noms de fichiers ne dépassent pas 8 caractères. Merci à tous
Labletech Posté(e) le 2 novembre 2004 Posté(e) le 2 novembre 2004 Je rejoint Patrick_35 lorsque je dois faire appel à un programme extérieur je le lance de la manière suivante: (defun data_base () (command "shell" "cti_profiles") ) Le programme externe s'appelle dans ce cas; cti_profiles.exe . Je le pose au même endroit où se trouve le reste de mon application lisp.Dans les variables support d'Autocad, il va de soit que le dossier qui contiend tout ca est reconnu par Autocad !!. Les fichiers sont correctement retrouvés parceque mon programme externe est fabriqué par mes soins et donc que je maitrise les dossiers d'entrée et de sortie pour les fichiers manipulés .Il s'agit d'un outil de gestion de base de données développé en Visual Basic qui me permet de pointer dans plusieurs catalogues de profilés. Je sauvegarde dans un fichier *.ini les données liées aux dossiers que j'utilise pour faire fonctionner ce VB. Même si mon environnement Autocad change, le prog en VB va lire ce fichier *.ini et va donc retrouver les dossiers nécessaires à son bon fonctionnement. Inversement si dans ton prog externe les chemins ne sont pas précisés; il va vraisemblablement chercher ceux-ci là où le prog externe se trouve, et tant pis pour la casse si ca ne marche pas, le prog externe n'a aucun état d'ame à ce sujet !!SI tu ne peux pas entrer dans le source pour modifier cette contrainte tu es dans la merde !! Le pb est donc lié à Windows et à la façon dont ton prog externe a été developpé.La commande Shell d'Autocad permet de lancer un prog externe c'est tout, maintenant si ce prog a besoin d'un environnement, il faut que tu le fabriques. Si tu n'as pas le source c'est quasiment impossible !! Remarque:J'utilise shell pour être sur que ca marche sur tous les OS , cependant, Startapp marche de la même manière sur certains OS Formateur ATC Autocad - Mechanical - Inventor - Electrical
miamar Posté(e) le 3 novembre 2004 Auteur Posté(e) le 3 novembre 2004 Oui je suis arrivé à la même conclusionle programme externe est ainsi fait rien à changer. J'ai trouvé une solution alternative.Merci pour les précisions sur le "shell"Bonne continuation
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