Всем привет. Поставлена задача проклассифицировать коготочку с помощью кода. Я пытаюсь это сделать так:
public void Method()
{
IAcadApplication acadApp = (IAcadApplication)Application.AcadApplication;
Editor acadEditor = Application.DocumentManager.MdiActiveDocument.Editor;
IAeccApplication civilApp = (IAeccApplication)acadApp.GetInterfaceObject("AeccXUiLand.AeccApplication.9.0");
IAeccDocument civilDoc = (IAeccDocument)civilApp.ActiveDocument;
AeccPoints points = civilDoc.Points;
PromptPointOptions opt = new PromptPointOptions("\nPosition: ") { AllowNone = true };
PromptPointResult pos = acadEditor.GetPoint(opt);
if (pos.Status != PromptStatus.OK)
{
return;
}
AeccPoint newPoint = points.Add(pos.Value.ToArray());
ObjectId objId = new ObjectId(new IntPtr(newPoint.ObjectID));
HostMapApplicationServices.Application.ActiveProject.ClassificationManager.Classify(objId, "Отметка высот", true, true);
}
Если метод выполняется в первый раз, то все нормально. При повторном вызове выполнение доходит до строки
AeccPoint newPoint = points.Add(pos.Value.ToArray());
и кидается AccessViolationException c последующим крашем автокада.
Если же убрать классификацию, то метод можно смело вызывать много раз подряд не боясь уронить автокад.
Подскажите, в чем может быть проблема. Это или я как-то не так это делаю? Может быть это баг автокада, и если да, то как его можно обойти?
.NET 4.0, C#, Autodesk Civil 3D 2012