Script d'installation et de configuration pour programme lisp

Script d'installation et de configuration pour programme lisp

Anonymous
Non applicable
2 242 Visites
5 Réponses
Message 1 sur 6

Script d'installation et de configuration pour programme lisp

Anonymous
Non applicable

Bonjour,

 

 

j'ai créé pour mon entreprise un outil pour Autocad en lisp et dcl (il y a une interface).

 

Pour l'instant pour l'installer je dois aller sur chaque ordinateur de l'entreprise et manuellement

- modifier les options : chemin de support, chemin de gabarit etc.

- aller dans appload et dans contenu chargé au démarrage ajouter le fichier .lsp

 

Comment pourrais-je faire cela via un script? savez-vous o\u je peux trouver la liste des variables, comment et où les modifier?

notamment pour le appload, je connais le load, mais pour préciser que c'est chargé au démarrage je ne sais comment faire.

 

L'idée est a terme de donner ce script aux utilisateurs et de juste leur dire de lancer le script pour que tout s'installe comme il faut.

 

Merci!

0 J'aime
Solutions acceptées (1)
2 243 Visites
5 Réponses
Replies (5)
Message 2 sur 6

_gile
Consultant
Consultant

Salut,

 

Si tu cibles des versions d'AutoCAD 2012 ou ultérieures tu peux utiliser le mécanisme Autoloader.

Voir ce sujet très complet mais en anglais ou celui-ci en français consacrée au chargement des applications .NET mais transposable pour des fichiers LISP/DCL.

 

Au plus simple :

Tu crées un dossier dont le nom est préfixé avec .bundle, par exemple : "SuperLisp.bundle".

Dans ce dossier "SuperLisp.bundle", tu crées un sous dossier (habituellement nommé "Contents", mais tu peux le nommer comme tu veux), dans lequel tu mets tes fichiers LISP et DCL.

Dans ce même dossier "SuperLisp.bundle", tu vas placer un fichier nommé PackageContents.xml qui désigne les différents composants de l'application et décrit comment l'application est chargée.

Puis il suffit de coller sur chaque poste ce dossier "SuperLisp.bundle" dans le répertoire : C:\Users\<nom d'utilisateur>\AppData\Roaming\Autodesk\ApplicationPlugins, AutoCAD chargera automatiquement le LISP et ajoutera le dossier .\Contents au chemins de support.

 

Le fichier PackageContents.xml pourrait ressembler à ça. Il faut remplacer la valeur de l'attribut ModuleName par le nom de ton fichier LISP (tupeux aussi changer Name et AppName à ta guise).

Il faut aussi veiller à ce que le GUID de ProductCode soit différent pour chaque dossier .bundle (il existe pleins de générateurs de GUID sur la toile)

 

 

<?xml version="1.0" encoding="utf-8" ?>
<ApplicationPackage
    SchemaVersion="1.0"
    AppVersion="1.0"
    Author="LaCanaille"
    ProductCode="{23a2db0f-c5c7-4dd4-9c70-8d45113eb144}"
    Name="Super LISP" >
  <Components>
    <RuntimeRequirements SupportPath="./Contents"/>
    <ComponentEntry
      AppName="SuperLisp"
      ModuleName="./Contents/SuperLisp.lsp"
    />
  </Components>
</ApplicationPackage>

 

 



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 3 sur 6

Anonymous
Non applicable

Bonjour,

 

merci beaucoup pour ta réponse, je vais lire tout ça.

 

Par contre dans l'idéal mes fichiers lisp sont sur le réseau, comme ça je n'ai pas à les copier sur chaque machine dès que je fais des mises à jour... et à la rigueur les utilisateurs ont juste à lancer une simlpe commande/script pour actualiser certains liens si besoin. 

0 J'aime
Message 4 sur 6

_gile
Consultant
Consultant
Solution acceptée

Si tu préfères ne pas utiliser le mécanisme Autoloader, tu dois pouvoir utiliser les fichiers de chargement automatique des routines AutoLISP pour le chargement des LISP :

 

En bref, créer un fichier acaddoc.lsp (ou un fichier "XXX.mnl" si vous utilisez un cuix partiel "XXX.cuix") à placer dans les chemins de recherche (donc possiblement sur le réseau dans le même dossier que les fichiers LISP et DCL).

Ce fichier, qui sera automatiquement exécuté à l'ouverture de chaque dessin, doit contenir des expressions (load ...) ou (autoload ...) pour charger les routines LISP dans le dessin.

 

En ce qui concerne la configuration des chemins (de support, approuvés, de gabarits) il est inutile de la refaire à chaque ouverture de dessin. Ces options sont enregistrés dans les profils. Le plus simple, à mon avis, est d'enregistrer un profil correctement paramétré (encore une fois possiblement sur le réseau), chaque utilisateur n'ayant qu'à l'importer et le rendre courant.



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

0 J'aime
Message 5 sur 6

Anonymous
Non applicable

ah super, merci pour cette info. 

 

sais-tu par hasard où trouver la liste des variables pour faire par exemple setvar (fichiers de support) : ajouter un dossier ? 

 

Merci encore

0 J'aime
Message 6 sur 6

_gile
Consultant
Consultant

Salut,

 

Tu peux trouver la listes des variables système dans l'aide, mais les chemins de support ne sont pas gérés par une variable système.

 

Tu peux accéder aux chemins de support du profil courant en Visual LISP  (COM/ActiveX) via les "Preferences".

 

(defun appendSupportPath (path / split files support)
  (vl-load-com)

  (defun split (str sep / pos)
    (if (setq pos (vl-string-search sep str))
      (cons (substr str 1 pos) (split (substr str (+ (strlen sep) pos 1)) sep))
      (list str)
    )
  )

  (setq files   (vla-get-Files (vla-get-Preferences (vlax-get-acad-object)))
        support (vla-get-SupportPath files)
  )
  (if (null (member (strcase path) (mapcar 'strcase (split support ";"))))
    (vla-put-SupportPath files (strcase support ";" path))
  )
)

Exemple d'utilisation :

 

(appendSupportPath "Z:\\AutoCAD\\Fichiers LISP et DCL")

 



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

0 J'aime