Приветствую всех на форуме! Можно ли на AutoLISP сделать из массива точек в модели что-то наподобие тепловой карты. Там, где концентрация точек большая, они (точки) коричневого цвета, где пореже - красного, ещё реже - оранжевого и т.д. до зелёного цвета. В приложенном файле - массив точек (Z=0). Требуется перебором закрасить каждую точку в нужный цвет в соответствии с расстоянием до ближайшей другой точки. Если расстояние менее 500 - коричневый цвет, 501-600 - красный, 601-700 - оранжевый, 701-800 - жёлтый, 801 и более - зелёный. Строки кода AutoLISP прошу закомментировать, не сочтите за большой труд (программистом не стану, но хоть что-то для себя почерпну).
Неправильный "ответ". Диапазон надо задавать исходя из расстояния между наиболее удалёнными точками, или (что проще) из разности максимальных и минимальных координат в облаке точек, а так же их количества.
Дели координаты на некий dX и dY, округляй до целого и подсчитывай одинаковые. По полученной "карте" раскрашивай. PS: Можно и "усложнить". Сначала вычитать координаты текущей точки из остальных, потом только поделить, округлить и посчитать кол-во "нулевых".
А возможно ли сделать так: от каждой точки (по очереди, в цикле) определять сначала окружность радиусом в 500мм и все другие точки, попавшие в этот круг, закрасить коричневым. Эти точки далее в цикле не участвуют, и цикл продолжается с другими точками, у которых окружность уже будет 600мм. Эти точки раскрасить красным. Потом цикл с оставшимися точками - круг 700мм, а точки в круге - раскрасить оранжевым и так до конца цикла.
"Ручками" попробуй сначала. Ежели получится, то и лиспом сумеешь. Только выделять точки надо не "ручками", а командами. Сумеешь?
"Сумеешь?" - теоретически. Ну, делать нечего, буду пробовать... Вот, набросал алгоритм (см. приложенный файл)
Спасибо, но я чего-то заморочился на AutoLISP сделать. Хотя сам ни бельмеса в нём. И ведь не для какой-то там важной задачи,а просто интересно стало: "А можно ли сваять такой макрос?"
По-моему проще всё-таки на базе триангуляции Делоне мутить. К тому же лисп для триангуляции уже есть: https://geodesist.ru/threads/razbivka-slozhnoj-figury-polilinija-na-prostye-lisp.87150/#post-1000797
Код: (defun c:MrBrown (/ all_point chek_point border_list border 1_5_border color vla_point coord pt_coord pt_vla ) (vl-load-com) (if (setq all_point (ssget "_X" (list (cons 0 "POINT")))) (progn (setq all_point (mapcar (function (lambda (x / vla_point coord) (setq vla_point (vlax-ename->vla-object x) coord (vlax-get vla_point 'Coordinates) ) (list (list (car coord) (cadr coord)) vla_point ) ) ) (vl-remove-if 'listp (mapcar 'cadr (ssnamex all_point) ) ) ) chek_point all_point border_list (list (list 500 34) (list 600 1) (list 700 30) (list 800 2) ) ) (foreach border border_list (setq color (cadr border) border (car border) 1_5_border (* 1.5 border) ) (foreach base_point all_point (setq coord (car base_point) ) (foreach point chek_point (setq pt_coord (car point) delta_coord (apply '+ (mapcar 'abs (mapcar '- pt_coord coord)) ) pt_vla (cadr point) ) (if (and (<= delta_coord 1_5_border) (<= (distance pt_coord coord) border) (not (equal coord pt_coord)) ) (progn (setq chek_point (vl-remove point chek_point)) (vla-put-color pt_vla color) ) ) ) ) ) (mapcar (function (lambda (x) (vla-put-color (cadr x) 3) ) ) chek_point ) ) ) (princ) ) Комментировать лень, да и задач решена в лоб, без всяких там алгоритмов и триангуляций. На BricsCAD (он гораздо шустрее с LISP работает чем AutoCAD) твой файл за 5 минут переработало. Правда плотность там не высокая. почти все точки попали в максимальный диапазон
BearDyugin, спасибо, работает, но медленно в автокаде - ужас! Мне на DWG.RU создали вот такой макрос (см. вложение). Тоже работает, быстренько так. Может, кому-то пригодится.
Приветствую всех! Нет ли у кого программки для создания выноски с абсолютной отметкой(или просто текст без выноски), которая вычисляется от заданного "нуля", а лучше от заданного значения. То есть, у меня на объекте сотни жб колонн эстакады с закладными деталями на гранях. Соответственно, все линейные размеры даны от низа колонны и на всю длину до каждой закладной. Отрисовал всё, четко по размерам. Считаю все отметки ручками, но немного надоело уже. Прошу помощи).
Как вариант, можно скачать с сайта autodesk модуль СПДС. В этом модуле, в том числе, есть возможность создавать динамические отметки уровня. Однако, этот модуль не все геодезисты принимают, т.к. он создавался для проектирования и рассчитан на работу в чертежах с масштабом 1 единица чертежа = 1 метр, а не 1 единица чертежа = 1 миллиметр. Также, в версиях до 2019 - 2020 года встречались глюки, приводящие к Fatal error.
В скорости выигрыша нет. У меня же и так все в размерах поэтому проще в самом акаде считать. Но геодезист же ленив и стремится автоматизировать или упростить работу. --- Сообщения объединены, 15 янв 2022, Оригинальное время сообщения: 15 янв 2022 --- Пробовал. Не то пальто. Но спасибо за отклик!