Aller au contenu

Messages recommandés

Posté(e)

Bonjour à vous tous

Je 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 Patrick

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

Joseph Joubert, 1754-1824

Posté(e)

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

Posté(e)

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

Posté(e)

Merci de ton aide Bonus

Si 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 Patrick

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

Joseph Joubert, 1754-1824

Posté(e)

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ésultat

Aprè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

Posté(e)

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 Patrick

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

Joseph Joubert, 1754-1824

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é