Программка на lisp выбора объектов относительно контуров: 1. Шесть Девять способов выбора: Внутри (аналог _WP), внутри и касаются, внутри и пересекаются (аналог _CP), извне, извне и касаются, извне и пересекаются. А так же (аналог _F или FS из Express): на линиях, на и пересекаются, вне линий. 2. Выбор производится сразу для всех указанных контуров/линий. Предварительный или последующий выбор нужных контуров/линий. 3. Выбор производится из указанных объектов. Enter означает - из всех. 4. Контуры/линии могут быть из всех типов полилиний, сплайнами, окружностями, дугами, эллипсами - применены функции VVA из SelectContour.lsp. Со сплайнами возможны проблемы - побороть очень старались, пока удалось, но со снижением точности. Иначе очень медленно. Вариант создавался в первую очередь для учета касаний/наложений объектов границы - штатный выбор почти всегда игнорирует касающиеся-примыкающие объекты. Как игнорируют и все известные мне написанные для выбора программы. Конечно, вариант создавался и для выбора относительно сразу множества контуров/линий и для нужного множества объектов. Если перед вызовом программки было очень сильное увеличение, то может не сработать - слабое место многих функций AutoCAD, lisp. Для программистов. И не только. Выяснилось, что точность выбора и штатной команды _SELECT (ВЫБРАТЬ), и функций lisp ssget и vla-selectbypolygon всего лишь 0.001. А на этих функциях написаны все lisp выбора, в т.ч. известная SelectContour.lsp, да и остальные. И этот наш вариант так же. Поэтому, если в dwg координаты (которые внутри хранятся до 12 знаков, кажется) не округлены хотя бы до 0.001, то будут и не выбранные объекты, и ошибочно выбранные. Т.е. такими программами без внимательного ручного контроля и ручной же доработки пользоваться опасно. К программистам: Есть ли альтернативы другими, точными инструментами? --- Программка чуть подправлена. Еще приложил InOutSel_nc.lsc InOutOnSel_nc_v2.lsc - вариант под nanoCAD. ------ Теперь команда InOutOnSel. Версия обновлена. ------ Теперь с диалоговым окном - с ним быстрее и удобнее. Версия 3. И лучше учтены объекты с точками вставки: блоки, надписи, размеры.
В Map 3D тоже есть встроенные в другие команды функции точного выбора. Пересекающееся с этим из Civil - разрезание, обрезание, выбор запросами и т.п. Конечно, показанное Вами круто! Кажется, что к собственно Civil эти возможности отношения не имеют. Т.е. могли бы быть добавлены в базовый AutoCAD. Как и многие возможности Map 3D были бы очень полезны в голом AutoCAD. Еще иллюстрация, как Autodesk развивает вертикальные решения, но при этом оставляет базовый AutoCAD в золушках...
Добавили выбор относительно линий: на линиях, на и пересекают, вне линий. Со сплайнами может работать, но проблематично - и медленно, и может отказать. Но может и сделать. :)
Выбор внутри контура. Должен быть установлен Express Tools. Чтобы добавить выбор вне контура, нужно чуть подправить этот lisp, понадобится минут десять.
Пробую. Например, выбирает 73 объекта из 93, попадающих в контур. А через раз выбрала 74, но часть пропустила, а другие добавила. В третий раз выбрала 78. 78 выбранных из 93 в контуре - пока максимум, что смог добиться со многих попыток. Не выбранные объекты - касающиеся контура выбора. Похоже и с выбором "+" - 141 из 163. Тоже - не все касающиеся объекты. На другом тестовом файле выбирает 5 из 15. Объекты, лежащие на контуре выбора не находит или находит 1 из 3, или 1 из 6. Возможно, результат зависит от увеличения на экране. Или еще от чего-то. Находит от 86 до 0 процентов объектов. (Исправил сообщение по указанию 1958).
Вышеприведенные скрины получены в AC2007. Сейчас проверил в AC2024 - картина идентичная. В AC2025 не сработало.
55% и 3%. Видно, Вы пропустили в первом про 0.001. И, кстати, вчера обнаружил, что мы в InOutOnSel совсем забыли про точечные объекты. Что-то у ssget с ними сверх всего не того...
Я не обнаружил этих цифирь. Ваше утверждение довольно спорно. Если объект лежит "внутри" контура, а его конечные точки лежат на линии контура или он (объект) касается контура, я бы не стал утверждать, что он находится полностью внутри контура. Ваши литературоведческие рассуждения о процентах как-то вне моего осознания. Чертеж с пояснениями, что относится к вашим %%, раскрыл бы ход ваших размышлений. А впрочем, как хотите.
При работе нужны все варианты выбора: 1. внутри контура и не касается его (_WP), 2. внутри и касается, 3. внутри и пересекается (_CP), 4. вовне и пересекается, 5. вовне и касается, 6. вовне и не касается, 7. на линии, 8. пересекается линией (_F), 9. вне линии. Что тут спорного? Что нужно при работе, то и нужно обеспечить. Разве нет? Сделал очередное обескураживающее открытие об ssget/_SELECT с точечными объектами. Если для точек задан размер отображения - PDSIZE, то выбор учитывает не сами точки, их координаты, а их изображение на экране. Не ожидал... Про блоки и надписи уже было понятно - найти блоки и надписи, привязанные к линиям, не захватив ненужного лишнего, практически невозможно. Гм... А толщину ширину и вес линий штатный выбор тоже учитывает? Тоже выбирает не по координатам, а по изображению на экране?.. Проверил - вес не учитывается (даже удивительно), а глобальная ширина - да. Ой! Штатный выбор еще и ширину линий с учетом типов линий учитывает! Т.е. если тип линий, например, ограждения или откоса или ЛЭП, или трубопровода с надписями, то нужно ставить допуск с учетом длин их штрихов и пр. или высоты надписей. Т.е. опять-таки, если на контуре выбора лежат линии с габаритным типом линий, то найти их, не рискуя прихватив ненужного, невозможно. Аут.
Спорить против такого огромного перечня задач трудно, да и не нужно. Мне просто интересно, а что вы предполагаете делать с выбранными примитивами? Например у меня лет пять назад была такая задача: на нужном участке чертежа выбрать, скопировать и вставить в новый чертеж пикеты (высотные отметки в виде блоков). Исходный чертеж представлял собой съемку м.1:1000 на площади ~150 кв.км (чертеж весил ~ 250 мб). Что-то нарисовать или внести какие-то правки - тот еще гемор. Автокад зависал и частенько уходил в аут. Большинство ваших задач решается офсетом контура наружу или вовнутрь с нужной дистанцией. Выборка примитивов выполняется по полученному смещенному контору, который после выполнения задачи удаляется.
Если он неправильный, то нужно. См. список команд. Фирма не сделала имеющегося во всех CAD, в графических системах полноценного выбора по контурам лишь из-за слишком слабой функции ssget/SELECT. У которых лишь 0.001 точности при возможных 0.00000001 для данных.
Или сотых нанометра. Примечательно, что AutoCAD при _SELECT после _WP, _CP или _F отключает привязки. В nanoCAD же пошли дальше - делают недоступным их включение обратно. Т.е. мешают или не дают пользователям точно обвести существующий контур. Типа, контур заведомо неточный, таков и результат - получайте только явно соответствующие объекты, т.к. учет касания в неточных контурах некорректен-невозможен.