Столкнулся с проблемой при попытке вытащить из поверхности(TinSurface) контуры (мажорные и минорные). Во-первых, насколько я понял в Civil 2012 .net API нет возможности их получить, хотя поиски меня приводили к статьях
http://adndevblog.typepad.com/infrastructure/2012/08/extract-surface-contours-using-civil-3d-net-api.html,
http://civilizeddevelopment.typepad.com/civilized-development/2012/09/21wojpweek-16-extracting-major-and-minor-contours.html за 2012 год. Однако получить контуры указанными способами через интерфейс IAeccTinSurface не получилось, т.к. нужных методов не оказалось в интерфейсе, и посмотрев описание на сайте автодеска данного метода я увидел версию AeccDbMgd v10. У меня же в проекте 9.
Перебирая различные варианты остановился на таком коде:
var doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
var editor = doc.Editor;
var db = doc.Database;
var selRes = editor.GetSelection();
if (selRes.Status != PromptStatus.OK)
return;
var objId = selRes.Value.GetObjectIds()[0];
using (var trans = db.TransactionManager.StartTransaction())
{
using (var surface = (TinSurface)trans.GetObject(objId, OpenMode.ForRead))
{
var sur = (AeccTinSurface)surface.AcadObject;
IAeccSurface ss = sur;
var contours = (object[])ss.ExtractContour(
AeccDisplayOrientation.aeccDisplayOrientationModel,
AeccSurfaceFilterType.aeccSFMinorContours,
double.MinValue,
double.MaxValue);
}
trans.Commit();
}
}
в полученном массиве лежат объекты (COM-объекты), тип которых я не могу определить, чтобы преобразовать к ним. Ни к AeccSurfaceContour, AeccSurfaceContourClass, AeccEntity, ни к каким другим типам я преобразовать не смог. Однако при отладке попытавшись посмотреть объекты открыл Dynamic view и увидел такую картину.
Но из всего этого так и не смог определить какого класса эти объекты.
Подскажите, как получить контуры в каком-либо операбельном виде?