Инструменты пользователя

Инструменты сайта


Боковая панель

developers:tutorial:sfcselection

Это старая версия документа.


Выделение элементов поверхности

Нередко, при работе с поверхностью, пользователю требуется изменять или получать информацию из её элементов. Рассмотрим простые примеры по работе с элементами поверхности. Сперва выберем необходимые нам объекты и начнём мы с выбора точек поверхности.

Выделение точек поверхности

В этом примере мы выберем точки поверхности на вкладке «План» и рассчитаем их среднюю отметку. Для этого воспользуемся методом SelectPoints() у слоя текущей поверхности (SurfaceLayer). Выбранные точки необходимо будет получить так же у SurfaceLayer с помощью метода GetSelectedPoints(). Далее пройдёмся по выбранным точкам циклом foreach и применим необходимую логику для расчёта средней отметки.

Ниже представлен код примера, который мы оформим в качестве метода CalculateAverageElevation() с атрибутом [cmd(«calculate_average_elevation»)]. Данный метод мы поместим в класс Module для возможности последующего вызова этой команды из командной строки.

{
...
    [cmd("calculate_average_elevation")]
    private void CalculateAverageElevation()
    {
        //Находим активный SurfaceLayer
        var cadview = CadView;
        var actSfcLayer = SurfaceLayer.GetSurfaceLayer(cadview);
        if (actSfcLayer == null) return;
 
        //Выбираем точки поверхности
        if (actSfcLayer.SelectedPointsCount == 0)
        {
            var res = actSfcLayer.SelectPoints(null, "Выберите точки поверхности:");
            if (res == GetPointResult.Cancel) return;
        }
        if (actSfcLayer.SelectedPointsCount == 0) return;
 
        //Обращаемся к выбранным точкам и получаем сумму отметок
        var sfc = actSfcLayer.Surface;
        var sum = 0.0;
        foreach (var selectedPoint in actSfcLayer.GetSelectedPoints())
        {
            var point = sfc.Points[selectedPoint];
            sum += point.Vertex.Elevation;
        }
 
        //Вычисляем среднюю отметку и отображаем её в диалоговом окне
        var average = sum / actSfcLayer.SelectedPointsCount;
        MessageDlg.Show($"Средняя отметка: {average}");
    }
...
}

Выделение структурных линий

developers/tutorial/sfcselection.1646249564.txt.gz · Последние изменения: 2022/03/02 19:32 — proxor