Подмена видов профилей

Автор Тема: Подмена видов профилей  (Прочитано 8248 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Подмена видов профилей
« : 03-04-2019, 13:32:06 »
Необходимо сделать подмену всех видов профилей.

Хочу сделать команду разработав алгоритм на AutoCAD API

Краткое описание задачки:
Есть исходная трасса. По этой трассе генерировать
новый вид профиля, а старый удалить

Последовательность алгоритма примерно такая:

1) На основе исходной трассы получить копию трассы
    (или создать новую трассу с теми же вводными параметрами что и в исходной)
2) Далее создать вид профиля по новой трассе
3) Удалить исходную трассу и вместе с ней удалится и связанный с ней вид профиля.

Подскажите, я в правильном направлении мыслю?


Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Подмена видов профилей
« Ответ #1 : 03-04-2019, 13:38:22 »
А трассу зачем удалять, если можно виды профилей из нее удалить?

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Подмена видов профилей
« Ответ #2 : 03-04-2019, 13:48:22 »
Подскажите, я в правильном направлении мыслю?
Да кто же его знает... Мне, например, совершенно непонятна задача.
Необходимо сделать подмену всех видов профилей.

Хочу сделать команду разработав алгоритм на AutoCAD API

Краткое описание задачки:
Есть исходная трасса. По этой трассе генерировать
новый вид профиля, а старый удалить
Смысл манипуляции? В итоге получится тот же самый вид профиля, который и был.
В любом случае, с помощью AutoCAD API такое точно не сделать - непонятен смысл его упоминания.
Off-Topic: показать
Алексей, ну ёлки-палки! Ну далеко не первый же раз тему создаёшь! Ну хоть бы раз нормально сформулировал вопрос! Каждый раз какие-то шарады...

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Подмена видов профилей
« Ответ #3 : 03-04-2019, 14:59:23 »
Да смысл все тот же. Пытаюсь решить все туже проблему.
Поменялась проектируемая поверхность.
А вид профиля как на зло все по старой земле строится.
Видимо где-то закеширована поверхность старая на виде профиля и все.

Старая поверхность уже физически с диска удалена.
На ее место подгрузил через быстрые ссылки новую поверхность,
а профили все равно по старой земле считают.
Это боль проектировщиков. Нужно переделывать все профили.

Что делать ума не приложу.


 
 

Отмечено как Решение Алексей (IdeaSoft) 05-04-2019, 09:45:17

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Подмена видов профилей
« Ответ #4 : 03-04-2019, 15:05:45 »
Удалять трассу или вид профиля не обязательно. Ты можешь создать новый профиль по поверхности:
Код - C# [Выбрать]
  1. ObjectId Profile.CreateFromSurface(string profileName, CivilDocument document, string alignmentName, string surfaceName, string layerName, string styleName, string labelSetName)

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Подмена видов профилей
« Ответ #5 : 03-04-2019, 15:11:43 »
Ты можешь создать новый профиль по поверхности
Да это хорошая идея, тогда я должен получить этот профиль из вида.

Вот так вроде это сделать?

Код - C# [Выбрать]
  1. ProfileView.GetProfile(...);

и потом подменить на новый.

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Подмена видов профилей
« Ответ #6 : 03-04-2019, 15:20:46 »
Код - C# [Выбрать]
  1. Alignment.GetProfileIds()

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Подмена видов профилей
« Ответ #7 : 03-04-2019, 15:22:33 »
и потом подменить на новый.
Старый профиль тебе нужно удалить и создать новый. "Подменить" профиль ты не сможешь - это будут два разных объекта с разными ObjectId.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Подмена видов профилей
« Ответ #8 : 03-04-2019, 15:43:35 »
Alignment.GetProfileIds()
Т.е. на сколько я понял объект вида профиля тут не при чем.
Все идет через объект трассы (Alignment)
Получается, что если я в трассе удалю объект профиля и создам новый,
то на виде профиля автоматически обновиться линия земли.
Я правильно понял? Если да, то это как раз то что мнем нужно.
 

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Подмена видов профилей
« Ответ #9 : 03-04-2019, 16:32:39 »
CreateFromSurface(string profileName, CivilDocument document, string alignmentName, string surfaceName, string layerName, string styleName, string labelSetName)
Вот тут вот только не понятно как получить имя стиля метки (последний аргумент функции CreateFromSurface)

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Подмена видов профилей
« Ответ #10 : 03-04-2019, 16:49:20 »
Вот тут вот только не понятно как получить имя стиля метки (последний аргумент функции CreateFromSurface)
Самый простой вариант - это взять эти параметры из существующего профиля, который будет удаляться.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Подмена видов профилей
« Ответ #11 : 03-04-2019, 16:52:15 »
Самый простой вариант - это взять эти параметры из существующего профиля, который будет удаляться
Так я не могу найти это свойство у профиля которое отвечает за имя стиля метки

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Подмена видов профилей
« Ответ #12 : 03-04-2019, 16:57:49 »
Делаю так:
// trs - объект трассы
// pr - объект профиля
// civ_doc - объект Документа Civil
// sur - объект поверхности

Код - C# [Выбрать]
  1. foreach (ObjectId idpr in trs.GetProfileIds())
  2.    Profile.CreateFromSurface(pr.Name, civ_doc, trs.Name, sur.Name, pr.Layer, pr.StyleName, pr.???);

                           

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Подмена видов профилей
« Ответ #13 : 03-04-2019, 17:03:37 »
Да - эти метки надо по-другому получать:
Код - C# [Выбрать]
  1. civ_doc.Styles.LabelSetStyles.ProfileLabelSetStyles

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Подмена видов профилей
« Ответ #14 : 03-04-2019, 17:04:40 »
Получается, что если я в трассе удалю объект профиля и создам новый,
то на виде профиля автоматически обновиться линия земли.
Я правильно понял?
По идее так и должно быть.