l56 Posté(e) le 31 mai 2008 Posté(e) le 31 mai 2008 j'ai un dépassement de pile avec :vlr-objectmodified avec autocad 2004 / 2006 sur XP : pas de problèmeavec 2008 2009 sur VISTA: Dépassement de pile et autocad se ferme. Y'a-t-il un moyen de connaître la puissance de la pile. (et de pouvoir l'augmenter) Merci
(gile) Posté(e) le 31 mai 2008 Posté(e) le 31 mai 2008 Salut, Je ne vois pas bien en quoi vlr-acdb-reactor peut provoquer un dépassement de la pile. À ma connaissance on parle de dépassement de la pile avec les fonctions récursives quand le nombre d'appels récursifs dépasse la limite de la pile (19975 appels selon mes tests). On parle aussi de dépassement de la pile pour les créations de fichiers de forme (SHX), voir l'aide > Guide de personnalisation > Formes et polices de formes > Création de fichiers de définition de forme > Codes spéciaux > Codes 5 et 6 : enregistrement/restauration de l'emplacement. EDIT :Je pencherais plutôt pour la deuxième solution (même si je ne suis pas familier avec la création de fichiers de forme), le message retourné pour une fonction récursive est le suivant :Une erreur matérielle s'est produite ***limite de la pile interne atteinte (simulation) [Edité le 31/5/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 31 mai 2008 Posté(e) le 31 mai 2008 pour une fonction récursive est le suivant :Une erreur matérielle s'est produite ***limite de la pile interne atteinte (simulation) Ben moi je l'ai eu tout récemment pour une forme itérative, avec (foreach) pour être exact. D'ailleurs mon cas m'a assez dérouté. La première fois une erreur fatale "unwid quelque chose" de mémoire...La deuxième un dépassement de pile.et la troisième une erreur d'obtention de licence (hein, quoi, qu'est qui ce passe)?!?! Tout ça en rebootant la machine à chaque fois, et en faisant exactement la même opération.Et à chaque fois le recover inexploitable (quelque octets seulement) merci Autodesk!Ceci sous une 2008. Au final, j'abandonne la compréhension des erreurs, et je configure mes sauvegardes automatiques de manière rapprochée. Je perds moins de boulot et ai plus de succès avec les SV$ que les fichiers de récupération d'Autocad. NB: Mon fichier fait quant 129Mo (3D filaire, essentiellement des 3Dpoly avec des Xdata et des blocs avec attributs) pas de quoi fouetter un chat. Mais celle qui m'a posé problème et la 3Dpoly la plus longue avec vraiment beaucoup de sommets (130km) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
l56 Posté(e) le 2 juin 2008 Auteur Posté(e) le 2 juin 2008 (vl-load-com) (vlr-acdb-reactor nil '((:vlr-objectmodified . mafonction-objet-modified))) (defun mafonction-objet-modified (a b) (princ "\n")(princ (cdr (assoc 0 (entget (cadr b))))) )Chargez les lignes ci-dessus et passer d'un onglet presentation à l'onglet objet(Faites cela dans un dessin vierge ou sauvegardez avant) Dans autocad 2004 et 2006 : pas de pbdans 2008 et 2009 -> (Dépassement de pile) et autocad se ferme !)
Arcasdk Posté(e) le 2 juin 2008 Posté(e) le 2 juin 2008 Bonjour bonjour, Qu'est ce que c'est que "la pile" pour un novice. C'est une sorte de mémoire vive.. c'est ça.?? <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
bonuscad Posté(e) le 2 juin 2008 Posté(e) le 2 juin 2008 C'est une sorte de mémoire vive.. c'est ça.?? Tout à fait.C'est ce qui correspond au paramètre "stack" lorsque que tu fait (mem) en ligne de commande. Cela fait bien longtemps que je n'ai plus touché à ces paramètres. On peut modifier le comportement de la pile, notamment pour les fonctions récursives comme l'a fait remarquer (gile). Il y a la fonction (gc): garbage collector qui en gros récupère des segments mémoires inutilisé.(peut être utile aussi, de mémoire, lorsqu'on atteint le maximum de de jeux de sélections permis, pour pouvoir recommencer d'autre jeux de sélection) (alloc) et (expand) pour allouer des segments plus large, tu peux ainsi augmenter la profondeur de pile pour des fonctions récursives. Si tu utilise les xdata, il y a aussi les fonctions (xdsize) et (xdroom) pour augmenter la mémoire occupée par les xdata. Ne pas jouer avec ces fonctions en aveugle, sous peine d'avoir de forte dégradations de performance si cela est mal géré. Généralement les paramètres par défaut sont très bien. L'époque où je m'en suis servir, et lorsque que le lisp a pu se lancer en mémoire étendue à l'aide d'un utilitaire ext-lisp sous dos en proc 386. Ca ne me rajeuni pas.... :P Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
l56 Posté(e) le 2 juin 2008 Auteur Posté(e) le 2 juin 2008 Merci Bonuscad pour tous ces infos.Je vais m'y plonger. a+
Arcasdk Posté(e) le 2 juin 2008 Posté(e) le 2 juin 2008 Clair et précis, Merci <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
Patrick_35 Posté(e) le 2 juin 2008 Posté(e) le 2 juin 2008 Salut l56 :De mémoire, il me semble avoir eu aussi ce problème de dépassement de pile dans un réacteur.C'était l'entget qui posait problème. En utilisant un vlax-ename->vla-object à la place, cela a été réglé.Il y a parfois une logique qui me dépasse. bonuscad :sous dos en proc 386. Ca ne me rajeuni pas....Ben non. Cela me rappelle la gestion sous dos lors du boot des différentes config. afin d'optimiser au mieux les mémoires et de tenir dans les fameux premiers 640ko, la gestion des irq car le plug&play n'existait pas encore avec le pc complètement ouvert pour faire joujou avec les switchs et les nuits blanches qui en découlent.Maintenant, cela devient d'un compliqué... @+ [Edité le 2/6/2008 par Patrick_35] 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 2 juin 2008 Posté(e) le 2 juin 2008 C'était l'entget qui posait problème. Je pense que tu a raison Patrick_35, car j'ai essayé le code incriminé par l56 et en gardant juste: (princ (cadr b))au lieu de(princ (cdr (assoc 0 (entget (cadr b))))) le code ne posait plus de problème... Autrement c'est vrai que la fermeture, pour moi et sous 2008, était instantanée, même pas moyen de lire un quelconque message d'erreur :( Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
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