Мне нужно вызвать команду с опцией. Я решил эту проблему для 18 версии так. И этот способ хорошо работает. Работает синхронно.
[CommandMethodAttribute("TEST_GROUP", "GRPBYROLE", "ГРПОФУНКЦ", CommandFlags.Modal | CommandFlags.UsePickSet | CommandFlags.Redraw | CommandFlags.Session)]
public void GroupsByRole()
{
DocumentManager.LockCurrentDocument();
Autodesk.AdvanceSteel.CADAccess.Transaction AStransaction = Autodesk.AdvanceSteel.CADAccess.TransactionManager.StartTransaction();
AcadApplication app = Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication as AcadApplication;
...
foreach (string role in roleList)//перебираем список названий групп
{
...
Autodesk.AutoCAD.Internal.Utils.SelectObjects(ACADIDobjs);//выбор объектов
app.ActiveDocument.SendCommand("._AstM11CommAddToGroup " + "\"" + role + "\"" + " ");//вызов команды добавления в группу(в 19 версии System.NullReferenceException)
}
...
AStransaction.Commit();
DocumentManager.UnlockCurrentDocument();
}
Но в 19 версии в строчке с вызовом команды выдает System.NullReferenceException
В прошлый раз я экспериментировал с функциями SendStringToExecute и Command, но для команды с опцией эти эксперименты оказались безуспешными.
Добавил:
Еще заметил во время отладки, что app = null, видимо дело в этом.
И так тоже не работает
AcadApplication app = (AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication;
System.InvalidCastException: "Невозможно привести COM-объект типа "System.__ComObject" к интерфейсному типу "Autodesk.AutoCAD.Interop.AcadApplication".