LUDWIG Posté(e) le 25 octobre 2005 Posté(e) le 25 octobre 2005 Bonjour !! J'uilise des lisps et des menus contenant les boutons qui lancent ces lisps. Un utilisateur qui souhaite utiliser mon programme doit :- d'abord faire Outis > Autolisp > charger > Contenu > Ajouter pour charger le lisp,- puis, il doit faire Outils > Options > Fichiers > Chemins de recherche de fichiers de support > Ajouter > Parcourir pour rendre accessibles le répertoire des icônes,- Enfin, il doit faire Outils > Personnaliser > Menus... > Parcourir > Charger pour charger la barre d'outils Existe-t'il un moyen simple de créer un exécutable d'installation qui fasse tout ça à la place de l'utilisateur ? J'ai vu que les lisps chargés au démarrage et les chemins de recherche de fichiers de support sont des entrées dans la base de registe mais je ne souhaite pas trop y triturer. Quand est-il de la désinstallation ? Merci d'avance ! Autocad 2021 - Revit 2022 - Windows 10
(gile) Posté(e) le 25 octobre 2005 Posté(e) le 25 octobre 2005 Salut, Tu peux faire un dossier contenant tes routines LISP, tes icones, tes menus (*.MNS ou *.CUI) et un fichier *.MNL (même nom que le MNS ou CUI) dans lequel tu commande le chargement de tes routines (load "MaRoutine1") (load "MaRoutine2") etc... Il suffit ensuite d'indiquer à AutoCAD le chemin de ce dossier dans les chemin de recherche des fichiers de support et de charger ton MNS avec la commande chargmnu pour un menu partiel. Personnellement, comme je partage les postes que j'utlise avec d'autres, j'utilise des MNS ou CUI qui sont des copies des AutoCAD.mns ou AutoCAD.cui auxquels j'ai rajouté mes outils et je les charge avec la commande menu dans un nouveau profil utilisateur, dans ce cas il faut ajouter au fichier *.MNL (load "acad.mnl") pour avoir les LISP utilisé par les menus originaux. Il y a sûrement d'autres façons de faire, celle-là marche. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
zebulon_ Posté(e) le 25 octobre 2005 Posté(e) le 25 octobre 2005 bonjour, pour ce qui est des chemins de recherche et des menus personnalisés, une solution simple serait de configurer un poste, puis exporter le profil, en le nommant nomdelentreprise.arg et en le sauvegardant sur un lecteur réseau où tout le monde a accès. Il sera facile à chacun de l'importer sur son poste.Il faudra juste changer dans les propriétés de l'icône autocad, dans la ligne cible, ce qui vient après /p et qui correspond au profil par défaut au lancement d'autocad, pour y mettre "nomdelentreprise" à la place de "Architectural Desktop" (ou autre suivant la version). Mias bon, si chacun a ses petites habitudes, tu auras du mal a imposer un profil unique pour toute ta boîte. Ce serait la meilleure solution, mais bon courage... Pour ce qui est du chargement des lisp, je rajoute le répertoire où ils se trouvent dans les chemins de fichiers de support et je fais faire le load par le bouton du menu. dans le genre ^C^C(load "monlisp");monlisp Ok, ça fait charger le lisp à chaque fois qu'on en a besoin, mais c'est pas la mort... et au moins on est sûr que c'est fait. Sinon pour modifier les chemins de recherche de fichier support par lisp (defun c:modsupport () (vl-load-com) (setq acadObject (vlax-get-acad-object)) (setq prefsObject (vlax-get-property acadObject 'Preferences)) (setq tabnameObject (vlax-get-property prefsObject 'Files)) ;; la liste des chemins existants (setq thePath (vlax-get-property tabnameObject 'SupportPath)) ;; on y rajoute le chemin qu'on veut avec la commande strcat (setq thePath (strcat thePath ";" "C:\\TEMP")) ;; on met a jour la liste des chemins (vlax-put-property tabnameObject 'SupportPath thePath) ;; et le tour est joué ) Pour faire charger des menus par le lisp, je ne sais pas mais ça doit marcher. Amicalement Zebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
tiboulen Posté(e) le 25 octobre 2005 Posté(e) le 25 octobre 2005 salutje n'ai pas trouvé le moyen d'indiquer les chemins de recherche de fichiers automatiquementChargement des menus automatiquement :pour une config sur plusieurs postes , sur chaque poste:je defini une variable d'environnement pour le chemin du serveur :set serveur = //serveuracad/je modifie le fichier AutoCAD.lsp:(defun s::startup() (if (not (menugroup "applis2005"))(progn(setvar "CMDECHO" 0);;(command "_.MENULOAD" "men_btrm")(command "_.MENULOAD" (strcat (getenv"serveuracad")"cfg-aclt2005/support/menuperso"))(setvar "CMDECHO" 1));;progn);;if(menucmd "P13=+APPLIS2005.POP1")(menucmd "P14=+APPLIS2005.POP2")(menucmd "P15=+APPLIS2005.POP3")(menucmd "P16=+APPLIS2005.POP4")(menucmd "P17=+APPLIS2005.POP5")) appli2005 et le groupe de menu defini dans le fichier menuperso.mnsles menus pop1 à pop5 sont aussi definis dans ce fichier.ex :***MENUGROUP=APPLIS2005***POP1 [&APPLIS1]ETC...
zebulon_ Posté(e) le 25 octobre 2005 Posté(e) le 25 octobre 2005 pour charger des menus (defun c:modmenu () (setq MENUNAME "MOSAI") ;; par exemple (vl-load-com) (setq acadObject (vlax-get-acad-object)) (setq thisDoc (vla-get-activeDocument acadobject)) (setq menus (vla-get-menuGroups acadobject)) (princ "\nLes menus chargés : ") (setq FLAG nil) (vlax-for n menus (if (= (vla-get-name n) MENUNAME) (setq FLAG T) ) (print (vla-get-name n)) ;; la liste des menus chargés ) (if FLAG (alert "le menu est déjà chargé") (vla-load menus (strcat MENUNAME ".mns")) ) (princ) ) ça charge le menu d'icônes. S'il y a des menus popup, il faut encore rajouter une couche pour les charger. Y-a-t'il des menus popup à charger ? Amicalement Zebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
zebulon_ Posté(e) le 25 octobre 2005 Posté(e) le 25 octobre 2005 avec les popups, ça pourrait donner ça (defun c:modmenu () (setq MENUNAME "MOSAI") ;; par exemple (vl-load-com) (setq acadObject (vlax-get-acad-object)) (setq thisDoc (vla-get-activeDocument acadobject)) (setq menus (vla-get-menuGroups acadobject)) (princ "\nLes menus chargés : ") (setq FLAG nil) (vlax-for n menus (if (= (vla-get-name n) MENUNAME) (setq FLAG T) ) (print (vla-get-name n)) ;; la liste des menus chargés ) (if FLAG (alert "le menu est déjà chargé") (progn (vla-load menus (strcat MENUNAME ".mns")) (setq currMenuGroup (vla-item menus MENUNAME)) (setq popup (vla-get-menus currMenugroup)) (princ "\nLa liste des popups : ") (vlax-for n popup (print (vla-get-name n)) (vla-insertinmenubar ;; ajouter le menu dans la barre de menus n (- (vla-get-count (vla-get-menuBar acadObject)) 1) ;; à l'avant dernière place ) ) ) ) (princ) ) Amicalement Zebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
Patrick_35 Posté(e) le 25 octobre 2005 Posté(e) le 25 octobre 2005 SalutUn exemple de ce que j'avais fait pour le chargement automatique des menus avec leurs barres d'outils Extrait de l'aideGmenugroup.nametag A menugroup and name tag. Le titre dans mon menu partiel***MENUGROUP=MON_MENU_PERSO*** POP1 [&MENU PERSO] ID_Premier [&Premier]^C^C^P(lance_un_lisp) Pour la barre d'outil***TOOLBARS **TB_MON_MENU_PERSO ID_MON_MENU_PERSO [_Toolbar("MENU PERSO", _Top, _Show, 1, 1, 1)] ID_Bouton_1 [_Button("BOUTON 1", "Bt1.bmp", "Bt1.bmp")]^C^C^P(lance_un_lisp) ^P [--] ID_Bouton_2 [_Button("BOUTON 2", "Bt2.bmp", "Bt2.bmp")]^C^C^P(lance_un_lisp) ^P Pour charger le menu automatiquement le menu partiel dans un s::statup()(if (not (menucmd "GMON_MENU_PERSO.ID_Premier=?")) ; ne trouve pas le menu (progn (command "_.menuload" "mon_menu.mns") ; charger le menu partiel (menucmd (strcat "P7=+MON_MENU_PERSO.Pop1")) ; place le menu à la 7éme position (command "_.toolbar" "TB_MON_MENU_PERSO" "") ; affiche la barre d'outil ) ) ps : ce que donne Zebulon_ à l'air exellent, ça reste à creuser@+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
zebulon_ Posté(e) le 26 octobre 2005 Posté(e) le 26 octobre 2005 salut ps : ce que donne Zebulon_ à l'air exellent, ça reste à creuser comme je suis une bille en vlisp, je me soigne. Pour la pharmacie, je suis allé voir le docteur Kenny Ramage. Sa pharmacopée est intéressante. http://www.afralisp.co.za/index.htm En plus les consultations sont gratuites, on ne creuse même pas le trou abyssal de la sécu. Amicalement Zebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
Patrick_35 Posté(e) le 26 octobre 2005 Posté(e) le 26 octobre 2005 comme je suis une bille en vlisp, je me soigne. Pour la pharmacie, je suis allé voir le docteur Kenny Ramage. Sa pharmacopée est intéressante. Ca va venir, ça va venir ;) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 26 octobre 2005 Posté(e) le 26 octobre 2005 Salut, ca n'est peut-être pas autorisé mais après tout ca leur fera de la pub ! Regarde un peu le code du programme PENGUIN :(il est enregistré en Acaddoc.lsp, suffit de s'en inspirer dans ton acaddoc) (defun-q penguin::startup ( / loaded) ;; test if loaded the Penguin menu: (if (null (menuloaded "PENGUIN")) (progn (setvar "CMDECHO" 0) (command "_MENULOAD" "Penguin_acad") (setvar "CMDECHO" 1) ) ) ;; Test if visible: (if (menuloaded "PENGUIN") (MakeToolbarVisible "PENGUIN" "Penguin") ) (princ) ) ;; Add to the current S::STARTUP: (if S::STARTUP (setq S::STARTUP (append S::STARTUP (quote ((penguin::startup))))) (defun-q S::STARTUP () (penguin::startup)) ) (defun-q MenuLoaded (menuname / acadapp menuGroups nameMG eachMG exitcode) (setq exitcode nil) (if (car (atoms-family 1 '("vl-load-com"))) (vl-load-com) ) (setq acadapp (vlax-get-acad-object) menuGroups (vla-get-menugroups acadapp) ) (vlax-for eachMG menuGroups (setq nameMG (vla-get-name eachMG)) (if (= nameMG menuname) (setq exitcode T) ) ) exitcode ) C'est du Mcneels, voir l'article sur PENGUIN Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
LUDWIG Posté(e) le 3 novembre 2005 Auteur Posté(e) le 3 novembre 2005 Merci à tous. Je n'ai pas eu le temps de trop me pencher sur vos solutions, mais j'ai l'impression qu'il y a toujours des manipulations à faire dans autocad ? Je pensais à un exécutable qui vient ajouter tous seuls les menus, icônes etc, sans qu'autocad soit ouvert. Il faut par exemple qu'au prochain démarrage le lisp de zebulon soit charger en startup, celui-ci donc chargerait ensuite les menus adéquat. Le problème est donc de faire en sorte que le lisp soit charger au prochain démarrage, sans ouvrir autocad. Par exemple, j'avais installé l'utilitaire SUPER PURGE. Celui-ci a détecté mes installations autodesk (autocad 2006 et Autodesk Architectural Desktop 2005*) et à ajouter un menu superpurge à chacune d'entre elle. * : je déconseille d'ailleurs l'installation en parallèle de AutoCAD 2006 et Autodesk Architectural Desktop 2005. J'ai eu de gros soucis et des pertes de données avec un programme sur Autodesk Architectural Desktop 2005 qui utilisait l'interpréteur de commande de 2006... Autocad 2021 - Revit 2022 - Windows 10
Patrick_35 Posté(e) le 3 novembre 2005 Posté(e) le 3 novembre 2005 Salut Dans les exemples qui te sont donnés, tu peux le faire en automatique. Dès que tu lances Autocad, si ton menu n'est pas présent, le chargement sera effectué par exemple @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
LUDWIG Posté(e) le 4 novembre 2005 Auteur Posté(e) le 4 novembre 2005 Alors je n'ai pas suivi à quelle étape on disait à autocad de charger un premier fichier (lisp ou mnu) qui s'occupe ensuite de lancer le reste. Juste après l'installation de mon programme (lisp, mnu, bmp etc), il faut bien dire une première fois à autocad : dorénavent, tu charges ce fichier à chaque démarrage... Autocad 2021 - Revit 2022 - Windows 10
(gile) Posté(e) le 4 novembre 2005 Posté(e) le 4 novembre 2005 Salut, Je ne suis pas sûr de comprendre ce que tu veux faire exactement, mais tu devrais trouver une réponse qui te convient parmi les méthodes proposées dans l'aide d'AutoCAD : Guide de personnalisation -> Introduction aux interfaces de programmation -> AutoLISP et Visual LISP -> Chargement et exécution automatiques des routines AutoLISP Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 5 novembre 2005 Posté(e) le 5 novembre 2005 Renseigne-toi sur ACADDOC.lsp et ::startup, ils sont chargés au démarrage et mon message allait dans ce sens. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
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