Сообщество программистов Autodesk в СНГ

ADN Club => Civil 3D API => Тема начата: Алексей Терно от 18-11-2019, 00:47:33

Название: Коридор на основе характерной линии
Отправлено: Алексей Терно от 18-11-2019, 00:47:33
А есть ли какая-нибудь возможность получить ID характерной линии, по которой построен коридор? Если он построен по трассе и по профилю, то нужно использовать свойства AlignmentId и ProfileId соответственно. Даже есть метод IsFeatureLineBased() для определения, на основе чего построен коридор. Но я так и не нашел, как получить саму характерную линию.
Название: Re: Коридор на основе характерной линии
Отправлено: Александр Ривилис от 18-11-2019, 01:06:24
Не это http://docs.autodesk.com/CIV3D/2018/ENU/API_Reference_Guide/html/d0f9da82-9b15-6ec1-b132-0b115cbd3f65.htm ?
Название: Re: Коридор на основе характерной линии
Отправлено: Алексей Терно от 18-11-2019, 01:13:04
Не это http://docs.autodesk.com/CIV3D/2018/ENU/API_Reference_Guide/html/d0f9da82-9b15-6ec1-b132-0b115cbd3f65.htm ?
К сожалению, нет. Это список характерных линий, построенных внутри коридора по кодам конструкции. К тому же, там нет ID базовой характерной линии:
http://docs.autodesk.com/CIV3D/2018/ENU/API_Reference_Guide/html/c86225fb-073c-7713-1aea-c902de108bf5.htm
Название: Re: Коридор на основе характерной линии
Отправлено: Дмитрий Загорулькин от 18-11-2019, 11:33:46
А есть ли какая-нибудь возможность получить ID характерной линии, по которой построен коридор? Если он построен по трассе и по профилю, то нужно использовать свойства AlignmentId и ProfileId соответственно. Даже есть метод IsFeatureLineBased() для определения, на основе чего построен коридор. Но я так и не нашел, как получить саму характерную линию.
Вполне может оказаться, что нет такой возможности. API по коридорам всё ещё довольно сырой. Могу попробовать поковырять такой коридор на предмет сабжа, но мне нужен пример в DWG для этого.
Название: Re: Коридор на основе характерной линии
Отправлено: Алексей Терно от 18-11-2019, 21:11:31
Вот.
Сдается мне, что ты ничего не найдешь )
Название: Re: Коридор на основе характерной линии
Отправлено: Дмитрий Загорулькин от 19-11-2019, 11:34:14
Что касается API - действительно, похоже, что не доделали. В версии 2017 добавили только возможность понять, что коридор построен по характерной линии: https://knowledge.autodesk.com/support/civil-3d/learn-explore/caas/CloudHelp/cloudhelp/2017/ENU/Civil3D-DevGuide/files/GUID-6D41D043-4958-40B7-9C7E-45A6D780955B-htm.html
Но MGDDBG видит характерную линию, которая жёстко связана (hard referenced) с коридором:

Поэтому, можно подсмотреть в MGDDBG как извлекаются такие ссылки и использовать этот механизм. Приложение полностью на .NET, исходники есть.
Название: Re: Коридор на основе характерной линии
Отправлено: Александр Ривилис от 19-11-2019, 11:40:19
Поэтому, можно подсмотреть в MGDDBG как извлекаются такие ссылки и использовать этот механизм. Приложение полностью на .NET, исходники есть.
Единственная проблема - понять какая из характерных линий осевая для данного коридора, если она окажется не одна.
Название: Re: Коридор на основе характерной линии
Отправлено: Дмитрий Загорулькин от 19-11-2019, 11:43:44
Я думаю, что это тоже решаемо. Т.к. в этом чертеже нет других характерок, тем более связанных с коридором, то и проверять не на чем.
Название: Re: Коридор на основе характерной линии
Отправлено: Алексей Терно от 19-11-2019, 11:55:26
Если я правильно понял, как работает команда _LIST, то проблемы никакой нет, так как эта команды выводит информацию по выбранной базовой линии, а это именно то, что надо ) Я приступаю к исследованию этого вопроса и позже напишу, что удалось нарыть.
Спасибо за подсказку!
Название: Re: Коридор на основе характерной линии
Отправлено: Александр Ривилис от 19-11-2019, 11:58:31
Если я правильно понял, как работает команда _LIST, то проблемы никакой нет, так как эта команды выводит информацию по выбранной базовой линии, а это именно то, что надо ) Я приступаю к исследованию этого вопроса и позже напишу, что удалось нарыть.
Спасибо за подсказку!
Честно говоря совершенно не понял какое это имеет отношение к вопросу темы. До сих пор я думал, что тебя интересует как найти по выбранному коридору его базовую характерную линию, а не информацию о выбранной характерной линии...
Название: Re: Коридор на основе характерной линии
Отправлено: Алексей Терно от 24-11-2019, 15:49:58
К сожалению, я так и не нашел, как определяются эти hard referenced. Если я правильно понял, как это работает, то этот вариант не поможет: если эти ссылки показывают все объекты, связанные с базовой линией, то помимо осевой характерной линии, в этом списке будут еще и характерные линии, выбранные в качестве целей, а как определить, какая из этих характерных линий является осевой, я понятия не имею.
Название: Re: Коридор на основе характерной линии
Отправлено: Александр Ривилис от 24-11-2019, 20:17:10
Алексей Терно,
Был бы пример такого чертежа - было бы что обсуждать.
Название: Re: Коридор на основе характерной линии
Отправлено: Алексей Терно от 24-11-2019, 20:46:05
Был бы пример такого чертежа
Нет ничего проще ))
Вот ссылка на чертеж с коридором, который построен по характерной линии. Еще одна характерная линии указана в качестве цели для правого звена конструкции. На всякий случай добавил третью характерную линию, которая вообще не связана с коридором.

https://1drv.ms/u/s!Apo_BBWFj0zapd1s_22aHCdUXd-Dhg?e=fyWPur (https://1drv.ms/u/s!Apo_BBWFj0zapd1s_22aHCdUXd-Dhg?e=fyWPur)

PS. вложение почему-то не прикреплялось.

/* Прикрепил вложение. Александр Ривилис */
Название: Re: Коридор на основе характерной линии
Отправлено: Александр Ривилис от 24-11-2019, 20:53:33
Алексей Терно,
Ну а теперь проделай (при помощи MGDDBG), то что сделал Дмитрий Загорулькин, и посмотри сколько объектов FeatureLine находятся в разделе Hard Pointers для этого коридора:

(https://live.staticflickr.com/65535/49116999251_9050537c6f_o.png)

Название: Re: Коридор на основе характерной линии
Отправлено: Дмитрий Загорулькин от 25-11-2019, 13:30:50
https://1drv.ms/u/s!Apo_BBWFj0zapd1s_22aHCdUXd-Dhg?e=fyWPur

PS. вложение почему-то не прикреплялось.
У меня ссылка не открывается
Название: Re: Коридор на основе характерной линии
Отправлено: Александр Ривилис от 25-11-2019, 13:52:22
Попробуй прикреплённое
Название: Re: Коридор на основе характерной линии
Отправлено: Дмитрий Загорулькин от 27-11-2019, 11:40:30
и посмотри сколько объектов FeatureLine находятся в разделе Hard Pointers для этого коридора
Подтверждаю, всё верно: базовая характерка - единственная в HardReferences, целевые для конструкций - в SoftReferences.
Название: Re: Коридор на основе характерной линии
Отправлено: Алексей Терно от 28-11-2019, 16:31:03
Подтверждаю, всё верно: базовая характерка - единственная в HardReferences, целевые для конструкций - в SoftReferences.
Только я так и не понял, как получить эти HardReferences. Все, что я понял из исходников MGDDBG, это то, что свойства объекта извлекаются с помощью функции c# и в коде нет обращения к конкретным свойствам объекта.
Название: Re: Коридор на основе характерной линии
Отправлено: Александр Ривилис от 28-11-2019, 16:42:09
Алексей Терно,
Ты посмотрел исходник ReferenceFiler.cs и как используется класс ReferenceFiler?

Код - C# [Выбрать]
  1. ReferenceFiler filer = new ReferenceFiler();
  2. dbObj.DwgOut(filer); // dbObj - это твой Corridor
  3. // Вот тут ObjectId для всех Hard Pointers
  4. // среди которых и нужная тебе FeatureLine
  5. filer.m_hardPointerIds;
Название: Re: Коридор на основе характерной линии
Отправлено: Алексей Терно от 17-12-2019, 17:15:35
Ты посмотрел исходник ReferenceFiler.cs и как используется класс ReferenceFiler?
Наконец-то дошли руки до этой задачи ))
Посмотрел. Да - так можно получить id характерной линии, но возникла другая проблема - если в коридоре несколько базовых линий построены по характерным линиям, то непонятно, по какой именно. Я могу получить отдельно все базовые линии и отдельно список характерных линий, но я не вижу способа, как их сопоставить. Получается, что на сегодняшний день эта задача не решаема.
Название: Re: Коридор на основе характерной линии
Отправлено: Дмитрий Загорулькин от 17-12-2019, 17:48:27
если в коридоре несколько базовых линий построены по характерным линиям
У коридора разве может быть несколько базовых линий?
Погуглил. Похоже, что да: https://knowledge.autodesk.com/ru/support/civil-3d/learn-explore/caas/CloudHelp/cloudhelp/2018/RUS/Civil3D-UserGuide/files/GUID-E0958DFA-E2E0-42E9-A2C6-C9B1F3CA059E-htm.html
Тогда не совсем понятно, а как с ними разбираться? Они все одноранговые получаются, или есть какая-то одна основная и остальные - дополнительные?
Название: Re: Коридор на основе характерной линии
Отправлено: Алексей Терно от 17-12-2019, 17:51:33
У коридора разве может быть несколько базовых линий?
Сколько угодно )
(https://i.postimg.cc/YhcqcN5h/2019-12-17-17-50-40.png) (https://postimg.cc/YhcqcN5h)
Название: Re: Коридор на основе характерной линии
Отправлено: Дмитрий Загорулькин от 17-12-2019, 17:52:46
Да, я уже нагуглил. Дополнил свой ответ выше.
Название: Re: Коридор на основе характерной линии
Отправлено: Алексей Терно от 17-12-2019, 17:57:57
Тогда не совсем понятно, а как с ними разбираться? Они все одноранговые получаются, или есть какая-то одна основная и остальные - дополнительные?
Так в том-то и дело, что все они свалены в одну кучу и нормальный доступ есть только к трассе и к профилю. Я думаю, что разработчики просто забыли/забили (нужное подчеркнуть) добавить возможность получать характерку непосредственно из базовой линии.