Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

Полезные программы от Philin (строительство). VBA

Тема в разделе "Autodesk", создана пользователем Philin, 20 ноя 2010.

  1. Палыч

    Форумчанин

    Регистрация:
    16 июл 2007
    Сообщения:
    2.332
    Симпатии:
    176
    Адрес:
    Беларусь
    Все сие перечисленное не валяется в свободном доступе, а стоит денег и причем не малых. А имея голову в которой что- то есть полезное, почему бы ЭТО не использовать для себя любимого. И в результате может что.то и таким балванам как мы с тобой перепадет. Сори.::biggrin24.gif::
     
    #661
  2. Grigarash

    Форумчанин

    Регистрация:
    13 авг 2007
    Сообщения:
    415
    Симпатии:
    26
    Да, но акад то же стоит денег, так же как и сивил.
    может стоит в сивиле все же рисовать такие объемы. а точнее в сивиле хорошо бы сделать какой-то приблуд для правильного и автоматического построения объемов по кучам и выемкам... чтобы она сама прорисовывала скажем кучу с разных видов.
     
    #662
  3. Палыч

    Форумчанин

    Регистрация:
    16 июл 2007
    Сообщения:
    2.332
    Симпатии:
    176
    Адрес:
    Беларусь
    Тут уж, воля вольная.

    Сделай четкую постановку задачи, и чтоб ему было интересно, может и напишет
     
    #663
  4. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Вот после того как Civil выдал мне объём в три(!!!) раза меньше чем было посчитано вручную в экселе и в теле в автокаде... я и задумался, что надо писать свою программу, которая использует не плоскую(XY) математику при отрисовке поверхности (как это делает Civil), а пространственную(XYH). Civil явно создан не для геодезии, а для проектировщиков, там такое прокатывает, но правильно построить сложную поверхность он не может и приходится потом вручную дорабатывать структурными линиями.

    То, что делает Civil я могу написать на коленках за 5 минут и будет оно работать в голом автокад (утрирую по поводу сроков). Это суррогат, который надо либо дополнительно пересчитывать под поверхность в пространстве, либо вручную исправлять.

    Про геоникс не знаю, возможно он правильно чертит поверхности.
     
    #664
  5. Grigarash

    Форумчанин

    Регистрация:
    13 авг 2007
    Сообщения:
    415
    Симпатии:
    26
    если съемку вести правильно и кодировать точки съемки, то и на прорисовку съемки уйдет куда меньше времени.
    просто я плохо понимаю как математически комп сразу поймет то, что конкретно ты имел в виду. допустим он отрисовывает рельеф где есть откосы. триангулцию сивил строит бо близ лежащим друг к другу точкам, что не есть всегда правильно.
    тут скорее надо съемку делать более детально и кодировать.
    а в сивиле в шаблене просто прописать все эти коды и как он длолжен себя вести с этими кодами.
    вот тут и возникает геморой это долго и муторно настраивать и каждый эти коды делает под себя и как удобнее
     
    #665
  6. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Согласен с кодированием, которое уменьшает время обработки.
    Не согласен с "правильно вести съёмку".

    Сейчас объясню как математически решается эта задача (это один из вариантов, их несколько).

    Триангуляцию Civil строит по Делоне, я это проверил. Теперь немного про его алгоритм решения задачи...
    В своё время появились первые вычислительные устройства (ближе к середине прошлого века). И появилась возможность решения некоторых задач на этих устройствах. Нормальные математические алгоритмы построения сети триангуляции по точкам обрабатывались за N в квадрате циклов (где N это количество точек для триангуляции). Но вычислительные устройства не позволяли за вменяемый промежуток времени обработать такое количество информации, поэтому Делоне разработал упрощённый алгоритм таких вычислений. По его алгоритму на обработку требуется только N циклов, что позволяло решать задачу во вменяемые сроки даже вручную на калькуляторе.

    Что же представляет из себя его решение:
    1. берётся произвольное количество точек на плоскости (используются ТОЛЬКО координаты точек XY)
    2. производится расчёт треугольников таким образом чтобы любые три точки в углах каждого треугольника находились на окружности в которую не входит ни одна другая (четвёртая) точка всей сети
    3. строится сеть треугольников, но т.к. треугольники в пространстве, то при черчении сети они растягиваются из плоскости в пространство по оси Z
    Плюс такого метода - скорость обработки.
    Минус - не учитывается третья координата точек (вообще никак не учитывается высота точки т.к. решение на горизонтальной плоскости).

    И вот тут оказалось, что этот алгоритм подложил большую свинью т.к. его до сих пор многие считают единственно верным и правильным и никому в голову не приходит, что производительность процессора современного телефона в тысячу раз больше чем оная у всех вместе взятых суперкомпьютеров, которые были на момент вывода алгоритма.

    Теперь приближаемся к математике... но зайду со стороны геодезии, точнее фотограмметрии.

    Я даю вам один(!!!) космический или аэрофотоснимок. И прошу построить мне по нему рельеф местности. Ну как, берётесь за работу? (А вот Civil берётся:))

    Так вот, почему вы думаете ,что геодезист неправильно выполнил съёмку, и только поэтому Civil через ж%%% начертил сложную поверхность. А вам в голову не приходило, что геодезист выдаёт ОДНОГЛАЗОМУ Civil-у стереопару снимков (съёмочные точки в пространстве) и ждёт от него того, что он поймёт где тут вообще обрывы, а где горы. Как этот циклоп (Civil) вообще сможет увидеть стереоэффект, когда у него всего один глаз?

    Для построения ЛЮБОЙ сложной поверхности требуется как минимум две точки обзора с известной базой между ними. И Делоне тут не поможет, потому что в таком виде он одноглазый инвалид (просто неправильно его используют).

    А теперь на словах как же это делается:
    1. строится воображаемая перевёрнутая правильная трёхгранная пирамида, конус которой упирается в центр нашей съёмки, а её размеры верхней грани за пределами всей съёмки
    2. производится предварительный расчёт треугольников поверхности по Делоне в плоскости (это суррогат, который предоставляет вам Civil)
    3. производится три векторных расчёта поверхности (повторно, на теже самые точки, но угол обзора меняется, а длина базы известна т.к. мы сами её и задаём), векторы идут из оставшихся углов пирамиды и направлены по рёбрам в сторону нашей съёмки
    4. на основании п.3 производится окончательный расчёт и изменения нашей суррогатной сети треугольников относительно трёх точек обзора и таким образом получается фактическая сеть в пространстве
    Это минимальные требования для построения правильной сети поверхности рельефа практически любой конфигурации. Для очень сложных поверхностей требуется уже описать куб вокруг поверхности и векторов будет 4, для мегасложных (не знаю, может статую захотите снять) ещё более сложные фигуры и гораздо больше векторов.

    Невозможно посчитать в реальном времени? Вы слабо представляете действительную производительность современных процессоров. Например смартфон (с соответствующим софтом) производит это в реальном времени, строя 3D модель любого объекта прямо во время его (объекта) видеосъёмки. Алгоритм тот, что я описал. Поверьте, что даже если у вас древний компьютер, то он всё равно будет как минимум раз в 10 быстрее самого навороченного смартфона.

    Для чисто Делоне - да. Для нормального пространственного алгоритма обработки практически не имеет значения, хотя мелкие детали лучше уточнить при съёмке, чем потом их выдумывать из головы при отрисовке.

    Жесть :) Раз софт кривой, то пользователи должны подстраиваться под его кривизну. А не лучше ли сделать нормальный софт, который сможет сам подстроиться под съёмку пользователя?

    Оффтоп
    Grigarash, не расценивайте мои сообщения как личные нападки :) Я их просто взял для примера, чтобы получилось в стиле диалога. Но надеюсь, что после разъяснения многие задумаются о том что что-то надо менять... в софте.

    По большому счёту софт пишут программисты, а они тоже люди. Алгоритмы практически никто не разрабатывает, а берут из справочников и пр. А геодезисты либо очень далеки от этих программистов, либо сами не знают или не задумываются о том, что их задача решается совсем другим способом.
     
    #666
    Последнее редактирование: 22 мар 2016
    BearDyugin и Geoshaman нравится это.
  7. Сер-гео

    Форумчанин

    Регистрация:
    7 авг 2010
    Сообщения:
    4.038
    Симпатии:
    1.554
    Philin, спасибо за подробное объяснение как строит Сивил поверхность, мне вот кажется что Геоникс строит поверхность правильно по крайней мере отрисовывает треугольники очень длинные если расстояние длинное и граница съемки не проведена, если надумаете посмотреть как Геоникс строит посмотрите видеуроки 2006,2013 в разделе Геоникса, очень хотелось бы узнать ваше мнение::rolleyes24.gif::, может вообще перейти на DOS кредо в нем считать или вручную, чтобы объемы сходились.
     
    #667
  8. Grigarash

    Форумчанин

    Регистрация:
    13 авг 2007
    Сообщения:
    415
    Симпатии:
    26
    А вот у меня вопрос теперь возник.
    Допустим мы выстроили сложную (или даже очень сложную) поверхность. по ней просчитали какой-то объем. И с радостью выполненного долга отдаем этот расчет куда то там.
    Но там про наши сложные методы и слышать не слышали. И им абсолютно все равно чем и как мы считали, хоть на коленки вручную.
    И они могут запросить (и скорее так и будет) простую картинку с картограммой. где все объемы высчитываются по квадратам.
    И в росийском ГОСТе прописан именно этот метод расчета. А уж если мы будет артачиться, то они ткнут носом именно в этот ГОСТ, и тогда мы пойдем пересчитывать заного.


    Тут не в софте дело, а в его универсальности. К сожалению невозможно заточить все под всех, так как везде стандарты разные. Вот и придумали шаблоны, которые мы с вами должны чуток подпиливать под свои нужды.

    Ну а вот про построение Сивилом поверхности путем Делоне, тут бы стоило им (автодесковцам) предоставить нам выбор каким конкретно методом строить.
    --- Сообщения объединены, 22 мар 2016, Оригинальное время сообщения: 22 мар 2016 ---
    По мне так стоит Вам занятся немного другим. Нам геодезистам приходиться часто рисовать исполнительные на сети (включая профиля)
    Так вот тут думаю стоило бы поковыряться, и создать такую Феньку.
    Да в Сивиле есть инструмент построения сетей и профилей. И я уже не первый год его мучаю и пытаюсь под себя заточить. Но он настолько коряво выполнен что допиливать шаблон приходиться очень долго и это сложно.

    Например наш заказчик просит в профиле добавлять строку с "фактическая отметка низа или лотка трубы" и "фактическая отметка верха колодца"
    так же указывается разность отметок проекта и факта

    Я подкорректировал под наши нужды "вид профиля" и указал там такую строку.

    Но думаю тут надо все чтобы строилось куда быстрее:
    1. Имеем построенную поверхность Сивила
    2. Имеем съемку колодцев
    3. Имеем (не обязательно) проектную поверхность Сивила
    4. Указываем все пересечки текущей сети с др.
    Путем простого ввода данных (допустим табличный режим), программа автоматом строит уже готовый профиль, подставляя туда все указанные данные. Отметки рельефа берутся с поверхности
     
    #668
  9. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Похоже вы не поняли. Я пишу о построении правильной поверхности (исходнике для расчётов). Вы же пишете о методах расчёта объёмов (использование исходника).
    • чем ближе к реальности построена поверхность, тем более точно вы получите объём
    • расчёт объёма по квадратам не есть верный, он ничего общего с реальным объёмом не имеет, зато его можно перепроверить на калькуляторе
    • чем более точно будет построена поверхность, тем больше вероятность того что цифра объёма приблизится к реальной (метод расчёта объёма не имеет значения - исходник для всех них это поверхность или тело)
    --- Сообщения объединены, 22 мар 2016, Оригинальное время сообщения: 22 мар 2016 ---
    Не интересная тема. У меня такие работы случаются раз в пятилетку. Однажды был большой объём работ и пришлось писать программу для этого (где-то у меня должна валяться), т.к. написать с нуля именно то что требуется оказалось сопоставимо по времени с поиском и освоением чужой программы.

    Чем больше проектов выкладываешь в сеть, тем сложнее их поддерживать. У меня их и так десятки (действующих) и нагружаться ещё одним нет никакого желания.
     
    #669
    Geoshaman нравится это.
  10. Grigarash

    Форумчанин

    Регистрация:
    13 авг 2007
    Сообщения:
    415
    Симпатии:
    26
    ОК построим мы правильную поверхность, и как вы говорили выше, все это для голого акада. а значит она будет состоять из кучи 3д линий наверняка ну или из полигонов.
    А вот как в дальнейшем с такой поверхностью работать, те же объемы посчитать? Ведь у нас получится простая картинка с которой потом уже ничего не сделать, и ту же картограмму от Disney не расчитать.
    думаю надо все же это привязать к поверхности Сивил, ведь если Ваша поверхность будет состоять из полигонов, то помоему в Сивиле можно их конвертировать в его родную поверхность, и с ней уже можно работать и обрабатывать дальше

    По мне думается здесь надо конкретно определиться с задачей такой поверхности
     
    #670
  11. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Видимо давно вы в голый автокад не заглядывали. Так вот функциональность его в этом плане не хуже сивила :)

    1. требуется минимум 3D сеть из 3D полилиний (это даже сейчас решает моя программа горизонталей, по методу Делоне)
    2. на её основе автокад сразу строит поверхность (есть команда)
    3. имея две поверхности надо их совместить (есть команда)
    4. совместив поверхности получаем тело
    5. Получив тело можем в свойствах тела посмотреть его объём, либо МАССПРОП выдаст кроме объёма ещё кучу параметров тела
    Автокад решает любые задачи, в том числе расчёт выемки-насыпи между любыми произвольно заданными поверхностями... Да много что ещё. Просто надо знать как всем этим пользоваться.

    Во всяком случае, используя только голый автокад я получаю всё что угодно.

    Отличие в том, что в Civil всегда поверхности, а в автокад это чаще тела.
    --- Сообщения объединены, 23 мар 2016, Оригинальное время сообщения: 23 мар 2016 ---
    Могу написать картограмму для голого автокад. Там делов на пять минут :)

    Что такое картограмма (в общем):
    • расчёт габаритов поверхности (тела)
    • построение в этих габаритах плоской сетки с заданным шагом
    • нахождение внешней границы поверхности
    • опускание отвесных линий из точек пересечения сетки на поверхность или тело
    • нахождение двух высот пересечения отвесной линии и двух плоскостей поверхности или тела (каждая отвесная линия единожды войдёт в тело и выйдет из него)
    • расчёт площади квадратов и на основании высот красной-чёрной расчёт...
    • нахождение пересечения внешней границы контура тела-поверхности с квадратом
    • пересчёт площадей внешних квадратов относительно той части съёмки, которая входит в квадрат
    Тут математика школьного курса.

    Надо быть последовательным. Сначала нормальное тело-поверхность, а потом уже объём по квадратам. Не стоит бежать вперёд паровоза, нет смысла в расчёте объёма когда у тебя тело(поверхность) неверны.
    --- Сообщения объединены, 23 мар 2016 ---
    и потом я её только в Civil и смогу использовать. А вот если построить её в автокад, то она и в Civil будет работать и в автокад ;)
     
    #671
  12. BearDyugin

    BearDyugin Модератор
    Форумчанин

    Регистрация:
    30 ноя 2007
    Сообщения:
    2.761
    Симпатии:
    2.518
    Адрес:
    Сибирь
    В моей картограмме, только одна маленькая функция привязана к Civl, которая берет отметку с поверхности в нужной точке(вершине квадратов), всё остальное либо математика, как писал Philin, либо инструменты голого AutoCAD. Т.е. адаптировать моё приложение к голому AutoCAD, дело 5 минут, но я этого не делаю, потому что нет приложений строящих адекватных поверхностей в голом AutoCAD. Если Philin осуществит свою задумку, могу научить свою картограмму работать с его поверхностями.


    Я тоже так думал, в общем случаи - да! Всё просто, одна математика, и та школьная, но вот куча частных моментов... В общем не надо, "не нагружай себя ещё одним проектом" :Smile:
     
    #672
    Philin нравится это.
  13. Grigarash

    Форумчанин

    Регистрация:
    13 авг 2007
    Сообщения:
    415
    Симпатии:
    26
    Такой точной поверхности я вижу только одно применение, это "кучи", и тут действительно хотелось бы инструмент который правильно и быстро отрисовывает эти кучи и выдает их объем.
    Для всего остального достаточно и сивиловской поверхности, хоть и надо ручками дорабатывать
     
    #673
  14. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    У меня идиотский вопрос :)

    Civil может правильно посчитать объём выемки если стенки вертикальны или имеют отрицательный уклон (низ шире верха)?

    В жизни такое случается достаточно часто, например котлован внутри стены в грунте или шпунтового ограждения, или яма(траншея) выкопанная весной на участке где песок и близко грунтовые воды (вместо ямы получается кувшин с узким горлом (замёрзший грунт сверху) и широким дном (сполз обводнённый песок)).
     
    #674
  15. Grigarash

    Форумчанин

    Регистрация:
    13 авг 2007
    Сообщения:
    415
    Симпатии:
    26
    ну тут стоит проверить и правильно построить такие 2 поверхности.
    но помнится мне что с такой обратной формой (когда низ шире чем верх) сивил не дружит. с таким сталкивался еще на 2013 сивиле. а вот 2016 стоит проверить
    --- Сообщения объединены, 24 мар 2016, Оригинальное время сообщения: 24 мар 2016 ---
    построил верх 10*10
    низ 15*15
    глубина 1м
    сивил показывает 158,33м3
    математика говорит 162,5м3
     
    #675
  16. zarsai

    Форумчанин

    Регистрация:
    18 сен 2009
    Сообщения:
    89
    Симпатии:
    22
    Адрес:
    МО, г.Чехов
    Если низ 10 на 10, а верх 15 на 15, то тоже 158.33 в цивиле получается, так что результат не из-за формы.
     
    #676
  17. Grigarash

    Форумчанин

    Регистрация:
    13 авг 2007
    Сообщения:
    415
    Симпатии:
    26
    а из-за чего?
     
    #677
  18. TOLSTIJDMITRIJ

    Форумчанин

    Регистрация:
    26 дек 2009
    Сообщения:
    184
    Симпатии:
    14
    Очень нужно проставлять отклонения свай вдоль линии нефтепровода, AxeAndPointZ идеально для этого подходит, но никак не могу её запустить. Пробовал устанавливать разными способами (самостоятельно и через МенюГео, и через адаптацию и просто приложение), но выдает всегда одну и ту же ошибку (Рисунок 1). Через МенюГео делал загрузку библиотек dll (Рисунок 2), но та же ошибка.
    И, ещё такой момент, когда после установки МенюГео первый раз выходишь из CIVILа 3D 2013, то появляется такой запрос (Рисунок 3).
     

    Вложения:

    #678
  19. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Инструкцию пользователя читали? Там подробно описано как установить. Если такая ошибка появляется при запуске программы, то значит вы не читали инструкцию и пытаетесь VBA запускать как VB.Net... со всеми вытекающими последствиями. Это НЕ dll и не может быть при загрузке такой ошибки т.к. запуск кода производится совсем другим способом.

    Ошибка при правильном запуске выглядела бы в командной строке автокад примерно так _-vbarun ..... ошибка

    Аналогично предыдущему... dll не имеет никакого отношения к VBA. dll это внешняя библиотека (ARX, VB.Net и пр.), а VBA это ВНУТРЕННИЙ скрипт и не надо его загружать во время запуска автокад, он запускается своей командой. VBA вы вообще можете интегрировать в dwg чертёж, носить вместе с этим чертежом и запускать прямо из чертежа.

    Нажмите "Да" и в дальнейшем вас не должно беспокоить такое сообщение.

    Потому что это правильный ответ по формуле усечённой пирамиды :)
     
    #679
  20. Geoax

    Регистрация:
    16 апр 2012
    Сообщения:
    23
    Симпатии:
    11
    Добрый день. Решил и я проверить (в эту ветку случайно забрел). CREDO показывает тоже 158,33м3. Потом подсчитал "вручную"- площади контуров на высоту и да действительно 162,5 м3. И начал тогда искать причину, что же не так. Сначала думал, что кредо косячит -сглаживает на углах. А потом понял, когда построил 3D модель в каде. У нас на углах получаются 2 треугольника, объем которых будет в 3 раза меньше общего тела треугольника. Таким образом V теугольника =1,042 м3. А значит у нас получается в математических расчетах участвуют 3 площади - центр 10*10 V=100*1=100м3; откосы 4 шт. 10*2,5=25м2, 25*4=100м2, V=100*1м/2=50м3; треугольники 8шт. S=3,125м2, V=3,125*1/3=1,042м3, V=1,042*8=8,33м3. Итого V=158,33м3
    --- Сообщения объединены, 25 апр 2016 ---
     

    Вложения:

    #680

Поделиться этой страницей

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление