Aller au contenu

Peut-on placer un Lisp dans le chargement automatique ?


Messages recommandés

Posté(e)

Bonjour à la Communauté.
Je cherche à savoir s'il est possible de placer un lisp dans le chargement automatique (AppLoad -> Contenu -> Fichier.lsp) depuis un autre lisp ?


Peut-être un truc avec S::STARTUP, mais j'aimerais éviter de toucher aux fichiers "systèmes" d'AutoCAD.
Je n'ai pas bien compris (defun-q, peut-être que la solution est là ?


En gros, une sorte d'installation pour faciliter les utilisateurs inexpérimentés et qui se perdent, parfois trop facilement, dans les paramètres d'AutoCAD.
J'ai déjà fais un tuto PDF en interne (bien inspiré du chapitre 3 de l'indispensable "Introduction à AutoLisp" de Gilles) mais certains ont encore des difficultés.


Bien à toi la Communauté.
Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Salut,

Plutôt que d'utiliser le chargement automatique via appload, tu devrais créer un fichier .mnl si chargement est lié à un CUIX ou un fichier acaddoc.lsp. Tu pourras plus facilement gérer le chargement des fonction à charger systématiquement dans chaque dessin (fonction load) ou uniquement au premier appel d'une commande LISP (fonction autoload). Tu pourras aussi utiliser ce fichier pour exécuter automatiquement des expressions LISP à chaque ouverture de dessin (par exemple pour donner des valeurs à des variables système ou à des ldata).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Salut (gile).
Merci pour tous ces conseils.
Je vais regarder ça avec intérêts...
Il me semble que les CUIX ne sont pas compatibles entre les version complètes et LT, mais je doute, donc, peut-être pas de .mnl.
Mais avec les dernières évolutions de LT 2024, je ne sais pas si c'est toujours d'actualité.
Pour le reste, je vais bucher...
Encore merci à toi.
Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Donc, si j'ai bien tout compris (et c'est loin d'être évident) :

(setq S::STARTUP (append S::STARTUP Pouette)) 

Lancera systématiquement "Pouette" à chaque démarrage (ou ouverture d'un dessin), mais je n'arrive pas à comprendre comment :

(defun-q Pouette ()
  (command "_patati" "_patata")
  (princ)
)

Je cherche juste à ce que l'utilisateur lance un Lisp (via appload, juste une fois), et que ce Lisp soit désormais lancé systématiquement lancé, ce lisp gère les autres...

Et comment le S::STARUP ce lancera, ne serait-ce qu'une fois. Il ne faudrait pas une action de l'utilisateur (ce qui m'arrangerait) ?
Je pense qu'un simple "appload" ferait l'affaire, un lisp sans "defun 😄", comme un auto exécutable...

Me trompe-je ?

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Je ne comprends pas bien ce que tu cherches à faire, mais je ne pense pas que tu aies besoin d'utiliser S::STARTUP.

Si un fichier de chargement automatique (.mnl ou acaddoc.lsp) contient des expressions LISP du style :
(load "toto.lsp") (alert "toto.lsp chargé")
ces expressions seront automatiquement exécutées à chaque ouverture de dessin.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Je dois mal m'exprimer (ce doit être viscéral), je cherche à ce que :

L'utilisateur lance un Lisp, via appload (faisable par tous) et ce Lisp fera "l'installation" du ou des autres Lisp sans autres interventions de sa part.

Ce Lisp (exemple : "instal.lsp") déclarera dans "TRUSTEDPATHS" le et/ou les sous-répertoires nécessaires aux Lisp, merci LeeMac (via une fenêtre DCL que renseignera l'utilisateur uniquement lors du lancement de "instal.lsp", une écriture dans la Base de Registre suffira je pense) mais je ne sais ni où ni comment garder le ou les lisp à charger à chaque chargement d'un DWG ou à chaque session d'AutoCAD.
En gros, ma première question, est-il possible de placer un Lisp dans le l'"AutoLoad" d'AutoCAD.
C'est là que je pèche.

En gros, mes collègues (ou autres) lanceront un et unique Lisp une seule fois (exemple : "Instal.lsp"), et ce dernier demandera où ce trouve le Lisp principal (exemple "AutoConfig.lsp"; ou se trouve les fichiers gabarit pour Excel, Word...), il (le Lisp) en saura l'emplacement, et donc, tous le reste (ce qu'il faudra charger, où ça se trouve...).

Plus court je cherche à faire en Lisp AppLoad -> Contenu -> Fichier.lsp

Je dois encore être confus, non ?

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Si tu tiens à passer par la commande appload*, tu peux demander à tous les utilisateurs de charger et de mettre dans la valise (Au démarrage) un fichier LISP qui contient des expressions LISP pour charger d'autres fichiers LISP, initialiser des variables système, etc.
Quand un fichier .lsp est chargé dans un dessin, il est exécuté. Ce qui signifie que toutes les expressions qu'il contient sont évaluées.
Si ces expressions sont des définitions de fonctions (defun ...), les fonctions définies seront utilisables dans la session pour ce dessin.
Si ces expressions sont de simples instructions : (setvar 'pickfirst 1), (load "toto.lsp), (alert "Hello world !"), elles seront simplement exécutées.

 

* personnellement je pense que la commande appload est destinée à l'utilisateur final (dessinateur) et qu'un "CAD Manager" ou un développeur privilégiera des méthodes plus adaptées au déploiement et la maintenance comme les fichiers acaddoc.lsp, *.cuix et *.mnl et/ou le mécanisme Autoload via un dossier .bundle (voir la documentation à propos du mécanisme autoloader et du format des fichier PackageContents.xml).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Oui, entièrement d'accord avec toi, mais tout le monde n'a pas la chance d'avoir de CAD Manager sous la main (moi par exemple).

Je pense au(x) dessinateur(s, trice(s), teuse(s)) seul(s, es) dans leur bureau à ramer pour utiliser ce que nous faisons.
Mais je vais regarder tes liens, qui j'en suis certain vont m'en apprendre beaucoup...

Pour résumer mon souhait, un utilisateur copie (ou décompresse) dans un répertoire (exemple : D:\Machin) nos Lisp.
Ensuite, il lance avec "appload", "D:\Machin\Instal.lsp" et ce Lisp va "configurer" tout (en faite, il demande à l'utilisateur où ce trouve "
AutoLoad.lsp" une seule fois, et ce "Instal.lsp" déclare son répertoire et sous-répertoires dans "TRUSTEDPATHS" (merci Lee Mac) et (c'est là que je pèche) se place dans l'"auto chargement" d'AutoCAD.

A partir de cette simple manipulation "unique", l'utilisateur n'a rien d'autre à faire que de lancer AutoCAD ou ouvrir un dessin.
Je cherche toujours à assister celui qui ne sait pas faire, car j'ai été (et suis encore) dans cette catégorie.

Encore merci à toi.

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)
il y a 1 minute, DenisHen a dit :

Oui, entièrement d'accord avec toi, mais tout le monde n'a pas la chance d'avoir de CAD Manager sous la main (moi par exemple).

Dans le cas présent, c'est toi le "CAD Manager" / développeur.

 

il y a 7 minutes, DenisHen a dit :

A partir de cette simple manipulation "unique", l'utilisateur n'a rien d'autre à faire que de lancer AutoCAD ou ouvrir un dessin.

Avec un dossier .bundle basique contenant un fichier de métadonnées "PackageContents.xml" et un sous dossier "Contents" contenant "vos Lisps", l'utilisateur n'aurait qu'à copier le dossier dans un répertoire idoine.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)
Il y a 1 heure, (gile) a dit :

Avec un dossier .bundle basique contenant un fichier de métadonnées "PackageContents.xml" et un sous dossier "Contents" contenant "vos Lisps", l'utilisateur n'aurait qu'à copier le dossier dans un répertoire idoine.

Encore une fois, on sait tous que tu as raison (moi le premier), mais pour un utilisateur lambda (même pas mapcar, qu'est-ce qu'on se marre !), pour un vrai débutant, le simple therme idoine est déjà une curiosité presque absconde pour lui. Je me place toujours au niveau de celui qui ne sait pas encore.

Lui faire chercher un répertoire qui, peut-être, est dans un AppData/Roaming ou autre, sera une torture pour ce novice, car si c'est caché, il ne le verra ni le trouvera jamais. Il restera dans une impasse, et abandonnera. Pourquoi fait-on des tutos ? Pour existe-t-il l'incroyable bible "Introduction à AutoLisp" ?

Par contre, taper en ligne de commande 7 lettres AppLoad, il saura surement faire, c'est indéniable, après, il suit ce qu'il lui sera demandé via une toute petite assistance. Je pense qu'on ne peut pas faire plus simple pour lui, mais ce n'est que mon avis.

C'est ce que j'essai de lui donner, sans qu'il cherche à comprendre (de trop, pour l'instant). Il lance la commande AppLoad sur AutoCAD, il va chercher le bon fichier.lsp et il suit ce qu'il lui est demandé, c'est tout ce qu'il a à faire, c'est de répondre aux questions.

Et comme, de toutes façons, il devra intervenir ou faire une action (on ne peut rien faire sans une action de sa part, bundle, ApplicationPlugins... ou pas, on est d'accord), je considère (peut-être à tord) que cette simple action de sa part doit être minimaliste, et devrait le rester, une action délibérée et bien expliquée, est peut être la méthode la plus simple pour lui. Et je pense qu'on ne peut pas faire plus simple que 7 lettres en ligne de commande.

Même si ce n'est pas la plus simple pour les développeurs.

Comme disait le grand philosophe Jean-Claude Van Damne : "Aide ceux qui ne savent pas, et ils t'aideront quand tu sauras".

Je vais quand-même regarder les liens de Maître (gile), c'est systématiquement instructif.

Bien à toi la Communauté.
Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Si tu penses vraiment que l'utilisateur est incapable d'entrer : %appdata% dans la barre d'adresse de l'explorateur, puis d'aller dans Autodesk\Application Plugins pour y copier un dossier, tu peux toujours faire un installeur (avec inno setup par exemple) qui déploiera ce dossier dans le bon répertoire.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)
Il y a 8 heures, (gile) a dit :

Si tu penses vraiment que l'utilisateur est incapable d'entrer : %appdata% dans la barre d'adresse de l'explorateur

Je conçois que c'est un peu capillo-tracté (=tiré par les cheveux), mais je connais des personnes qui confondent encore le clique droit et gauche, écrivent leurs courriers sans les accents, ne veulent pas cliquer sur "Démarrer" pour éteindre l'ordinateur, ne font pas la différence entre l'adresse d'un site et celle d'un courriel, quant à numériser un document, c'est tout un programme. J'avais un collègue qui n'a jamais voulu se mettre au PC, il faisait tout à la main.

Merci pour Inno Setup, je vais regarder ça de plus près.

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)
Il y a 1 heure, DenisHen a dit :

je connais des personnes qui confondent encore le clique droit et gauche, écrivent leurs courriers sans les accents, ne veulent pas cliquer sur "Démarrer" pour éteindre l'ordinateur, ne font pas la différence entre l'adresse d'un site et celle d'un courriel, quant à numériser un document, c'est tout un programme. J'avais un collègue qui n'a jamais voulu se mettre au PC, il faisait tout à la main.

et ces personnes que tu décris sont censées utiliser AutoCAD ?...

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Quelques débutants qui sont encore un peu comme ça, après une réorientation professionnelle, ça arrive parfois.
Certains savent ce qu'est un plan, le lire, mais pas toujours le faire.
Mon voisin par exemple, un ancien maçon de plus de 50 ans qui ne peut plus "pratiquer", il s'est donc tourné vers le dessin. Mais il n'avait jamais touché à un PC.
Mais on débute toujours quelque part.

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Bonjour,

 

Si tu mets un fichier acaddoc.lsp dans un chemin de recherche des fichiers de support, il sera chargé avec chaque dessin.

Par exemple, j'ai ceci que je charge une foie avec appload:

install.lsp

;; Add Support File Search Paths  -  Lee Mac
;; Adds a list of Support File Search Paths, excluding duplicates and invalid paths.
;; lst - [lst] list of paths to add, e.g. '("C:\\Folder1" "C:\\Folder2" ... )
;; Returns: [str] "ACAD" Environment String following modification
(defun LM:sfsp+ ( lst )
    (   (lambda ( str lst )
            (if (setq lst
                    (vl-remove-if
                       '(lambda ( x )
                            (or (vl-string-search (strcase x) (strcase str))
                                (not (findfile x))
                            )
                        )
                        lst
                    )
                )
                (setenv "ACAD" (strcat str ";" (apply 'strcat (mapcar '(lambda ( x ) (strcat x ";")) lst))))
            )
        )
        (vl-string-right-trim ";" (getenv "ACAD"))
        (mapcar '(lambda ( x ) (vl-string-right-trim "\\" (vl-string-translate "/" "\\" x))) lst)
    )
)
(setq _installdir "X:\\mon\\dossier")
(LM:sfsp+ (list _installdir (strcat _installdir "\\fonts") (strcat _installdir "\\HATCH") (strcat _installdir "\\LSP")))
(command "_cuiload" (strcat _installdir "\\menu.cuix"))

Et dans X:/mon/dossier/lsp j'ai un fichier acaddoc.lsp

; save covadis proxy entity on the drawing
(setvar "PROXYGRAPHICS" 1)
(setvar "PROXYSHOW" 1)

(load "lisp1")
(load "lisp2")
(load "lisp3")

 

Aide au téléchargement du cadastre dgfip-download-helper
Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0
Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js

Posté(e)

Bonjour Vincent et merci pour ton aide.
J'avais déjà piqué "LM:sfsp+" à Lee mac. je l'utilise aussi pour vérifier la présence de répertoires.
Mais j'ai plus de difficultés avec "(setq _installdir "X:\\mon\\dossier")", car je ne connais pas les DD ou la destination de des Lisp que je fais. Chaque poste est différent.

Et merci aussi pour "(command "_cuiload" (strcat _installdir "\\menu.cuix"))", je n'y avais pas pensé. un CUIX "Full" est compatible avec les LT ? J'ai cru lire que non.

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Je ne sais pas, je ne travaille pas avec des versions LT.

Je peux juste dire que ça marche aussi avec zwcad.

J'ai aussi un fichier BAT qui remplace le chemin d' _installdir avec la localisation actuel du fichier

@echo off

setlocal disableDelayedExpansion

set curpath=%~dp0
REM remove last \
set curpath=%curpath:~0,-1%
set curpath=%curpath:\=\\%
echo %curpath%

set search="X:\\mon\\dossier"
set replace="%curpath%"
set textfile="addpath.lsp"
set newfile="install.lsp"

(for /f "delims=" %%i in ('findstr "^" "%textfile%"') do (
    set "line=%%i"
    setlocal enabledelayedexpansion
    set "line=!line:%search%=%replace%!"
    echo(!line!
    endlocal
))>"%newfile%"

La personne a juste à copier le dossier n'importe où sur son poste, à lancer install.bat qui va créer un fichier install.lsp avec le bon chemin et lancer seulement un fois le lisp dans autocad pour tout ajouter.

Aide au téléchargement du cadastre dgfip-download-helper
Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0
Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js

Posté(e)

Mille mercis Vincent.
Wouaouw, c'est super ton .bat, je vais regarder ça de très près.
Encore merci.
Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Si je comprends bien le .bat, il ouvre "addpath.lsp", remplace "X:\\mon\\dossier" par le chemin courant dans le contenu (de "addpath.lsp") et l'enregistre sous "install.lsp" ?
J'ai bon ?

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Ok, merci.
Donc, il ne manque plus que l'utilisateur fasse un premier et seul lancement de "install.lsp" depuis AutoCAD et le tour est joué...
C'est top nickel...
Encore merci...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Hello,

J'arrive un peut tard, mais il semblerais que les CUI/CUIX soit tout a fait compatibles entre Autocad traditionnel et Autocad LT.

https://help.autodesk.com/view/ACDLT/2023/FRA/index.html?guid=GUID-B7E59965-0B56-4974-BB20-1D61BB96747A

(ou là :https://help.autodesk.com/view/ACDLT/2024/FRA/?guid=GUID-D4502890-6980-4942-8841-7248F4ECA848)

Et ca te faciliterais grandement la tache je pense.

De mon coté, j'ai un dossier sur le serveur dans lequel je dépose les .lsp et les .dcl, et j'y ai créé un CUIX. Je me posais pas la question des utilisateur LT car personnes n'est en LT chez moi (et que le LISP sous LT n'était pas à l'ordre)
Ce CUIX comprend un menu déroulant, une barre d'outil, les Lisp.

image.png.6d065325774a89c81def2b95dae62379.png

Et ensuite, j'ai fait un tuto par mail à mes collègues pour déclarer le dossier dans leurs Option et pour charger le CUIX en "fichier de personnalisation partiel". J'e suis passé sur 4 postes pour ceux qui n'y arrivaient pas.

Maintenant, quand je fait une modif, un ajout ect.. ca s'applique automatiquement à tous le monde, je fait un peutit mail pour présenter la modif et c'est tous, pas d'intervention de l'utilisateur, pas de maintenance particulière, quand on change de PC ou de version Autocad pas de "je copie quoi où?".

Lispeur éternel débutant!
Autocad Map3D 2023
Covadis-Autopist 18.2

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é