Arcasdk Posté(e) le 29 avril 2008 Posté(e) le 29 avril 2008 Bonjour,Savez vous comment on peut ouvrir des plans à la chaine.??? Je sais que l'on peut passer par les scripts mais ma petite routine va en créer un. Alors faire des routines qui font des scripts qui font des scripts, celà ne doit pas être la meilleurs solutions. Pourtant je suis incapable d'ouvrir ne serait ce qu'un seul plan. Voila ce que j'ai tapé. (defun c: open (/ fichier ) (setq fichier (getfiled "\Selectionner :" (getvar "dwgprefix") "dwg" 8)) (command "ouvrir" fichier) ) Où se trouve l'erreur? Merci [Edité le 29/4/2008 par Arcasdk] <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
vinz34 Posté(e) le 29 avril 2008 Posté(e) le 29 avril 2008 Salut, C'est un coup de la variable sdi.Ilne faut pas d'espace entre c: et open Tu peux le faire plus proprement en passant par : (vl-load-com) (defun c:open2 () (setq fichier (getfiled "\Selectionner :" (getvar "dwgprefix") "dwg" 4)) (vla-open (vla-get-documents (vlax-get-acad-object)) fichier)) [Edité le 29/4/2008 par vinz34]
Arcasdk Posté(e) le 29 avril 2008 Auteur Posté(e) le 29 avril 2008 Ah ok merci, je vais essayer ça. L'espace, c'est parce qu'il me claque un smileys :o donc j'ai mis un ptit espace. <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
vinz34 Posté(e) le 29 avril 2008 Posté(e) le 29 avril 2008 Re, Si tu veux éviter les smileys, quand tu écris ton post il y a sous l'éditeur une case à cocher "Désactiver les smileys?".
Arcasdk Posté(e) le 29 avril 2008 Auteur Posté(e) le 29 avril 2008 Oki oki, Encore une petite question, mon programme fonctionnait à merveille mais je me suis aperçu qu'il ne refermer pas mes fichiers. et pour courronner le tout il me fait un beau plantage avec une phrase du style.... Utilitaires de menu AutoCAD chargés.DWG Autodesk. Ce fichier est un fichier DWG approuvé dont le dernier enregistrement a été effectué dans une application Autodesk ou dans une application sous licence Autodesk. et je ne peux plus ouvrir aucun fichier à moins de rebooter la machine.... :casstet: Est ce que ce serait du au fait qu'on ouvre un fichier avec vla-open et que moi je veuille le refermer avec (command "_close" o)...? (vl-load-com) (defun c:open (/ lst n fichier str) (if (equal dir nil) (progn (setq dir "c:/") ) ) (setq str "\nDébut de liste\n") (if (setq dir (getfiled "Impression de plusieurs Fichiers - Sélectionnez un fichier cible" dir "dwg" 4)) (progn (setq lst (acad_strlsort (vl-directory-files (vl-filename-directory dir) "*.dwg" 1)) n 0) (while (nth n lst) (setq fichier (strcat (vl-filename-directory dir) "\\" (nth n lst))) [surligneur](vla-open (vla-get-documents (vlax-get-acad-object)) fichier)[/surligneur] (setq lay (layoutlist) nb (length lay) x 0 str (strcat str (nth n lst) " --> ")) (while (/= x nb) (setq str (strcat str (nth x lay)) x (+ x 1)) ) (setq str (strcat str "\n")) [surligneur](command "_close" o)[/surligneur] (setq n (+ n 1)) ) ) ) (alert str) (princ str) (princ) ) <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
vinz34 Posté(e) le 29 avril 2008 Posté(e) le 29 avril 2008 Re, Le ventre bien rempli je te propose de remplacer les 2 lignes que tu as surligné par : (setq o (vla-open (vla-get-documents (vlax-get-acad-object)) fichier)) (vla-close o) Sur ce ...
Arcasdk Posté(e) le 29 avril 2008 Auteur Posté(e) le 29 avril 2008 Le ventre bien rempli ;) , j'ai suivi ce que tu me proposais et je t'annonce que tout fonctionne à merveille. Je te remercie. Tu as el' Bonjour deuch 'Nord. ;-) <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
Patrick_35 Posté(e) le 29 avril 2008 Posté(e) le 29 avril 2008 Salut A la lecture de ta demande, je remarque que tu ouvres un document avec vla-open, mais que tu utilises ensuite autolisp que ne sait que travailler sur le dessin courant, pas sur celui que tu as ouvertJe reprends comme exemple les présentations que tu listes avec layoutlist.L'instruction est bonne, mais sur le dessin courant.Pour les récupérer donc sur le dessin ouvert, tu dois au préalable mettre dans une variable la déclaration d'ouverture, comme l'a indiqué vinz34(setq o (vla-open (vla-get-documents (vlax-get-acad-object)) fichier))Maintenant, pour lister les présentations sur ce document(vlax-for lay (vla-get-layouts o) (setq lst (cons (vla-get-name lay) lst)) ) Un (reverse lst) te donne donc les présentations du document ouvert. Une dernière chose. Pour choisir un répertoire sans avoir besoin de pointer sur un fichier, tu as la fonction dirbox @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Arcasdk Posté(e) le 29 avril 2008 Auteur Posté(e) le 29 avril 2008 Merci bcp patrick. J'ai modifié mon programme qui en effet ne fonctionnait pas puisqu'il rester toujours sur le dessin courant et non le dessin ouvert. j'ai eu un peu de mal à intégrer tes lignes mais en réfléchissant on y arrive. Cependant ta partie concernant le dirbox reste flou. Je ne sais où l'intégrer et je n'arrive même pas à le lancer seul. peut tu m'éclairer un peu Donc pour mon programme le voici (pour aider les curieux) Donc c'est une routine qui ouvre tous les plans .dwg d'un dossier pour lister le nom de toutes les présentations. Utile lorsque vous lancez un script d'impression et que le nom des présentations n'est pas le même partout ou lorsqu'il y en a plusieurs. http://keepi.free.fr/12095371499.jpeg (defun c:toto (/ lst n fic str lay o) (vl-load-com) (if (equal dir nil) (progn (setq dir "c:/") ) ) (setq str "\nDébut de liste\n") (if (setq dir (getfiled "Impression de plusieurs Fichiers - Sélectionnez un fichier cible" dir "dwg" 4)) (progn (setq lst (acad_strlsort (vl-directory-files (vl-filename-directory dir) "*.dwg" 1)) n 0) (while (nth n lst) (setq fic (strcat (vl-filename-directory dir) "\\" (nth n lst))) (setq o (vla-open (vla-get-documents (vlax-get-acad-object)) fic) str (strcat str (nth n lst) " --> ")) (vlax-for lay (vla-get-layouts o) (setq str (strcat str (vla-get-name lay) " ")) ) (vla-close o) (setq n (+ n 1)) (setq str (strcat str "\n")) ) ) ) (alert str) (princ str) (princ) ) et pour le dirbox , est ce qu'il s'agit bien de ça???? (defun DirBox(Message Chemin Drapeau / rep sh) ; Valeur du Drapeau ; 0 = Valeur par défaut ; 1 = BIF_RETURNONLYFSDIRS = Seulement les fichiers système ; 2 = BIF_DONTGOBELOWDOMAIN = Interdit d'explorer en dehors du domaine ; 4 = BIF_STATUSTEXT = Inclure un secteur de statut. La fonction de rappel de service peut placer le texte de statut en envoyant des messages à la zone de dialogue. Ce drapeau n'est pas soutenu quand BIF_NEWDIALOGSTYLE est indiqué. ; 8 = BIF_RETURNFSANCESTORS = Seulement les sous Dossiers ; 16 = BIF_EDITBOX = Inclure une commande d'édition dans la zone de dialogue ; 32 = BIF_VALIDATE = Verifie si l'utilisateur dactylographie un nom inadmissible dans la boîte d'édition ; 512 = BIF_NONEWFOLDERBUTTON = Ne pas inclure le bouton Créer un nouveau dossier ; 4096 = BIF_BROWSEFORCOMPUTER = Autorise à parcourir le réseau ; 8192 = BIF_BROWSEFORPRINTER = Seulement le choix d'une imprimante ; 16384 = BIF_BROWSEINCLUDEFILES = Montre tout ; = BIF_BROWSEINCLUDEURLS = Montrer les raccourcis, Les drapeaux BIF_USENEWUI et de BIF_BROWSEINCLUDEFILES doivent également être placés ; = BIF_NEWDIALOGSTYLE = Employer la nouvelle interface utilisateur ; = BIF_NOTRANSLATETARGETS = Quand l'article choisi est un raccourci, renvoyer le PIDL du raccourci lui-même plutôt que sa cible. ; = BIF_SHAREABLE = Peut montrer les ressources en commun sur les systèmes à distance. Le drapeau de BIF_NEWDIALOGSTYLE doit également être placé. ; = BIF_UAHINT = Une fois combiné avec BIF_NEWDIALOGSTYLE, ajoute un conseil d'utilisation à la zone de dialogue au lieu de la boîte d'édition. BIF_EDITBOX dépasse ce drapeau. ; = BIF_USENEWUI = Employer la nouvelle interface utilisateur, y compris une boîte d'édition (setq sh (vlax-create-object "Shell.Application")) (if (setq rep (vlax-invoke sh 'browseforfolder 0 Message Drapeau Chemin)) (setq rep (vlax-get-property (vlax-get-property rep 'self) 'path)) (setq rep nil) ) (vlax-release-object sh) rep ) Merci à tous[Edité le 29/4/2008 par Arcasdk] [Edité le 30/4/2008 par Arcasdk] <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
(gile) Posté(e) le 29 avril 2008 Posté(e) le 29 avril 2008 Cependant ta partie concernant le dirbox reste flou. Je ne sais où l'intégrer et je n'arrive même pas à le lancer seul. peut tu m'éclairer un peu Tu peux utiliser DirBox à la place de getfiled pour récupérer directement un dossier.Les arguments sont :- Message : le titre de la boite de dialogue- Chemin : Un chemin par défaut pour restreindre la recherche ou une chaîne vide ("").- Drapeau : la somme des codes binaires décris dans le commentaire Exemple :(dirbox "Dossier à traiter" "" 512) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 29 avril 2008 Posté(e) le 29 avril 2008 (gile) à tout dit. :) Maintenant, on peut passer à la vitesse supérieur en utilisant ObjectDbxCela permet d'accéder au dessin, donc de récupérer le nom des présentations, mais sans les ouvrir directement dans Autocad, d'où une exécution plus rapide du lisp. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
PHILPHIL Posté(e) le 29 avril 2008 Posté(e) le 29 avril 2008 salut de nuit ARCASDK il fait quoi en fait ton lisp ?? il ouvre des fichiers selectionner dans un sous repertoire a la chaine ( un par un ) puis les referme ??? y'a moyen que je puisse modifier ta routine pour faire un netoyage de printemps ? ouvrir plein de fichier, un par un, purger, netoyer et les sauvegarder en 2007 avant de passer au suivant et d'aller prendre un cafe ou deux en attendant que l'ordi bosse sans nous pour une fois lool heuu !! j'ai été clair ou pas je ne sais plus ?? phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Arcasdk Posté(e) le 30 avril 2008 Auteur Posté(e) le 30 avril 2008 Bah biensur.... Il est là pour ca. mais si je peux me permettre, je te conseille de prendre un code qui existe déjà. et que tu peux trouver ici (scr v2.00) ou ici (Scriptor V1.02).(la page principale est là) c'est notre cher Patrick qui est à l'honneur la dessus. J'espère qu'il ne m'en voudra pas de faire un peu de pub!! Bon j'ai du boulot, le object dbx m'attend. @+ [Edité le 30/4/2008 par Arcasdk] <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
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