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

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

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

    PEMCOH Форумчанин

    Размер должен строиться конкретно между вершинами? Если между вершинами, то как лисп должен понимать между какими вершинами строить размер если они будут хаотично разбросаны? Если не вершины, а, например, перпендикулярно оси Y, то с каким шагом должны проставляться размеры?
    Размер должен быть только в плоскости XY или с учётом Z координаты?

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

    Способов решения много, важно точно понимать что и как нужно вычислять.
    --- Сообщения объединены, 27 май 2023, Оригинальное время сообщения: 27 май 2023 ---
    Зная шаг и направление размеров, можно создать штриховку между полилиниями, потом взорвать её и с помощью фильтра отсеить отрезки со знаком "+" и "-". Потом с помощью лиспа (вроде из менюГео) автоматически поставить размеры отрезков.
     
  3. 1) По всей протяженности полилиний; только в плоскости XY; в автокаде можно изменить тип размера (линейный, угловой и т.д.), думаю в моем случае подойдёт размер "параллельный" относительно одной полилинии перпендикулярно ко второй;
    2) Шаг неопределенный, то есть мне не нужен массив размеров через определенный шаг, мне нужны только те размеры, значения которых больше/меньше опр. величины. Если будет большой промежуток между полилиниями, на который приходится множество размеров больше/меньше нужной нам величины, то достаточно проставить один с опр. шагом. Я не удивлюсь если это технически сложно реализовать, потому что сам не могу представить как это будет работать.
    3) Пример с дорогой я понял, действительно, хороший способ, но в моем случае две линии будут несколько раз пересекаться друг с другом, то есть, если я правильно понимаю, оффсетом я смогу пользоваться только до первого пересечения, и с него же до следующего, что немного усложняет задачу, посколько пересечений может быть Nое количество.
     
  4. PEMCOH

    PEMCOH Форумчанин

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

    Если честно, было бы хорошо, если б вы наглядно показали "до" и "после" обработки. Так будет легче предлагать варианты решения задачи.
     
  5. В понедельник загружу скрин)
     
  6. moisey

    moisey Форумчанин

    Мне кажеться софт Some small tools отлично показывает отклонения
     
  7. Прошу прощения за долгую задержку, только сейчас руки дошли вернуться к поискам способа/лиспа.

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

    ivsem Форумчанин

    Shahvalad, чертеж 2D или 3D? Перпендикуляр для определения отклонения строим от проектной (белой) линии?
     
  9. Сами сечения 3д, но размеры проставляются с видом сверху, то есть размеры итоговые будут в 2д.
    От какой линии вести перпендикуляр не сильно будет влиять, пускай будет от проектной.
     
  10. alz

    alz Форумчанин

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

    Вложения:

    TulGeo нравится это.
  11. спасибо, в понедельник опробую, и отпишусь!
     
  12. ivsem

    ivsem Форумчанин

    Написал в черне программку на лиспе.
    Решил сверить с вашей программой.
    Прилагаю скриншот с автокада
    Вводные: отклонение 10, шаг 5
    Мой результат слева, Ваш с права.
    01.jpg
     
  13. alz

    alz Форумчанин

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

    moisey Форумчанин

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

    ivsem Форумчанин

    Проверил результаты работы вашей программы при помощи окружности. Отклонений не обнаружил.
    Ваш алгоритм программы правильный.
    02.jpg
     
  16. ivsem

    ivsem Форумчанин

    Программа форумчана alz заточена под хотелки форумчана Shahvalad.
    Единственно, можно было бы не выводить все размеры, а вывести размер начала, размер конца интервала и в пределах интервала выводить по запросу пользователя каждый 10 или 50 или ... размер.
     
    Последнее редактирование: 3 июн 2023
  17. alz

    alz Форумчанин

    Вот это кстати реализовать гораздо сложнее текущего варианта, если тут логика прописана одним циклом и одним условием то ваш вариант требует гораздо большего, даже интересно стало, посижу покумекаю, а то скучновато последнее время, хоть чем-то заняться)
     
  18. ivsem

    ivsem Форумчанин

    Вместо вывода размера сразу на экран, пишите координаты размеров в массивы.
    Далее обрабатываете массивы как вам требуется
    Но как говорится, судя по вашим программам, не мне Вас учить.
     
  19. alz

    alz Форумчанин

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

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

    Вложения:

  20. ivsem

    ivsem Форумчанин

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