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

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

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


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


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

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Определение свободного места на странице
СообщениеДобавлено: 21 окт 2014, 12:21 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Уважаемые форумчане! Тут у меня возникла такая задача. Необходимо программно определить пустую область на листе в проекте. Например, для вставки в нее таблицы спецификации или некоего чертежа. Лист содержит рамку и может содержать штампы. Так вот, нужно вычислить координаты и размеры области обозначенной серым цветом.
Здесь на форуме пошарился, вроде ничего подходящего.

Примеры (Surrogate, воспользовался твоим шаблончиком):
Изображение
Изображение

Дополнительные (отягчающие :D ) условия задачи:
    Штампы могут быть разными, а могут и не быть вообще.
    Лист может быть разного формата и ориентации.
    Поля листа могут быть разных размеров.
    Имена шейпов рамки и штампов неизвестны.
    Возможно наличие и других шейпов

Пробовал что-то замутить с помощью методов .BoundingBox и .SpatialRelation.
Что-то ерунда какая-то, не получилось ничего путного. А на первый взгляд казалось что просто все!
В общем, прошу помощи. Не в смысле - а подайте-ка мне готовый и красиво оформленный код, а в смысле - толчок, пинок, идею, в какую сторону смотреть.
A может кто-то уже сталкивался с таким?

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Определение свободного места на странице
СообщениеДобавлено: 21 окт 2014, 13:19 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Лично я не сталкивался :)
но если речь идет о моем шаблоне и без заполнения посторонними шейпами могу сказать следующее
мастере есть шейп Frame с ID = 5
Изображение
собственно рамка и есть
в свойствах самого шейпа Рамка с ID = 1
есть ячейки в которых можно увидеть высоты штампа и дополнительной надписи
Изображение
я не знаю какая версия шаблона у тебя. иногда вместо ячейки Prop.vis может быть User.vis
но логика будет той же если в ячейке 1 то отнимай от высоты 7 мм.
в итоге высота серой части будет Sheet.5!Height-sheet.1!User.height-IF(sheet.1!User.vis=1,7MM,0MM)
в итоге ширина серой части будет Sheet.5!width-25 MM)

PS в этой теме есть упрощенный пример вставки спецификации на листы А3 со штампами по формам №3 и 6.
упрощение в том, что предполагается что на листе кроме рамки со штампом и таблицы спецификации больше ничего
не будет

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Определение свободного места на странице
СообщениеДобавлено: 21 окт 2014, 14:12 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

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

_________________
GitHub
Yandex-диск с набором полезных утилит


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

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Определение свободного места на странице
СообщениеДобавлено: 21 окт 2014, 15:09 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 939
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 127

Добавить очки репутацииУменьшить очки репутации
какая-то уж больно абстрактная задача.
что надо-то? определить необходимого размера свободную область на чертеже?
можно например нарисовать прямоугольник по размерам чертежа и начать его в цикле уменьшать относительно центра чертежа, далее через SpatialNeighbors(visSpatialContain + visSpatialOverlap + visSpatialTouching, 0, 0) определять, попадает ли что-то вовнутрь него. если да, то продолжать уменьшать и проверять.
но таким образом определится свободная область по центру. если свободная область смещена относительно центра листа, то возможны потери свободного места.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Определение свободного места на странице
СообщениеДобавлено: 21 окт 2014, 15:51 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
9rey писал(а):
какая-то уж больно абстрактная задача.
что надо-то? определить необходимого размера свободную область на чертеже?
можно например нарисовать прямоугольник по размерам чертежа и начать его в цикле уменьшать относительно центра чертежа, далее через SpatialNeighbors(visSpatialContain + visSpatialOverlap + visSpatialTouching, 0, 0) определять, попадает ли что-то вовнутрь него. если да, то продолжать уменьшать и проверять.
но таким образом определится свободная область по центру. если свободная область смещена относительно центра листа, то возможны потери свободного места.


Именно таким путем я и пробовал. Но, если взять например шаблон Surrogate (в примере, на скриншотах), то у него там всего 1 сгруппированный шейп размером на весь лист. Следовательно, мой тестировочный прямоугольник будет всегда Overlap. :wall:
А по условию задачи я не знаю содержимое листа. Ну, точнее знаю что примерно середина листа пуста. Сами штампы конечно просчитать методом SpatialNeighbors можно. Но вот рамка! Наверно я слишком многого хочу.

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Определение свободного места на странице
СообщениеДобавлено: 21 окт 2014, 16:18 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 939
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 127

Добавить очки репутацииУменьшить очки репутации
да все работает. нарисовал прямоугольник, убрал у него заливку - типа рамка. потом внутри рамки нарисовал еще один. проверил - у него нет Overlap


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Определение свободного места на странице
СообщениеДобавлено: 21 окт 2014, 16:26 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
9rey писал(а):
да все работает. нарисовал прямоугольник, убрал у него заливку - типа рамка. потом внутри рамки нарисовал еще один. проверил - у него нет Overlap

Да, черт! Я уже понял. У меня фигурки с заливкой были при испытаниях :oops:
Ну ладно, буду что-нибудь сочинять. Спасибо!

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Определение свободного места на странице
СообщениеДобавлено: 22 сен 2020, 16:43 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
Shishok писал(а):
Необходимо программно определить пустую область на листе в проекте.
A может кто-то уже сталкивался с таким?
Obsidian знает :)
https://vk.com/video-83493078_456239087
Встроенное видео спрятано под спойлер ↓ Прямая ссылка на видео
Спойлер:
phpBB [media]

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


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

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



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

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


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

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