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

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


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

developers:tutorial:sfcselection

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


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

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

В качестве основного инструмента получения элементов поверхности рекомендуется пользоваться методами класса SurfaceLayer. некоторые из них мы рассмотрим в следующих примерах. Сперва выберем необходимые нам объекты и начнём мы с выбора точек поверхности.

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

В этом примере мы выберем точки поверхности на вкладке «План» и рассчитаем их среднюю отметку. Для этого воспользуемся методом 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}");
    }
...
}

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

Как и в предыдущем примере, для выбора структурной линии нам потребуется слой текущей поверхности (SurfaceLayer). Чтобы выбрать одну структурную линию, воспользуемся методом SelectOneStructureLine(). Здесь возвращаемым значением сразу же будет выступать выбранная структурная линии, поэтому никаких дополнительных действий выполнять не придется.

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