Aller au contenu

Chargement automatique des lisp et dvb


Messages recommandés

Posté(e)

Tu veux dire que je dois faire :

([b]defun-q[/b] RECORD ()
....faire tous les LOAD ici...et notamment le chargement du dvb (ca doit bien être possible)
)

?

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

C’est vrai qu’il y a 50 manières de faire, voici la mienne

 

(defun s::startup()
 (autoload "prog1" '("prog1"))
 (autoload "prog2" '("prog2"))
 (autoload "prog3" '("prog3"))
 ...
 et encore d'autres choses comme inscrire le nom du fichier dans le cartouche
)

(defun fonct1()
 patati
 patata
 ...
)

(defun fonct2()
 repatati
 repatata
 ...
)

 

Mais je ne connais pas cette fonction qu'est le defun-q

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

bonjour

 

la réponse à ton souci a déjà été communiquée

mais je n'ai pas trouvé le message

pour créer un lien,

pour lancer un VBA en Lisp c'est ainsi :

_

(command "_vbaload" "c:\\Repertoire\\sousrepertoire\\NomDuProg.dvb")

(command "_-vbarun" "NomDeLaMacro")

_

il est facile de devenir "ceinture noire"

si on se repète comme je viens de la faire.

amicalement

 

Posté(e)

:( Bon je ne suis pas clair.

 

J'ai remarqué une confusion sur la fonction s::startup

 

Cette fonction sert principalement à executer SANS intervention de l'utilisateur, une fonction prédéfinie ET préalablement chargée en mémoire.

A l'ouverture d'un dessin existant ou à la création d'un nouveau dessin cette fonction sera executée, cela peut être par exemple une procédure de configuration du dessin, l'insertion d'un cartouche à renseigner, ou donner des informations sur l'environnement du dessin etc...

 

Suivant la fonction définie (par exemple aucun message ou aucune possibilité d'annuler l'action) l'utilisateur ne pourra passer outre cette fonction d'autoexecution.

Je déconseille d'ailleurs cette façon de faire, donner à l'utilisateur une possibilité ne de pas executer cette fonction.

 

Donc en résumé STARTUP sert à EXECUTER plutôt qu'a loader un prog.

 

Le (defun -q s::startup permet de cumuler les autoexecutions

En effet si vous utilisez d'autres applicatifs "maison" qui utilise le même procédé sans cette option, seule la 1ere fonction startup rencontrée sera executé, les suivante seront avortée avec un message d'erreur, qui explique d'ailleur qu'il faut utiliser (defun -q

 

Est ce plus clair?

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

 

Ayant fait un menu, j'utilise le fichier .MNL pour autochargé.

Extrait pour exemple:

 

(autoload "decalpl.lsp" '("decalpl"))

(autoarxacedload "cal.arx" '("cal"))

(load "record.lsp")

(if s::startup

(setq s::startup (append s::startup '((record))))

(defun-q s::startup () (record))

)

(princ "\nBonusCAD chargé.\n")

(princ)

 

 

 

OK, je suis TRES interesser par cette méthode. En effet, celà me permettrait de faire un setup de mon mnu en indiquant un repertoire. Mais avant celà faut tester, et j'ai beau écrire un fichier mnl ayant le même nom que mon mnu, celui-ci ne s'execute pas.

 

Comment faire??

 

Le DOC

Posté(e)

Salut le DOC,

 

Je suis supris par ton problème, mais il y a peut être une explication.

 

Je te conseille de regarde l'aide à:

>Guide de personalisation

>Interfaces de programmation

> AutoLISP et Visual LISP

>Chargement et execution automatiques

de sous-programmes AutoLISP

>?acad.mnl -Chargement automatique de fonctions de menu AutoLISP

 

D'ailleurs ce chapitre te renseignera aussi sur startup

 

J'espère que cela t'éclairera sur la procédure.

 

Sur ce, je suis en congé et vous souhaite une bonne Pâques et une bonne semaine à ceux qui triment (il en faut !) ;)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Merci à bonusCad, ce soir, je m'endormirai un peu moins ignare ce soir

Pour taquiner didier, je dirai qu'il n'a pas que la ceinture qui a changé de couleur ;)

Et pour le Doc, le plus simple est de faire un menu partiel et de se servir de la commande autolisp menucmd

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Bon pour l'instant:

 

 

- j'ai créer un menu ".mnu" avec dedans le menu, les barres d'outils et les boutons, le tout configurer nickel chrome (rien que çà c'est déjà super pour novice comme moi).

 

- j'ai regrouper toutes mes icones dans un fichier dll du même nom que le fichier mnu et dans le même repertoire, et çà aussi c'est tres pratique, çà évite de trimbaler sans cesse toutes les icones .bmp . Pour çà, j'ai fais appel à VB6.

 

- j'ai également ajouter des lignes de commandes qui chargent automatiquement à chaque ouverture de plan les fichiers lisp, dans le fichier "a c a d 2004doc.lsp". C'est pratique mais le probleme c'est que si copie ce fichier sur les autres poste de mon entreprise, çà marche, mais dans l'hyptohèse ou un de mes collègue à déjà modifié ce fichier pour sa propre utilisation, ses chargement seront éffacés. Donc je recherche une autre méthode, et celle du fichier ".mnl" paraitre être la meilleure. Je me penche donc sur çà dès à présent. Merci à BONUSCAD, je vais allez voir l'aide, mais elle est en Anglais alors je sens que je vais lutter, mais on a rien sans rien.

 

 

Enfin bref Merci à tous le monde, je suis heureux de voir que ce sujet interresse pas mal de monde.

 

 

Egalement faut que je vois pour le chargement automatique des fichiers VBA, là çà bloque.

 

 

 

 

MERCi MERCI MERCI

 

 

Le DOC

Posté(e)

Bon c'est encore moi, finalement c'est OK pour les fichiers .mnl, le pb c'est que j'avais pour habitude de déclarer une fonction du type "defun c:xxx" et dans le cas présent il ne faut pas.

 

Pour ceux qui n'ont pas suivi, il suffit de créer un fichier portane le même nom que le fichier mnu, mais avec l'extension "mnl". Dans ce fichier il suffit de taper le code :

 

(load "nom du fichier.lsp") ; pour tous les lisp à charger.

 

 

De ce fait, les lisps seront systématiquement chargés.

 

De la même manière il est possible de charger les fichier vba en tapant:

 

(command "chargvba" "nom du fichier.dvb") et ils seront chargés automatiquement. Le problème dans ce cas c'est que le fichier est rechargé sur chaque plan, d'ou l'apparation d'un message d'erreur.

 

 

Comment y remedier ?? ... en ne mettant pas le code relatif au VBA dans ce fichier, mais où le mettre alors??? Mystère et boule de gomme.

 

 

Je cherche, je cherche .....

 

 

A plus

Le DOC

Posté(e)

C'est encore moi, rectificatif concernant mon post précédent.

 

Je pense qu'il faut mettre dans le fichier mnl aussi les chargement autolisp que les chargement dvb.

 

En revanche pour eviter le message stipulant que le fichier dvb est déjà chargé, il faudrait trouver un code permettant de "tester" si le fichier est déjà chargé. Si celui-ci est chargé, on passe, si il n'est pas chargé, on le charge, et ce code devra être en Visual Lisp. Si quelqu'un ce sent de le faire, ce serait cool, perso je n'ai aucune idée du code.

 

 

Merci et bon Week end .............miam miam.........

Le DOC

  • 2 semaines après...
Posté(e)

Ben, pour info, le code semble être le suivant:

 

[align=Center]

(vl-vbaload "c:/program files/acad2000/sample/vba/drawline.dvb")

[/align]

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

coucou

charger le dvb, c'est une chose,

mais il faut lancer la macro ensuite.

perso, je fais un petit LSP qui contient ceci :

 

(command "_vbaload" "C:\\Lisp Didier\\vba\\NomDuProgramme.dvb")

(command "_-vbarun" "NomDeLaMacro")

 

je déconseille de lancer trop de vba au chargement de la session.

il est préférable de les charger "à la demande"

et de les décharger aussitôt inutilisés.

bon week end à toutes et à tous

 

  • 2 mois après...
Posté(e)

Bon pour clore la discussion, j'ai enfin réussi à trouver la solution à mon probleme :

 

Pour effectuer un chargement automatique, il faut placer le code suivant dans un fichier mnl, qui dois porter le même nom que le fichier de menu (* mnu ) charger par Autocad :

 

- pour un fichier lisp, vlx : (load "monlisp.lsp)

- pour un fichier dvb : (vl-vbaload "monVB.dvb")

 

Il faut pour celà que les fichiers soient dans le même repertoire, sinon il faut indiuer l'arborescence complète :

 

- pour un lisp : (load "C:/monrepertoire/mon fichier.lsp)

ou (load C:\\monrepertoire\\monfichier.lsp)

 

- pour un dvb : (vl-vbaload "C:/monrepertoire/mon fichier.dvb")

ou (vl-vbaload "C:\\monrepertoire\\monfichier.dvb)"

 

Et voilà, le tour est joué

 

:cool:

 

 

Merci à tous

Le DOC

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é