Aller au contenu

Purge dictionnaire AEC avec Map


bonuscad

Messages recommandés

Bonjour

 

Je lance juste un avertissement concernant la purge des dictionnaire AEC Sur AutoCadMap

 

Jusqu'à maintenant j'utilisais un lisp de (gile) pour purger ceux-ci (en voici la copie)

;; RemoveAEC (gile)
;; Supprime tous les dictionnaires AEC du dessin
(defun c:RemoveAEC ()
 (foreach p (entget (namedobjdict))
   (if (and (= 3 (car p))
            (wcmatch (cdr p) "AEC*")
       )
     (dictremove (namedobjdict) (cdr p))
   )
 )
 (princ)
)

 

Avec celui-ci, nickel! , je me débarrasse de cette base AEC

 

Mais (gile) avait aussi créé un lisp postérieur au précédent(dont je met aussi la copie)

;; gc:GetDictEntries
;; Retourne la liste des entrées du dictionnaire
;; sous forme de paires pointées (Nom . ENAME)
;;
;; Argument : dict le dictionnaire (ENAME ou liste DXF)

(defun gc:GetDictEntries (dict / result)
(and (= (type dict) 'ENAME) (setq dict (entget dict)))
(while
(setq dict (vl-member-if (function (lambda (x) (= (car x) 3))) (cdr dict)))
(setq result (cons (cons (cdar dict) (cdadr dict)) result))
)
(reverse result)
)


;; Supprime tous les dictionnaire AEC*
(defun removeAEC1 ()
(foreach dict (gc:GetDictEntries (namedobjdict))
(if (wcmatch (car dict) "*AEC*")
 (foreach entry (gc:GetDictEntries (cdr dict))
   (entdel (cdr entry))
 )
;supprime dans le dictionnaire 
(entdel (cdr dict))
);fin if
)
(princ)
);fin defun

;; Purge les applications enregistrées
(defun purgereg ()
(command "_purge" "_reg" "*" "_no")
(princ)
)

(defun c:removeAEC ()
(prompt "\nATTENTION ce programme va SUPPRIMER tous les objets AEC de ce dessin ")
(initget "Oui Non")
(setq rep (getkword "\nContinuer à supprimer ? [Oui/Non] <Oui>: "))
(cond
((or (not rep) (= "Oui" rep))
   (removeAEC1)
   (purgereg)
)
);fin cond
);fin defun
(prompt "\nprogramme chargé, saisir: removeAEC pour lancer.") 

 

Avec ce second si tout semble se passer correctement; les dictionnaire sont aussi purgés, j'ai eu la désagréable surprise de perdre TOUTES mes données d'objet de Map (OD).

Ce que j'ai constaté:

- Utilisation de la routine Ok!

- Vérification de l’existence des OD Ok!

- Enregistrements du fichier puis fermeture de celui-ci (rien d'anormal, aucun message ou autre)

- Réouverture de celui et là le drame PLUS AUCUNES données d'objet.

 

Donc méfiance avec la seconde mouture, à moins que (gile) ait le temps d'identifier le problème... sachant que la première version n'a pas cet inconvénient. Moi je comprend pas la nuance entre les deux (j'ai du mal avec les dictionnaires) et cela ne vient pas du "purge" "reg" car je le fais manuellement avec la 1ère version sans souci.

Un homme averti en vaut deux :P

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

  • 9 mois aprè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 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é