Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

je désire fermer le dessin actuellement ouvert

grâ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 Get

End Property

 

Comment faire pour résoudre ce problème

Merci d'avance

Philippe

Posté(e)

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,

  • 4 mois après...
Posté(e)

Bonjour,

malgré x tentative de programmation

je n'arrive toujours pas à fermer un document courant

à partir d'une fenêtre de dialogue (modal) créer sous vb 2010

cela 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'avance

Phil

Posté(e)

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

Posté(e)

Bonjour,

j'ai testé CloseAndDiscard() suivant ta solution Gile.

Mais apparement, il faut une fenêtre en 'modeless' pour que cela

fonctionne.

J'aurait besoin d'une solution en "modal"

Merci

A+

Posté(e)

Ç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

Posté(e)

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 dessin

en cours et l'effacer, mais FermDWG provoque l'erreur

Je ne sais plus quoi faire ...

A+

Phil.

Posté(e)

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

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é