Aller au contenu

Messages recommandés

Posté(e)

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)

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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.

Posté(e)

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

Posté(e)

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.fr

Blog: http://g-eaux.over-blog.com

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é