Здравствуйте, ситуация следующая (для удобства непосредственно проблемы буду выделять):
1. Пишу дополнение с функцией подсчёта объёмов через триангуляционные сети аля-САМАРА. Всё что связано с расчётами, построением триангуляции и прочим готово и даже почти не ломается. Триангуляция состоит из следующих частей:
1.1 Пункт - содержит в себе координаты X,Y,Z.
1.2 Отрезок - содержит в себе два пункта и ссылки на два треугольника.
1.3 Треугольник - содержит в себе три отрезка.
2. Проблема в отображении всех сущностей триангуляции в автокаде. По моей задумке должно быть следующее:
2.1 Триангуляция должна только отображаться так, чтобы редактировать её было возможно только специальными командами (сейчас это реализовано через простую проверку есть ли сущность в специальном списке). Очень хочется реализовать этот функционал через временную графику, но я, видимо, не так её использую и через какое-то время автокад выдаёт сообщение что произошла ошибка и закрывается. Ниже представлю старый код для создания треугольника (сейчас создал классы-обёртки, но через них та же проблема), т.к. только с ними возникает вылет. Другие сущности просто отказываются показываться больше чем на секунду :,).
2.2 Триангуляция ни коим образом не должна влиять на данные в чертеже. Т.е. она не должна сохраняться. Это ещё одна причина в копилку временной графики, а то сейчас приходится при каждом сохранении через костыли удалять триангуляции и тут же их отрисовывать в соответствующих документах.
Код создания треугольника:
private void CreateTransientFaceFromTriangle(Triangle trian, Transaction tr, BlockTableRecord btr, int colorIndex = 3)
{
Point[] trianPoints = trian.GetPoints();
Face nFace = new Face(MathPointToPoint3d(trianPoints[0]), MathPointToPoint3d(trianPoints[1]), MathPointToPoint3d(trianPoints[2]), false, false, false, false);
nFace.ColorIndex = colorIndex;
TransientManager.CurrentTransientManager.AddTransient(nFace, TransientDrawingMode.Main, 0, new IntegerCollection());
}
Заранее спасибо за ответы.