sam-123 Posté(e) le 3 mars 2010 Posté(e) le 3 mars 2010 Bonjour,Peux-tu me donner un petit mot d’explication (gile).Voila cela concerne les blocks (je croyais avoir pige mais non !)Exemple :Je crée un block qui s’appelle « block1 »Je l’enregistre dans « C :\Les Blocks »Maintenant je le fais venir comme cela : Dim MyDbSource As New Database MyDb = MyDWG.Database MyDbSource.ReadDwgFile("C:\Les Blocks.dwg", IO.FileShare.Read, True, "") MyDb.Insert("Block1.dwg",, MyDbSource, True) MyDbSource.Dispose()Dans la boite de dialogue « Insert Block » apparait deux blocks :1. ("Block1" qui est le bon2. ("Block1.dwg" qui n’existe pas Je pensais que si je supprimer le » .dwg » je n’aurais pas de problèmes comme cela : MyDb.Insert("Block1",, MyDbSource, True) Je n’aurais pas de problème, mais la il bloque, Maintenant pour éliminer le block « block1.dwg »En attendant que je trouve la solution (ou quelqu’un m’indique la solution) une fois crée J’envoie un « SenCommand » pour le purger
bazoul Posté(e) le 3 mars 2010 Posté(e) le 3 mars 2010 Pour ma part pour insérer un bloc j'ai utilisé ceci: Dim db As Database = Nothing Dim tm As Autodesk.AutoCAD.DatabaseServices.TransactionManager = Nothing Dim tr As Transaction = Nothing Dim doc As Document Dim NewBlkId As ObjectId Dim bt As BlockTable Dim btr As BlockTableRecord = Nothing doc = Application.DocumentManager.MdiActiveDocument db = New Database(False, False) If Not Name.Contains(".dwg") Then Name = Name & ".dwg" tm = HostApplicationServices.WorkingDatabase.TransactionManager tr = tm.StartTransaction db.ReadDwgFile(Name, IO.FileShare.Read, True, "") bt = CType(tr.GetObject(db.BlockTableId, OpenMode.ForWrite, False, False), BlockTable) 'insertion de la nouvelle définition de bloc dans la table de bloc If bt.Has(Name.Replace(".dwg", "")) = False Then NewBlkId = doc.Database.Insert(Name, db, False) btr = CType(tr.GetObject(NewBlkId, OpenMode.ForWrite, True, True), BlockTableRecord) btr.Name = Name.Replace(".dwg", "") tr.Commit() End If If tr IsNot Nothing Then tr.Dispose()
(gile) Posté(e) le 3 mars 2010 Posté(e) le 3 mars 2010 Salut, La réponse de bazoul me semble correcte excepté qu'il faudrait libérer la ressource Database :db.Dispose(). Ou mieux utiliser des instruction Using pour La Database et la Transaction (voir ici). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
sam-123 Posté(e) le 4 mars 2010 Auteur Posté(e) le 4 mars 2010 Merci,Grace a l’exemple j’ai pu règle mon problème :cool:
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