Форум НПФ  

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03-02-2020, 21:33
ZaharovMaxim ZaharovMaxim вне форума
Новичок
 
Регистрация: Feb 2019
Сообщения: 12
По умолчанию Изменить семантику точки

Здравствуйте.
Можно программно поменять свойства точки?
Вот пример кода
Код:
Dim rp As Topomatic.Cad.Foundation.Vector3D Dim boopos As Boolean = Hints.CadCursors.GetPoint(CadView, rp, Укажите точку: ") Dim SurvPoint As SurfacePoint = New SurfacePoint(rp) Dim NPointt As Integer = New Topomatic.Sfc.PointEditor(surface).Add(SurvPoint) Dim CogoPoint As Topomatic.Sfc.Layer.Wrappers.SurfacePointWrapper = New Wrappers.SurfacePointWrapper(surfaceLayer, NPointt) '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\ 'меняем код точки на Пункт государственной геодезической сети (1000) Dim code As New KeyValuePair(Of Integer, Surface)(1000, surface) CogoPoint.ObjectCode = code 'получаем семантику Dim semantic_obj As Topomatic.Smt.SemanticDataSet = CogoPoint.Semantic Dim col As ICollection(Of Integer) = semantic_obj.Keys Dim obj As Double = 123.12 Dim bool As Boolean = semantic_obj.TryGetValue(8, obj)

Я бы хотел изменить поле Отметка центра
Спасибо
Ответить с цитированием
  #2  
Старый 03-03-2020, 11:31
Василий Гончаров Василий Гончаров вне форума
Разработчик Robur
 
Регистрация: Oct 2016
Сообщения: 128
По умолчанию

Добрый день!
Да, это возможно. Вы можете менять семантические значения как по целочисленному ключу, так и по тэгу, если он задан. Конкретно для поля "отметка центра" в семантике условного знака задан тэг "CENTER". Вы можете воспользоваться следующим кодом:
Код:
Dim surface as Topomatic.Sfc.Surface = ...; Try surface.BeginUpdate(); 'Создаём редактор для добавления точек поверхности Dim editor as Topomatic.Sfc.PointEditor = new Topomatic.Sfc.PointEditor(surface) 'Запрашиваем положение точки Dim rp As Topomatic.Cad.Foundation.Vector3D Dim has_point As Boolean = Hints.CadCursors.GetPoint(CadView, rp, "Укажите точку: ") If has_point Then Dim point As Topomatic.Sfc.SurfacePoint = new Topomatic.Sfc.SurfacePoint(rp) 'Добавили точку в поверхность и получили её индекс в списке точек Dim point_index As Int = editor.Add(point) 'Получили расширенную информацию о точке Dim information As Topomatic.Sfc.SurfacePointExtensiveInformation = surface.Points.GetExtensiveInformation(index); 'Назначили изыскательский код information.ExplorationCode = "1000"; 'Назначили код объекта information.Code = 1000; 'Обновили условный знак объекта surface.RefreshPointSign(index); 'Обновили слой объекта surface.RefreshPointLayer(index); 'Указали поле "отметка центра" используя его семантический код information.Semantic["CENTER"] = 123.12; End If Finally surface.EndUpdate(); End Try
Ответить с цитированием
  #3  
Старый 03-03-2020, 22:13
ZaharovMaxim ZaharovMaxim вне форума
Новичок
 
Регистрация: Feb 2019
Сообщения: 12
По умолчанию

Спасибо, получилось.
Ответить с цитированием
  #4  
Старый 01-12-2021, 9:33
VSP VSP вне форума
Новичок
 
Регистрация: Jun 2019
Сообщения: 20
По умолчанию

Здравствуйте! При запуске на питоне:
surface.RefreshPointLayer(index)
AttributeError: 'Surface' object has no attribute 'RefreshPointLayer'
Хотя surface is Topomatic.Sfc.Surface object. К какому классу относится метод RefreshPointLayer?

Последний раз редактировалось VSP, 01-12-2021 в 9:48.
Ответить с цитированием
  #5  
Старый 01-12-2021, 12:16
Василий Гончаров Василий Гончаров вне форума
Разработчик Robur
 
Регистрация: Oct 2016
Сообщения: 128
По умолчанию

Добрый день!

Метод RefreshPointLayer объявлен в пространстве имён Topomatic.Sfc.Layer, и реализован как метод расширения у статического класса SurfaceExtentions. При разработке на VisualBasic средства разработки допускают использование методов расширения, как методы классов и поэтому вызов surface.RefreshPointLayer является допустимым. В случае разработки на python вам потребуется вызывать этот метод напрямую, в виде SurfaceExtentions.RefreshPointLayer(surface, index). Более подробно https://ironpython.net/documentatio...tension-methods.
Ответить с цитированием
  #6  
Старый 05-14-2021, 2:41
VSP VSP вне форума
Новичок
 
Регистрация: Jun 2019
Сообщения: 20
По умолчанию

Добрый день! Подскажите, пожалуйста, как создать выноску (leader) с заданными параметрами (расположением и текстом)? (на python)
Ответить с цитированием
Ответ


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

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

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

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



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

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

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