Tramber Posté(e) le 8 avril 2004 Posté(e) le 8 avril 2004 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 ./__\. (.°=°.)
Patrick_35 Posté(e) le 8 avril 2004 Posté(e) le 8 avril 2004 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
didier Posté(e) le 8 avril 2004 Posté(e) le 8 avril 2004 bonjour la réponse à ton souci a déjà été communiquéemais je n'ai pas trouvé le messagepour 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 Éternel débutant... Mon site perso : Programmer dans AutoCAD
bonuscad Posté(e) le 9 avril 2004 Posté(e) le 9 avril 2004 :( 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 autoexecutionsEn 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
dr.loveless Posté(e) le 9 avril 2004 Auteur Posté(e) le 9 avril 2004 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
bonuscad Posté(e) le 9 avril 2004 Posté(e) le 9 avril 2004 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
Patrick_35 Posté(e) le 9 avril 2004 Posté(e) le 9 avril 2004 Merci à bonusCad, ce soir, je m'endormirai un peu moins ignare ce soirPour 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
dr.loveless Posté(e) le 9 avril 2004 Auteur Posté(e) le 9 avril 2004 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
dr.loveless Posté(e) le 9 avril 2004 Auteur Posté(e) le 9 avril 2004 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
dr.loveless Posté(e) le 9 avril 2004 Auteur Posté(e) le 9 avril 2004 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
Tramber Posté(e) le 17 avril 2004 Posté(e) le 17 avril 2004 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 ./__\. (.°=°.)
didier Posté(e) le 17 avril 2004 Posté(e) le 17 avril 2004 coucoucharger 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 Éternel débutant... Mon site perso : Programmer dans AutoCAD
dr.loveless Posté(e) le 21 juin 2004 Auteur Posté(e) le 21 juin 2004 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
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant