sam-123 Posté(e) le 16 février 2010 Posté(e) le 16 février 2010 Bonjour a tous, En voulant cloner un WBlock il me bloque sur cette la ligne: MyDb.ReadDwgFile(FromFile, IO.FileShare.Read, True, "")Ma commande d’appelle : _ Public sub CPB() CopieBlock("C:\DimStyles\Les Blocks.dwg", "Block 1") End SubMon programme : Public Function CopieBlock(ByVal FromFile As String, ByVal BlockName As String) Dim MyDWG As Autodesk.AutoCAD.ApplicationServices.Document MyDWG = Application.DocumentManager.MdiActiveDocument Dim MyDb As Autodesk.AutoCAD.DatabaseServices.Database MyDb = MyDWG.Database Using LockDoc As DocumentLock = MyDWG.LockDocument() Using MyTrans As Transaction = MyDb.TransactionManager.StartTransaction MyDb.ReadDwgFile(FromFile, IO.FileShare.Read, True, "") Dim YourBlockT As Autodesk.AutoCAD.DatabaseServices.BlockTable Dim YourBlockTR As Autodesk.AutoCAD.DatabaseServices.BlockTableRecord YourBlockT = MyDb.BlockTableId.GetObject(Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead) YourBlockTR = YourBlockT(BlockName).GetObject(Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead) Dim myBlockT As Autodesk.AutoCAD.DatabaseServices.BlockTable myBlockT = MyDb.BlockTableId.GetObject(Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite) Dim myMap As New Autodesk.AutoCAD.DatabaseServices.IdMapping Dim myObjs As New Autodesk.AutoCAD.DatabaseServices.ObjectIdCollection myObjs.Add(YourBlockTR.ObjectId) MyDb.WblockCloneObjects(myObjs, myBlockT.ObjectId, myMap, _ Autodesk.AutoCAD.DatabaseServices.DuplicateRecordCloning.Replace, False) MyTrans.Commit() End Using End Using End Function Je ne sais la raison,(pour moi il n’y a pas l’air d’avoir un probleme)[Edité le 16/2/2010 par sam-123] [Edité le 16/2/2010 par sam-123]
(gile) Posté(e) le 16 février 2010 Posté(e) le 16 février 2010 Salut, Avant d'aller plus loin, ton code est très (trop) pénible à lire, il y a une douzaine de :Autodesk.AutoCAD.DatabaseServicesEncore une fois, si au début du code, tu fait :Imports Autodesk.AutoCAD.DatabaseServicesTu n'auras plus besoin de le répéter sans cesse dans le code et j'arriverais peut-être à le lire...Et peut être qu'ainsi tu t'emmêleras moins les pinceaux entre les Databses que tu veux manipuler... Pour l'utilisation de WblockCloneObjects, voir AutoCAD .NET Developer's Guide > Create and Edit AutoCAD Entities > Edit Named and 2D Objects > Copy Objects > Copy Objects between Databases Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
sam-123 Posté(e) le 17 février 2010 Auteur Posté(e) le 17 février 2010 Question d’ordre de culture générale, on parcourant le site (AutoCAD .NET Developer's Guide)J’ai remarqué qu’il n’y a rien sur les Insertion externes :Exemple :• Wblock• Image• Xref• . . . .. . . ?
sam-123 Posté(e) le 17 février 2010 Auteur Posté(e) le 17 février 2010 VoilàA force de tourné, retourné, coupé . . .Voilà a ce quoi je suis arriveHey, ca fonctionne ! :o Public Sub ImportDeBlock() Dim MyDWG As Autodesk.AutoCAD.ApplicationServices.Document MyDWG = Application.DocumentManager.MdiActiveDocument Dim MyDb As Autodesk.AutoCAD.DatabaseServices.Database MyDb = MyDWG.Database Using LockDoc As DocumentLock = MyDWG.LockDocument() Using MyTrans As Transaction = MyDb.TransactionManager.StartTransaction Dim MyDbSource As New Database MyDb = MyDWG.Database MyDbSource.ReadDwgFile("C:\Mes Blocks\Les Blocks.dwg", IO.FileShare.Read, True, "") MyDb.Insert("Block1.dwg", MyDbSource, True) MyDbSource.Dispose() MyTrans.Commit() End Using End Using End Sub
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