Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
developers:tutorial:crsselection [2022/08/11 19:19] proxor |
developers:tutorial:crsselection [2022/08/12 08:51] (текущий) proxor [Расчёт площади контуров конструкции поперечного профиля] |
||
---|---|---|---|
Строка 44: | Строка 44: | ||
* [[developers:references:topomatic.alg|Topomatic.Alg.dll]] - базовые классы подобъектов | * [[developers:references:topomatic.alg|Topomatic.Alg.dll]] - базовые классы подобъектов | ||
+ | * [[developers:references:topomatic.alg.model|Topomatic.Alg.Model.dll]] - возможность использования класса [[developers:references:topomatic.alg.model.alignmentactivitymanager|AlignmentActivityManager]] для получения индекса текущего поперечного профиля | ||
* [[developers:references:topomatic.cad.foundation|Topomatic.Cad.Foundation.dll]] - базовые математические типы и операции | * [[developers:references:topomatic.cad.foundation|Topomatic.Cad.Foundation.dll]] - базовые математические типы и операции | ||
* [[developers:references:topomatic.cad.view|Topomatic.Cad.View.dll]] - элемент управления для отображения слоёв моделей | * [[developers:references:topomatic.cad.view|Topomatic.Cad.View.dll]] - элемент управления для отображения слоёв моделей | ||
Строка 106: | Строка 107: | ||
В этом примере рассчитаем сумму площадей контуров конструкции поперечного с введённым пользователем кодом. | В этом примере рассчитаем сумму площадей контуров конструкции поперечного с введённым пользователем кодом. | ||
- | В отличии от предыдущего примера, доступ к элементам конструкции поперечного профиля мы осуществим не через набор объектов текущего видового экрана, а через контекст конструирования поперечного профиля. Для получения контекста воспользуемся методом [[developers:references:topomatic.alg.crs.corridor.createdesigncontext_system.double|CreateDesignContext()]] класса [[developers:references:topomatic.alg.alignment.corridor|Corridor]]. В качестве аргумента этот метод принимает расстояние от начала пути до створа поперечного профиля. Чтобы получить это значение для текущего поперечника нужно получить наблюдателя ([[developers:references:topomatic.crs.icrsbuilderlistener|ICrsBuilderListener]]) с помощью свойства [[developers:references:topomatic.alg.crs.corridor.listener|Listener]] класса [[developers:references:topomatic.alg.alignment.corridor|Corridor]]. Значение свойства [[developers:references:topomatic.crs.icrsbuilderlistener.station|Station]] у [[developers:references:topomatic.crs.icrsbuilderlistener|ICrsBuilderListener]] вернёт значение расстояния от начала пути то створа текущего поперечного профиля. Получив контекст мы можем найти среди его элементов контуры при помощи метода [[developers:references:topomatic.crs.templates.crscontainer.findcontour_system.int32|FindContour()]], передав указанный код в качестве аргумента. | + | В отличии от предыдущего примера, доступ к элементам конструкции поперечного профиля мы осуществим не через набор объектов текущего видового экрана, а через контекст конструирования поперечного профиля. Для получения контекста воспользуемся свойством [[developers:references:topomatic.alg.crs.corridor.item_system.int32|Item[Int32] ]] класса [[developers:references:topomatic.alg.alignment.corridor|Corridor]]. Индекс текущего поперечного профиля получим через свойство [[developers:references:topomatic.alg.model.alignmentactivitymanager|CurrentSection]] менеджера активности подобъекта ([[developers:references:topomatic.alg.model.alignmentactivitymanager|AlignmentActivityManager]]). [[developers:references:topomatic.alg.model.alignmentactivitymanager|AlignmentActivityManager]] получается с помощью свойства [[developers:references:topomatic.alg.runtime.serviceclasses.activealignmentreciver.manager|Manager ]] класса [[developers:references:topomatic.alg.runtime.serviceclasses.activealignmentreciver|ActiveAlignmentReciver]]. Получив контекст мы можем найти среди его элементов контуры при помощи метода [[developers:references:topomatic.crs.templates.crscontainer.findcontour_system.int32|FindContour()]], передав указанный код в качестве аргумента. |
[[developers:references:topomatic.crs.templates.crscontour|CrsContour]] не содержит информации о занимаемой им площади. Чтобы получить площадь контура следует получить список его векторов и передать этот список в качестве аргумента методу [[developers:references:topomatic.cad.foundation.cadlibrary.polygonarea_system.collections.generic.ienumerable_1|PolygonArea()]] статического класса [[developers:references:topomatic.cad.foundation.cadlibrary|CadLibrary]]. | [[developers:references:topomatic.crs.templates.crscontour|CrsContour]] не содержит информации о занимаемой им площади. Чтобы получить площадь контура следует получить список его векторов и передать этот список в качестве аргумента методу [[developers:references:topomatic.cad.foundation.cadlibrary.polygonarea_system.collections.generic.ienumerable_1|PolygonArea()]] статического класса [[developers:references:topomatic.cad.foundation.cadlibrary|CadLibrary]]. | ||