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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Узнавать сразу обо всех объектах в указанной точке экрана

Узнавать сразу обо всех объектах в указанной точке экрана

Ответ
Поиск в этой теме
Непрочитано 18.12.2014, 17:21 #1
Узнавать сразу обо всех объектах в указанной точке экрана
АлексЮстасу
 
топограф, технолог
 
Москва
Регистрация: 24.05.2009
Сообщений: 3,072

Бывает ли вообще в каких-либо CAD-ах такая возможность - указал место на экране, и получил информацию обо всех объектах, на которые или внутрь которых эта точка попала?
Например, есть точечный объект (допустим, блок), к которому привязан линейный объект (допустим, полилиния), и находятся они в площади Области (Region) или штриховки. Эта область или штриховка находится в площади другой области/штриховки, в площади третьей и т.д. И чтобы указать курсором на блок, и получить сообщение, что там три объекта (или пять - сколько есть), которые видны сразу все (допустим, выделятся), и по отдельности в списке можно просмотреть: нажал в списке на "блок"- выделяется блок, нажал на "штриховка" - выделяется штриховка или область и т.д.
Место на экране не обязательно при этом на элементах, а может быть просто в площади Областей, штриховок или т.п. Т.е. указать внутрь области/штриховки, и получить сообщение, что это такие-то области/штриховки, и возможность их увидеть все сразу и по отдельности.
Для трехмерных чертежей - указать место на экране и чтобы показывалось 3д-тело или поверхность, внутрь которой попала точка, а также все другие тела и поверхности, окружающие эту точку.
В Автокаде и в Microstation я таких возможностей не знаю. Может быть есть в каких-то вертикальных приложениях?
Видел такую возможность в MapInfo и в Панораме (слизано, скорее всего, с MapInfo), и что еще удивляет - информация обо всех объектах для любой точки выдается всегда без задержек, очень быстро. Причем, вложенность объектов может быть довольно большой, границы площадных объектов могут быть далеко за пределами экрана. И эта операция там не специальная какая-то, никакой подготовки, подгрузки и пр. не требует вообще, а самая рутинная - вроде автокадовского: указать элемент, и увидеть в окне Свойства его параметры.
Сразу хочется предположить, что в MapInfo или т.п. производится специальная подготовка данных для этого. Но нет - никакой подготовки. Просто и буквально - начертили контур площадного объекта, провели линию линейным, вставили точечный. И все. Но сразу же, ткнув в точечный, получаем информацию и о точечном, и о линейном, и о площадном.
И быстрота ответов, и отсутствие специальных действий предполагают, что, вероятно, эта задача решается какими-то очень простыми средствами, не требующими даже анализа пространственных отношений элементов.
А вот как бы?
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 18.12.2014 в 17:55. Причина: убрал про определения объектов, чтобы не путаться
Просмотров: 3981
 
Непрочитано 18.12.2014, 17:35
#2
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Имхо, возможно все.
Я бы это делал так, в процессе черчения выстраивал бы иерархическую структуру (xml) и вновь создаваемые элементы добавлял бы в нее. Т.е. если по простому, перед черчением линии или вставкой блока спрашивал бы у пользователя какому элементу будет принадлежать добавляемый. А уж вывести фрагмент xml довольно просто и не нагружает систему. Хотя, может я не правильно понимаю задачу...
Boxa вне форума  
 
Автор темы   Непрочитано 18.12.2014, 18:11
#3
АлексЮстасу

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


Про "лампочки", "провода" и "комнаты" - это я изначально написал для образности. Убрал. Пусть речь только о блоках, полилиниях и штриховках/областях и т.д.
Цитата:
Сообщение от Boxa Посмотреть сообщение
Имхо, возможно все.
Пока что единственный прецедент работы в Автокаде по указанному месту на экране, который я знаю - указание точки экрана для BOUNDARY. Которая может ввергнуть Автокад навеки в задумчивость или ничего не дать вообще.
Цитата:
Сообщение от Boxa Посмотреть сообщение
Я бы это делал так, в процессе черчения выстраивал бы иерархическую структуру (xml) и вновь создаваемые элементы добавлял бы в нее.
У меня тоже возникают мысли, что где-то что-то, возможно, нужно дополнительно описать про элементы файла. Или, вдруг, достаточно имеющегося?
В Мапинфо, кажется, никакой иерархии нет. Там вообще элементы разных "таблиц" могут храниться в разных группах файлов. Допустим, площадные в одной "таблице", линейные в другой, а точечные в третьей.
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 18.12.2014 в 18:19.
АлексЮстасу вне форума  
 
Непрочитано 18.12.2014, 20:12
#4
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


AutoCAD (в 2015 есть)

А вообще всё просто все эти проги наверняка используют R-tree - а оно так и работает ;=)


http://mikhailov-andrey-s.blogspot.r...v-autocad.html

Последний раз редактировалось trir, 18.12.2014 в 20:17.
trir вне форума  
 
Автор темы   Непрочитано 18.12.2014, 20:35
#5
АлексЮстасу

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


Цитата:
Сообщение от trir Посмотреть сообщение
А вообще всё просто все эти проги наверняка используют R-tree - а оно так и работает ;=)
А черт его знает, что эти проги используют. Но получается у них оч. быстро.
В 2015-м чудо уже свершилось? А поточнее можно - что именно?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 18.12.2014, 20:47
#6
skkkk


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


Правильно ли я понял задачу? Нужно, чтобы при указании точки программа проверила, какие объекты проходят через эту точку (линии, собственно точки, блоки), а также проверила, в какие замкнутые (или не очень) контуры попадает наша указанная точка и выдала информацию о них? Кстати, какую информацию? Алгоритм мне видится таким: указали точку, с помощью ssget вычислили, что через нее проходит. С помощью одной из программ для проверки принадлежности точки замкнутой линии определили, внутри каких контуров находится данная точка и сделали, например (временно) все эти объекты красными или пунктирными. Кликнули на один из них и в панели Свойства или Быстрые свойства увидели информацию. Так?
skkkk вне форума  
 
Автор темы   Непрочитано 18.12.2014, 20:57
#7
АлексЮстасу

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Нужно, чтобы при указании точки программа проверила, какие объекты проходят через эту точку (линии, собственно точки, блоки), а также проверила, в какие замкнутые (или не очень) контуры попадает наша указанная точка и выдала информацию о них? Кстати, какую информацию? Алгоритм мне видится таким: указали точку, с помощью ssget вычислили, что через нее проходит. С помощью одной из программ для проверки принадлежности точки замкнутой линии определили, внутри каких контуров находится данная точка и сделали, например (временно) все эти объекты красными или пунктирными. Кликнули на один из них и в панели Свойства или Быстрые свойства увидели информацию. Так?
Да. Именно так.
Можно, например, чтобы выдавалось окно со списком найденных объектов - как у trir на картинке. Указал в этом окне все найденные - выделились все, указал один - выделился он. А Свойства или Быстрые свойства - само собой, соответственно.
Очень интригует это - "С помощью одной из программ для проверки принадлежности точки замкнутой линии". Честно - искал, долго, но, кроме негодящей BOUNDARY, видел пока только одну, самодельную, да и та, возможно, доступной не станет.
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 18.12.2014 в 21:14.
АлексЮстасу вне форума  
 
Непрочитано 18.12.2014, 21:12
#8
skkkk


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


АлексЮстасу, это тут: Как определить, лежит ли точка внутри контура. Там в теме еще ссылки есть.
Основную проблему вижу в выводе информации. Если выделено более одного объекта, то информативность окна Свойства стремится к нулю.
И еще одного не пойму: в каком таком возможном случае подобное может понадобиться? Почему нельзя зумировать и посмотреть, какие объекты пересекают или обрамляют данную точку? И после поочередно изучить свойства любого из них? Какова конечная цель? Может, и примерчик есть, чтоб наглядно понять смысл подобного софта?
skkkk вне форума  
 
Автор темы   Непрочитано 19.12.2014, 02:04
#9
АлексЮстасу

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Основную проблему вижу в выводе информации. Если выделено более одного объекта, то информативность окна Свойства стремится к нулю.
И еще одного не пойму: в каком таком возможном случае подобное может понадобиться? Почему нельзя зумировать и посмотреть, какие объекты пересекают или обрамляют данную точку? И после поочередно изучить свойства любого из них? Какова конечная цель? Может, и примерчик есть, чтоб наглядно понять смысл подобного софта?
Вывод информации вроде бы не проблема - при указании в списке найденных объектов лишь одного из них, нужно чтобы выделялся только он. Тогда и свойства будут видны только его.
Назначение - просто для удобства. Удобнее обнаружить объекты, скрытые под другими объектами. Удобнее находить контуры площадей или обнаруживать, что их нет или они не замкнуты. Удобнее узнавать о вложенности объектов.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 19.12.2014, 04:36
#10
skkkk


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
при указании в списке найденных объектов лишь одного из них, нужно чтобы выделялся только он
А каким образом выводить этот список? Так, как указано trir'ом в #4, по крайней мере, на лиспе, не получится. Других языков я не знаю, но думаю на дотнете или сях это возможно. Если объекты выделять красным или пунктиром, то скрытые под другими объекты так и останутся скрытыми. Можно, конечно, выводить информацию об объектах в командную строку или в окно наподобие этого (сохранить файл с расширением .lsp и загрузить в Автокад):
Код:
[Выделить все]
(alert 
"Полилиния 
	Цвет - Белый 
	Слой - 0
	Тип линий - По слою
Отрезок   
	Цвет - Красный
	Слой - 0
	Тип линий - Continuous
" 
)
но какой в этом смысл? Свойства-то поменять все равно нельзя будет в этих окнах. Неужто программно надо будет для видимости всех объектов устанавливать порядок прорисовки таким образом, чтобы меньшие по размеру объекты находились "выше" бОльших, а затем менять порядок прорисовки на изначальный?
В общем, пока, я лично не вижу, как должны работать эти "хотелки". Может быть, есть возможность показать, как это реализовано в MapInfo?
skkkk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Узнавать сразу обо всех объектах в указанной точке экрана



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка ПОС, искусство проектирования Tyhig Технология и организация строительства 117 25.11.2021 17:38
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Как отразить звуки от распахнутого окна квартиры? trel Архитектура 44 18.06.2015 06:11
как в мономахе производить действия на всех этажах сразу? Евгений Д. Мономах 7 19.03.2011 17:35