sam-123 Posté(e) le 3 mars 2010 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
bazoul Posté(e) le 3 mars 2010 Partager 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() Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 3 mars 2010 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
sam-123 Posté(e) le 4 mars 2010 Auteur Partager Posté(e) le 4 mars 2010 Merci,Grace a l’exemple j’ai pu règle mon problème :cool: Lien vers le commentaire Partager sur d’autres sites More sharing options...
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