Сообщество программистов Autodesk в СНГ
ADN Club => Civil 3D API => Тема начата: simson43 от 18-11-2018, 20:11:43
-
Здравствуйте.
Как можно найти объем коридора? есть конструктор. в чертеже называется assembly, кажется. дальше получил subassembly. добрался до его links, points. и дальше не могу ничего найти, при попытке попасть в коллекцию точек и вовсе фаталит. даже при отладке остановиться на коллекции точек и залезть в нее- фатал!там ли я копаюсь и возможно ли вообще это или нужны поверхности?
Спасибо
-
Думаю, что анализировать конструкцию - это не тот путь. Не до конца понимаю что требуется получить. Нужен полный объём всего объекта-коридора? Или объёмы выемки-насыпи? Или объёмы по материалам-пикетам? Если есть какой-то пример в DWG где есть нужные данные, например, в виде таблиц - поделитесь.
-
объёмы выемки-насыпи
это!
а объем материала и объем насыпи (условно) это не одно и то же?
-
а объем материала и объем насыпи (условно) это не одно и то же?
Как я понимаю - не одно и то же.
(https://i.postimg.cc/K1t2nxQZ/Volumes.png) (https://postimg.cc/K1t2nxQZ)
Посмотрите эту тему, там есть примеры кода для получения объёмов выемки-насыпи: http://adn-cis.org/forum/index.php?topic=8847.0
По материалам - пока вопрос открыт.
-
а ну да - Материалы нужны
я видел эту тему.. как то не утешающе(
тогда по поверхностям может проще высчитать?
-
тогда по поверхностям может проще высчитать?
Попробуйте. У поверхностей есть метод GetBoundedVolumes. Если надо найти объёмы между двумя поверхностями, можно построить поверхность объёмов (TinVolumeSurface) и получить нужные данные из её свойств.
-
попробую, спасибо
_____________________
я думал добравшись до линий конструкции смогу геометрически найти все что нужно. но то ли я не до тех линий добрался то ли у них просто нет нужных свойств.
-
Судя по ответу в параллельной теме вытащить объем материалов из коридора не получится? или не получится только по сечению?
У поверхностей есть метод GetBoundedVolumes.
а для CorridorSurface нет такого метода(
Если надо найти объёмы между двумя поверхностями, можно построить поверхность объёмов (TinVolumeSurface)
не могу разобраться как и из чего ее построить (опять же касаемо CorridorSurface)
-
Судя по ответу в параллельной теме вытащить объем материалов из коридора не получится? или не получится только по сечению?
Не получится вытащить объёмы по материалам. Только общие.
а для CorridorSurface нет такого метода(
не могу разобраться как и из чего ее построить (опять же касаемо CorridorSurface)
Да, я имел в виду TinSurface, а не CorridorSurface.
А что хранится в свойстве CorridorSurface.SurfaceId (http://Да, я имел в виду TinSurface, а не CorridorSurface.)?
-
я так полагаю той самой поверхности.
TinSurface.GetBoundedVolumes считает объем между нулем и этой поверхностью?
как же все таки построить TinVolumeSurface?
и какие еще есть альтернативы подсчета объемов материалов?
-
TinVolumeSurface.Create так?
-
TinVolumeSurface.Create так?
Да, так. Но для построения поверхности объёмов нужны две TIN-поверхности (TinSurface) - базовая и та, с которой сравнивается базовая.TinSurface.GetBoundedVolumes считает объем между нулем и этой поверхностью?
Да, именно так.
я так полагаю той самой поверхности.
Какой той самой? Я настоятельно рекомендую проверить.
-
вроде разобрался.
той самой т е TinSurface или Surface можно из CorridorSurface.SurfaceId получить
-
и какие еще есть альтернативы подсчета объемов материалов?
есть коридор построенный по конструктору. выудить бы как нибудь эти материалы
-
Ну так идея с поверхностями - не такая уж и плохая. Не получается?
-
пока не очень.. ну я что то нашел но не знаю что..
как работает этот метод TinVolumeSurface.Create?
типо интеграла?
просто, если так, то, если верхняя поверхность шире, то он до нуля в этом месте объем считает?
-
Мне сложно понять: как верхняя поверхность может быть шире нижней? На чём тогда находится слой материала, который эта поверхность ограничивает? В воздухе висит?
-
Представьте трапецию(поперечный разрез). Нужен объем между верхней широкой и нижней поуже плоскостями
-
Представил. Вот как я это вижу:
(https://i.postimg.cc/w1PKXprB/20181211.png) (https://postimg.cc/w1PKXprB)
-
Я вот тоже об этом подумал. Но не создатель конструктора(
Или можно боковые плоскости приделать базе?
Или я чего то не понимаю? В конструкторе каждая грань отдельная прямая. Соответственно поверхности создатся по отдельным отрезоякам видимо.
-
Соответственно поверхности создатся по отдельным отрезоякам видимо.
Сильно сомневаюсь. Надо проверять.
-
ну да, по поверхностям получилось. хотелось бы еще какие то попробовать альтернативные варианты.
-
а может можно создать тело из коридора? оттуда вытащить все объемы материалов
не нашел метода подобного
-
не нашел метода подобного
Я тоже не нашёл. Как вариант, можно попробовать взрывать коридор и смотреть объекты, которые получены после его взрыва. Но не факт, что там будет то что нужно.
-
выходит, что по поверхностям единственный нормальный вариант?
-
Я бы сказал, что нормального варианта вообще нет. По поверхностям - это пока что единственный более-менее адекватный обходной путь решения задачи.
-
Да, я это и имел ввиду) просто помягче выразился чтоб не обидеть сивилистов)
Удивлен на самом деле что нет api под эти задачи(