суббота, 9 июня 2012 г.

Создание поверхности включающей в себя данные о суммарных высотных отметках двух других поверхностей


Есть весьма экзотическая задача: cсуммировать высотные отметки 2-х поверхностей и получить 3-ю поверхность с этими отметками. Т.е., если у нас есть поверхность со средней отметкой 100 и поверхность со средней отметкой 110, то третья поверхность должна иметь отметку 210.
В чистом виде в Civil 3D нет такой функции, есть возможность создать композитную поверхность, но она дает не сумму, а разницу, т.е. вместо 210 мы получим 10. Поэтому придется использовать другой способ. Я решил сделать это путем извлечения координат точек (X,Y одинаковые, Z разные) из 2-х поверхностей, суммирования этих точек и построение третьей поверхности по полученным точкам.
Данный способ имеет ряд ограничений:
1.Поверхности должны иметь одинаковую границу, т.е. в плане должны быть ограничены одним контуром;
2.Слегка теряется точность, т.е. суммарная поверхность может потерять сложные элементы рельефа, как, например, подпорная стенка.
Перед началом работ рекомендую создать 2 одинаковых файла- один для осуществления работ с первой поверхностью. Второй- для второй поверхности.
Начнем с создания файла точек по каждой из суммируемых поверхностей. Причем этот файл точек должен содержать точки, которые имеют одинаковый X и Y. Для того, чтобы сумма бралась в одной точке. Поэтому расстановка точек по вершинам поверхностей не подходит (обе поверхности могут иметь разный рельеф, и, соответственно, вершины расположены в разных координатах). Нужно использовать пользовательскую сетку простановки точек.
Для этого сначала создадим группу точек под названием Поврехность1 настроив её так, чтобы все точки с описанием 1 попадали в неё (вкладка Включить, поставить галочку и единичку на против По совпадению исходных описаний).
Рисунок 1. Настройка автоматического задания описания точек
Теперь, для того чтобы задать пользовательскую стеку точек, нам необходимо нарисовать рамку вокруг поверхностей. Это позволит нам без труда задавать нужные параметры нашей сетке, рамка может быть обычным прямоугольником AutoCAD.
Наконец-то можем начать создавать точки по сетке, команда так и называется- По стеке, рисунок 2.
Рисунок 2. Расположение команды создания точек по сетке
 Запускаем команду и выполняем следующую очередность действий:
1.Укажите базовую точку сетки: Укажите левый нижний угол рамки. ВНИМАНИЕ! Указание другой базовой точки у второй поверхности приведет к тому, что сумма поверхностей будет не верной;
2.Поворот сетки <0.0000 (град)>: Здесь ничего менять не нужно, поэтому можно просто нажать Enter;
3.Шаг сетки по X <5.0000>: Этот параметр определяет точность суммарной поверхности (шаг расстановки точек), чем меньше шаг сетки, тем выше будет точность;
4.Шаг сетки по X <5.0000>: То же самое только, уже по Y;
5.Укажите местоположение правого верхнего угла для сетки: Это диагональ нашей рамки-прямоугольника, которая должна проходить от базовой точки (левый нижний угол) до правого верхнего угла;
6.Изменить размер или угол поворота ячеек сетки [Да/Нет] Если вас все параметры устраивают, выбирайте Нет;
После этого Civil задумается, проставит точки и снова запросит Укажите базовую точку сетки:, команда зациклена, поэтому жмите Esc.
Сразу же надо обновить группу точек Поврехность1 и, нажав правой кнопкой мыши на эту группу, выберете Экспорт точек… Для экспорта выберете подходящий формат, рекомендую в качестве разделителя использовать пробел и тип файла txt.
Теперь то же самое сделайте для второй поверхности и, как я уже писал выше, лучше это сделать в другом файле.
Прежде чем приступать к следующей части, рекомендую прочитать вот эту запись об особенностях взаимодействия Civil 3D и Excel.
В результате, мы имеем 2 текстовых файла. Откройте один из них в Excel и скопируйте данные о высотных отметках из второго в него же, в соседний столбец. Затем, в новом столбце по формуле типа: =D1+F1 получите сумму и протащите эту формулу на все остальные строки, тем самым мы получим необходимую суммарную отметку.
Но теперь у нас получились лишние столбцы, как на Рисунке 3. 

Рисунок 3. Полученные данные в Excel
Эти лишние столбцы - данные об отметках родительских поверхностей, теперь они нам не нужны и их лучше удалить. Т.к. удаление этих столбцов приведет к обнулению суммы (на них завязана формула), то предлагаю сначала сохранить файл в txt, закрыть его. Затем открыть, привязка на формулу тем самым исчезнет, и мы можем спокойно удалить лишние столбцы.
Теперь уже сохраняем это всё в txt файл и создаем по нему нашу суммарную поверхность.


6 комментариев:

  1. Здравствуйте, подскажите пожалуйста как создать композитную поверхность, показывающую разность отметок 2х поверхностей. Заранее благодарю.

    ОтветитьУдалить
  2. Отличный метод. Я искал как построить результирующую поверхность
    http://forum.dwg.ru/showthread.php?p=1730581#post1730581

    От себя добавлю - в эксель надо копировать все координаты обоих групп точек и сравнить X-Y, потому что во второй поверхности у меня где-то закралась лишняя точка и результат изначально был неправильный.

    ОтветитьУдалить
  3. А не проще вычесть из нулевой поверхности одну из тех, которые надо сложить. Получить поверхность с отрицательными значениями высот, а потом из другой вычесть эту отрицательную поверхность - как раз получится сумма)

    ОтветитьУдалить
    Ответы
    1. Этот комментарий был удален автором.

      Удалить
    2. Этот комментарий был удален автором.

      Удалить
    3. Метод рабочий! Только нужно добавить ещё одну операцию - экспорт в XML с последующим импортом (LANDXMLIN), т.к. с поверхностями объёма Civil операций совершать не даёт.

      Удалить