Aller au contenu

Erreur : nb max jeux de sélec


Messages recommandés

Posté(e)

Bonjours,

alors là, celle là je ne l'avais jamais vu :

Erreur: dépassement du nombre maximum de jeux de sélection
...

et je ne sais pas d'où ça vient... (je n'ai pas accès au lisp que j'utilisais à ce moment là, c'est un vieux vlx que j'ai récupéré à mon bureau....)

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Salut,

 

Extrait de l'aide à propos de ssget :

 

Selection sets consume AutoCAD temporary file slots, so AutoLISP is not permitted to have more than 128 open at one time. If this limit is reached, AutoCAD cannot create any more selection sets and returns nil to all ssget calls. To close an unnecessary selection set variable, set it to nil.

 

En gros, le nombre de jeu de sélections ouverts en même temps ne peut dépasser 128.

Le LISP (vlx) que tu utilisais ne devait pas remettre les variables inutiles à nil.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

  • 2 mois après...
  • 6 ans après...
Posté(e)

Bonjour

 

Pas vraiment débutant mais fortement autodidacte :(, j'arrive a mes limites de compréhension.

 

Utilisateur de Mapd3D2008 avec une surcouche GEOMAP 2009 et un bon train de retard, je suis en galère sur une publication.

 

Suite a un ensemble d'action GEOMAP puis MAP et enfin lisp je me retrouve en "error : dépassement du nombre maximum de jeux de sélection"

 

Y a t'il moyen de moyenné ?

Posté(e)

B

 

Suite a un ensemble d'action GEOMAP puis MAP et enfin lisp je me retrouve en "error : dépassement du nombre maximum de jeux de sélection"

 

Salut

map ne devrait pas laisser trainer des jeux de sélection, geomap non plus, regarde du coté des tes lisps :

faite une recherche sur tous les (SSGET

s'il sont attribués à une variable:

(setq uneVar (ssget ...))

regarde biens que la variable uneVar figure à droite du / du defun :

(defun maCommande ( / myVar)

 

si ça persiste, vérifie que tes ssget ne sont pas attribué à une variable incrémentée,

genre (set (read (strcat "Prefix" (itoa i)))) avec une boucle qui incrémente le i

bon courage,

Gérald

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e)

si ça persiste, vérifie que tes ssget ne sont pas attribué à une variable incrémentée,

genre (set (read (strcat "Prefix" (itoa i)))) avec une boucle qui incrémente le i

bon courage,

Gérald

 

Je crois bien que je suis en plein dedans avec le 'setq List_bat' incrémenté en ligne 3 : :angry:

 

(while (/= list_bat nil)

(setq Nam_bloc (car (car list_bat)))

(setq
list_bat
(cdr list_bat))...

 

Un repeat en lieu et place du while ferais t'il mon affaire?

 

Cdlt

Olivier

Posté(e)

Pas de SSGET mais SETQ pour la variable Liste_bat qui est incrémentée:

 

(while (/= list_bat nil)

(setq Nam_bloc (car (car list_bat)))

(setq list_bat (cdr list_bat))

(ggsetcontext (strcat "Nom_Batiment=" nam_bloc))

(if (= (tblsearch "LAYER" "CONTOUR_BATIMENT") nil)

(command "calque" "n" "CONTOUR_BATIMENT" "ch" "CONTOUR_BATIMENT" "")

(setvar "CLAYER" "CONTOUR_BATIMENT")

)

(command "ExeRequest" "BATIMENT&Contour" )

(command "bloc" nam_bloc "0,0" "der" "")

(command "_insert" nam_bloc "0,0" "1" "" "0")

(if (= site "CEAG")

(if (= (member Nam_bloc Bat_exclu ) nil)

(progn

(if (= (tblsearch "LAYER" "CONTOUR_ANEX")nil)

(command "calque" "n" "CONTOUR_ANEX" "ch" "CONTOUR_ANEX" "")

(setvar "CLAYER" "CONTOUR_ANEX")

)

(command "_insert" nam_bloc "0,0" "1" "" "0")

)

)

)

)

Le SSGET viens après sur la création de fiçhiers log de vérif:

 

La première partie:

 

(defun c:TEST_CM (/ NbSSGET SSGet_BAT SSGet_rdo SSGet_FIXE SSGet_MOBILE Suite)

(setq Date_Creation (def_date(getvar "tducreate")))

;;____________ CONTOUR_BATIMENT

 

(if (/= (ssget "x"'((8 . "CONTOUR_BATIMENT")(0 . "INSERT")))nil)

(progn

;;Selection de l'ensemble des blocs (0 . "INSERT") dans le calque CONTOUR_BATIMENT (8 . "CONTOUR_BATIMENT")

(setq SSGet_BAT (ssget "x"'((8 . "CONTOUR_BATIMENT")(0 . "INSERT"))))

;;Nombre d'obget dans la selection

(setq NbSSGET (sslength SSGet_BAT))

(setq listObjBAT(strcat ": CONTOUR_BATIMENT "))

(if (/= NbSSGET nil)

(progn

(setq Suite 0)

(repeat NbSSGET

(setq listObjBAT(strcat ": " (cdr(assoc 2(entget(ssname SSGet_BAT suite))))listObjBAT))

(setq suite (+ 1 suite))

)

)

)

)

(setq listObjBAT (strcat "Pas d'objet sur le calque CONTOUR_BATIMENT"))

)

...

Posté(e)

salut,

je ne vois pas dans ton code la multiplication des jeux de sélection

dans la discussion, il y a plus haut un lien de gile,

suit le et tu trouvera:

- un lisp pour effacer les ss surnuméraires

- un lisp pour les compter

 

commence déjà par celui pour les compter,

si tu vois qu'ils sont nombreux, il te faudra modifier le lisp de comptage pour qu'il te donne les nom de symboles correspondants, que tu recherchera dans tes lisp:

si ça ne corresponds pas à tes lisps, ça veut dire que le problème vient des applications tierces, la tu ne peux rien faire, sauf lancer le lisp de nettoyage de temps en temps

Gérald

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e)

Merci Gérald,

 

J'ai tester les lien de Gile sans aucun succès, je vais tenter de lancer le TEST_CM juste après le lancement des requêtes d'affichage des données. :unsure:

 

Je vous tiens aux jus.

salut,

quand tu as l'erreur, tu colle ce code dans la fenêtre texte:

(foreach i (atoms-family 0)
   (setq iType (type (eval i)))
   (if (setq tempList (assoc iType TypeList))
       (setq TypeList (subst (cons iType (1+ (cdr tempList))) tempList TypeList))
       (setq TypeList (cons (cons iType 1) TypeList))
   )
)

tu devrais obtenir un truc comme ça :

((FILE . 1) (PICKSET . 126) (LIST . 52) (VLA-OBJECT . 13) (VLR-Command-Reactor .

1) (REAL . 2) (ENAME . 4) (STR . 43) (SYM . 157) (SUBR . 5985) (EXRXSUBR . 397)

(INT . 970))

 

remarque bien que pickset = 126 /= 128, c'est curieux

 

pour avoir le nom de tes js lisp :

 

(defun c:nomdunJS! ()
 (foreach i (atoms-family 0)
   (setq iname (vl-symbol-name i))
   (setq iType (type (eval i)))
   (if	(= 'PICKSET iType)
     (setq nomList (cons iname nomlist))

   )
 )
 nomlist
)

j'obtiens:

("SS1099" "SS1100" "SS1101" "SS1102" "SS1103" "SS1104" "SS1105" "SS1106"

"SS1107" "SS1108" "SS1109" "SS1110" "SS1111" "SS1112" "SS1113" "SS1114"

"SS1115" "SS1116" "SS1117" "SS1118" "SS1119" "SS1120" ...)

 

après je lance :

(j'ai remplacé le eq par un =, là ça marche, mais c'est bizare, le eq devrait marcher)

(defun c:PurgeSelectionSets ( / picksets )

   (foreach pickset
   
       (setq picksets
           (vl-remove-if-not
              '(lambda ( symbol ) (= 'pickset (type (eval symbol))))
               (atoms-family 0)
           )
       )    
       
       (princ 
           (strcat
               "Purging <" 
               (vl-symbol-name pickset)
               ">\n"
           )
       )
       
       (set pickset nil)
       
   )
   
   (princ 
       (strcat 
           "Purged " 
           (itoa (length picksets)) 
           " selection set(s)."
       )
   )
   
   (princ)

)

et j'obtiens :

Purging <SS1101>

Purging <SS1100>

Purging <SS1099>

Purged 120 selection set(s).

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e)

Bonjour GEGEMATIC,

 

Pour le retour

Chez moi pas besoin de = car avec eq aucun problème..

 

Et

_$ 
; erreur: dépassement du nombre maximum de jeux de sélection
_$ 
$ (length (c:nomdunJS!))
128

Me retourne bien 128 jeu de sélection

 

A+

(ps: Attention à la localisation des variables dans la fonction nomdunJS!)

Apprendre => Prendre => Rendre

Posté(e)

Bonjour GEGEMATIC,

 

Pour le retour

Chez moi pas besoin de = car avec eq aucun problème..

 

Et

_$ 
; erreur: dépassement du nombre maximum de jeux de sélection
_$ 
$ (length (c:nomdunJS!))
128

Me retourne bien 128 jeu de sélection

 

A+

(ps: Attention à la localisation des variables dans la fonction nomdunJS!)

salut,

merci pour le retour,

C'est curieux, je referais le test demain, et je ne suis pas sur d'obtenir les même résultats.

parfois il faut quitter windows pour qu'autocad re-marche normalement

a+

Gérald

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e)

Salut,

 

ce matin j'ai toujours 126 js, mais par contre eq fonctionne ...

par contre il est a noter que le nombre de js est fixé pour la session autocad, et non par dessin

Toujours 128 jeu de sélection chez moi ;)

Effectivement la limite de 128 js est valable pour l'ensemble des documents de la session AutoCAD,je n'y avais jamais prêté attention, merci.

A+

Apprendre => Prendre => Rendre

Posté(e)

Bonjour

Je lance le code suivant

(foreach i (atoms-family 0)
   (setq iType (type (eval i)))
   (if (setq tempList (assoc iType TypeList))
       (setq TypeList (subst (cons iType (1+ (cdr tempList))) tempList TypeList))
       (setq TypeList (cons (cons iType 1) TypeList))
   )
)

et en voila le retour

((REAL . 1) (SYM . 11) (INT . 4) (STR . 15) (LIST . 5) (EXRXSUBR . 484) (SUBR . 689))

Posté(e)

 

et en voila le retour

((REAL . 1) (SYM . 11) (INT . 4) (STR . 15) (LIST . 5) (EXRXSUBR . 484) (SUBR . 689))

Salut,

est-ce que tu as ce résultat après avoir eu le message d'erreur, ou à froid,

parce-que là, tu n'a pas de pickset !

 

il faut faire la séquence de test lorsque tu as l'erreur

 

Gérald

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e)

Salut Gérald

 

Oui j'ai bien passé le code après le code erreur et effectivement aucun pickset.

 

Pour le moment, j'ai détourné la vérification de mon fichier (TEST_CM) en incrémentant mes listObj au niveau de mes requêtes par la variable Nam_bloc. Ce n’est donc pas une véritable vérification…

:( Peu satisfaisant :( mais ça me rend déjà bien service.

Posté(e)

Salut,

 

Oui j'ai bien passé le code après le code erreur et effectivement aucun pickset.

 

Il faudrait déjà que tu nous donne la séquence de commandes qui t’amène au message d'erreur

 

le fait qu'il n'y ait pas de pickset voudrait dire :

- soit que les variables contenant les pickset sont localisées, mais ça voudrai dire que tu aurai un defun avec 128 variable à droite du slash ... pas trs plausible

- soit que la fonction *error* contient une remise à nil d'une liste de variable

- Soit, et la je n'ai pas le moyen de vérifier, que la limite de 128 js n'est pas propre au lisp, mais partagée avec Arx, auquel cas Geomap pourrait être la cause

 

Gérald

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

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é