Communauté
AutoCAD – tous produits - Français
Bienvenue sur les forums AutoCAD d’Autodesk. Partagez vos connaissances, posez des questions, et explorez les sujets AutoCAD populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

Exécution d'un script à chaque ouverture d'un dessin

13 RÉPONSES 13
Répondre
Message 1 sur 14
mandrakor
1382 Visites, 13 Réponses

Exécution d'un script à chaque ouverture d'un dessin

Bonjour,

 

Comme dit dans le titre, je souhaiterai charger un script à chaque ouverture de dessin (nouveau ou existant).

Pouvez vous m'aider ?

 

 

Merci d'avance.

13 RÉPONSES 13
Message 2 sur 14
frhervet
en réponse à: mandrakor

Bonjour,

 

Je recommande la lecture de ce lien de l'aide d'AutoCAD :

http://docs.autodesk.com/ACD/2013/FRA/files/GUID-FDB4038D-1620-4A56-8824-D37729D42520.htm#

 

 

Franck Hervet

Please mark this response as "Accept as Solution" if it answers your question.
S'il vous plaît Marquer cette réponse comme "Accepter comme solution" si elle répond à votre question.
-----------------------------------------------------------------------------------------
Message 3 sur 14
mandrakor
en réponse à: frhervet

Bonjour,

 

J'ai bien lu la page indiquée par ton lien et c'est fort intéressant.

Néanmoins, je ne trouve pas la syntaxe me permettant d'appeller un script  après iniatialisation.

 

(defun-q S::STARTUP ( ) 
  (command "test.scr")
Message 4 sur 14
_gile
en réponse à: mandrakor

Salut,

 

La fonction LISP command requiert comme premier argument le nom de la commande (sous forme de chaine) éventuellement suivi des valeurs pour les options de la commande invoquée.

 

Dans ton cas :

(command "_script" "test.scr")

 

La fonction LISP defun-q définit une fonction sous forme de liste et n'est en général utilisée que quand ceci est nécessaire (on préfère en générale utiliser defun qui crée une fonction pré-compilée).

Si on utilise defun-q avec S::STARTUP, c'est parce qu'on peut ainsi avoir plusieurs définitions de S::STARTUP dans différents fichiers de chargement automatique de LISP sans qu'une définition n'écrase l'autre mais qu'au contraire chaque définition s'ajoute à celles qui exitent déjà.

Pour ce faire, il faut tester si S::STARTUP existe déjà et agir en conséquence.

Si S::STARTUP est déjà définie (avec defun-q) on peut ajouter à la liste existante la liste des nouvelles expressions

si S::STARTUP n'est pas déjà définie, on la définit avec defun-q.

 

(if S::STARTUP
  (setq	S::STARTUP
	 (append S::STARTUP
		 '((command "_script" "test.scr") (princ))
	 )
  )
  (defun-q S::STARTUP
	   ()
	   (command "_script" "test.scr")
	   (princ)
  )
)

 



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 5 sur 14
AubelecBE
en réponse à: _gile

salut. Le plus simple  : est-ce que tu utilises un fichier de préférence .cui  que tu inseres dans autocad ?

Si oui alors a coté de ton fichier .cui crée un fichier .MNL

dedans tu mets les commandes autolisp que tu veux...

 

Celui-çi sera lancé à chaque fois qu'un dessin est ouvert

La plus besoin de toucher au fichier d'autocad comme la commande STARTUP.

 

 

 

Message 6 sur 14
_gile
en réponse à: AubelecBE

Salut AubelecBE,

 

Extrait de l'aide Guide de programmation > Introduction aus interfaces de programmation > AutoLISP et Visual LISP > Chargement et exécution automatiques des routines AutoLISP > Fonction S::STRATUP : exécution postinitialisation :

 

"Les fichiers de démarrage LISP (acad.lsp, acaddoc.lsp et MNL) sont tous chargés en mémoire avant que le dessin ne soit complètement initialisé. Généralement, cela ne pose pas de problème, sauf si vous souhaitez utiliser la fonction command, qui n'est réellement opérationnelle qu'après l'initialisation d'un dessin.

 

Si la fonction S::STARTUP définie par l'utilisateur figure dans un fichier acad.lsp, acaddoc.lsp ou MNL, elle est appelée lorsque vous entrez un nouveau dessin ou ouvrez un dessin existant. Par conséquent, vous pouvez inclure une définition de S::STARTUP dans le fichier de démarrage LISP pour effectuer toute opération de configuration."



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 7 sur 14
patrick_35
en réponse à: mandrakor

Salut

 

Tu peux ajouter au lancement d'autocad le paramètre /b pour charger automatiquement un script

 

Plus d'infos ici

http://exchange.autodesk.com/autocadmep/fra/online-help/BLDSYS/2012/fra/pages/WS1a9193826455f5ffa23c...

 

Tu as aussi la valise (_appload) pour faire des chargements automatique sur chaque dessin.

 

@+

Message 8 sur 14
AubelecBE
en réponse à: _gile

Ah merci je ne savais pas cela.

 

Moi je trouve plus simple mon principe (je n'utilise pas la commande command. 🙂

 

Car pour 'linstallation rien de plus simple.

Je ne fais qu'ajouter le CUI à autocad et après, dés qu'autocad se lance, il me le configure (répertoire de base des affaires, des blocs etc. (Onglet Fichier dans les options)

 

 

Message 9 sur 14
mandrakor
en réponse à: AubelecBE

Tout d'abord merci pour votre aide à tous.

 

Demain je teste la version avec le fichier en .lsp composé de :

 

(if S::STARTUP
  (setq	S::STARTUP
	 (append S::STARTUP
		 '((command "_script" "test.scr") (princ))
	 )
  )
  (defun-q S::STARTUP
	   ()
	   (command "_script" "test.scr")
	   (princ)
  )
)

Cependant, j'ai un doute sur le fonctionnement, car mon entreprise utilise une donciguration particulière avec des fichiers stockés sur un serveur qui charge des applications dans autocad.

 

Concernant la méthode de personnalisation CUI, impossible de trouver une option permettant de charger un script dedans !

Message 10 sur 14
mandrakor
en réponse à: patrick_35

Quand à ta solution patrick, il me semble qu'elle ne fonctionne uniquement sur le premier dessin chargé lors du lancement d'autocad, pas avec les suivants non ?

Message 11 sur 14
patrick_35
en réponse à: mandrakor

Pour les options au lancement d'autocad, oui

Mais pour le chargement automatique avec _appload, non

 

@+

Message 12 sur 14
agence
en réponse à: mandrakor

Nota:

pour la version Autocad Lt 2014 édition française (en tous cas c'est celle que j'utilise), la commande "_appload" ne fonctionne pas "Commande inconnue "APPLOAD". Ce qui me fait bien suer car j'utilise quelques lisp bien efficaces telle que superflatten ou talus...

 

Cordialement.

Message 13 sur 14
_gile
en réponse à: agence

Salut,

 

La principale différence, à mon avis, entre les versions LT et les versons pleines, est que les versions LT ne supportent aucun langage de programmation.

Donc, comme le dit Patrick_35, pas de APPLOAD sur une LT...



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 14 sur 14
agence
en réponse à: _gile

Je vous remercie de votre réponse. Je viens de me rendre compte de ce handicap de LT. J'ai activé ma licence aujourd'hui et je pense que je vais vite regretter mon ancienne licence de la version pleine de 2008 !!!

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums