J'utilise assez souvent la bibliothèque .NET pour saisir des références de bloc, cependant, je n'en ai jamais saisi une à l'aide d'un objet COM. La méthode suivante est celle que j'ai eu qui prendrait dans un nom et un emplacement de bloc, et renverrait la référence de bloc. Je l'ai modifié ici pour prendre un AcadBlockReference et j'utilise sa propriété Name pour le trouver dans le BlockTable. Je n'ai pas testé cela car je n'ai pas le temps de le faire, mais j'ai juste pensé que je le lancerais ici et j'espère que cela vous aidera à aller de l'avant.
Désolé que mon exemple soit en C#, mais il devrait être assez facile de réécrire dans VB.NET.
public BlockReference GetBlockReferenceFromCOM(AcadBlockReference comReference, Point3d location)
{
using (Database database = Application.DocumentManager.MdiActiveDocument.Database)
{
using (Transaction transaction = database.TransactionManager.StartTransaction())
{
BlockTable blockTable = transaction.GetObject(database.BlockTableId, OpenMode.ForRead) as BlockTable;
BlockTableRecord acBlkTblRecNewDoc = (BlockTableRecord)transaction.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
BlockReference newBlockReference = new BlockReference(location, blockTable[comReference.Name]);
transaction.Commit();
return newBlockReference;
}
}
}
EDIT Avez-vous l'ID d'objet pour ces articles? Si oui, vous pourriez faire quelque chose comme ceci:
public DBObject GetBlockReferenceFromCOM(ObjectId id)
{
using (Database database = Application.DocumentManager.MdiActiveDocument.Database)
{
using (Transaction transaction = database.TransactionManager.StartTransaction())
{
return transaction.GetObject(id, OpenMode.ForRead);
}
}
}
Nous vous remercions de votre réponse. Bien que je ne l'ai pas encore testé, il manque une chose importante: je ne veux pas faire cela pour tous les objets. Non seulement pour BlockReferences. Et d'autres objets comme des lignes, 3Dpolys etc. n'ont pas la propriété "Name". – WizzardsApprentice
La réponse a été modifiée. – JSprang
Merci. C'était exactement ce que je cherchais! – WizzardsApprentice