Patrick_35 Posté(e) le 14 octobre 2005 Posté(e) le 14 octobre 2005 Bonjour à vous tousJe viens de découvrir que l'on pouvait faire appel à des fonctions des express tools du style(acet-ui-message "Message d'alerte" "WARNING" 48) (acet-ui-message "Message d'information" "INFO" 64) Où peut-on retrouver toutes ces fonctions avec leurs arguments ? (et pas uniquement pour l'exemple ci-dessus) Merci @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 14 octobre 2005 Posté(e) le 14 octobre 2005 Je ne peux te répondre précisement.Par curiosité j'ai visité "AcetUtil.Arx" et j'ai trouvé tout ça dedans: (ACET-UTIL-VER)(ACET-UI-TXTED)(ACET-UI-PICKDIR)(ACET-UI-MESSAGE)(ACET-SYS-WAIT)(ACET-SYS-TERM)(ACET-SYS-SPAWN)(ACET-SYS-SLEEP)(ACET-SYS-PROCID)(ACET-SYS-LASTERR)(ACET-SYS-KEYSTATE)(ACET-SYS-FOREGROUND)(ACET-SYS-COMMAND)(ACET-SYS-BEEP)(ACET-STR-REPLACE)(ACET-STR-FORMAT)(ACET-STR-FIND)(ACET-REG-PUT)(ACET-REG-PRODKEY)(ACET-REG-GET)(ACET-REG-DEL)(ACET-INI-SET)(ACET-INI-GET)(ACET-FILE-RMDIR)(ACET-FILE-REMOVE)(ACET-FILE-MOVE)(ACET-FILE-MKDIR)(ACET-FILE-CWD)(ACET-FILE-COPY)(ACET-FILE-CHDIR)(ACET-FILE-ATTR)(ACET-ENT-GEOMEXTENTS) Si tu fais appel aux fonctions sans arguments alors qu'ils sont requis, tu obtiens une erreur ADS qui te retourne la forme de la syntaxe qui doit être soumis. Le type de l'argument n'est pas toujours facile à identifier. Exemple pour:(ACET-UI-MESSAGE) Utilisation: (acet-ui-message [< saisie > [< type >]]); erreur:Demande ADS erronée NB: L'arx regardé correspond à une version française de démo des express.Une version intégrale anglaise à peut être encore d'autres fonctions?[Edité le 14/10/2005 par bonuscad] [Edité le 14/10/2005 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Invité Patrick Posté(e) le 14 octobre 2005 Posté(e) le 14 octobre 2005 Oui y a des trucs rigolos dans AutoCAD, par exemple on peut faire clignoter un objet... (BNS_BLINK_AND_SHOW_OBJECT) (pas testé depuis la 2002, à voir...premier argument nom de l'entité, deuxième, la couleur) Plus d'infos sur http://www.cadxp.com/autocad_secret+main.html
Patrick_35 Posté(e) le 14 octobre 2005 Auteur Posté(e) le 14 octobre 2005 Merci de ton aide BonusSi tu fais la commande acadinfo sur autocad, tu écris le fichier acadinfo.txt dans lequel tu retrouves toutes ces fonctions mais pas leurs arguments :(J'ai trouvé sur l'autre forum toutes les explications par rapport à mon exemple et je me demandais si par hasard il n'existait pas quelques choses reprenant toutes ces commandes et leurs argumentaires afin de se faciliter la vie dans les lisps.Si je suis ton exemple avec (acet-ui-message), il m’est impossible de deviner la valeur des flags ainsi que la valeur par exemple 1 qui m’est retourné par cette fonction. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Patrick_35 Posté(e) le 14 octobre 2005 Auteur Posté(e) le 14 octobre 2005 Merci Patrick, je vais regarder de plus près @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 14 octobre 2005 Posté(e) le 14 octobre 2005 Pour la valeur retournée, je ne vois pas comment avoir l'info à part de constater les résultats Tiens une routine (qui n'est plus trop récente!) qui aide bien pour découvrir des fonctions non soupconnées. Tu lance la fonction tu reponds "Toutes" au premier message, tu peux choisir de trier le résultatAprès l'affichage du listing des Commande externe... Choisis "Oui" au message -> Les options suivantes sont plutôt destinées à des programmeurs LISP.Voulez voulez la liste des fonction et variables [Oui/Non]? : Là ça devient interressant car tu auras la liste des variables et des FONCTIONS qui sont chargée en mémoire. Tu trouveras encore des fonctions ACET et d'autres. (defun fclerr (ch) (cond ((eq ch "Function cancelled") nil) ((eq ch "quit / exit abort") nil) ((eq ch "console break") nil) (T (princ ch)) ) (if f (close f)) (setq *error* olderr) (princ) ) (defun c:fc-load ( / olderr list_a elem cmpt nwlist cod cmmt extlst temp listnw slist f a ch fc_lst vr_lst) (setq list_a (atoms-family 1) cmpt 0 nwlist () extlst () temp () fc_lst () vr_lst ()) (setq olderr *error* *error* fclerr) (textpage) (while list_a (setq elem (car list_a)) (if (= (substr elem 1 2) "C:") (setq nwlist (cons elem nwlist)) (setq listnw (cons elem listnw)) ) (setq list_a (cdr list_a)) ) (prompt "\nListe de toutes les commandes en mémoires, ou celle chargée depuis le début de") (prompt "\nla session graphique-") (initget "Toutes Session") (setq cmmt (getkword "[Toutes/Session] ?< S >: ")) (if (or (= cmmt "Session") (= cmmt nil)) (progn (initget "Oui Non") (setq cod (getkword "\nExclure les fonction autochargée par AutoCAD, [Oui/Non]? < O > : ")) (prompt "\nExamem de la mémoire en cours ...|") (if (= cod "Non") (setq f (open (findfile "atomlst0.ori") "r")) (setq f (open (findfile "atomlst1.ori") "r")) ) (if f (progn (setq a (read-line f)) (while a (setq extlst (cons a extlst)) (setq a (read-line f)) ) (while extlst (setq cmpt (1+ cmpt)) (cond ((eq cmpt 0) (prompt (strcat (chr 08) (chr 124)))) ((eq cmpt 1) (prompt (strcat (chr 08) (chr 47)))) ((eq cmpt 2) (prompt (strcat (chr 08) (chr 45)))) ((eq cmpt 3) (prompt (strcat (chr 08) (chr 92)))(setq cmpt -1)) ) (if (member (car extlst) nwlist) (setq nwlist (subst nil (car extlst) nwlist)) ) (if (member (car extlst) listnw) (setq listnw (subst nil (car extlst) listnw)) ) (setq extlst (cdr extlst)) ) (prompt (strcat (chr 08) (chr 32))) (setq cmpt 0) (while nwlist (if (/= (car nwlist) nil) (setq temp (cons (car nwlist) temp)) ) (setq nwlist (cdr nwlist)) ) (setq nwlist temp temp ()) (while listnw (if (/= (car listnw) nil) (setq temp (cons (car listnw) temp)) ) (setq listnw (cdr listnw)) ) (setq listnw temp) (close f) ) (progn (prompt "\nLe fichier ATOMLST1.ORI n'a pas été trouvé utilise l'option Toutes") (prompt "\nUtilisez le programme FC-INIT.LSP pour le définir") ) ) ) ) (initget "Oui Non") (setq cod (getkword "\nTrier les commandes dans l'odre alphabétique, [Oui/Non] ? < O > : ")) (if (or (= cod "Oui") (= cod nil)) (progn (if (not (null nwlist)) (setq list_a (acad_strlsort nwlist)) (setq list_a nwlist)) (if (not (null listnw)) (setq slist (acad_strlsort listnw)) (setq slist listnw)) ) (setq list_a nwlist slist listnw) ) (prompt "\nListe des commandes actuellement chargées :") (while list_a (setq elem (car list_a)) (if (= cmpt 23) (progn (prompt "\n<-- Tapez une touche pour la suite -->") (grread) (prompt "\nListe des commandes actuellement chargées :") (setq cmpt 0) ) ) (cond ((= (type (eval (read elem))) 'EXSUBR) (prompt "\nCommande externe (ARX).... ") ) (T (prompt "\nCommande externe (LISP)... ") (setq fc_lst (cons elem fc_lst)) ) ) (prin1 (read (substr elem 3))) (setq cmpt (1+ cmpt)) (setq list_a (cdr list_a)) ) (prompt "\n\n-> Les options suivantes sont plutôt destinées à des programmeurs LISP.") (initget "Oui Non") (setq cod (getkword "\nVoulez voulez la liste des fonction et variables [Oui/Non]? < N > : ") cmpt 0) (if (= cod "Oui") (progn (prompt "\nListe des fonctions et variables actuellement définies :") (while slist (setq elem (car slist)) (if (= cmpt 23) (progn (prompt "\n<-- Tapez une touche pour la suite -->") (grread) (prompt "\nListe des fonctions et variables actuellement définies :") (setq cmpt 0) ) ) (cond ((= (type (eval (read elem))) 'SUBR) (prompt "\nFonction interne .... ") ) ((= (type (eval (read elem))) 'EXSUBR) (prompt "\nFonction externe (ARX).... ") ) ( (and (= (type (eval (read elem))) 'LIST) (or (= (type (car (eval (read elem)))) 'LIST) (null (type (car (eval (read elem))))) ) ) (if (or (= (type (caar (eval (read elem)))) 'SYM) (= (type (caar (eval (read elem)))) nil) ) (progn (prompt "\nFonction utilisateur .... ") (setq fc_lst (cons elem fc_lst)) ) (progn (prompt "\nVariable .... ") (setq vr_lst (cons elem vr_lst)) ) ) ) (T (prompt "\nVariable .... ") (setq vr_lst (cons elem vr_lst)) ) ) (prin1 (read elem)) (setq cmpt (1+ cmpt)) (setq slist (cdr slist)) ) (prompt "\n\n** ATTENTION ** une variable représentant une liste débutant par nil,") (prompt "\nest considérée comme une fonction.\n") (initget "Oui Non") (setq cod (getkword "\nProcéder pour le LISP à un nettoyage de la mémoire [Oui/Non]? : ")) (if (= cod "Oui") (progn (prompt "\nDes variables OU de tout (variables+fonctions+commandes)-") (initget "Variables Tout") (setq cod (getkword "[Variables/Tout]? : ")) (prompt "\n\n** ATTENTION ** pour les variables représentant un descripteur de fichier,") (prompt "\nelles ne seront pas traitées (impossible de s'assurer que le fichier est fermé.)\n") (prompt "\n** Etat de la mémoire avant nettoyage **") (mem) (cond ((= cod "Tout") (setq fc_lst (append vr_lst fc_lst)) (while fc_lst (if (and (/= (car fc_lst) "PI") (/= (car fc_lst) "PAUSE") (/= (car fc_lst) "T") (/= (car fc_lst) "FC_LST") (/= (car fc_lst) "OLDERR") (/= (car fc_lst) "FCLERR") (/= (car fc_lst) "C:FC-LOAD") (/= (type (eval (read (car fc_lst)))) 'FILE) (/= (type (eval (read (car fc_lst)))) 'EXSUBR) ) (eval (read (strcat "(setq " (car fc_lst) " nil)"))) (prompt (strcat "\n ->" (if (member (car fc_lst) vr_lst) "Variable " (if (= (substr (car fc_lst) 1 2) "C:") "Commande " "Fonction " ) ) (car fc_lst) " ignorée." ) ) ) (setq fc_lst (cdr fc_lst)) ) ) (T (while vr_lst (if (and (/= (car vr_lst) "PI") (/= (car vr_lst) "PAUSE") (/= (car vr_lst) "T") (/= (car vr_lst) "VR_LST") (/= (car vr_lst) "OLDERR") (/= (type (eval (read (car vr_lst)))) 'FILE) ) (eval (read (strcat "(setq " (car vr_lst) " nil)"))) (prompt (strcat "\n-> Variable " (car vr_lst) " ignorée.")) ) (setq vr_lst (cdr vr_lst)) ) ) ) (gc) (prompt "\n\n** Etat de la mémoire après nettoyage **") (mem) ) ) ) ) (setq *error* olderr) (princ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Patrick_35 Posté(e) le 14 octobre 2005 Auteur Posté(e) le 14 octobre 2005 Merci Bonus, ça décoiffe :cool: Je suis impressionné par ton lisp, on y retrouve même des fonctions cachées :) . Il me reste plus qu'à regarder sérieusement les résultats et à deviner quelles variables et quels flags correspondent à telle fonction. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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