Sto provando a scrivere due metodi che chiamano il comando UNDO di AutoCAD e passano in parametri diversi. Il primo metodo chiama UNDO e passa a M che indica la posizione del disegno. Il secondo metodo chiama UNDO e passa B che significa annullare fino alla posizione contrassegnata (o alla fine se non ce n'è uno). Finora sono piuttosto sempliciChiamare comandi AutoCAD da C# .NET
/// <summary>
/// Method to mark the current position of the AutoCAD program
/// </summary>
public static void MarkPosition()
{
doc.SendStringToExecute("._UNDO M", true, false, true);
}
/// <summary>
/// Method to step AutoCAD back int steps
/// </summary>
public static void BigUndo()
{
doc.SendStringToExecute("._UNDO B", true, false, true);
}
Questi sembrano come dovrebbero funzionare ma per qualche motivo non lo fanno. Quando chiamo MarkPosition() e poi BigUndo() viene visualizzato un errore che indica che è stato rilevato Start of Group; immettere Annulla fine per tornare indietro. Per testare la mia sintassi. Ho cambiato MarkPosition in
public static void MarkPosition()
{
doc.SendStringToExecute("circle 2,2,0 4 ", true, false, true);
}
che disegna con successo un cerchio. Ciò significa che la mia sintassi è giusta, ma qualcosa di strano sta succedendo con Undo.
Digitando presumibilmente il comando direttamente in AutoCAD si ottiene la risposta desiderata? – ZombieSheep
Sì, corretto –
SendStringtoExecute è asincrono. Vengono eseguiti dopo che il codice .net è terminato. Sei sicuro di testare le cose giuste? prova a disegnare il cerchio con questo metodo tra il segno e il retro http://help.autodesk.com/view/ACD/2016/ENU/?guid=GUID-F4A36181-39FB-4923-A2AF-3333945DB289 – Alain