Форум НПФ  

Вернуться   Форум НПФ "ТОПОМАТИК" > Программные продукты "Топоматик Robur" на платформе "Robur AP3" > Средства разработки Топоматик Robur > Вопросы и ответы
Ник
Пароль
Регистрация FAQ Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06-29-2022, 9:11
sprokofev sprokofev вне форума
Новичок
 
Регистрация: Jun 2022
Сообщения: 3
По умолчанию Работа с осью

Добрый день. Имеется задача по созданию оси трассы (Робур Автодороги 8.3) по исходной полилинии с некоторыми преобразованиям - в результате должна получиться ось из отрезков и дуг. С геометрическими преобразованиями проблем нет, как и с чтением исходной полилинии; однако, никак не могу понять, с помощью каких классов и методов можно работать с осью - создать новую ось и добавить в нее вершины с рассчитанными параметрами. Документация, к сожалению, не помогла.
Заранее спасибо за ответ.
Ответить с цитированием
  #2  
Старый 07-05-2022, 22:58
Support engineer Support engineer вне форума
Новичок
 
Регистрация: May 2022
Сообщения: 3
По умолчанию

Здравствуйте!
Для создания новой модели, будет удобно воспользоваться следующей конструкцией.

Код:
// создаём папку и файл var relativePath = "Модели/Железные дороги/Моя папка"; var modelName = "Моя модель.railx"; var args = ApplicationHost.Current.Plugins.Execute("create_folders_and_file_name", new object[] { new [] { relativePath }, new [] { modelName }, true }) as object[]; if (args == null) return null; // созданная папка в проекте var folder = args[0] as IProjectModel; // имя файла var names = args[1] as string[]; if (folder == null || names == null) throw new ArgumentOutOfRangeException(); //добавление в структуру var type = "rail"; var uri = new URI(folder.Uri, names[0]); var projectItem = ApplicationHost.Current.Plugins.Execute( Topomatic.ApplicationPlatform.Consts.FunctionAddIt em, new object[] { uri.AsAbsoluteUri, type }) as IProjectModel;


Далее следует получить план линии (PlanLine) модели и добавить в него вершины (Vertex).
План линии получается с помощью свойства Plan у Alignment'а вашей модели.

Код:
// получение плана линии и добавление вершин var algModel = projectModel.LockRead() as AlignmentModel; if(algModel == null) return; var alg = algModel.Alignment; var plan = alg.Plan; var stVertex = new PlanLine.Vertex {Position = Vector2D.Empty}; var midVertex = new PlanLine.Vertex { Position = new Vector2D(500, 0) }; var endVertex = new PlanLine.Vertex {Position = new Vector2D(1000, -500)}; plan.Add(stVertex); plan.Add(midVertex); plan.Add(endVertex); // добавление радиуса во вторую вершину и проверка плана линии midVertex.BeginTransaction(); var result = true; try { var midVertexItem = new PlanLine.Vertex.VertexItem { R = 500, K = 500, L1 = 100, L2 = 100 }; midVertex.Add(midVertexItem); result = PlanLineSolver.PlanVertexesValid(plan); } finally { if (result) { midVertex.Commit(); } else { midVertex.Rollback(); MessageDlg.Show("При добавлении радиуса произошла ошибка.", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } }
Ответить с цитированием
  #3  
Старый 07-08-2022, 14:46
sprokofev sprokofev вне форума
Новичок
 
Регистрация: Jun 2022
Сообщения: 3
По умолчанию

Добрый день. Спасибо, ответ помог разобраться, но пока не до конца. Остался вопрос: каким образом на Python можно объявить VertexItem с заданием атрибутов? PlanLine.Vertex.VertexItem() создает объект, но не принимает аргументов, а после объявления поля объекта (K, L1, L2, R) не изменяются. Заранее спасибо.
Ответить с цитированием
  #4  
Старый 07-10-2022, 22:18
Support engineer Support engineer вне форума
Новичок
 
Регистрация: May 2022
Сообщения: 3
По умолчанию

Цитата:
Сообщение от sprokofev
Добрый день. Спасибо, ответ помог разобраться, но пока не до конца. Остался вопрос: каким образом на Python можно объявить VertexItem с заданием атрибутов? PlanLine.Vertex.VertexItem() создает объект, но не принимает аргументов, а после объявления поля объекта (K, L1, L2, R) не изменяются. Заранее спасибо.

Здравствуйте! Прикрепите, пожалуйста, фрагмент вашего кода.
Ответить с цитированием
  #5  
Старый 08-02-2022, 17:02
sprokofev sprokofev вне форума
Новичок
 
Регистрация: Jun 2022
Сообщения: 3
По умолчанию

Добрый день. Прикреплять, увы, нечего, а вопрос такой - как вот такой код:
Код:
var midVertexItem = new PlanLine.Vertex.VertexItem { R = 500, K = 500, L1 = 100, L2 = 100 };

будет выглядеть на python?
Ответить с цитированием
Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 12:53.

Навигация по основному сайту
Главная Каталог продуктов и услуг Где купить Сопровождение
Вакансии О компании Обзоры Канал на YouTube

vBulletin v3.0.7 , Copyright ©2000-2022, Jelsoft Enterprises Ltd.
Copyright © 2003-2022, НПФ "ТОПОМАТИК".