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

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

  1. Палыч

    Палыч Форумчанин

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

    Grigarash Форумчанин

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

    Палыч Форумчанин

    Тут уж, воля вольная.

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

    Philin Форумчанин

    Вот после того как Civil выдал мне объём в три(!!!) раза меньше чем было посчитано вручную в экселе и в теле в автокаде... я и задумался, что надо писать свою программу, которая использует не плоскую(XY) математику при отрисовке поверхности (как это делает Civil), а пространственную(XYH). Civil явно создан не для геодезии, а для проектировщиков, там такое прокатывает, но правильно построить сложную поверхность он не может и приходится потом вручную дорабатывать структурными линиями.

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

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

    Grigarash Форумчанин

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

    Philin Форумчанин

    Согласен с кодированием, которое уменьшает время обработки.
    Не согласен с "правильно вести съёмку".

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Сер-гео Форумчанин

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

    Grigarash Форумчанин

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


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

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

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

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

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

    Philin Форумчанин

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

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

    Grigarash Форумчанин

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

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

    Philin Форумчанин

    Видимо давно вы в голый автокад не заглядывали. Так вот функциональность его в этом плане не хуже сивила :)

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

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

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

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

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

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

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


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

    Grigarash Форумчанин

    Такой точной поверхности я вижу только одно применение, это "кучи", и тут действительно хотелось бы инструмент который правильно и быстро отрисовывает эти кучи и выдает их объем.
    Для всего остального достаточно и сивиловской поверхности, хоть и надо ручками дорабатывать
     
  14. Philin

    Philin Форумчанин

    У меня идиотский вопрос :)

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

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

    Grigarash Форумчанин

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

    zarsai Форумчанин

    Если низ 10 на 10, а верх 15 на 15, то тоже 158.33 в цивиле получается, так что результат не из-за формы.
     
  17. Grigarash

    Grigarash Форумчанин

    а из-за чего?
     
  18. TOLSTIJDMITRIJ

    TOLSTIJDMITRIJ Форумчанин

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

    Вложения:

  19. Philin

    Philin Форумчанин

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

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

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

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

    Потому что это правильный ответ по формуле усечённой пирамиды :)
     
  20. Добрый день. Решил и я проверить (в эту ветку случайно забрел). 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 ---
     

    Вложения:

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