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

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

Войти

Автоматическое проставление расстояний между двумя полилиниями

Тема в разделе "Autocad", создана пользователем Shahvalad, 27 май 2023.

  1. Shahvalad

    Регистрация:
    29 май 2019
    Сообщения:
    11
    Симпатии:
    0
    Доброго времени суток, уважаемые форумчане!
    Столкнулся с такой задачей: нужно между двумя полилиниями (2д или 3д) проставить только те расстояния, которые будут больше/меньше определенной величины.
    Как я это вижу: 1) выбираем 2 полилинии; 2) указываем величину и знак больше/меньше.
    Вопрос в том, можно ли реализовать такую задачу встроенными средствами автокад/цивил, либо может быть есть лиспы?
    Благодарю за ответы.
     
    #1
  2. PEMCOH

    Форумчанин

    Регистрация:
    12 авг 2011
    Сообщения:
    434
    Симпатии:
    67
    Адрес:
    Россия, Екатеринбург
    Размер должен строиться конкретно между вершинами? Если между вершинами, то как лисп должен понимать между какими вершинами строить размер если они будут хаотично разбросаны? Если не вершины, а, например, перпендикулярно оси Y, то с каким шагом должны проставляться размеры?
    Размер должен быть только в плоскости XY или с учётом Z координаты?

    Один из способов решения задачи:
    Например у нас есть дорога отрисованная двумя полилиниями. Есть проектная ширина дороги и нужно показать отклонения от ширины дороги, а не от проектного положения.
    Тогда берём одну сторону и делаем её офсет на том расстоянии, что у вас проектная ширина. Используя лисп из менюГео проставляем автоматически точки в вершинах второй полилинии. Потом используем программу от Бердюгина geo_deviations где проставляются размеры проект/факт по двум линиями и точке. Получается две полилинии будут задавать проект, а точка будет показывать отклонение от проекта, на сколько шире или уже дорога. Ту же самую процедуру можно сделать и для противоположной полилинии. Тогда у вас будут размеры с проектными и фактическими отклонениями от каждой вершины перпендикулярно ко второй полилинии.

    Способов решения много, важно точно понимать что и как нужно вычислять.
    --- Сообщения объединены, 27 май 2023, Оригинальное время сообщения: 27 май 2023 ---
    Зная шаг и направление размеров, можно создать штриховку между полилиниями, потом взорвать её и с помощью фильтра отсеить отрезки со знаком "+" и "-". Потом с помощью лиспа (вроде из менюГео) автоматически поставить размеры отрезков.
     
    #2
  3. Shahvalad

    Регистрация:
    29 май 2019
    Сообщения:
    11
    Симпатии:
    0
    1) По всей протяженности полилиний; только в плоскости XY; в автокаде можно изменить тип размера (линейный, угловой и т.д.), думаю в моем случае подойдёт размер "параллельный" относительно одной полилинии перпендикулярно ко второй;
    2) Шаг неопределенный, то есть мне не нужен массив размеров через определенный шаг, мне нужны только те размеры, значения которых больше/меньше опр. величины. Если будет большой промежуток между полилиниями, на который приходится множество размеров больше/меньше нужной нам величины, то достаточно проставить один с опр. шагом. Я не удивлюсь если это технически сложно реализовать, потому что сам не могу представить как это будет работать.
    3) Пример с дорогой я понял, действительно, хороший способ, но в моем случае две линии будут несколько раз пересекаться друг с другом, то есть, если я правильно понимаю, оффсетом я смогу пользоваться только до первого пересечения, и с него же до следующего, что немного усложняет задачу, посколько пересечений может быть Nое количество.
     
    #3
  4. PEMCOH

    Форумчанин

    Регистрация:
    12 авг 2011
    Сообщения:
    434
    Симпатии:
    67
    Адрес:
    Россия, Екатеринбург
    Представим начало линий начинается с ширина в 5 метров и линии постепенно расходятся до 10 метров в конце. Вы пишите условие: показать размеры везде где шире 7м. Если считать наименьшую единицу измерения 1мм, то у вас получится 3000 размеров. Не понимаю как можно без определения "шага" выполнять данную задачу?

    Если честно, было бы хорошо, если б вы наглядно показали "до" и "после" обработки. Так будет легче предлагать варианты решения задачи.
     
    #4
  5. Shahvalad

    Регистрация:
    29 май 2019
    Сообщения:
    11
    Симпатии:
    0
    В понедельник загружу скрин)
     
    #5
  6. moisey

    Форумчанин

    Регистрация:
    15 ноя 2012
    Сообщения:
    254
    Симпатии:
    74
    Мне кажеться софт Some small tools отлично показывает отклонения
     
    #6
  7. Shahvalad

    Регистрация:
    29 май 2019
    Сообщения:
    11
    Симпатии:
    0
    Прошу прощения за долгую задержку, только сейчас руки дошли вернуться к поискам способа/лиспа.

    Пример условный.
    Фото1: белая линия - проектное положение стены; красная линия - сечение по верху стены.
    Фото2: фиолетовые размеры - те, которые превышают допуск (допустим 100), их и нужно проставить; в области штриховки все размеры будут больше 100, здесь можно задать шаг, с которым будут ставиться размеры. желтые размеры - те, которые в допуске, их и в целом все значения меньше 100 проставлять не нужно.
    Фото3: итоговый результат работы лиспа/программы/способа/и т.д.
    1.jpg 2.jpg 3.jpg
    --- Сообщения объединены, 2 июн 2023, Оригинальное время сообщения: 2 июн 2023 ---
    посмотрел в интернете данный софт, нашел на ютубе видоинструкцию ко всем лиспам внутри него, не смог подобрать ту, которая бы подошла)
     
    #7
  8. ivsem

    Форумчанин

    Регистрация:
    26 мар 2009
    Сообщения:
    2.475
    Симпатии:
    1.051
    Адрес:
    Киев
    Shahvalad, чертеж 2D или 3D? Перпендикуляр для определения отклонения строим от проектной (белой) линии?
     
    #8
  9. Shahvalad

    Регистрация:
    29 май 2019
    Сообщения:
    11
    Симпатии:
    0
    Сами сечения 3д, но размеры проставляются с видом сверху, то есть размеры итоговые будут в 2д.
    От какой линии вести перпендикуляр не сильно будет влиять, пускай будет от проектной.
     
    #9
  10. alz

    alz
    Форумчанин

    Регистрация:
    26 май 2014
    Сообщения:
    244
    Симпатии:
    105
    Держи, проставляет размеры между двумя любыми кривыми, спроецированными на плоскость XY, допуск по размеру и шаг запрашивается, перпендикуляры будут идти на вторую выбранную кривую.
    Загружать через netload команда для запуска DimBetweenCurves.
    На всякий случай в свойствах проверь архив, что бы не был заблокирован.
     

    Вложения:

    #10
  11. Shahvalad

    Регистрация:
    29 май 2019
    Сообщения:
    11
    Симпатии:
    0
    спасибо, в понедельник опробую, и отпишусь!
     
    #11
  12. ivsem

    Форумчанин

    Регистрация:
    26 мар 2009
    Сообщения:
    2.475
    Симпатии:
    1.051
    Адрес:
    Киев
    Написал в черне программку на лиспе.
    Решил сверить с вашей программой.
    Прилагаю скриншот с автокада
    Вводные: отклонение 10, шаг 5
    Мой результат слева, Ваш с права.
    01.jpg
     
    #12
  13. alz

    alz
    Форумчанин

    Регистрация:
    26 май 2014
    Сообщения:
    244
    Симпатии:
    105
    Немного разная логика программы, у меня за базу взята красная и с каждой точки шага ищется ближайшее расстояние на черную что является перпендикуляром к черной, у вас же базовой кривой является черная, и из нее строятся перпендикуляры до пересечений с красной, то есть у меня строятся кратчайшие расстояния с точек шага, у вас же какие получатся по направлению перпендикуляра, в этом и разница собственно это я является причиной небольших несовпадения размеров там где они у нас почти совпадают, у меня отсчет шага по красной у вас по черной и нули не совпадают. небольшой минус вашего метода это наличие явно не кратчайших расстояний если перпендикуляр близок к параллельности ко второй линии.
     
    #13
  14. moisey

    Форумчанин

    Регистрация:
    15 ноя 2012
    Сообщения:
    254
    Симпатии:
    74
    нихрена у вас разброс я проверил Шашвалад у него правдоподобные отклонения показывает ДЛЛКА
    --- Сообщения объединены, 3 июн 2023, Оригинальное время сообщения: 3 июн 2023 ---
    [bimg=no-lightbox][/bimg]
    Безымянный.png
     
    #14
  15. ivsem

    Форумчанин

    Регистрация:
    26 мар 2009
    Сообщения:
    2.475
    Симпатии:
    1.051
    Адрес:
    Киев
    Проверил результаты работы вашей программы при помощи окружности. Отклонений не обнаружил.
    Ваш алгоритм программы правильный.
    02.jpg
     
    #15
  16. ivsem

    Форумчанин

    Регистрация:
    26 мар 2009
    Сообщения:
    2.475
    Симпатии:
    1.051
    Адрес:
    Киев
    Программа форумчана alz заточена под хотелки форумчана Shahvalad.
    Единственно, можно было бы не выводить все размеры, а вывести размер начала, размер конца интервала и в пределах интервала выводить по запросу пользователя каждый 10 или 50 или ... размер.
     
    #16
    Последнее редактирование: 3 июн 2023
  17. alz

    alz
    Форумчанин

    Регистрация:
    26 май 2014
    Сообщения:
    244
    Симпатии:
    105
    Вот это кстати реализовать гораздо сложнее текущего варианта, если тут логика прописана одним циклом и одним условием то ваш вариант требует гораздо большего, даже интересно стало, посижу покумекаю, а то скучновато последнее время, хоть чем-то заняться)
     
    #17
  18. ivsem

    Форумчанин

    Регистрация:
    26 мар 2009
    Сообщения:
    2.475
    Симпатии:
    1.051
    Адрес:
    Киев
    Вместо вывода размера сразу на экран, пишите координаты размеров в массивы.
    Далее обрабатываете массивы как вам требуется
    Но как говорится, судя по вашим программам, не мне Вас учить.
     
    #18
  19. alz

    alz
    Форумчанин

    Регистрация:
    26 май 2014
    Сообщения:
    244
    Симпатии:
    105
    Тут дело в точном определении места где размер начинает превышать допуск, первый вариант не искал эти точки, просто проходя с определенным шагом в какой-то момент это место пересекалось и тогда размер рисовался, поэтому он собственно и состоял из пары строк логики. В новой версии, где определяются эти точки, код разросся на 200 строк, но теперь он как вы выше написали показывает все границы и размеры проставляются внутри этих границ.

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

    Вложения:

    #19
  20. ivsem

    Форумчанин

    Регистрация:
    26 мар 2009
    Сообщения:
    2.475
    Симпатии:
    1.051
    Адрес:
    Киев
    alz, прогнал на двух чертежах вашу вторую версию программы.
    Как по мне для практической работы то что надо.
    На правом чертеже левый нижний угол придется доработать вручную
    03.jpg
     
    #20

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

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