SF.Designer Posté(e) le 1 mai 2019 Posté(e) le 1 mai 2019 Bonjour a tous, Je me tourne vers vous après plusieurs jours de recherches et de tests, car je bloque sur le sujet cité en objet. J'aimerais pouvoir développer sur mon ordinateur personnel des fonctions (clé USB) et ensuite les mettre en place sur les ordinateurs de mon travail, sachant que les ordinateur de mon travail sont en partie connectés sur un serveur (ordinateur fixe) et d'autre ordinateur non connectés sur ce serveur (ordinateur portable). Donc les chemins d'installation de mes fonctions seront différents dans les trois cas (ordinateur personnel USB, ordinateur fixe serveur, ordinateur portable). J'aimerais a l'instar des fonctions "dwgprefix" en lisp ou "%~dp0\" en batch, que mes lisp détectent automatiquement le dossier ou ils se trouvent pour ensuite stocker ce chemin dans un variable (dossierlispcourant) afin d’éviter de programmer en dur les chemins d’accès. Exemple : au lieu d'avoir dans mon lisp "W:\\Etudes\\Batch\\BatchPrint\\PLTNOIR.bat", avoir (strcat "dossierlispcourant" "PLTNOIR.bat") J'avais pensé passer par l’écriture dans la base de registre avec un fichier batch, par exemple : "REG ADD "HKEY_CURRENT_USER\Environment" /v BatchPrint /d "%~dp0\" /f"et ensuite récupérer cet valeur dans ma variable (dossierlispcourant) avec par exemple (vl-registry-read "HKEY_CURRENT_USER\\Environment" "batchprint") qui me récupère bien le chemin D:\\@SF\\Autocad\\Bat\\BatchPrint\\ (qui est mon dossier courant d'ou se lance le Batch sur mon USB). Par quel moyen puis je passer pour simplifier cela ? Merci d'avance a vous tous Exemple de lisp que je souhaite automatiser: BASE: (defun c:TextSCHME () (setq des (vla-open (vla-get-documents (vlax-get-acad-object)) "W:\\Etudes\\LSP\\Blocs\\TexteSCHME.dwg")) (princ) ) (princ) RESULTAT FINAL QUE JE SOUHAITE : (defun c:TextSCHME () (setq des (vla-open (vla-get-documents (vlax-get-acad-object)) (strcat "dossierlispcourant" "TexteSCHME.dwg"))) (princ) ) (princ)
(gile) Posté(e) le 1 mai 2019 Posté(e) le 1 mai 2019 Salut, Dans la mesure où tu ne peux pas utiliser le serveur comme stockage unique pour tous les postes, pourquoi ne pas utiliser le même chemin en local pour tous les postes ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
SF.Designer Posté(e) le 1 mai 2019 Auteur Posté(e) le 1 mai 2019 Salut,Dans la mesure où tu ne peux pas utiliser le serveur comme stockage unique pour tous les postes, pourquoi ne pas utiliser le même chemin en local pour tous les postes ? Bonjour maître Gilles (oue c'est de la lèche comme a l’école hehehe) Le but de cette demande étant surtout de pouvoir programmer chez moi mes programmes lisp sur ma clé usb ou sur mon pc, puis de pouvoir installer dans un quelconque dossier les programmes lisp et que ce dossier soit reconnu automatiquement. Le seul avantage du serveur est que cela me permet d'installer rapidement sur pas mal de PC le Fichiers de personnalisation partiels avec un simple lisp a glisser dans autocad. PS: Oui je me suis un peu étalé sur les différentes installations...
(gile) Posté(e) le 1 mai 2019 Posté(e) le 1 mai 2019 Regarde les fonctions setenv et getenv qui permettent d'écrire et de lire facilement une valeur de type chaîne dans :HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\RXX.X\ACAD-XXXX:XXX\FixedProfile\General Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
SF.Designer Posté(e) le 1 mai 2019 Auteur Posté(e) le 1 mai 2019 Merci de te pencher sur mon cas déjà...J'ai essayé de regarder les possibilités avec setenv, mais cela ne me permet pas de détecter automatiquement le dossier d’exécution du lisp ou cuix avec mnl, ou alors je suis vraiment passé a coté d'un truc.Cela m'oblige a le déclarer en "dur". Je crois que je vais passer par un cuix principal avec un mnl, qui appelera mes autres cuix avec mnl dans lequel je vais créer en dur tout les chemins de mes dossiers et sous dossiers ou se trouvent mes programmes. Je n'arrive pas a trouver de solution automatique comme "dwgprefix" en lisp ou "%~dp0\" en batch !!!
SF.Designer Posté(e) le 1 mai 2019 Auteur Posté(e) le 1 mai 2019 Petite précision : cela ne me dérange pas si je dois passer par un autre langage de programmation, quitte a devoir m'auto-former, afin d’exécuter cette seul fonction de détection automatique du chemin d’exécution de mon lisp.
(gile) Posté(e) le 1 mai 2019 Posté(e) le 1 mai 2019 Je ne comprends pas ce que tu veux dire par "solution automatique". DWGPREFIX renvoie le dossier dans lequel le fichier a été enregistré ce chemin est donc bien "écrit en dur" au moment où tu enregistres le dessin. Pour le déploiement d'applications, Autodesk offre, depuis la version 2012, le mécanisme Autoloader qui permet de charger automatiquement des applications (LISP, .NET, ObjectARX), des fichiers de personnalisation (CUIX), de déclarer des chemins de recherche, et depuis quelques verions, de définir des variables système.Voir ce sujet complet (en anglais) ou les paragraphes liés à Autoloader dans celui-là plus succins (en français). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
GEGEMATIC Posté(e) le 6 mai 2019 Posté(e) le 6 mai 2019 Salut,a une époque, PowerClic pouvait être lancé depuis une clé USB,en utilisant un "lanceur" Autocad, qui cherchait les Autocad dans le regsitre, tout en lisant une clé "lancé depuis".J'avais bricolé ça en C, en copiant des ligne de codes ça et là.Puis ça ne fonctionnait plus, et j'ai lâché l'affaire.Dans ton cas, je pense qu'un dwg sur la clef, accompagné d'un acaddoc.lsp, qui s'exécute avec un propagate du cheminça devrait pouvoir le faire (le code ne s'exécute qu'une fois, si la variable n'est pas initialisée)a+gégé ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
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