Форум НПФ  

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01-28-2022, 10:03
Gontarski Gontarski вне форума
Пользователь
 
Регистрация: Mar 2013
Сообщения: 35
По умолчанию Выбор объектов на поперечнике в модуле c#

Добрый день!

Подскажите, как правильно реализовать выбор пользователем различных объектов на поперечном профиле в модуле на c#?

Интересует выбор откоса.

Понимаю, что это можно сделать с помощью функции СadView.SelectionSet.PickOneObjectAtScreen, но не понимаю, как конкретно.

Выбор узла реализовал так:
Код:
var obj = cadView.SelectionSet.PickOneObjectAtScreen(pt => (pt as CrsDesignEntityWrapper)?.Component is CrsNode, message);
Ответить с цитированием
  #2  
Старый 01-28-2022, 13:29
Василий Гончаров Василий Гончаров вне форума
Разработчик Robur
 
Регистрация: Oct 2016
Сообщения: 154
По умолчанию

Добрый день!

Это возможно сделать, по аналогии с выбором узла, в качестве компонента у Вас будет выступать CrsConstruction. Определить что это именно откос, Вы можете проверив свойство TypeName у экземпляра ActComponent у CrsDesignEntityWrapper, в нём указывается тип конструкции на питоне в виде строки - имя файла, имя класса.
Ответить с цитированием
  #3  
Старый 07-07-2022, 9:03
Gontarski Gontarski вне форума
Пользователь
 
Регистрация: Mar 2013
Сообщения: 35
По умолчанию

Добрый день!
Появилось пару вопросов:

1. Как распознать, что узел на поперечнике является точкой пересечения поперечника с автодорогой (другого подобъекта)?
2. Как вообще получить список автодорог (и ж.д. дорог) в проекте?
Ответить с цитированием
  #4  
Старый 07-08-2022, 13:36
Василий Гончаров Василий Гончаров вне форума
Разработчик Robur
 
Регистрация: Oct 2016
Сообщения: 154
По умолчанию

Добрый день!

1. Узлы поперечника, которые являются узлами пересечения с другим подобъектом кодируются кодом 199, а их имя - это имя пересекаемого подобъекта. Вы можете отфильтровать узлы на поперечнике по коду и имени, и найти нужный Вам узел.

2. Список всех моделей определённого типа в проекте Вы можете получить, используя метод статического класса Topomatic.ApplicationPlatform.Plugins.PluginCoreOp s FindModels. В качестве параметра туда необходимо передать тип модели, для автомобильной дороги это "road" для железной "rail" соответственно.
Ответить с цитированием
  #5  
Старый 07-14-2022, 8:20
Gontarski Gontarski вне форума
Пользователь
 
Регистрация: Mar 2013
Сообщения: 35
По умолчанию

Цитата:
Сообщение от Василий Гончаров
Добрый день!
2. Список всех моделей определённого типа в проекте Вы можете получить, используя метод статического класса Topomatic.ApplicationPlatform.Plugins.PluginCoreOp s FindModels. В качестве параметра туда необходимо передать тип модели, для автомобильной дороги это "road" для железной "rail" соответственно.

"The type or namespace 'Plugins' does not exist in the namespace 'Topomatic.ApplicationPlatform'"

Какую библиотеку Робура необходимо подключить чтобы воспользоваться Вашим методом?
Ответить с цитированием
  #6  
Старый 07-15-2022, 9:50
Василий Гончаров Василий Гончаров вне форума
Разработчик Robur
 
Регистрация: Oct 2016
Сообщения: 154
По умолчанию

Добрый день! Эти методы находятся в бибилиотеке Topomatic.ApplicationPlatform, версий 16.0.0.1 и выше. Уточните пожалуйста с какой версией Робур Вы работаете.
Ответить с цитированием
  #7  
Старый 10-03-2022, 7:01
Gontarski Gontarski вне форума
Пользователь
 
Регистрация: Mar 2013
Сообщения: 35
По умолчанию

Добрый день!

Появился вопрос по теме узлов пересечения поперечного профиля с другим подобъектом. Узел выбирается с помощью СadView.SelectionSet.PickOneObjectAtScreen, а затем производится вставка в этот узел конструкции программно. Для простоты демонстрирую на вставке другого узла:

Код:
CrsNode selectedNode = ... здесь выбираем узел... CrsNode node = ActComponent.CreateNode("Тестовый узел", selectedNode.Name, 0, 0); actConstruction.Add(node); alignment.Corridor.Sections.Invalidate();


Если выбран обычный узел (например вставленный на поперечный профиль с помощью "палитры элементов конструкции"), то вставка нашего тестового узла происходит корректно.
Однако, если я выбираю узел пересечения с поперечным профилем другого подобъекта, то при выполнении кода, приведенного выше, Робур в панели ошибок пишет - "Тестовый узел: не удалось создать элемент".

Как по узлам пересечения с поперечным профилем другого подобъекта программно вставлять конструкции, другие узлы и прочие элементы?

Последний раз редактировалось Gontarski, 10-06-2022 в 6:41.
Ответить с цитированием
Ответ


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

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

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

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



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

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

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