l56 Posté(e) le 12 mars 2010 Posté(e) le 12 mars 2010 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
(gile) Posté(e) le 12 mars 2010 Posté(e) le 12 mars 2010 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
l56 Posté(e) le 12 mars 2010 Auteur Posté(e) le 12 mars 2010 merci (gile),En attendant, j'ai trouvé une autre solution :1 Je copie le fichier que je souhaite ouvrir2 j'ouvre le fichier copier3 je recupere ce qui m'interesse4 je referme le fichier copier5 j' efface le fichier copier.
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