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

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

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


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


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

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



Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 11:03 
Не в сети

Зарегистрирован: 24 июн 2015, 15:12
Сообщений: 12
Использую Visio c: 2003
Очков репутации: 0

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

Подскажите, пожалуйста, как определить какой тип фигуры (шейпа) - линия, прямоугольник или овал или что-то более сложное (например, группа)?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 11:42 
Не в сети
Ветеран

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 11:55 
Не в сети

Зарегистрирован: 24 июн 2015, 15:12
Сообщений: 12
Использую Visio c: 2003
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
9rey
Если возможно, подскажите как это сделать программно.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 12:03 
Не в сети
Content manager
Content manager
Аватара пользователя

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 12:13 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
Можно достаточно легко определить, если фигура базируется на некотором шаблоне, т.е. была взята со "стенсила" (окно слева, откуда обычно фигуры берутся). То есть, фигура хранит информацию из какого шаблона (мастера) она была создана (в проперти shape.Master). Обычно этого достаточно.

Если же ты фигуру сам нарисовал (линиями например), то невозможно сказать, как именно ты это сделал.
т.е. например нельзя сказать, был ли прямоугльник нарисован 4 линиями или сразу весь - результат ничем не отличается.

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 12:39 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
линию можно определить
Код:
dim sh as shape
Set sh = ActiveWindow.Selection(1)
if sh.OneD = -1 then msgbox "Линия"
if sh.CellExists("BeginX", Visio.VisExistsFlags.visExistsAnywhere) = -1 then msgbox "Линия"
двумерную фигуру состоящую из отрезков можно отловить по наличию в шейпшите в разделе Geometry строк MoveTo или LineTo
Код:
if sh.CellExists("MoveTo", Visio.VisExistsFlags.visExistsAnywhere) = -1 then msgbox "Двумерная фигура из отрезков"
if sh.CellExists("MoveTo", Visio.VisExistsFlags.visExistsAnywhere) = -1 then msgbox  "Двумерная фигура из отрезков"
Овал или круг можно отловить по наличию в шейпшите в разделе Geometry строки Ellipse
Код:
if sh.CellExists("Ellipse, Visio.VisExistsFlags.visExistsAnywhere) = -1 then msgbox "Овал или круг"
группу можно определить так
Код:
if sh.shapes.count > 0 then msgbox "Группа"

возможно есть и более красивые варианты ! только это все офф-топик. здесь ветка ShapeSheet™

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 12:54 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
Окей, а вот это что такое тогда будет? Оно обладает всеми перечисленными тобой признаками. Т.е. есть "BeginX", "Ellipse", "MoveTo", и shape.shapes.count = 1 :D


Вложения:
fish.vsd [14.5 Кб]
Скачиваний: 166
26-06-2015 10-52-16.png
26-06-2015 10-52-16.png [ 8.75 Кб | Просмотров: 3128 ]

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


Последний раз редактировалось nbelyh 26 июн 2015, 12:59, всего редактировалось 1 раз.
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 12:56 
Не в сети

Зарегистрирован: 24 июн 2015, 15:12
Сообщений: 12
Использую Visio c: 2003
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate
nbelyh
Спасибо за ответы


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 12:58 
Не в сети
Content manager
Content manager
Аватара пользователя

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

WaW,
а зачем это понадобилось программно выяснять ?

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 13:03 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
nbelyh,
Что-то это чудо на рыбу не похоже

Художника любой обидеть может :mrgreen:

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 13:18 
Не в сети

Зарегистрирован: 24 июн 2015, 15:12
Сообщений: 12
Использую Visio c: 2003
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Цитата:
WaW,
а зачем это понадобилось программно выяснять ?


Не моя идея.
В Visio (как удобном редакторе, с возможностью документирования) рисуется видеокадр, потом считываются свойства элементов, чтобы отобразить на экране из прикладной программы.
Соответственно, желательно знать какую фигуру нужно рисовать.
Начальством рекомендовано сразу оптимизировать процесс.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 13:28 
Не в сети
Content manager
Content manager
Аватара пользователя

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 14:08 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
WaW писал(а):
В Visio (как удобном редакторе, с возможностью документирования) рисуется видеокадр, потом считываются свойства элементов, чтобы отобразить на экране из прикладной программы.


тогда конечно проще сразу "правильно" рисовать в визио. например создать мастера, как выше писали, элементов видеокадра, дать им уникальные идентификаторы типов, например, в секции User или ShapeData для круга писать "1", для квадрата "2" и т.п. линии и коннекторы определять через св-во shape.OneD=true и группу как shape.shapes.count>0 (как и писали выше).
ну и в сторонней программе считывать все это будет уже проще.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 14:23 
WaW писал(а):
В Visio (как удобном редакторе, с возможностью документирования) рисуется видеокадр
жестоко, я бы в визио только настроечную таблицу решился нарисовать :)


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 14:30 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
Насчет группы дополнение - можно еще детектить по типу. Для группы shape.Type = visTypeGroup.
Потому как формально (с точки зрения Visio) шейп может быть "группой", даже если у него нет под-шейпов, т.е. даже когда shape.Shapes.Count = 0

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 14:40 
Не в сети

Зарегистрирован: 24 июн 2015, 15:12
Сообщений: 12
Использую Visio c: 2003
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
nbelyh писал(а):
Насчет группы дополнение - можно еще детектить по типу. Для группы shape.Type = visTypeGroup.
Потому как формально (с точки зрения Visio) шейп может быть "группой", даже если у него нет под-шейпов, т.е. даже когда shape.Shapes.Count = 0

Нужное замечание


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 15:04 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
nbelyh писал(а):
Потому как формально (с точки зрения Visio) шейп может быть "группой", даже если у него нет под-шейпов, т.е. даже когда shape.Shapes.Count = 0
специально не стал вдаваться. ибо преобразовывают шейп в группу вроде как редко. хотя visTypeGroup правильнее.
Гость писал(а):
жестоко, я бы в визио только настроечную таблицу решился нарисовать
Оффтоп: в визио рисовали видеокадры для ТЭЦ, ГРЭС с 2000 годов. причем лихо рисовали даже наши старички с бабульками в возрасте овер 60 лет. молодые там вообще красоту выдавали. автокад для нас тогда казался убог и нелогичен. именно для такой работы типа видеокадров, алгоритмов, причем с привязкой к БД в аксессе (это в 2000-2003 годах) и использовали визио. я туда пришел в 2003 году. честно, офигел от такого продвинутого подхода :)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 17:30 
Не в сети
Content manager
Content manager
Аватара пользователя

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 26 июн 2015, 20:38 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
А еще у шейпов есть метод - Shape.HasCategory. С помощью него можно классифицировать шейпы по содержимому ячейки User.msvShapeCategories. В некоторых штатных шейпах эта ячейка присутствует и чем то даже заполнена. :) Так что можно самому добавлять ячейку и прописывать там какие то обозначения. Можно даже списком через запятую.

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить тип фигуры (шейпа)?
СообщениеДобавлено: 30 дек 2021, 02:44 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 08 мар 2020, 00:19
Сообщений: 336
Использую Visio c: 2019
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
А можно как то определить является ли фигура, фигурой текста с панели инструментов? Заметил, что при создании такие фигуры отличаются от других, тем что у них в ячейках LinePattern, FillPattern, ShdwPattern записана функция THEMEGUARD(0). Можно тогда сравнивать по этим ячейкам?
Содержимое спрятано под спойлер ↓
Спойлер:
Вложение:
2021-12-30_01-40-20.png
2021-12-30_01-40-20.png [ 9.61 Кб | Просмотров: 687 ]

_________________
Группа в VK Фигуры электрики для Visio


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

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



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

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


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

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