Как сделать интерполяцию в автокаде
Думаю всем знакома ситуация, когда ставится задача в кратчайшие сроки (лучше всего за 20 минут), сделать проект автомобильной дороги и передать объёмы на составление смет.
Это первая статья из небольшого цикла, в котором я постараюсь объяснить как лучше всего построить работу и объясню почему поступить лучше именно так.
Начинаем.
Топографической основой конечно же будет служить съёмка, представляющая собой кучу полилиний, сплайнов и текстовых объектов. С точки зрения бумажного топографического плана — идеально. С точки зрения создания ЦММ — это ад. Именно создание цифровой модели местности из такого чертежа и занимает большое количество времени. Но в последствии, в случае внесения корректировок в проектные решения — экономит время многократно.
Рассмотрим исходную съёмку с которой мы будем работать. Вот так выглядит её фрагмент в AutoCAD.
Запускаем Civil и сразу же открываем новый чертёж (комбинация клавиш Ctrl + N).
В открывшемся диалоговом окне выбираем _AutoCAD Civil 3D (Metric)_RUS.dwt.
В этот шаблон встроены стили и критерии проектирования соответствующие требованиям законодательства РФ.
Вставим чертёж со съёмкой как внешнюю ссылку, воспользовавшись командой панелью «Внешние ссылки» (ВНССЫЛ).
Чтобы получить поверхность полностью соответствующую съёмке необходимо построение вести по 3-м группам элементов:
1. Отдельные точки
Необходимо создать группу точек из отдельно стоящих точек на съёмке. Для ускорения процесса, в инструменте создания точек включим автоматическое заполнение описания точек словом «Земля».
Нужно вручную создать множество точек, вписывая их отметки. Бывает, что некоторые точки уже находятся на нужной координате Z. В таких случаях Civil сразу же будет заполнять значение высоты автоматически. Будьте внимательны. Далеко не всегда на съёмках, о которых мы сейчас говорим координата Z точки соответствует значению отметки находящейся рядом с ней.
После завершения точки нужно объединить в одну группу.
В «Навигаторе» на пункте «Группы точек» нужно нажать правой кнопкой мыши и в открывшемся меню выбрать пункт «Создать». Откроется диалоговое окно «Свойства группы точек». Во вкладке «Информация» нужно вписать имя. Например — Земля. Стиль точки указать — Точка плана. Стиль метки точки указать — Отметки.
Теперь следует перейти во вкладку «Включить». Ставим галочку у параметра «По совпадению исходных описаний» и вписываем описание, которое автоматически присваивалось создаваемым точкам — Земля. Далее нажать «Применить» и «Ок».
2. Линии границ покрытий, откосов, сооружений
Все линейные объекты нужно обвести характерными линиями, задавая отметки.
В Ленте выберите выпадающее меню «Характерная линия» и выберите инструмент «Создать характерную линию».
Откроется диалоговое окно «Создание характерных линий». Ничего здесь менять не нужно. Нажмите «Ок».
Программа запросит начальную точку, а затем указать отметку. Впишите её с чертежа. Далее можно или указать следующую точку или переключиться в режим рисования дуги. Характерные линии рисуются по тем же принципам что и обычные полилинии. После того как вы укажете следующую точку, появится больше вариантов действий. Если отметка точки известна — вписываете её. Если же это точка на изломе линии и отметки у неё нет, то вписываете П (Переход — программа в дальнейшем получит отметку этой точки путём интерполяции между двумя ближайшими точками на линии). Далее повторяете операцию необходимое количество раз. Не забываете переключаться между режимами О, если отметка известна (Отметка) и П. Нажмите клавишу Enter дважды когда дойдёте до конца построения. Обведите таким образом все границы элементов, указанных на съёмке.
3. Горизонтали
Есть два пути, обусловленные тем, каким образом горизонтали показаны на съёмке. Если это сплайны — придётся обрисовывать их характерными линиями. Так же, как и в случае с линиями границ покрытий. Единственное отличие в том — что отметка всегда будет одна и та же.
Если же горизонтали представлены полилиниями — то их сразу же можно перевести в характерные линии. Для начала нужно горизонталям назначить уровень (отметку Z), соответствующий значению на чертеже. В Ленте в выпадающем меню «Характерная линия» выберите пункт «Создать характерную линию из объектов».
Нужно будет указать полилинию на экране и нажать Enter. Откроется диалоговое окно «Создание характерных линий». В нём нужно поставить галочку напротив параметра «Стереть существующие объекты» и нажать Enter.
Повторяем эту процедуру для всех горизонталей.
Создание поверхности
Теперь у нас на чертеже есть большое количество элементов, по которым можно построить поверхность.
В Навигаторе в Области инструментов нажмите правой кнопкой мыши по параметру поверхности. Выберите пункт «Создать поверхность».
Откроется диалоговое окно «Создание поверхности». Обязательно нужно заполнить поле «Имя» — для примера впишем «Земля». Напротив параметра «Стиль» нажмите на значок «…», справа. Откроется окно «Выберите стиль поверхности». В первом выпадающем меня оставляем значение значение «Горизонтали 0.5м и 2м (фоновые)» А во втором выбираем пункт «Копировать текущий набор выбранных элементов».
В открывшемся окне, во вкладке информация в поле «Имя» впишите новое название. Например «2м 0.5м — Земля». Далее нужно перейти во вкладку «Отображение» и изменить цвет и вес линий для параметров «Основная горизонталь» и «Вспомогательная горизонталь». Цвет примем классический — 32. Вес линий для основных горизонталей — 0,3, для вспомогательных — 0,13.
Обязательно нужно нажать «Применить», затем «Ок».
Затем во вкладке «Создание поверхности» нажать «Ок».
Далее нужно указать, откуда поверхность должны браться отметки для построения поверхности. В «Панели инструментов» во вкладке «Навигатор» нужно раскрыть список «Поверхности», затем «Земля», затем «Определение», нажать правой кнопкой мыши на пункте «Группы точек». В открывшемся меню нужно выбрать пункт «Добавить». Откроется окно группы точек. Выбираем ранее созданную группу — Земля и нажимаем «Применить» а затем «Ок».
Таким образом были предоставлены данные для построения поверхности и программа её построила и вывела на экран. Далее нужно добавить данные от границ сооружений и горизонталей.
Теперь добавим к поверхности значения высот с характерных линий.
В «Навигаторе» во вкладке «Поверхности» у нашей поверхности найдите пункт «Структурные линии», нажмите правой кнопкой мыши и выберите пункт «Добавить…». Откроется окно «Добавление структурных линий». Ничего менять не нужно. Нажмите «Ок» и программа попросит вас выбрать линии.
Выбираем все созданные характерные линии и наживаем Enter. Данные добавлены.
Если поверхность не была перестроена автоматически, нужно сделать это вручную. В «Навигаторе» нажмите на названии поверхности правой кнопкой мыши и в открывшемся меню выберите пункт «Перестроить».
Работа по созданию поверхности закончена. Но стоит добавить один штрих, чтобы визуально поверхность выглядела как полноценная съёмка.
Подпись горизонталей.
В Ленте нужно перейти во вкладку «Аннотации» и нажмите на кнопку «Добавление меток».
Откроется диалоговое окно «Добавление меток». В выпадающем меню Объект укажите — «Поверхность». Тип метки — «Горизонталь несколько». Появятся пункты для выбора стилей меток. Для параметра «Стиль меток основной горизонтали» создадим свой стиль. Выбираем КЗ-метки основных горизонталей и нажимаем «Копировать текущий набор выбранных элементов».
Откроется диалоговое окно «Создание стиля метки». Впишем Имя — Основные горизонтали — Земля. Далее переходим во вкладку «Компоновка» и правим параметр Цвет на 32. Далее нужно нажать «Применить» и «Ок».
В окне «Добавление меток» нажмите «Добавить». Программа запросит указать поверхность. Лучше сразу привыкнуть делать это нажатием клавиши Enter и выбирать поверхность их списка. Далее нужно начертить линию, вдоль которой будут расставлены горизонтали. Возможно придётся повторить операцию несколько раз. Но в результате получиться поверхность, оформленная в точности как съёмка.
Всем привет.
В пиложенном файле есть полилинии с высотами-z и блок с текстом отметки. Как автоматизировать поцесс Интер/экстрполяции между двумя линиями для произвольной точки со встакой блока в нужное место с правильной отметкой?
SlavaLu, не усложняйте себе жизнь. Civil 3D Вам в помощь. У Вас есть все данные для создания полноценной поверхности.
trir,
Но AutoCAD не Civil 3D
----- добавлено через ~1 мин. -----
Вы же Геодезист. Экстраполяцию применяли задолго до появления Civil 3D.
Так и быть раскрою секрет экстраполяции для поколения Айфонов:
1. Проводим 2 полилинии и назначаем им отметки (z).
2. Задаём точку снаружи.
3. Из этой точки восстанавливаем перпендикуляр к дальней линии. Перпендикуляр пересечёт и ближнюю.
4. Измеряем расстояние между точками пересечения и расстояние между заднной точкой и ближней линией.
5. Делим расстояние между точками пересечения на расстояние между заднной точкой и ближней линией.
6. Результат из пункта 5 умножаем на превышение - разность отметок (Z) по модулю полилиний из пункта 1
7. Результат из пункта 6 добавляем к отметке (Z) ближей полилинии.
8. Записываем полученное в атрибут блока и ставим его в заданную точку.
После того как первый раз разберёшся - сделать быстрей чем объяснять
Как автоматизировать поцесс Интер/экстрполяции между двумя линиями для произвольной точки со встакой блока в нужное место с правильной отметкой?
Т.к. топик создан в разделе AutoCAD, то ответ только такой: штатными средствами автокада выполнить такого рода автоматизацию не представляется возможным.
Т.к. топик создан в разделе AutoCAD, то ответ только такой: штатными средствами автокада выполнить такого рода автоматизацию не представляется возможным
Буквоедить то зачем. Вам дать ссылку на обсуждение не штатных средств в данном разделе? А может есть раздел обсуждения не штатных средств.
----- добавлено через ~9 мин. -----
trir,
В посте номер 3 указанна причина невозможности данной операции в наших условиях хотя если я строю . ТРЕУГОЛЬНИК. тогда конешно нет проблемм
Судя по файлу, приложенному Вами (точки с высотами и горизонталями), Вы тоже какое-то отношение имеете к геодезии. Поэтому и вопрос был задан "как художник - художнику". Поверхность можно построить не только в Civil 3D ( к Вашему сведению, имеет полнофункциональный демо-режим), а практически в любой геодезической программе или вертикальных приложениях, в том числе и бесплатных. Так вот, с точки зрения геодезии, внутри поверхности - это интерполяция, а за пределами - экстраполяция.
sertor,
"как художник - художнику" вопрос а не слишком ли это-строить поверхность для одной точки?
А программируем не штатными средствами? Это для програмистов не для любителей
Ход ваших рассуждений слишком тернист для меня и смысл ускальзывает.
Собственно, есть проблема, имеются точки, хочется получить намного больше точек, исходя из информации об же существующих, т.е. проинтерполировать новые точки.
Я знаю один способ, но он очень извращенный, так что интересно, кто сталкивался с подобными проблемами, что и как делать подскажите? Как интерполируете точки вы.
По поводу програмного обеспечения, если честно не имею представления в каком софте (кроме аркгиса) можно это осуществить, однако предлагайте любые варианты (интересно, может lisp какой есть для када).
Заранее благодарю за помощь!
В программных продуктах AutoCAD Civil 3D и GeoniCS есть функции интерполяции и экстраполяции точек внутри и за пределами триангуляционной сети.
Особенностями этой процедуры является то, что результатом является некоторая точка имеющая координаты X, Y и Z соответствующие сумме значений координат всех вершин грани и деленное на количество вершин этой грани. То есть никаких сверхестественных расчетов не выполняется.
Алгоритм получения новых точек посредством процедур интерполяции и экстраполяции я видел в книге "Алгоритмы и структуры данных ГИС".
А расскажите ка про AutoCAD Civil 3D поподробнее, имею данную программу, даже больше скажу в ней работаю я, так вот хотелось бы узнать, как там интерполяция делается??
В данный момент не имею установленного AutoCAD Civil 3D на компьютере, поэтому мне будет немного сложновато.
Зато на память могу сказать, как это делается в GeoniCS:
1. Изначально необходимо создать новую поверхность на базе имеющихся данных (данными является загруженная база геоточек).
2. Сделать эту поверхность текущей.
3. В меню "Геоточки" выбрать подменю "Редактирование геоточек", а затем "Интерполировать. " или "Экстраполировать".
4. И, наконец, указать координаты геоточки на экране в пределах триангуляционной сети или за ее пределами.
GeoniCS является аналогом AutoCAD Civil 3D, поэтому функцию интерполяции Вы сможете найти в меню "Points" или "Точки" (если AutoCAD Civil 3D русифицирован).
WeMaN, экстра- и интерполяция функции не ГИС и даже не софта, а математики. Советую прочитать что-нибудь общее про это, а то нахватаетесь конкретики раньше времени. Например, вот неплохие тексты.
Экстраполяция - это определение высотного и/или планового положения некоторой точки за пределами поверхности.
geologic Спасибо за совет, но как вы могли убедиться из текста выше, мне не столько нужна теория, сколько нужны способы того, как это можно сделать!! Ибо возникла задача интерполировать отметки!! Вот я и ищу методы
JEY У меня получилось создать интерполированную поверхность в Цивиле! Прикольно всё, только вот теперь задача как вершины треугольников превратить в точки с 3мя координатами?!
Если конкретно про модели местности, то вот.
Но это уже ГИС, а вас как я понял, крупный масштаб интересует, т.е. инженерка. Не буду мешать
А из каких объектов Вы создавали поверхность? По всем правилам AutoCAD Civil 3D, чтобы построить поверхность, нужно добавить группу точек в подразделе "Данные TIN" раздела "Поверхности".
geologic Почему именно инженерка? Вообще то у меня ГИС как таковой, но только на основе инженерки
Статью эту читал давно, нечто подобное я делал ещё в университете, однако из статьи почерпнул о возможности накладывать спутниковый снимок, получилось прикольно Но мы отвлеклись, при чём тут интерполяция?
JEY Не понимаю зачем вам такие подробности? Просто по точкам в Цивиле сделал поверхность, потом с ней произвёл интерполяцию и получилось что вместо сетки треугольников через 20 метров, у меня стала модель через метр, т.е. точки с интерполировались, теперь остаётся вопрос как треугольники преобразовать в точки.
Просто я не понимаю, зачем снова преобразовывать 3D-грани в точки. Достаточно открыть диалоговое окно списка точек, выделить все и добавить в чертеж одной командой из контекстного меню. Разве не это нужно?
Ладно буду подробен, наверное не так выражаюсь.
У меня есть набор точек с координатой z точки расположены друг от друга с шагом, допустим через 10 метров, мне надо с помощью интерполяции получиться дополнительно ещё точки, на основе уже существующих, но имующих шаг 10 м, т.е. из 10 метрового расстояния между точками получить точки с 1 метровым расстоянием. Мне нужный именно точки!
Что я для это делаю, я строю по своим точкам (которые с шагом 10 м) проверхность в Civile, получается треангуляционная сеть с шагом вершин треугольника через 10 м, ибо каждая вершина это точка по которой построена поверхность, с помощью меню интерполяции я преобразую поверхность с треугольниками в поверхность в которой вершинины треугольников идут через 1 метр, т.е. истинными являются вершины которые через 10 метров, а остальные вершины синтерполированны. Теперь мне нужно из этой поверхности получить вместо вершин треугольников точки с координатой z, которые соответсвуют всем вершинам интерполированной поверхности.
Понятно?
Вот теперь предельно понятно! Скажу сразу. Преобразовать 3D-грани в точки Вы не сможете. В AutoCAD Civil 3D такой команды нет. Я уже сталкивался с таким вопросом. Но тогда поверхность была построена посредством GeoniCS, что в принципе идентично Civil 3D.
Интерполяция была выполнена посредством добавления новых точек в режиме редактирования поверхности. То есть, в момент добавления новой точки поверхность автоматически перестраивалась в определенном участке, вместе с тем в список точек, каждый раз, добавлялась новая точка.
К чему веду? Полученные посредством интерполяции точки, были автоматически сохранены в проекте AutoCAD Civil 3D и Вы можете обнаружить их в списке точек. То есть не обязательно разбивать 3D-грани на составляющие!
Попробуйте внимательно проверить список точек. Скорее всего, результаты интерполяции Вы найдете там.
В качестве исходных данных для построения плана рельефа используем полевую схему нивелирования поверхности участка в масштабе 1:500.
Схема представляет собой сетку квадратов (6 × 5) со стороной 20 метров, в вершинах проставлены относительные отметки поверхности земли (см. рисунок).
По сути неавтоматизированный метод интерполирования горизонталей в NanoCAD аналогичен графическому интерполированию на бумаге с помощью палетки. Однако благодаря имеющемуся инструментарию программы, данный метод позволяет производить интерполяцию с несравнимо более высокой точностью, а построение самих горизонталей производится проще и логичнее при помощи специального примитива — «Сплайна».
Разберем на примере данный метод — скрин для иллюстрации см. ниже.
Имеем две отметки земной поверхности, расположенные в соседних вершинах квадрата, в нашем примере — это верхняя левая и расположенная под ней отметки — 55.36 и 56.19 метра. Чтобы проинтерполировать сторону квадрата между этими отметками, с помощью инструмента «Деление» проставим точки на равном расстоянии друг от друга между вершинами. Для этого необходимо задать число сегментов, которое в свою очередь определяется разностью между отметками без учета дробного разделителя, т.е. в данном случае 5619-5536=83. По сути таким образом мы проинтерполировали сторону квадрата горизонталями с отметками (от низшей к высшей) 55.37, 55.38, 55.39 …. 56.18, 56.19. Из всего этого количества нам нужно выбрать точки с отметками, соответствующими принятой высоте сечения горизонталей. В данной работе высота сечения 0,25 метра, т.е. из всего множества точек нам необходимо оставить только точки с отметками 55.50, 55.75, 56.00 метра, а остальные удалить, чтобы в дальнейшем при построении горизонталей не запутаться.
Но так бы мы поступили, если в точности следовали теории. На практике работа с таким количеством точек утомительна, требует огромного ресурса времени и может привести к ошибкам. Поэтому не нужно строить 83 точки, достаточно построить те, которые, например, соответствуют отметкам 55.40, 55.45, 55.50 и так далее. В данном случае (это показано на скрине) точек получилось 16. Для удобства также наши фактические отметки округлили до чисел 55.35 и 56.20. Количество сегментов для деления стороны квадрата вычислили так: (5620-5535)/5=17.
Следует отметить, что чем меньше точек мы будем строить, тем менее точно будет выполняться интерполирование. В данной работе, считаю, что принятое решение оптимально, практически не снижает точность интерполирования, при этом работать с таким количеством точек достаточно удобно.
Также в ходе интерполирования во избежание ошибок построения горизонталей в будущем считаю удобным сразу строить схематические «горизонтали» — линии, отрезки, соединяющие близлежащие точки с одноименными отметками.
В итоге в черновом виде получим следующую картинку (см. скрин ниже).
Сами горизонтали строим в соответствующем слое (например, «Горизонтали» или «Рельеф») «Сплайном».
На план наносим необходимые надписи, отключаем вспомогательные слои для построений, и получаем готовый план рельефа строительной площадки.
харумскарум
Просмотр профиля
в автокаде сиё безобразие вполне невинное граненое и рубленное а при импорте в макс превращается в сущий ммрак с тыщами вертексов на сплайне и совершенно не пригодное для работы
как уменьшить количество вертексов на сплайне еще в автокаде если curve steps при импорте не помогает?
Yehat
Просмотр профиля
харумскарум
Просмотр профиля
melmn85
Просмотр профиля
a-black
Просмотр профиля
харумскарум
Просмотр профиля
в самые ранние версии тоже пробовал - безрезультатно
уменьшать до 1 SPLINESEGM в автокаде тож не помогло
вот как это выглядит в атокаде - что за хитрая линия? (на этом одном сегменте в максе получается 241 вершина)
Yehat
Просмотр профиля
Сплайн автокадовский. У него всегда максимальная интерполяция. Для отображения она плавает, может показывать рублено, но если написать команду RE, то сгладит до настоящего вида. Не встречал параметра, который бы "рубил" в обратную сторону.
а! делай convert to polуline (через даблклик по сплайну) и там presicion выставь в командной строке
харумскарум
Просмотр профиля
помогла команда FLATTEN из набора express tools
Yehat, спасибо! правда convert to polyline даже при нулевой интерполяции выдает чрезмерное количество вершин
iDDQD
Просмотр профиля
харумскарум
Просмотр профиля
лучше выделить только проблемные линии (только те которые в максе оказываются с избыточными точками) и уж точно не выделять штриховку для flatten
iDDQD
Просмотр профиля
Алексей1980
Просмотр профиля
макс коряво импортирует сплайны, чтоб потом их давить. Я такой способ юзаю: закидываю двг в корел, там рублю на нужные мне кусочки. затем применяю инструмент слияние точек по определённому порогу, иначе будет давиться не целостный объект, а оболочки какие то. В кореле и поправляю нормализацию, затем преобразую это всё в формат адобе иллюстратора 7 или 8 версии. Это очень важно. новые версии макс хреново понимает. иллюстратором и закидываю. И совет серединки объектов с дырками лучше кидать отдельно, а потом аттачить, тогда глюков не будет
Lobster
Просмотр профиля
макс коряво импортирует сплайны, чтоб потом их давить. Я такой способ юзаю: закидываю двг в корел, там рублю на нужные мне кусочки. затем применяю инструмент слияние точек по определённому порогу, иначе будет давиться не целостный объект, а оболочки какие то. В кореле и поправляю нормализацию, затем преобразую это всё в формат адобе иллюстратора 7 или 8 версии. Это очень важно. новые версии макс хреново понимает. иллюстратором и закидываю. И совет серединки объектов с дырками лучше кидать отдельно, а потом аттачить, тогда глюков не будет
ага я тоже обычно илюстратор для таких целей юзаю.. иногда достаточно импортировать двг и сохранить как аи огн там сам интерполирует на окружности всего 4 точки рисует в отличии если сразу из када их может там быть мильон, но возникает проблема масштаба в таком случае
Читайте также: