Aller au contenu

Problème d'Insertion de bloc


PhilBat

Messages recommandés

Bonjour à tous,

je rencontre un problème assez bizarre dans la version autoCAD 2013 et non dans la 2016 :

lors de l'insertion d'un bloc, cela me provoque une erreur (pas tous le temps) dans le sens qu'il ne trouve pas le

fichier correspondant dans le disque dur et pour cause la variable 'string' contenant son nom

change lors de l'appel de la commande Db.Insert(FileDwg, tmpDb, True)

Voici le code :

Dim acDoc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
Dim ed As Editor = acDoc.Editor
Dim Db As Database = acDoc.Database
Dim FileTampons, FileDwg As String
FileTampons = PathGpO & "\FOLIOS\" & MMono & ".DWG"
FileDwg = MMono
Using Tr As Transaction = Db.TransactionManager.StartTransaction
    Dim bt As BlockTable = DirectCast(Tr.GetObject(Db.BlockTableId, OpenMode.ForRead), BlockTable)
    If Not bt.Has(FileDwg) Then
           If IO.File.Exists(FileTampons) Then
                 Dim tmpDb As New Database(False, True)
                 'tmpDb.ReadDwgFile(FileTampons, IO.FileShare.Read, True, Nothing)
                 tmpDb.ReadDwgFile(FileTampons, FileOpenMode.OpenForReadAndAllShare, False, Nothing)
                 Db.Insert(FileDwg, tmpDb, True)
           Else
                 Throw New System.Exception(String.Format("File {0} is not found", FileTampons))
                 Tr.Abort()
                 Return
           End If
    End If

    Dim currSpace As BlockTableRecord = CType(Tr.GetObject(Db.CurrentSpaceId, OpenMode.ForWrite), BlockTableRecord)
    Using br As New BlockReference(Point3d.Origin, bt(FileDwg))
          br.ScaleFactors = New Scale3d(1.0#, 1.0#, 1.0#)
          br.Rotation = 0.0#
          'br.Layer = "0"
          br.TransformBy(Matrix3d.Displacement(p3d - Point3d.Origin).PreMultiplyBy(ed.CurrentUserCoordinateSystem))
          currSpace.AppendEntity(br)
          Tr.AddNewlyCreatedDBObject(br, True)
          br.ExplodeToOwnerSpace()
          br.Erase()
    End Using
    tr.commit()
End Using

Par exemple si la variable MMono = "FDP-toto" , la variable FileDwg se transforme en "GDP-toto" pour une raison inconnue et d'où le plantage d'autoCAD car ce fichier 'GDP-toto.dwg' n'existe pas. Un 'Try Catch' ne change rien.

Sincères Salutations

Philippe.

Lien vers le commentaire
Partager sur d’autres sites

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é