¿Es posible editar atributos de bloque en AutoCAD utilizando Autodesk.AutoCAD.Interop?

He desarrollado una aplicación WPF externa para generar dibujos en c #. He podido dibujar, dimensionar, agregar bloques y todo lo que requiera la aplicación usando Autodesk.AutoCAD.Interop, sin embargo, no puedo llenar el bloque de título o generar una lista de piezas.

Todos los ejemplos que he visto se basan en el mecanismo que requiere que la aplicación se ejecute como un complemento dentro de AutoCAD. La verdad es que insertar una línea utilizada es una o dos líneas de código usando ModelSpace.InsertLine, ahora, ¡es al menos 8 líneas de código!

¿Hay alguna manera de lograr esta funcionalidad utilizando Autodesk.AutoCAD.Interop? ¿O hay una manera de combinar el uso de la interoperabilidad con un complemento que se puede llamar desde el exe externo?

Cualquier puntero sobre esto será apreciado.

Gracias.

EDITAR Para ilustrar:

// before - Draw Line with Autodesk.AutoCAD.Interop
private static AcadLine DrawLine(double[] startPoint, double[] endPoint)
{
    AcadLine line = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint);
    return line;
}
// Now - Draw line with Autodesk.AutoCAD.Runtime
[CommandMethod("DrawLine")]
public static Line DrawLine(Coordinate start, Coordinate end)
{
    // Get the current document and database 
    // Get the current document and database
    Document acDoc = Application.DocumentManager.MdiActiveDocument;
    Database acCurDb = acDoc.Database;

    // Start a transaction
    using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
    {
        // Open the Block table for read
        BlockTable acBlkTbl;
        acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;

        // Open the Block table record Model space for write
        BlockTableRecord acBlkTblRec;
        acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;

        // Create a line that starts at 5,5 and ends at 12,3
        Line acLine = new Line(start.Point3d, end.Point3d);

        acLine.SetDatabaseDefaults();

        // Add the new object to the block table record and the transaction
        acBlkTblRec.AppendEntity(acLine);
        acTrans.AddNewlyCreatedDBObject(acLine, true);

        // Save the new object to the database
        acTrans.Commit();
        return acLine;
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta