| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > ObjectARX для Autocad 2010-2014. Выделение элементов по существующим контурам

ObjectARX для Autocad 2010-2014. Выделение элементов по существующим контурам

Ответ
Поиск в этой теме
Непрочитано 24.10.2013, 19:48 1 | #1
ObjectARX для Autocad 2010-2014. Выделение элементов по существующим контурам
АлексЮстасу
 
топограф, технолог
 
Москва
Регистрация: 24.05.2009
Сообщений: 3,030

Вариант программки в ObjectARX для Autocad 2010-2014 - выделение элементов относительно существующих прямолинейных и/или криволинейных контуров:

- PSI_SEL_ALL_IN - выбрать элементы внутри границ. У блоков и текстов учитываются только точки вставки.
- PSI_SEL_ALL_OUT - выбрать элементы вне границы. У блоков и текстов учитываются только точки вставки.
- PSI_SEL_IN - выбрать элементы, попадающие в границы. У блоков и текстов учитываются только точки вставки.
- PSI_SEL_OUT - выбрать элементы вне границ и пересекающие границы. У блоков и текстов учитываются только точки вставки.
- PSI_SEL_ON_LINE - выбрать элементы на линиях с учетом указанного допуска. У блоков и текстов учитываются только точки вставки. Выбираются элементы относительно линии в зоне, шириной в допуск в каждую сторону.
- PSI_SEL_ON_LINE_3D - выбрать элементы на линиях с учетом 3D с учетом указанного допуска. У блоков и текстов учитываются только точки вставки. Выбираются элементы относительно линии в зоне, шириной в допуск в каждую сторону и в высоту.
- PSI_SEL_INTERSECT - выбрать элементы, пересекающие линии. У блоков и текстов учитываются габариты.
- PSI_SEL_INTERSECT_3D - выбрать элементы, пересекающие линии с учетом 3D. У блоков и текстов учитываются габариты.

Обрабатывается предварительный выбор элементов - поиск только из выбранного. Если нет предварительного выбора, то обрабатывается весь файл (включенные слои).
Можно указать несколько существующих контуров, несколько линейных элементов для выбора.
Контуры могут состоять из наборов существующих прямолинейных и/или криволинейных элементов - сплайнов, дуг, окружностей, дуговых сегментов полилиний.
Первые шесть команд не учитывают габариты блоков и текстов, а только их точки вставки. Сделано так, исходя из того, что блоки и тексты характеризуются в первую очередь точками вставок. Во-вторых, чтобы не дублировался выбор блоков и текстов, габариты которых попадают на границы.
Две команды на пересечение _INTERSECT_ учитывают габариты блоков и текстов.
Если элементы внутри контуров примыкают к контурам, то считается, что эти элементы полностью внутри контуров. Сделано так для возможности удобного выбора линейных штриховок.

В PSI_SEL_2010-2012.rar:
- для 32-разрядных машин под 2010-2012 в x86.
- для 64-разрядных машин под 2010-2012 в x86_64.
В PSI_SEL_2013-2014.rar:
- для 32-разрядных машин под 2013-2014 в x86.
- для 64-разрядных машин под 2013-2014 в x86_64.
Тулпалетка в Select_Cont_PSI_2010.rar для этих команд.
Offtop: Первый блин - первый раз выкладываю что-то подобное. Писал не я.

Подправлено:
- обработка элементов только включенных и не замороженных слоев,
- добавлена версия для 2013-2014,
- добавлены сообщения о числе найденных элементов.
- добавлена обработка контуров, состоящих из сплайнов, дуг и окружностей.
- добавлен поиск относительно линий в пределах указанного допуска.
- добавлена обработка контуров, включающих дуговые сегменты полилиний.
- приложен еще вариант для 2010-х, т.к. из PSI_SEL_2010-2012.rar не всегда загружалось.

Вложения
Тип файла: rar Select_Cont_PSI_2010.rar (82.3 Кб, 375 просмотров)
Тип файла: rar PSI_SEL_2010-2012.rar (107.6 Кб, 349 просмотров)
Тип файла: rar PSI_SEL_2013-2014.rar (80.8 Кб, 697 просмотров)
Тип файла: rar PSI_SEL_2010.rar (110.9 Кб, 223 просмотров)


Последний раз редактировалось АлексЮстасу, 20.01.2014 в 20:03.
Просмотров: 28401
 
Автор темы   Непрочитано 25.12.2013, 16:44
#2
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Пока суть, да дело, почти уже готова вот такая сборная версия - см. картинки. Прототипом взята Fence из Microstation. Кто в курсе их Fence - оч. удобный инструмент. Не отрицающий обычного выбора.
Но здесь побольше возможностей - учет/не учет габаритов блоков и текстов, сохранение контуров выбора, поиск элементов на линиях и в допуске относительно линий, поиск пересечений с линиями. В принципе, большинство этого есть уже в выложенных здесь этих командах.

А по поводу выложенных команд - никто вообще ни словечка не написал...
Как будто все это делается другими и более удобными способами... Разве?
Миниатюры
Нажмите на изображение для увеличения
Название: PSI_SEL_ALL_0_ru.png
Просмотров: 492
Размер:	6.6 Кб
ID:	119420  Нажмите на изображение для увеличения
Название: PSI_SEL_ALL_1_ru.png
Просмотров: 309
Размер:	9.4 Кб
ID:	119421  Нажмите на изображение для увеличения
Название: PSI_SEL_ALL_2_ru.png
Просмотров: 269
Размер:	10.1 Кб
ID:	119422  
АлексЮстасу вне форума  
 
Непрочитано 26.12.2013, 12:25
#3
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Интересует логика названия подкаталога x86_64. Обычно пишут или x86 (иногда x32) или x64, а вот запись x86_64 настораживает.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 26.12.2013, 14:42
#4
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Интересует логика названия подкаталога x86_64. Обычно пишут или x86 (иногда x32) или x64, а вот запись x86_64 настораживает.
Это логика программиста. Я такие вещи по незнанию просто принимаю за чистую монету.
Как лучше: сразу x32 или x86?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 26.12.2013, 14:52
1 | #5
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Как лучше: сразу x32 или x86?
x86
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 27.12.2013, 17:31
#6
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Прошу прощения за ложное заявление, что поиск на линиях и пересекающих элементов линии не имеет аналогов. Меня поправили, что в Экспресс есть команда FS - находит все, что прикасается к указанной линии.
Радует, что у нас немного побольше - есть учет 3D, использование предварительного выбора и можно выбрать сразу несколько линий, относительно которых делается выборка.
Плюс, конечно, поиск в допуске относительно линий.

Последний раз редактировалось АлексЮстасу, 27.12.2013 в 18:42.
АлексЮстасу вне форума  
 
Непрочитано 12.01.2014, 16:04
#7
vade


 
Регистрация: 09.01.2010
Сообщений: 36


на Autocad 2010х86 рус не удается загрузить файл
vade вне форума  
 
Автор темы   Непрочитано 12.01.2014, 17:11
#8
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Цитата:
Сообщение от vade Посмотреть сообщение
на Autocad 2010х86 рус не удается загрузить файл
Может быть Вы загружаете не из \PSI_SEL_2010-2012\x86?
У меня дома только 2012х86 - загрузилось нормально.

Последний раз редактировалось АлексЮстасу, 12.01.2014 в 18:08.
АлексЮстасу вне форума  
 
Непрочитано 12.01.2014, 19:34
#9
vade


 
Регистрация: 09.01.2010
Сообщений: 36


Загружал из \PSI_SEL_2010-2012\x86
vade вне форума  
 
Автор темы   Непрочитано 12.01.2014, 20:10
#10
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Цитата:
Сообщение от vade Посмотреть сообщение
Загружал из \PSI_SEL_2010-2012\x86
Печально. А что Автокад при этом сообщает?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 12.01.2014, 23:24
#11
vade


 
Регистрация: 09.01.2010
Сообщений: 36


Так то и сообщает Не удается загрузить .....
vade вне форума  
 
Автор темы   Непрочитано 12.01.2014, 23:33
#12
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Попробуйте на всякий случай загрузить из папки \PSI_SEL_2010-2012\x86_64.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 13.01.2014, 04:02
1 | #13
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


АлексЮстасу, уточни у автора какую версию ObjectARX SDK он использовал. Если версия не 2010 (а 2011 или 2012), то грузится с вероятностью 90% в AutoCAD 2010 не будет.
P.S.: Кстати, неплохо бы поменять название темы, а то версия 1014 как то выбивается из списка существующих.
Александр Ривилис вне форума  
 
Непрочитано 13.01.2014, 20:31
#14
vade


 
Регистрация: 09.01.2010
Сообщений: 36


При загрузке из папки х86_64 та же песня
vade вне форума  
 
Автор темы   Непрочитано 13.01.2014, 21:11
#15
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Программист, увы, в отпуске...

----- добавлено через ~7 ч. -----
Цитата:
Сообщение от vade Посмотреть сообщение
Так то и сообщает Не удается загрузить .....
Можно прямо скопировать сюда полностью сообщение Автокада?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 14.01.2014, 23:51
#16
vade


 
Регистрация: 09.01.2010
Сообщений: 36


вот это и пишет
Название: загрузка файла.jpg
Просмотров: 3180

Размер: 111.5 Кб
vade вне форума  
 
Непрочитано 17.01.2014, 10:19
#17
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


ACAD-2011x64. Загрузилось удачно. Потестировал PSI_SEL_ALL_IN. Не совсем пойму, почему так долго отрабатывает на довольно мощной машине? Даже при нахождении внутри контура всего 18-ти - да что там восемнадцати - одного примитива, экран начинает мерцать, и обработка идет около 1.5-2-х секунд. Это немало. Например, лисп VVA отсюда делает это мгновенно. Даже при нескольких тысячах объектов лисп быстрее. Еще любопытно: PSI_SEL_ALL_IN нашла в контуре 7088 объектов, а SCCP в том же контуре - 7083. Разбираться пока нет времени, файл тоже приложить не могу - чужой.
Сначала не мог никак понять, что должна выбирать команда PSI_SEL_ON_LINE потом понял: выбирает параллельные линии в пределах допуска, либо все что ЦЕЛИКОМ попало в зону допуска. При допусках, близких к нулю - хорошая замена не очень любимому мной overkill'у. Сразу видно и понятно, сколько мусора у меня под нужной линией (на чужих чертежах часто бывает такое), а он здорово мешает работать, особенно программными методами. Зачет.
PSI_SEL_INTERSECT - хорошая вещь. Как раз собирался писать нечто подобное. Замечательно, что правильно отрабатывает на дуговых сегментах. Похоже, тоже - в копилку. С 3-D не работаю, поэтому не тестировал.
Одно главное замечание по всем командам - время обработки. А так - очень и очень неплохо. Спасибо, АлексЮстасу!
skkkk вне форума  
 
Автор темы   Непрочитано 17.01.2014, 15:27
#18
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Цитата:
Сообщение от skkkk Посмотреть сообщение
Одно главное замечание по всем командам - время обработки.
Спасибо за реальную критику и оценки!
Да, на тяжелых файлах не тестировалось. Но подозрения в возможной медлительности были.
Даже если поиску соответствует всего пара элементов, то программе все равно нужно перебрать и анализировать все элементы файла. Т.е. проблема в весе файлов в целом, в необходимости оптимизировать анализ данных.
Но для понимания ситуации желательно, конечно, файл данных.

По поводу 3D - если полилинии имеют высоты или точечные, текстовые элементы имеют вдруг Z, то при учете 3D соответствующие полилинии, объекты с точечной геометрией в выборки не попадут. Те, которые на разных высотах.

Вы еще обратите внимание, что для поиска можно выбирать не один контур или линию, а несколько.

Последний раз редактировалось АлексЮстасу, 17.01.2014 в 15:46.
АлексЮстасу вне форума  
 
Непрочитано 17.01.2014, 16:09
#19
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
для анализа ситуации желательно, конечно, файл данных.
В смысле, файл dwg, в котором я тестировал? Или еще какой? Если dwg, то позже потестирую на том, что смогу отправить.
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Вы еще обратите внимание, что для поиска можно выбирать не один контур или линию, а несколько.
Заметил, заметил, да забыл осветить.
И на самом деле, для таких полезных функций две секунды - это ерунда! Думаю, с тем алгоритмом, с которым я хочу (или уже хотел) воплотить выбор пересекаемых объектов, было бы не быстрее (ssget c параметром fence + аппроксимация дуговых сегментов). Интересно, а какой алгоритм задействован в PSI_SEL_INTERSECT?
skkkk вне форума  
 
Автор темы   Непрочитано 17.01.2014, 18:40
#20
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Цитата:
Сообщение от skkkk Посмотреть сообщение
Интересно, а какой алгоритм
Увы, я только постановщик задач и тестировщик - про алгоритмы и т.п. ничего не знаю. Но с криволинейными элементами программист намучился. Из их учета возникла необходимость введения допуска для выделения на линиях. А потом мы ей воспользовались в целях расширения возможностей - поиска на заданном расстоянии от линий.

----- добавлено через ~4 мин. -----
Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Если версия не 2010 (а 2011 или 2012), то грузится с вероятностью 90% в AutoCAD 2010 не будет.
Если перекомпилировать в 2010, то могут ли быть потери - может ли что-то не работать, если делалось для 2012?
АлексЮстасу вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > ObjectARX для Autocad 2010-2014. Выделение элементов по существующим контурам

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Жилые и общественные здания: краткий справочник инженера-конструктора. Под ред. Ю.А. Дыховичного и В.И. Колчунова. 2011 (Впечатления и отзывы). Armin Поиск литературы, чертежей, моделей и прочих материалов 19 22.03.2018 15:41
Выделение элементов в SCAD Homel SCAD 1 29.07.2013 13:41
Как поменять способ добавления элементов в выделение? midsummer AutoCAD 2 03.11.2012 20:48
Случайный эксцентриситет p_sh Прочее. Архитектура и строительство 14 22.07.2009 11:32
Выделение отдельных элементов из сборного 3Д тела Александр Шевелев AutoCAD 1 29.05.2008 08:36