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

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


developers:tutorial:algedit

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
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]] и передать в него положение узла красного профиля.
  
 Определив необходимую вершину,​ рассчитаем положение новых вершин и внесём изменения в проектный профиль. Определив необходимую вершину,​ рассчитаем положение новых вершин и внесём изменения в проектный профиль.
developers/tutorial/algedit.1657659535.txt.gz · Последние изменения: 2022/07/12 20:58 — proxor