Aller au contenu

DOSLIB


miamar

Messages recommandés

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)
);defun

l'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 aide

Salutations

 

Lien vers le commentaire
Partager sur d’autres sites

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

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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 password

où "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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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ée

Dans 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 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

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.

 

@+

Lien vers le commentaire
Partager sur d’autres sites

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 faire

Sii 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

Lien vers le commentaire
Partager sur d’autres sites

Salut

Juste 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 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

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

Lien vers le commentaire
Partager sur d’autres sites

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

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é