PhilBat Posté(e) le 7 février 2012 Posté(e) le 7 février 2012 Bonjour,je désire fermer le dessin actuellement ouvertgrâce un bouton dans une 'form' j'utilise la commande suivante :ThisDrawing.Close() mais cela provoque un message d'erreur indiquant que "le dessin est en cours" Ce 'ThisDrawing' provoque l'appel de la routine suivante :Public ReadOnly Property ThisDrawing() As AcadDocument Get Return Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.AcadDocument End GetEnd Property Comment faire pour résoudre ce problèmeMerci d'avancePhilippe
bazoul Posté(e) le 7 février 2012 Posté(e) le 7 février 2012 Bonjour, Déja si tu es en mode SDI peut etre bien que sa peux poser problème ^^Sinon pour fermer en enregistrant c'est : Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.CloseAndSave(CurrentFilePath) et pour fermer sans enregistrer c'est : Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.CloseAndDiscard() Cordialement,
PhilBat Posté(e) le 28 juin 2012 Auteur Posté(e) le 28 juin 2012 Bonjour,malgré x tentative de programmationje n'arrive toujours pas à fermer un document courantà partir d'une fenêtre de dialogue (modal) créer sous vb 2010cela me provoque une erreur "eDocumentSwitchDisabled" Voici un extrait de code où se produit l'erreur : Public Sub FermDWG(ByVal d As String) Dim acDocMgr As DocumentCollection = Application.DocumentManager Dim acDoc As Document = acDocMgr.MdiActiveDocument ' un seul drawing ?? If acDocMgr.Count = 1 Then '' Create a new drawing Dim acNewDoc As Document = acDocMgr.Add("sch_genpro.dwt") '' Set the new document current acDocMgr.MdiActiveDocument = acNewDoc GoTo Sk01 End If ' activation autre drawing que 'd' For Each doc As Document In acDocMgr If doc.Name <> PathAff & d & ".dwg" Then acDocMgr.MdiActiveDocument = doc Exit For End If Next Sk01: ' fermeture drawing 'd' For Each doc1 As Document In acDocMgr If doc1.Name = PathAff & d & ".dwg" Then doc1.CloseAndDiscard() End If Next End Sub Merci d'avancePhil
(gile) Posté(e) le 28 juin 2012 Posté(e) le 28 juin 2012 Salut, Il faut appeler CloseAndDiscard() sur le document actif. Pas testé Public Sub FermDWG(ByVal d As String) Dim acDocMgr As DocumentCollection = Application.DocumentManager ' un seul drawing ?? If acDocMgr.Count = 1 Then '' Create a new drawing Dim acNewDoc As Document = acDocMgr.Add("sch_genpro.dwt") End If ' fermeture drawing 'd' For Each doc As Document In acDocMgr If doc1.Name = PathAff & d & ".dwg" Then acDocMgr.MdiActiveDocument = doc doc.CloseAndDiscard() Exit For End If Next End Sub Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PhilBat Posté(e) le 4 juillet 2012 Auteur Posté(e) le 4 juillet 2012 Bonjour,j'ai testé CloseAndDiscard() suivant ta solution Gile.Mais apparement, il faut une fenêtre en 'modeless' pour que celafonctionne.J'aurait besoin d'une solution en "modal"MerciA+
(gile) Posté(e) le 4 juillet 2012 Posté(e) le 4 juillet 2012 Ça ne peut fonctionner en modal que si tu fermes la boite de dialogue avant, par OK par exemple : Imports AcAp = Autodesk.AutoCAD.ApplicationServices.Application Imports System.Windows.Forms ... Dim dlg As Form1 = new Form1 Dim result As DialogResult = AcAp.ShowModalDialog(dlg) If Result = DialogResult.OK Then FermerDwg(AcAp.DocumentManager.MdiActiveDocument.Name) End If Voir ce sujet Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PhilBat Posté(e) le 5 juillet 2012 Auteur Posté(e) le 5 juillet 2012 Ca ne marche pas : toujours le message d'erreur 'Dessin en cours !'voici le code : Imports Autodesk.AutoCAD.Runtime Imports Autodesk.AutoCAD.ApplicationServices Public Class Affaire <CommandMethod("Affaire")> _ Public Sub Affaire() Dim fs, fs1 fs = CreateObject("Scripting.FileSystemObject") fs1 = CreateObject("Scripting.FileSystemObject") Dim WinAff As New frmAff() Application.ShowModalDialog(WinAff) If TemDel Then FermDWG(NameSch) fs.DeleteFile(PathAff & NameSch & ".dwg") If TemLsp Then fs1.DeleteFile(PathAff & NameLSP & ".lsp") End If End Sub End Class Une fois Winaff terminée, si TemDel est 'True', il faut fermer le dessinen cours et l'effacer, mais FermDWG provoque l'erreurJe ne sais plus quoi faire ...A+Phil.
(gile) Posté(e) le 5 juillet 2012 Posté(e) le 5 juillet 2012 Avant de fermer le dessin, il faut :- que ta commande ait l'attribut CommandFlags.Session- que le dessin 'NameSch' soit le document actif à l'ouverture de la boite de dialogue- fermer la boite de dialogue : WinAff.Close() Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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