|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как выделить объекты пересекаемые полилинией?
отдел открытых горных работ
Новокузнецк
Регистрация: 06.05.2009
Сообщений: 124
|
||
Просмотров: 22079
|
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Если полилиния состоит только из линейных сегментов, то можно воспользоваться опцией "_fence" ("линия") команды "_select" ("выбрать"), для которой передать определенные программно координаты вершин полилинии.
При разовой задаче можно просто провести выделяющую линию вдоль отрисованной полилинии. |
|||
![]() |
|
||||
отдел открытых горных работ Регистрация: 06.05.2009
Новокузнецк
Сообщений: 124
|
задача не разовая
про доп.опции комадны "выбрать" (см; рм; л) мне известно и я ими успшно пользуюсь. но сейчас мне надо выбирать объекты пересекаемые полилинией (а она бывает не только прямой) и я не знаю пока как это можно сделать? Цитата:
|
|||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Пока могу дать только ссылку:
http://forum.dwg.ru/showthread.php?t=64518 |
|||
![]() |
|
||||
отдел открытых горных работ Регистрация: 06.05.2009
Новокузнецк
Сообщений: 124
|
Эх! Спасибо вам Profan, за ссылку конечно. Но это увы не мой уровень. Т.к. я в програмировании не силен.
Offtop: Пробовал 2 года назад книгу про Lisp почитать. Честно скажу, что я долго мусолил первые две или три главы... но так ничего и не понял. Не знаю, может это не моё? Или просто нужен другой подход для меня |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
2024-04-19 Новая версия см пост #70
Тестируй Добавлено *2012-12-02* 2 команды SELPOLY - Выделение объектов, пересекаемых полилинией BSELPOLY - Выделение блоков, пересекаемых полилинией Учтен момент, показанный в #17 (наличие совпадающих вершин в полилинии) Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 19.04.2024 в 16:53. Причина: Учтена ПСК |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Shaft, Nike, Обновил #6 пробуйте снова
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
отдел открытых горных работ Регистрация: 06.05.2009
Новокузнецк
Сообщений: 124
|
Блин, а в чем тогда у меня может быть проблема? Пока не могу найти...
в новом чертеже все работает прекрасно! а в рабочем не хочет? Если решение найду, объязательно расскажу. VVA, БЛАГОДАРЮ ВАС ЗА ПОМОЩЬ В ОЧЕРЕДНОЙ РАЗ!!! ![]() ![]() ![]() UPD: Решение найдено! Я повернул чертеж согласно МСК и тогда все сразу же разаботало!!! ![]() Последний раз редактировалось Shaft, 13.04.2012 в 12:22. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Shaft,
Я немного изменил код #6. Попробуй снова. Если ничего не поменяется, то выложи файл с примером
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Ну да, про ПСК то я совсем забыл
![]()
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 07.05.2012
Сообщений: 6
|
спасибо за лисп!
только у меня при работе иногда возникает проблемка такого же плана: "ничего не происходит после выбора полилинии. Просто экран зумируется до тех пор, чтобы было видно всю полилинию целиком. А выбора объектов под линией не происходит". Не всегда, но бывает. Файл выкладываю. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
>Shaft Цитата:
Цитата:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 03.12.2012 в 09:24. Причина: орфография |
|||
![]() |
|
||||
До кучи.
Не знаю с какого времени, но в Express есть для выбора пересекающих объектов команда FS. Мы, не зная еще про нее, написали свои - PSI_SEL_INTERSECT и PSI_SEL_ON_LINE среди прочего. Наши команды отличаются тем, что можно находить нужное относительно сразу множества полилиний-линий-сплайнов-окружностей-дуг. В "своей" - это в какой? Какой критерий лишние/не лишние?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 23.09.2015
Сообщений: 145
|
ну как, в своей?) куча программ, объединенных в одну. проектирую пожарную сигнализацию.
в одном моменте выбирается шлейф, по которому выбираются извещатели-блоки. но при этом могут захватится и блоки соседние. вот хотелось бы, чтобы пользователю после выбора шлейфа предоставлялась возможность с помощью SHIFR снятия выделения с "лишних" блоков и добор недостающих. |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
Цитата:
Так размещай блоки разного назначения в своих слоях и выбирай с фильтром по слою. Покажи пример чертежа. |
|||
![]() |
|
||||
Регистрация: 23.09.2015
Сообщений: 145
|
чертеж слишком большой.
есть контроллер на 20 шлейфов. Мне в данный момент нужен 10 шлейф и извещатели на нем Я выделяю шлейф №10, выделяются и подсвечиваются извещатели на выбранном шлейфе. Программно подсчитывается их кол-во и собираются данные из их атрибутов и т.д. Но шлейф идет до самого прибора и по пути может пересечь извещатели других шлейфов, которые в данный момент не нужны. Нужно после выделения шлейфа иметь возможность добавлять/исключать объекты из созданного набора. |
|||
![]() |
|
||||
Цитата:
У меня, правда, тоже с Shift не всегда действует. Я не разбирался с этим, но, возможно, в моем случае мешают растры, даже выключенные. Т.е. в файле, где подгружены растры, на указание элемента с Shift мне пишут Цитата:
Да, сейчас проверил - после полной выгрузки растров Shift начинает действовать для блоков и т.п. Наверное, есть какая-то настройка?
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 12.01.2016 в 18:25. |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Это не Автокад, это Raster Design. Shitf+указание точки внутри растра - выбирают его
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Но у меня нет Raster Design...
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
По-моему, у тебя то ли Civil, то ли Map3D
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Civil/Map3D без Raster Design. (Ща узрею еще одну дыру в своем образовании
![]()
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Если я не ошибаюсь, Civil / Map3D в себе содержат массу вещей, в том числе и для работы с растрами (в частности, использование файлов привязки растров, которые в чистом AutoCAD напрочь игнорируются). Возможно, у тебя такое поведение обусловлено именно "вертикалкой".
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Да, в Map3D есть вставка растров с учетом параметров привязки. Очень полезная. И штуки 4-5 других возможностей "ни о чем" (с моей точки зрения). Ничего похожего на нормальную специальную работу с растрами не наблюдается. Даже нет элементарного "сохранить как" растр.
Растры же мы всегда выделяли как все - указанием их границ.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Может Автодеск позаимствовал для растров из RD в Civil/Map?
В RD есть такие настройкаи
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
А ведь точно! Есть такая настройка в мап-овском Параметры растрового модуля!
(Вот! С Вашей помощью про это окно и настройки узнал ![]()
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Геодезист Регистрация: 23.05.2012
Ухта
Сообщений: 1,377
|
Да, в Civil/Map 3D есть такая опция. Особенно она полезна для выделения растра (при включенной указанной выше галке) и когда граница изображения отключена (IMAGEFRAME ->0)
__________________
Как-то так. |
|||
![]() |
|
||||
Регистрация: 23.09.2015
Сообщений: 145
|
Подскажите, а что надо добавить, чтоб не выбирались блоки, у которых линия пересекает ТОЛЬКО атрибут.
__________________
Проекты СС |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
AlexZh, Атрибут - это такой же элемент блока. К посту #41 еще вариант: перед запуском отключить Видимость атрибутов блоков. Потом вернуть обратно. Не проверял, но должно сработать
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 23.09.2015
Сообщений: 145
|
Цитата:
----- добавлено через ~3 мин. ----- Цитата:
__________________
Проекты СС |
|||
![]() |
|
||||
AlexZh,
Не ошибаешься!) В качестве альтернативы) Код:
Последний раз редактировалось koMon, 15.12.2017 в 11:52. |
||||
![]() |
|
||||
|
||||
![]() |
|
||||
Setvar,
Да, ты прав. Сейчас у меня при наличии вн. ссылки лисп рушится. Обновил это и др. мелочи. Последний раз редактировалось koMon, 08.12.2017 в 14:05. |
||||
![]() |
|
||||
Регистрация: 10.02.2007
Москва
Сообщений: 611
|
Программа koMon выделяет только видимые на экране объекты, поскольку не производится зуммирование, как у VVA. Если же вывести на экран сразу границы чертежа, то саму полилинию можно и не разглядеть. У меня как раз такой случай. Полилиний с блоками до фига и больше.
|
|||
![]() |
|
||||
|
||||
![]() |
|
||||
Setvar,
Не в бровь, а в глаз))) То есть ты говоришь, что выбирается по-прежнему только экран? Я вроде про зум писал... Ну я думаю с твоей помощью допилю этого влиспа. А какие в dwg объекты присутствуют? На чём-то спотыкается он... |
||||
![]() |
|
||||
До зума же выбиралось? DWG, в котором не выбирается можешь дать?
|
||||
![]() |
|
||||
Да, глючит. Буду разбираться.
----- добавлено через ~1 ч. ----- Разобрался я с фрагментом чертежа, скопированным из полного с помощью программы VVA и внёс коррекцию. Выбирает... долговато.. но признаться не ожидал такого ОБЪЁМА. И это только фрагмент) |
||||
![]() |
|
||||
Регистрация: 10.02.2007
Москва
Сообщений: 611
|
Интересное дело. Во фрагменте, полученном из полного чертежа с помощью программы VVA на самом деле 5 полилиний. Но почему-то программа VVA выделяет все полилинии, куда ни ткни. А программа KoMon выделяет как-то дискретно. Так мне показалось.
|
|||
![]() |
|
||||
Секущая полилиния удаляется из набора.
|
||||
![]() |
|
||||
Регистрация: 10.02.2007
Москва
Сообщений: 611
|
Вопрос был, собственно, к VVA. Если мы указываем конкретную полилинию, почему другие-то выделяются, как будто мы все выбрали рамкой?
Добавлено. Все просто: другие выделяются в том случае, если указанная их пересекает. ----- добавлено через ~10 мин. ----- Еще замечание. Если блок находится на дуговом сегменте полилинии, то программа VVA его не выделяет; программа koMon выделяет. Последний раз редактировалось Setvar, 13.12.2017 в 09:39. |
|||
![]() |
|
||||
Регистрация: 10.02.2007
Москва
Сообщений: 611
|
Мой вариант программы:
Код:
|
|||
![]() |
|
||||
Цитата:
Лично я написал код, чтобы помочь AlexZh, ну и в целях саморазвития разумеется так же) Личного применения его для себя я не вижу, да и вряд ли когда увижу, хотя х/з. Код VVA построен на принципе выбора объектов методом Fence, точки которого составляют вершины полилинии, соответственноо при наличии дуговых сегментов в секущей полилинии, Fence на них просто забьёт. Я решил использовать метод IntersectWith, который даёт 100% пересечение каждого объекта автокада, за исключением двух с секущей полилинией. Этим подход и хорош, но если приходится молотить большое количество объектов, да и ещё имея в виду пожелание AlexZh, то становится как-то тоскливо, но опять же если важен результат, то в принципе можно и подождать))) В качесте продолжения тестирования предлагаю дополненный маленький пример так сказать в продолжение. Кстати в маленьком примере мой код выбирает все блоки на постоянной основе, пробовал несколько раз, хотя код был корректирован местно, сейчас обновлю и глобально. |
||||
![]() |
|
||||
Регистрация: 10.02.2007
Москва
Сообщений: 611
|
Эта программа - только часть предполагаемого набора программ для попытки преобразования плана трасс пожарных извещателей в структурную схему. Не знаю, что получится. На одном из этапов надо нумеровать извещатели с префиксами и с суффиксами из того набора который формируется текущей программой. Релейный адресный блок иногда не пересекается полилинией, но если в нем убрать какой-нибудь объект, то он начинает пересекаться. Дуговой сегмент вряд ли будет использоваться для размещения извещателей, пример для отладки программы сделан. Моя программа получилась значительно проще. Работает, конечно, не моментально, но это понятно при количестве извещателей, измеряемом сотнями.
|
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
Setvar, http://opsonline.ru/prog10
|
|||
![]() |
|
||||
Регистрация: 16.10.2013
Сообщений: 395
|
Скажите, а есть ли возможность доработать лисп, чтобы можно было найти блоки, которые пересекают конкретные полилинии и все это экспортировать в эксель?
Т.е. есть полилинии, каждая на своем слое, например ПЛ_1, ПЛ_2, ПЛ_3 и т.д. Есть блоки на слое "Блок", у каждого блока или атрибут свой, или имя Нужно получить таблицу в экселе с указанием какой блок какие полилинии пересекает (или наоборот какие полилинии пересекают какие блоки) |
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,170
|
Если полилиний не сильно много (ненамного больше 3,5 штук) - то несколько повторных применений BSELPOLY и извлечения данных по их результатам решают вопрос. Если же счет идет на пл_9000, Пл_100500, ПЛ_до_фига, ПЛ_до_фига_и_больше - тогда да, надо дорабатывать LISP.
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
- возможность использования для множества полилиний, - возможность использования лиспа для предварительно выбранных полилиний Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 20.04.2024 в 10:16. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как выделить все объекты одного слоя или быстро сделать н... | Валера_ | AutoCAD | 42 | 02.08.2022 12:13 |
Как определить стоимость проектных работ, если не известна стоимость строительства? | dextron3 | Поиск литературы, чертежей, моделей и прочих материалов | 37 | 27.08.2014 18:32 |
Как выделить объекты на слое | Serjik7 | AutoCAD | 34 | 16.07.2012 11:37 |
как выделить определённые объекты vba | dickens | Программирование | 12 | 15.12.2011 15:54 |
Как программно выделить (подсветить) объекты на текущи чертеже? | Michigan | Программирование | 2 | 26.05.2009 22:09 |