Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 13:34

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
 Заголовок сообщения: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 29 июн 2022, 14:04 
Не в сети
Ветеран

Зарегистрирован: 26 авг 2019, 21:07
Сообщений: 267
Использую Visio c: 2019
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
SpatialNeighbors не видит определенный шейп (Sensor), а другие видит.
Модуль MISC, макрос SetLocalShkafMesto
Содержимое спрятано под спойлер ↓
Спойлер:
ИзображениеИзображение
Вложение:
SAPR_ASU.7z [1.52 Mб]
Скачиваний: 39

_________________
САПР-АСУ
https://github.com/gtfox/
YouTube


Последний раз редактировалось gtfox 29 июн 2022, 14:56, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 29 июн 2022, 14:45 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
gtfox писал(а):
SpatialNeighbors не видит определенный шейп, а другие видит.
не видит фигуру Sensor ?

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 29 июн 2022, 14:56 
Не в сети
Ветеран

Зарегистрирован: 26 авг 2019, 21:07
Сообщений: 267
Использую Visio c: 2019
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
да

_________________
САПР-АСУ
https://github.com/gtfox/
YouTube


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 29 июн 2022, 17:33 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Изображение
Погонял ваш код в замедленном действии, по крайней мере в коллекцию элементов схемы он добавляет фигуру Sensor…

Фигура из себя представляет группу, реальные размеры составляющих группы превышают внешние габариты группы.

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 29 июн 2022, 22:59 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Проблема еще актуальна?
Я тут глянул немного...
SetLocalShkafMesto вроде бы выполняется для шкафов?
Но Sensor - не шкаф. Эта процедура для него просто не вызывается.
Или я чего не понял?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 30 июн 2022, 00:18 
Не в сети
Ветеран

Зарегистрирован: 26 авг 2019, 21:07
Сообщений: 267
Использую Visio c: 2019
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
Извиняюсь, что не пояснил подробнее...
Пунктирный прямоугольник - это границы шкафа. Все, что в него попало должно получить от него(прямоугольника) название шкафа и место установки. А все, что снаружи прямоугольника, получает эти данные из текущей страницы.
Растянули прямоугольник и жмем обновить из контекстного меню. Выполняется макрос SetLocalShkafMesto из модуля MISC.
В этом макросе выполняется SpatialNeighbors для прямоугольника со всеми возможными пересечениями, включая частичные.
Результат возвращается в Selection.
Так вот этот самый Sensor никак не хочет обнаруживаться функцией SpatialNeighbors и в результирующем Selection его нет.
Если оставить только Sensor и обвести его прямоугольником, и нажать "Обновить", то в Selection окажется 2 шейпа: Рамка, Сетка координат

Да, и там 3 фигуры шкаф и для них трёх выполняется SetLocalShkafMesto, поэтому надо удалить все фигуры вокруг Sensor... в общем прикрепил очищенный...

Добавил Debug.Print vsoShp.name и другой шейп, который можно переместить в пределы шкафа и увидеть что он появится в Selection
Вложение:
SAPR_ASU+.7z [1.32 Mб]
Скачиваний: 31


Surrogate писал(а):
добавляет фигуру Sensor…
Это раньше происходит... SpatialNeighbors дальше...
Surrogate писал(а):
превышают внешние габариты
пробовал растягивать больше... + там частичные пересечения (Полный комплект :) : visSpatialOverlap + visSpatialTouching + visSpatialContainedIn + visSpatialContain)
Tumanov писал(а):
Проблема еще актуальна?
Да :)

_________________
САПР-АСУ
https://github.com/gtfox/
YouTube


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 30 июн 2022, 00:40 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Цитата:
Растянули прямоугольник и жмем обновить из контекстного меню. Выполняется макрос SetLocalShkafMesto из модуля MISC.

А я смотрю текст программы и вижу, что это не так
В контекстном меню выполняется другой макрос - MISC.ResetLocalShkafMesto.
В этом макросе идет работа со всеми шейпами активной страницы
For Each vsoShp In ActivePage.Shapes
Они делятся на две коллекции. И в коллекцию colShkafyMesta попадают только Case typeShkafMesto. То есть Sensor туда не попадает.
Только потом (в конце) для членов этой коллекции выполняется SetLocalShkafMesto. Но Sensor далек от этих членов. Не касается, не перекрывается и т.д. Вот SpatialNeighbors его и не захватывает.
Разве не так?
---------------------------------
Извиняюсь, был не прав. Надо посмотреть повнимательнее. Этот пост можно не принимать во внимание. Но стирать пока не буду.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 30 июн 2022, 00:46 
Не в сети
Ветеран

Зарегистрирован: 26 авг 2019, 21:07
Сообщений: 267
Использую Visio c: 2019
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
Коллекция всех эл-тов нужна только для "очистки" старых значений
Коллекция шкафов - выполняем SetLocalShkafMesto для каждого шкафа
В SetLocalShkafMesto попадает прямоугольник. Для него выполняется SpatialNeighbors

_________________
САПР-АСУ
https://github.com/gtfox/
YouTube


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 30 июн 2022, 01:25 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Такое впечатление, что метод не воспринимает нулевую геометрию.
Если удалить все секции геометрии в шейпах Sheet.196 и Sheet.197 кроме первой и сделать ее ненулевой (например LineTo 1 мм во второй строке), то Sensor начинает обнаруживаться.
Может это и баг. А может и есть какая-то логика. Как сравнивать расположение чего-то, свернутого в точку. Может там по ходу дела деление на 0 обнаруживается :)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 30 июн 2022, 01:28 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Надо бы специально поисследовать ситуацию с более простыми шейпами, но с нулевой геометрией. Как на них SpatialNeighbors сработает.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 30 июн 2022, 01:40 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Нулевая геометрия вроде бы ни при чем.
Если просто поудалять все секции кроме первой, то метод тоже срабатывает нормально. Хотя первая секция геометрии остается нулевой.
Так что может дело в количестве секций геометрии.
Короче, рыть надо здесь, но точная причина пока не ясна. И вообще, спать пора.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 30 июн 2022, 01:46 
Не в сети
Ветеран

Зарегистрирован: 26 авг 2019, 21:07
Сообщений: 267
Использую Visio c: 2019
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
И правда работает! Спасибо!
Нулевая геометрия - это способ организации мультифигуры
Изображение
В моем случае надо обнулить только высоту, тогда получится линия, которую видит SpatialNeighbors и не видит пользователь :)
Благодарю за помощь!

_________________
САПР-АСУ
https://github.com/gtfox/
YouTube


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 30 июн 2022, 10:18 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Надеюсь, когда-нибудь мы найдем более точную зависимость, чтобы можно было сформулировать предостережение-ограничение на условия использования этой функции. Пока у меня нет точной формулировки.
Если со временем появятся какие-нибудь уточняющие данные в этом плане, прошу сообщать.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 30 июн 2022, 11:56 
Не в сети
Ветеран

Зарегистрирован: 26 авг 2019, 21:07
Сообщений: 267
Использую Visio c: 2019
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
сформулировать предостережение-ограничение на условия использования функции SpatialNeighbors
По моим наблюдениям:
1) Должна быть хотя-бы одна секция геометрии в шейпе или в одном из вложенных шейпов,
2) В этой секции должна быть не нулевая графика
3) Ширина или высота фигуры, в которой содержится геометрия, должна быть не нулевой (0,0001мм работает)
И самое интересное:
4) В фигуре не должно содержаться других фигур, не удовлетворяющих пунктам 1-3 :mrgreen: Содержимое спрятано под спойлер ↓
Спойлер:
Изображение
Вложение:
SAPR_ASU.7z [1.42 Mб]
Скачиваний: 32

_________________
САПР-АСУ
https://github.com/gtfox/
YouTube


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 30 июн 2022, 11:58 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Да, все-таки похоже на баг.
В процессе постепенного упрощения шейпа выявлено, что критичной является попытка построить эллипс с нулевыми параметрами (см рисунок).
SpatialNeighbors не способен справиться с таким эллипсом. Скорее всего натыкается на ошибку при расчете и вылетает где-то во внутренней процедуре, игнорируя в результате такой кривой шейп.


Вложения:
ell.PNG
ell.PNG [ 4.54 Кб | Просмотров: 256 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 30 июн 2022, 12:01 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Написали практически одновременно...
Но мне кажется, что мое ограничение "более ограничено". :)
Я не трогал размеры шейпа. Геометрия по-прежнему нулевая. Выбрасывание эллипса исправляет ситуацию.
А если размеры ненулевые, то просто эллипс строится без ошибок и получаем тот же эффект.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: SpatialNeighbors не видит определенный шейп
СообщениеДобавлено: 30 июн 2022, 12:29 
Не в сети
Ветеран

Зарегистрирован: 26 авг 2019, 21:07
Сообщений: 267
Использую Visio c: 2019
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
Во все не работавшие фигуры добавил нулевые эллипсы и они заработали :shock:
Добавлял так: Добавить раздел-> Geometry-> Изменить тип строки на эллипс -> Обнулял все ячейки
Потом увидел, что есть пункт: Добавить раздел-> Ellipse. В результате добавляется раздел геометрии со строкой эллипса.
Ну, я ее обнулил и - не работает :mrgreen:

_________________
САПР-АСУ
https://github.com/gtfox/
YouTube


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB