Aller au contenu

Connaitre le status d\'un fichier ouvert/pas ouvert


Messages recommandés

Posté(e)

Bonjour a tous,

 

J'utilise "Ouvrir_dessin_dbx" de patrick_35 mais si le fichier est déja ouvert (par la routine ou tout simplement par l'utilisateur via l'interface AutoCAD) la commande (vla-open ... plante.

 

Donc, comment savoir si le fichier est déjà ouvert, et s'il est que faire ?

 

Merci

Posté(e)

Salut,

 

Tu peux vérifier s'il est ouvert dans la même session (c'est un membre de la collection Documents) auquel cas, tu peux le traiter. Si plusieurs sessions sont ouvertes, tu peux chercher un fichier *.dwl et dans ce cas, tu ne peux pas (à ma connaissance) le traiter.

 

La routine suivante retourne une liste :

(IAcadDocument) si le document est ouvert dans la session

(IAxDbDocument . T) si le document est fermé

nil si le document n'a pu être trouvé (ou ouvert dans une autre session)

 

 

;;; gc:GetDocument
;;; Accéder à un dessin ouvert ou fermé
;;;
;;; Retourne une liste :
;;; (IAcadDocument) si le document est ouvert dans la session
;;; (IAxDbDocument . T) si le document est fermé (ODBX)
;;; nil si le document n'a pu être trouvé (ou ouvert dans une autre session)
;;;
;;; Argument :
;;; Le chemin complet du fichier
;;;
;;; Exemple d'utilisation :
;;; (if (setq doc (car (gc:GetDocument filename)))
;;;   (progn
;;;     ...
;;;     (and (cdr doc) (vlax-release-object (car doc)))
;;;   )
;;; )

(defun gc:GetDocument (filename / result axdb release)
 (vl-load-com)
 (or *acad* (setq *acad* (vlax-get-acad-object)))
 (vlax-for doc (vla-get-Documents *acad*)
   (if (= (strcase (vla-get-FullName doc)) (strcase filename))
     (setq result (list doc))
   )
 )
 (or result
   (progn
     (setq axdb
            (vlax-create-object
              (if (                 "ObjectDBX.AxDbDocument"
                (strcat "ObjectDBX.AxDbDocument." (itoa release))
              )
            )
     )
     (if (vl-catch-all-apply
           'vla-open
           (list axdb filename)
         )
       (vlax-release-object axdb)
       (setq result (cons axdb T))
     )
   )
 )
 result
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

merci (gile),

En attendant, j'ai trouvé une autre solution :

1 Je copie le fichier que je souhaite ouvrir

2 j'ouvre le fichier copier

3 je recupere ce qui m'interesse

4 je referme le fichier copier

5 j' efface le fichier copier.

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é