|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как получить указатель на вложенные в блоки объекты по вычисленной точке?
Moderator
LISP, C# (ACAD 200[9,12,13,14])
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 40,378
|
||
Просмотров: 4396
|
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
Цитата:
Код:
Код:
Код:
~'J'~ |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Кулик Алексей aka kpblc, Автокада под рукой нет, чтобы проверить, но ,как говорится, в порядке бреда:
1. ssget за пределами экрана выбирать не хочет. Но обладают ли такими недостатками activeX методы ?. Я имею ввиду vla-select, vla-SelectByPolygon, vla-SelectAtPoint. Пример можно посмотреть у MENZI ENGINEERING: VxSsetSelect - ActiveX counterpart to 'ssget' 2. Объект точка (POINT) тоже имеет метод IntersectWith. Создаешь в нужной координате точку (Или как вариант создать маленький прямоуголькик по размеру прицела или с нужными тебе допусками. Это, наверное, даже лучше.) и перебором посмотреть что ее (его) пересекает. Таким образом (если один из вариантов сработает) можно получить указатели на блоки или внешние ссылки. А вот как получить указатель на пересекаемый объект блока - вопрос.
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378
|
Олег (jr.), спасибо
![]() VVA, спасибо, но... Я не уверен, что ActiveX-методы построения набора поддерживают ключи типа _:U или _:V. Спасибо за наводку, полезу в справку ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. Последний раз редактировалось Кулик Алексей aka kpblc, 06.07.2009 в 23:33. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
А если точка лежит внутри GetBoundingBox'а пойдет? Если да и файлы большие то можно создать одним рекурсивным сканированием (по блокам и ссылкам) список по всем объектам с координатами pt1,pt2, Далее взять максимально возможное значение по х (ну допустим xmax=1000000000) и записать все точки в виде y*xmax=x, отсоритровать по обоим точкам (что то типо двух таблиц по pt1-объект, pt2-объект). После этого берем произвольную точку xy преобразуем ее в число и сразу отсекаем по принципу больше меньше все ненужные объекты - если объектов действительно много - думаю будет быстрей на порядок, а может и на несколько.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378
|
Да, похоже, так и придется делать. С постоянным polar и trans...
Что называется, "брутальный" метод. Спасибо ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378
|
Так блоки-то имеют точку вставки не только '(0. 0. 0.), да и угол поворота у них не обязательно 0
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,153
|
Но ведь Акад "внутри себя" как-то определяет все эти вещи? Если это не вынесено в интерфейсы LISP и ActiveX, надо копать в направлении ARX...
PS Мне, конечно, легко говорить, т. к. сам в ARX не шарю ![]() |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как удобней копировать объекты | VVN | AutoCAD | 15 | 20.10.2016 01:24 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |
Как получить объекты из блока? | ivspec | Программирование | 4 | 03.04.2006 15:35 |
Как получить таблицу свойств объектов такую же как в OrCad | passat | AutoCAD | 1 | 08.12.2004 01:12 |