ToNiSOu Posté(e) le 5 septembre 2013 Posté(e) le 5 septembre 2013 Bonjour, Sous AutoCAD:En utilisant le code détachall, en lancant la commande "detachall", elle scanne et vire tout les fichiers externe qui se trouvait dans xref et les a éffacé, je l'ai bien aimé :) Pratique. Sous SuperAutoscript:sauf que ça ne marche pas si bien sous SuperAutoScript (SAS) , elle se lance mais de là, elle se perd à la fin avec multitude de CMD sans fin et en continu sans réponse. Je pense que le script (SAS)est encore en build, n'est peut etre pas fait. Peut etre, une correction dans ce script ? detachall code source LSP:(defun C:Detachall (/ *error* mip:layer-status-restore mip:layer-status-save delete-xref-img-underlay delete-all-dict ) (defun *error* (msg) (mip:layer-status-restore) (princ msg) (princ) ) ;_ end of defun (defun mip:layer-status-restore () (foreach item *PD_LAYER_LST* (if (not (vlax-erased-p (car item))) (vl-catch-all-apply '(lambda () (vla-put-lock (car item) (cdr (assoc "lock" (cdr item)))) (vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))) ) ;_ end of vla-put-freeze ) ;_ end of lambda ) ;_ end of vl-catch-all-apply ) ;_ end of if ) ;_ end of foreach (setq *PD_LAYER_LST* nil) ) ;_ end of defun (defun mip:layer-status-save () (setq *PD_LAYER_LST* nil) (vlax-for item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)) ) ;_ end of vla-get-layers (setq *PD_LAYER_LST* (cons (list item (cons "freeze" (vla-get-freeze item)) (cons "lock" (vla-get-lock item)) ) ;_ end of cons *PD_LAYER_LST* ) ;_ end of cons ) ;_ end of setq (vla-put-lock item :vlax-false) (if (= (vla-get-freeze item) :vlax-true) (vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false)) ) ;_ end of vl-catch-all-apply ) ;_ end of if ) ;_ end of vlax-for ) ;_ end of defun (defun delete-xref-img-underlay (/ count txt) (mip:layer-status-save) (vlax-for Blk (vla-get-Blocks (vla-get-activedocument (vlax-get-acad-object)) ) ;_ end of vla-get-Blocks (if (and (= (vla-get-IsXref Blk) :vlax-false) (not (wcmatch (vla-get-name Blk) "*|*")) ) ;_ end of and (progn (setq count 0 txt (strcat " Erase Xref and Underlay in " (vla-get-name Blk) ) ;_ end of strcat ) ;_ end of setq (grtext -1 txt) (vlax-for Obj Blk (setq count (1+ count)) (if (zerop (rem count 10)) (grtext -1 (strcat txt " : " (itoa count))) ) ;_ end of if (if (and (vlax-write-enabled-p Obj) (or (and ;_ XREF (= (vla-get-ObjectName obj) "AcDbBlockReference") (vlax-property-available-p Obj "Path") ) ;_ end of and (and ;_ UNDERLAY (wcmatch (vla-get-ObjectName obj) "*Reference") (vlax-property-available-p Obj "UnderlayName") ) ;_ end of and (= (vla-get-ObjectName obj) "AcDbRasterImage") ;_ IMAGE ) ;_ end of or ) ;_ end of and (VL-CATCH-ALL-APPLY 'vla-Delete (list Obj)) ) ;_ end of if ) ;_ end of vlax-for ) ;_ end of progn ) ;_ end of if ) ;_ end of vlax-for (mip:layer-status-restore) ) ;_ end of defun (defun delete-all-dict (dict) ;;; dict - dict name (like "ACAD_IMAGE_DICT", "ACAD_PDFDEFINITIONS" ... ) (vl-catch-all-apply '(lambda () (vlax-map-Collection (vla-item (vla-get-dictionaries (vla-get-activedocument (vlax-get-acad-object)) ) ;_ end of vla-get-dictionaries dict ;_ "ACAD_IMAGE_DICT" ) ;_ end of vla-Item 'vla-delete ) ;_ end of vlax-map-Collection ) ;_ end of lambda ) ;_ end of vl-catch-all-apply ) ;_ end of defun (vl-load-com) (delete-xref-img-underlay) (command "_-xref" "_d" "*") (while (> (getvar "CMDACTIVE") 0) (command)) (mapcar 'delete-all-dict (list "ACAD_IMAGE_DICT" "ACAD_PDFDEFINITIONS" "ACAD_DWFDEFINITIONS" "ACAD_DGNDEFINITIONS" ) ;_ end of list ) ;_ end of mapcar (princ) ) ;_ end of defun à moins que vous ayez un autre script bien sympa (gratuite) qui permet tout effacer les fichiers externe de xref sous SAS de preference autre que detachall et qui marche trés bien en détachant qui se trouvait dans xref (image, pdf, dwg, doc etc...) une idée? D'avance, merci
didier Posté(e) le 6 septembre 2013 Posté(e) le 6 septembre 2013 coucou plus simple : commande-xrefT* et c'est fini j'ai mal compris ? amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
ToNiSOu Posté(e) le 6 septembre 2013 Auteur Posté(e) le 6 septembre 2013 La commande T fonctionne sous autocad alors sous SAS, il faut noter dans le script: -xrefDETACHER* le probleme, sous SAS, j'aimerais detacher tout ce qui se trouve dans xref dont DWG + image (JPG/BMP) + PDF + DOC/Excel + divers, comme le fait la commande DETACHALL sous autocad, elle m'a bien plu. DETACHALL ne fonctionne que sous autocad, j'aimerais cela pareil sous SAS (peut etre en cause en build) j'espere bien avoir expliquer mon probléme?
x_all Posté(e) le 6 septembre 2013 Posté(e) le 6 septembre 2013 j'utilise pas Super Auto Script, mais de ce que j'en ai lu, ça lance des script... rien ne t’empêche de lancer DETACHALL dans un script non? (et même de le charger s'il ne l'est pas par défaut)à moins que tu ne veuille le faire tourner sous LT? bref j'ai pas tout compris... quelques trucs sur autocad
ToNiSOu Posté(e) le 9 septembre 2013 Auteur Posté(e) le 9 septembre 2013 Bonjour, j'avais trouvé un, c'est celui de DETACHALL.DETACHALL n'a aucun probléme sous autocad mais SAS a lancé ce script puis se met en continu avec des multitude de CMD sans fin, c'est ce que SAS est peut-être en build. j'aimerais un script lsp (similaire ou identique à DETACHALL) qui permet de tout detacher dwg/img/pdf/doc/excel/ tout les extentions qui se trouvent dans xref, et se lancerait sans probléme sous SAS uniquement
Patrick_35 Posté(e) le 24 septembre 2013 Posté(e) le 24 septembre 2013 Salut Deux solutions 1) Tu écris un lisp de ce style que tu sauves par exemple en test.lsp(load"c:/rep1/rep2/Detachall.lsp") (c:Detachall)et comme commande dans SAS, tu écris (load"c:/rep1/rep2/test.lsp) 2) Sans utiliser de lisp intermédiaire, tu écris en commande dans SAS(load"c:/rep1/rep2/Detachall.lsp")(c:Detachall) ps : S'il n'y a pas de boites de dialogues, une ligne lisp peut très bien servir de commande en script. Il faut juste que le lisp soit chargé auparavant. @+ 1 Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
ToNiSOu Posté(e) le 2 octobre 2013 Auteur Posté(e) le 2 octobre 2013 Salut Deux solutions 1) Tu écris un lisp de ce style que tu sauves par exemple en test.lsp(load"c:/rep1/rep2/Detachall.lsp") (c:Detachall)et comme commande dans SAS, tu écris (load"c:/rep1/rep2/test.lsp) 2) Sans utiliser de lisp intermédiaire, tu écris en commande dans SAS(load"c:/rep1/rep2/Detachall.lsp")(c:Detachall) ps : S'il n'y a pas de boites de dialogues, une ligne lisp peut très bien servir de commande en script. Il faut juste que le lisp soit chargé auparavant. @+ Salut, j'ai noté le sript :(load"c:/*****/Detachall.lsp")(c:Detachall) j'ai également testé :(load"C:/Program Files/AutoCAD 2010/LISP/Detachall.lsp")(c:Detachall) Elle s'est bien lancé sous SAS mais j'obtiens toujours le meme probléme. Désque la commande detachall a fini de tout detacher, elle continue avec une multitude de CMD à l'infini comme j'en ai expliqué dans mon premier topic.C'est comme si elle ne sait pas comment lui dire de finir et save. d'avance, merci pour l'aide, je veux etudier
philsogood Posté(e) le 21 janvier 2014 Posté(e) le 21 janvier 2014 helloquelqu'un connait-il un lisp avec les même possibilités sans détacher les Xref, images... qui sont référtencés?Phil Projeteur Revit Indépendant - traitement des eaux/CVC
ToNiSOu Posté(e) le 15 avril 2014 Auteur Posté(e) le 15 avril 2014 hello, ca date a ce que je vois, je suppose que tu as déjà trouvé ta solution.il existe déjà un lisp de chez Patrick. je confirme que ca ne marchera pas (ou jamais) sous SuperAutoScript, il y a une incohérence ou obslete.
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