Добрый день. Написал лисп, который собирает разбитые блоки (и не только) обратно в блоки. Ссылка на лисп в описании к видео. По всем вопросам писать на электронку, указанную в описание к видео.
Очень полезный лисп! Давно искал подобный, когда блоки оказывались разбитыми. Но никто до этого момента эту задачу не решил. Если увидел правильно, то блоки из одинаковых элементов создаются с потерей их разворота - как в примере с заболоченностью. У меня даже получилось наоборот - все созданные блоки развернулись вдоль линий последнего. Лучше бы сохранять разворот. Те же фонари могли быть развернуты для читаемости. И т.п. Еще посмотрел внутрь - точки вставки блоков сейчас не в 0,0,0. Если в редакторе блоков элементы перенести в 0,0,0, то почему-то в модели изображения блоков отлетают от своих точек вставки. (Сколько раньше ни переносил содержание в редакторе на 0,0, такого эффекта у меня не было ). Название команды не сохраняется в вызовах команд AutoCAD. Что-то, видимо, там слегка ему не нравится. Но действует нормально. :)
Точка вставки блока в чертеж берет данные с координат базовой точки, по умолчанию он 0,0,0 но можно поменять в редакторе блоков, соответственно что бы все осталось на местах надо переносить не только элементы, но на эту же величина и относить базовую точку.
Мне кажется, что лучше программно сразу делать блоки с точкой вставки в 0,0,0. Это же правильнее для обычного случая.
Специально сделал точку вставки вхождения блока - точку вставки от первого выбранного объекта для блока. Чтобы потом редактировать эти блоки. Например заменить их на другие объекты с помощью лиспа frto. Или вытащить какие-то значения из блока, в том числе, координаты вставки с помощью извлечения данных. Для разворотов блоков специально сделал разноименные блоки.
Пробовал Вашу утилиту в недонастроенном AutoCAD, возможно у меня переменные еще установлены не подходящие. Пока не соображу... FRTO заменяет блоки вне зависимости от их точек вставки. (Кстати, FRTO заменяет, кажется, на основе центра габарита наборов элементов, но не у всех блоков точка вставки в геометрическом центре). Может быть я некорректно описал вопрос. Когда я Вашей утилитой создаю блоки, то в редакторе блоков точка вставки не в 0,0,0, а, допустим, в -879.307,11705.147,0. Или т.п. Например, блоки кустарничковой растительности, камней каменистых поверхностей нужно расставлять с разными поворотами. Те же фонари поворачивают, чтобы они не накладывались на другие объекты. И т.п. Если при создании блоков из набора элементов и повернутые наборы элементов принимаются за одинаковые блоки, то лучше сохранять их разворот. Т.к. это одинаковые, одноименные блоки, вставленные с разными углами.
Еще - не получается создать блок из одного элемента, например, из замкнутой полилинии (внемасштабного строения), из окружности (заполняющие знаки лесов) или т.п.
Наверное, было бы лучше подходить к созданию блоков по аналогии с ручным способом - БЛОК/BLOCK. Т.е. сначала запрашивать базовую точку, потом указывать составные элементы. Базовую точку в описании блоков в 0,0,0. В т.ч. потому, что точки вставки реальных блоков могут быть вне элементов. Это бы сразу уменьшило количество обязательных переделок.
Из одного элемента не стал делать. Потому что лисп собирает блоки по определенным характеристикам, в том числе по одинаковому расстоянию между объектами. А здесь просто один объект, который может как нужным так и не нужным. Здесь поможет лисп frto с заменой блоков на обьекты, если очень надо. --- Сообщения объединены, 25 дек 2023, Оригинальное время сообщения: 25 дек 2023 --- Спасибо за обратную связь. Будет время-желания доделаю. Подожду еще замечаний, чтобы потом все скопом переделать.
Удобнее пользоваться одним инструментом. Учитывая, что каждый инструмент всегда таит свои ограничения и сюрпризы. И идея программы, и начало отличные. Довести бы до общего случая - была бы оч. полезная и удобная программа.
Лисп больше уже не работает? Есть соответствующий вопрос на форуме - https://geodesist.ru/threads/s-pomo...om-s-blokom-v-ego-atribut.67032/#post-1123929