есть ли аналог команды "Создать трассу из элементов сети" в API?

Автор Тема: есть ли аналог команды "Создать трассу из элементов сети" в API?  (Прочитано 7710 раз)

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

Оффлайн simson43Автор темы

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
А есть ли аналог команды "Создать трассу из элементов сети" в API?

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
В API нет какого-то метода, который бы создавал трассу по участку сети. Но есть методы по созданию трассы и методы по добавлению в неё отрезков и дуг. Поэтому, получаем участок сети с помощью выбора начального и конечного элемента. Затем, получаем данные обо всех трубах выбранного участка. Для прямолинейных труб - начальная и конечная точка для последующего вызова метода Alignment.Entities.AddFixedLine, для дуговых возможны варианты - выберите подходящую перегрузку метода Alignment.Entities.AddFixedCurve. Создаём новую трассу с помощью Alignment.Create и с помощью вышеуказанных методов (AddFixed...) добавляем в неё геометрию труб в плане.
« Последнее редактирование: 11-03-2019, 19:58:36 от Дмитрий Загорулькин »

Оффлайн simson43Автор темы

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Надеялся есть метод проще.
спасибо

а вот там есть еще класс что-то вроде SettingsCmdCreateAlignFromNetwork
не нашел ему применение, нужен ли он в этом случае вообще?

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
а вот там есть еще класс что-то вроде SettingsCmdCreateAlignFromNetwork
не нашел ему применение, нужен ли он в этом случае вообще?
Это настройки "по умолчанию" для стандартной команды. Их можно изменять программно - для этого и существует этот класс. В данном случае, можно оттуда какие-то настройки прочитать и использовать, при желании. Например - стиль трассы.

Оффлайн simson43Автор темы

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Вот как раз в этих настройках нет стиля трассы
я его взял из "SettingsCmdCreateAlignmentEntities"

Оффлайн simson43Автор темы

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
И вот эти параметры работают некорректно или так и должно, что они вместо цифры счетчика пишут собственно эти слова "Следующая цифра счетчика"?

SettingsCmdCreateAlignFromNetwork.NameFormat.AlignmentFromNetwork.Value
SettingsCmdCreateAlignmentEntities.DefaultNameFormat.AlignmentNameTemplate.Value

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Вот как раз в этих настройках нет стиля трассы
Странно, но, действительно. Для этой команды нет возможности задать отдельно стиль трассы. Вообще, если посмотреть в "Области инструментов" на вкладке "Параметры", то эти настройки находятся в секции "Трубопроводная сеть" а не в секции "Трасса". Это многое проясняет.
я его взял из "SettingsCmdCreateAlignmentEntities"
А вот это не совсем правильно. Поэкспериментировал маленько - эти настройки никак не влияют на поведение команды по созданию трассы из сети. Больше похоже на то, что команда создания трассы по сети берёт стиль трассы по умолчанию из основных настроек для трасс чертежа - SettingsAlignment

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
И вот эти параметры работают некорректно или так и должно, что они вместо цифры счетчика пишут собственно эти слова "Следующая цифра счетчика"?

SettingsCmdCreateAlignFromNetwork.NameFormat.AlignmentFromNetwork.Value
SettingsCmdCreateAlignmentEntities.DefaultNameFormat.AlignmentNameTemplate.Value
Так они же возвращают шаблон имени, так что всё правильно.
Предугадывая следующий вопрос. Насколько я помню, в .NET API нет возможности получить следующее уникальное имя трассы на основе заданного шаблона. Но можно программно вычислить уникальное имя трассы по собственным алгоритмам. Порядок действий такой:
1) получаем все имена трасс в чертеже
2) вычисляем уникальное имя трассы по собственному алгоритму
3) проверяем, нет ли такого имени уже в чертеже. Если есть - возвращаемся на шаг 2. Если нет - профит.

Оффлайн simson43Автор темы

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Так они же возвращают шаблон имени, так что всё правильно.

тогда почему он каждый раз возвращает новое имя с повышением счетчика?
SettingsProfileView.NameFormat.ProfileView.Value

PS: не вышло предугадать вопрос)

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
тогда почему он каждый раз возвращает новое имя с повышением счетчика?
SettingsProfileView.NameFormat.ProfileView.Value
Не понял вопроса. Каждый раз при обращении к этому свойству увеличивается счётчик? Если да, то похоже на баг.

Оффлайн simson43Автор темы

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Не при обращении
при обращении выдает такой же шаблон

А при создании профилей по этому шаблону получаются следующие имена
PV-(1)
PV-(2)
PV-(3) и тд

хотелось бы такой же баг с именами трасс

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Каким методом создаются виды профилей?

Оффлайн simson43Автор темы

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
public static ObjectId Create(
   ObjectId alignmentId,
   Point3d insertPosition,
   string profileViewName,
   ObjectId profileViewBandSetId,
   ObjectId profileViewStyleId
)

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Хм. Даже не знаю, что тут работает неправильно - то ли метод создания трассы, который не принимает шаблона имени, то ли метод создания вида профиля, который этот шаблон принимает. А шаблон имени в каком виде передаётся? С русскими обозначениями переменных? Есть небольшая вероятность, что метод создания трассы может принимать англоязычный шаблон. Если нет - то увы. Насколько я помню, когда-то давно я тоже пробовал использовать шаблоны имён и, судя по всему, у меня не получилось. Или получилось так же частично - где-то прокатывает, где-то нет. Поэтому я уже давно в своих приложениях при создании всех именованных объектов Civil 3D использую собственный алгоритм получения уникального имени. Как один из плюсов - сразу понятно, что объект создан моим приложением.

Оффлайн simson43Автор темы

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Попробовал англоязычный шаблон подсунуть - не работает(

ладно придется иначе
Спасибо)