Сообщество программистов Autodesk в СНГ
ADN Club => Civil 3D API => Тема начата: simson43 от 11-03-2019, 15:06:07
-
А есть ли аналог команды "Создать трассу из элементов сети" в API?
-
В API нет какого-то метода, который бы создавал трассу по участку сети. Но есть методы по созданию трассы и методы по добавлению в неё отрезков и дуг. Поэтому, получаем участок сети с помощью выбора начального и конечного элемента. Затем, получаем данные обо всех трубах выбранного участка. Для прямолинейных труб - начальная и конечная точка для последующего вызова метода Alignment.Entities.AddFixedLine, для дуговых возможны варианты - выберите подходящую перегрузку метода Alignment.Entities.AddFixedCurve. Создаём новую трассу с помощью Alignment.Create и с помощью вышеуказанных методов (AddFixed...) добавляем в неё геометрию труб в плане.
-
Надеялся есть метод проще.
спасибо
а вот там есть еще класс что-то вроде SettingsCmdCreateAlignFromNetwork
не нашел ему применение, нужен ли он в этом случае вообще?
-
а вот там есть еще класс что-то вроде SettingsCmdCreateAlignFromNetwork
не нашел ему применение, нужен ли он в этом случае вообще?
Это настройки "по умолчанию" для стандартной команды. Их можно изменять программно - для этого и существует этот класс. В данном случае, можно оттуда какие-то настройки прочитать и использовать, при желании. Например - стиль трассы.
-
Вот как раз в этих настройках нет стиля трассы
я его взял из "SettingsCmdCreateAlignmentEntities"
-
И вот эти параметры работают некорректно или так и должно, что они вместо цифры счетчика пишут собственно эти слова "Следующая цифра счетчика"?
SettingsCmdCreateAlignFromNetwork.NameFormat.AlignmentFromNetwork.Value
SettingsCmdCreateAlignmentEntities.DefaultNameFormat.AlignmentNameTemplate.Value
-
Вот как раз в этих настройках нет стиля трассы
Странно, но, действительно. Для этой команды нет возможности задать отдельно стиль трассы. Вообще, если посмотреть в "Области инструментов" на вкладке "Параметры", то эти настройки находятся в секции "Трубопроводная сеть" а не в секции "Трасса". Это многое проясняет.
я его взял из "SettingsCmdCreateAlignmentEntities"
А вот это не совсем правильно. Поэкспериментировал маленько - эти настройки никак не влияют на поведение команды по созданию трассы из сети. Больше похоже на то, что команда создания трассы по сети берёт стиль трассы по умолчанию из основных настроек для трасс чертежа - SettingsAlignment (http://docs.autodesk.com/CIV3D/2019/ENU/API_Reference_Guide/html/c755a741-c654-7fea-aca6-bf2def1f4b23.htm)
-
И вот эти параметры работают некорректно или так и должно, что они вместо цифры счетчика пишут собственно эти слова "Следующая цифра счетчика"?
SettingsCmdCreateAlignFromNetwork.NameFormat.AlignmentFromNetwork.Value
SettingsCmdCreateAlignmentEntities.DefaultNameFormat.AlignmentNameTemplate.Value
Так они же возвращают шаблон имени, так что всё правильно.
Предугадывая следующий вопрос. Насколько я помню, в .NET API нет возможности получить следующее уникальное имя трассы на основе заданного шаблона. Но можно программно вычислить уникальное имя трассы по собственным алгоритмам. Порядок действий такой:
1) получаем все имена трасс в чертеже
2) вычисляем уникальное имя трассы по собственному алгоритму
3) проверяем, нет ли такого имени уже в чертеже. Если есть - возвращаемся на шаг 2. Если нет - профит.
-
Так они же возвращают шаблон имени, так что всё правильно.
тогда почему он каждый раз возвращает новое имя с повышением счетчика?
SettingsProfileView.NameFormat.ProfileView.Value
PS: не вышло предугадать вопрос)
-
тогда почему он каждый раз возвращает новое имя с повышением счетчика?
SettingsProfileView.NameFormat.ProfileView.Value
Не понял вопроса. Каждый раз при обращении к этому свойству увеличивается счётчик? Если да, то похоже на баг.
-
Не при обращении
при обращении выдает такой же шаблон
А при создании профилей по этому шаблону получаются следующие имена
PV-(1)
PV-(2)
PV-(3) и тд
хотелось бы такой же баг с именами трасс
-
Каким методом создаются виды профилей?
-
public static ObjectId Create(
ObjectId alignmentId,
Point3d insertPosition,
string profileViewName,
ObjectId profileViewBandSetId,
ObjectId profileViewStyleId
)
-
Хм. Даже не знаю, что тут работает неправильно - то ли метод создания трассы, который не принимает шаблона имени, то ли метод создания вида профиля, который этот шаблон принимает. А шаблон имени в каком виде передаётся? С русскими обозначениями переменных? Есть небольшая вероятность, что метод создания трассы может принимать англоязычный шаблон. Если нет - то увы. Насколько я помню, когда-то давно я тоже пробовал использовать шаблоны имён и, судя по всему, у меня не получилось. Или получилось так же частично - где-то прокатывает, где-то нет. Поэтому я уже давно в своих приложениях при создании всех именованных объектов Civil 3D использую собственный алгоритм получения уникального имени. Как один из плюсов - сразу понятно, что объект создан моим приложением.
-
Попробовал англоязычный шаблон подсунуть - не работает(
ладно придется иначе
Спасибо)