Aller au contenu

Messages recommandés

Posté(e)

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>

Posté(e)

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]

Posté(e)

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>

Posté(e)

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?".

 

Posté(e)

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>

Posté(e)

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 ...

Posté(e)

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>

Posté(e)

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 ouvert

Je 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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>

Posté(e)

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

Posté(e)

(gile) à tout dit. :)

 

Maintenant, on peut passer à la vitesse supérieur en utilisant ObjectDbx

Cela 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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

Posté(e)

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>

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é