Aller au contenu

SUBR vs USUBR


Fraid

Messages recommandés

Bonjour,

 

En faisant des testes avec la fonction TYPE, j'ai remarqué que le type USUBR n’étais renvoyé que si la fonction étais déclarée dans Vlide.

 

Commande: (defun foo nil (princ))
FOO
Commande: (type foo)
SUBR

_$ (defun foo nil (princ))
FOO
_$ (type foo)
USUBR
on retourne ensuite dans Autocad
Commande: (type foo)
USUBR

 

Y a t'il une explication?

 

Car en dehors de Vlide je n'arrive jamais à avoir USUBR pour une fonction perso.

 

Ou je n'est rien compris...

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

La différence entre SUBR et USUBR semble assez floue, même dans l'aide :

 

SUBR   Internal AutoLISP functions or functions loaded from compiled (FAS or VLX) files
      Functions in LISP source files loaded from the AutoCAD Command prompt may also appear as SUBR 

USUBR  User-defined functions loaded from LISP source files 

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Bonjour,

 

Si on part sur le principe que les USUBR sont les fonctions autres que les fonctions natives, voici une solution pour les dénicher et les écrire dans un fichier texte.

 

(defun get-usubr ( / *error* file fct)
 (defun *error* (msg)
    (if file (close file))
    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
       (princ (strcat "\n** Error: " msg " **")))
    (princ)
 )
   (load "c:\\<Mon Dossier>\\fct.lsp")
   (setq file (open "c:\\<Mon Dossier>\\usubr.txt" "w"))
   (foreach atome (acad_strlsort (atoms-family 1))
       (if (and (= (type (eval (read atome))) 'SUBR) 
                (not (wcmatch (strcase atome) "ACET*,BNS*,VLA-*,:*,C:*"))
                (not (member (strcase atome) fct ))
            )
            (write-line (strcase atome) file)
       )
   )
   (close file)
)
(defun c:GUS nil (get-usubr))

Il faut télécharger fct.lsp, c'est la liste des SUBR natives.

Et remplacer <Mon Dossier> par votre dossier préféré(approuvé par Autocad).

Si vous n'avez pas chargé de Lisp, vous n'aurez que get-usubr dans le fichier texte usubr.txt.

J'ai rajouté la gestion d'erreur, c'est mieux.

Modifié par Fraid
Lien vers le commentaire
Partager sur d’autres sites

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é