Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
developers:tutorial:algedit [2022/07/12 20:58] proxor [Редактирование профиля] |
developers:tutorial:algedit [2022/07/12 21:18] (текущий) proxor [Сглаживание вершины красного профиля] |
||
---|---|---|---|
Строка 141: | Строка 141: | ||
===== Редактирование профиля ===== | ===== Редактирование профиля ===== | ||
- | [[road:work_with_track:longitudinal_profile:start|Профиль]] является экземпляром класса наследником [[developers:references:topomatic.alg.prf.transition|Transition]]. Доступ к коллекции профилей подобъекта осуществляется через свойство [[developers:references:topomatic.alg.alignment.transitions|Transitions]] класса [[developers:references:topomatic.alg.alignment|Alignment]]. Коллекция профилей содержит профиль по оси, а также восемь профилей слева и восемь профилей справа. Наиболее часто используемый профиль по оси трассы расположен в начале коллекции и имеет индекс 0. | + | [[road:work_with_track:longitudinal_profile:start|Профиль]] является наследником класса [[developers:references:topomatic.alg.prf.transition|Transition]]. Доступ к коллекции профилей подобъекта осуществляется через свойство [[developers:references:topomatic.alg.alignment.transitions|Transitions]] класса [[developers:references:topomatic.alg.alignment|Alignment]]. Коллекция профилей содержит профиль по оси, а также восемь профилей слева и восемь профилей справа. Наиболее часто используемый профиль по оси трассы расположен в начале коллекции и имеет индекс 0. |
Каждый профиль содержит в себе информацию о чёрном профиле, красном профиле и интерполированном профиле. Каждый из этих профилей получается с помощью соответствующего свойства класса [[developers:references:topomatic.alg.prf.transition|Transition]]: | Каждый профиль содержит в себе информацию о чёрном профиле, красном профиле и интерполированном профиле. Каждый из этих профилей получается с помощью соответствующего свойства класса [[developers:references:topomatic.alg.prf.transition|Transition]]: | ||
* [[developers:references:topomatic.alg.prf.agprofile|AgProfile]] - [[road:work_with_track:longitudinal_profile:create_interpolated_profile:start|интерполированный профиль]] | * [[developers:references:topomatic.alg.prf.agprofile|AgProfile]] - [[road:work_with_track:longitudinal_profile:create_interpolated_profile:start|интерполированный профиль]] | ||
- | * EgProfile - [[road:work_with_track:longitudinal_profile:create_black_profile:start|Черный (существующий) профиль]] (или динамический или статический, в зависимости от настроек) | + | * [[developers:references:topomatic.alg.prf.transition.egprofile|EgProfile]] - [[road:work_with_track:longitudinal_profile:create_black_profile:start|Черный (существующий) профиль]] (или динамический или статический, в зависимости от настроек) |
- | * RedProfile - [[rail:rail:projecting_longitudinal_profile:projecting_longitudinal_profile:start|Красный (проектный) профиль]] | + | * [[developers:references:topomatic.alg.prf.transition.redprofile|RedProfile]] - [[rail:rail:projecting_longitudinal_profile:projecting_longitudinal_profile:start|Красный (проектный) профиль]] |
- | * StaticEg - [[road:work_with_track:longitudinal_profile:edit_black_profile:start|Статический чёрный профиль]] | + | * [[developers:references:topomatic.alg.prf.transition.staticeg|StaticEg]] - [[road:work_with_track:longitudinal_profile:edit_black_profile:start|Статический чёрный профиль]] |
- | Каждый из описанных выше профилей содержит в себе узлы профиля соответствующие его типу. Для интерполированного профиля узлы являются экземплярами класса AgProfileNode, для чёрного профиля ProfileNode, а для красного профиля ProjectProfileNode. За сортировку узлов в профиле отвечает тот, кто заполняет профиль, это необходимо для корректной обработки вертикальных стенок и обратных уклонов земли. | + | Каждый из описанных выше профилей содержит в себе узлы профиля соответствующие его типу. Для интерполированного профиля узлы являются структурами [[developers:references:topomatic.alg.prf.agprofilenode|AgProfileNode]], для чёрного профиля [[developers:references:topomatic.alg.prf.profilenode|ProfileNode]], а для красного профиля [[developers:references:topomatic.alg.prf.projectnode|ProjectNode]]. За сортировку узлов в профиле отвечает тот, кто заполняет профиль, это необходимо для корректной обработки вертикальных стенок и обратных уклонов земли. |
- | Если в чёрный профиль требуется внести изменения, то необходимо сделать его статическим. Для этого нужно свойству IsDynamicEarth класса [[developers:references:topomatic.alg.prf.transition|Transition]] установить значение **false** и получить существующий профиль через свойство StaticEg. | + | Если в чёрный профиль требуется внести изменения, то необходимо сделать его статическим. Для этого нужно свойству [[developers:references:topomatic.alg.prf.transition.isdynamicearth|IsDynamicEarth]] класса [[developers:references:topomatic.alg.prf.transition|Transition]] установить значение **false** и получить существующий профиль через свойство [[developers:references:topomatic.alg.prf.transition.staticeg|StaticEg]]. |
<note important>Статический профиль не обновляет своё состояние в случае изменений ЦММ на которые ссылается подобъект профиля.</note> | <note important>Статический профиль не обновляет своё состояние в случае изменений ЦММ на которые ссылается подобъект профиля.</note> | ||
- | Изменение коллекций узлов профилей выполняется аналогично работе с массивами. | + | Изменение коллекций узлов профилей выполняется аналогично работе с [[https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/arrays/single-dimensional-arrays|массивами]]. |
==== Сглаживание вершины красного профиля ==== | ==== Сглаживание вершины красного профиля ==== | ||
Строка 161: | Строка 161: | ||
В этом примере мы выберем вершину красного профиля и сгладим её путём удаления существующей вершины и добавления двух новых с заранее рассчитанными уклонами на заданном расстоянии друг от друга. | В этом примере мы выберем вершину красного профиля и сгладим её путём удаления существующей вершины и добавления двух новых с заранее рассчитанными уклонами на заданном расстоянии друг от друга. | ||
- | Аналогично предыдущему примеру, определим активную модель подобъекта. Рамкой укажем область в которой располагается вершина красного профиля с помощью метода GetFrame() класса CadCursors. Полученные значения координат необходимо переконвертировать из координат экрана в координаты профиля. Конвертация осуществляется методом UnProjectBox() класса CadView. Далее определим какая вершина профиля попадает в границы указанных координат. Для этого следует воспользоваться методом Contains() структуры BoundingBox2D и передать в него положение узла красного профиля. | + | Аналогично предыдущему примеру, определим активную модель подобъекта. Рамкой укажем область в которой располагается вершина красного профиля с помощью метода [[developers:references:c558291625f2a11ea83cfbdc854b9f87|GetFrame()]] класса [[developers:references:topomatic.cad.view.hints.cadcursors|CadCursors]]. Полученные значения координат необходимо переконвертировать из координат экрана в координаты профиля. Конвертация осуществляется методом [[developers:references:topomatic.cad.view.cadview.unprojectbox_topomatic.cad.foundation.boundingbox2d|UnProjectBox()]] класса [[developers:references:topomatic.cad.view.cadview|CadView]]. Далее определим какая вершина профиля попадает в границы указанных координат. Для этого следует воспользоваться методом [[developers:references:topomatic.cad.foundation.boundingbox2d.contains_topomatic.cad.foundation.vector2d|Contains()]] структуры [[developers:references:topomatic.cad.foundation.boundingbox2d|BoundingBox2D]] и передать в него положение узла красного профиля. |
Определив необходимую вершину, рассчитаем положение новых вершин и внесём изменения в проектный профиль. | Определив необходимую вершину, рассчитаем положение новых вершин и внесём изменения в проектный профиль. |