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

Форум по вопросам применения и программирования в Visio
Текущее время: 14 авг 2022, 11:21

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


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


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

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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: как заблокировать темы ?
СообщениеДобавлено: 07 июл 2014, 12:30 
Не в сети
Content manager
Аватара пользователя

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

у нас есть такая тупая задача, в присланный смежником файл надо вставить нашу блок-схему.
после вставки наши квадратики расцветают разными цветами Изображение
есть способ описанный Jumpy
мне конечно несложно перед вставкой перебрать все шейпы и поставить галки в LockThemeEffects . но моим коллегам не знакомым с вба приходится нелегко.
А есть какие-то более дружелюбные способы, запретить темы на странице или во всем документе ?

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


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

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

при записи макрорекордером, эту галочку невозможно снять Изображение

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как заблокировать темы ?
СообщениеДобавлено: 07 июл 2014, 13:37 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1925
С учетом того, что топик был создан три года назад и никто другого способа не предложил...
Я как-то с темами не сталкивался. Но вот, что первое приходит в голову:
1. Если макрос от Jumpy оформить в виде EXE или WSH и добавить туда прием имени файла из командной строки, то ситуация для пользователей, не знакомых с VB будет проще. От них потребуется только одна операция - мышкой набросить файл Visio на иконку обработчика. Он запустится, откроет Visio, подкорректирует все шейпы и закроет документ.
Вроде бы операция не сложная.
2. Более кардинальный способ - использовать только мастер-шейпы и заблокировать их от тем еще в трафарете.
3. А вот если на странице сказать Ctrl+A и Format / Protection / (From theme colors, From theme effects) - это не даст нужного эффекта?


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4600
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Hallelujah !!!
Код:
Sub KillThemesFromDocuments()
Dim pg As Page
For Each pg In ActiveDocument.Pages
    pg.ThemeColors = "visThemeNone"
    pg.ThemeEffects = "visThemeEffectsNone"
Next
ActiveDocument.RemoveHiddenInformation (visRHIStyles)
End Sub

Tumanov писал(а):
Я как-то с темами не сталкивался.

век бы их не видеть :)
Tumanov писал(а):
2. Более кардинальный способ - использовать только мастер-шейпы и заблокировать их от тем еще в трафарете.
схемы то мы уже нарисовали, оставалось только вставить Изображение
Tumanov писал(а):
3. А вот если на странице сказать Ctrl+A и Format / Protection / (From theme colors, From theme effects) - это не даст нужного эффекта?
некоторые шейпы были сгруппированы, и вышеописаная операция срабатывала только на тех шейпах, что попали в выделенные объекты. А их дочерние шейпы раскрашивались…

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как заблокировать темы ?
СообщениеДобавлено: 12 июл 2022, 10:35 
Не в сети
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4600
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
При выполнении кода написанного в Visio 2010 вылетает ошибки в строках
Код:
    pg.ThemeColors = "visThemeNone"
    pg.ThemeEffects = "visThemeEffectsNone"
В окне Locals для этих свойств вижу
Изображение



Дополнено позднее: Отпишитесь у работает ли у кого и в какой версии

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как заблокировать темы ?
СообщениеДобавлено: 12 июл 2022, 11:37 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1925
Visio 2019
.ThemeColors выдает, что операция запрещена.
При попытке сменить ThemeColors сам Visio действует через операцию ActivePage.SetTheme.
Например:
ActivePage.SetTheme 38, 38, 38, 38, 38
ActivePage.SetTheme ActivePage.GetTheme(visThemeTypeIndex), 48, ActivePage.GetTheme(visThemeTypeEffect), ActivePage.GetTheme(visThemeTypeConnector), ActivePage.GetTheme(visThemeTypeFont)
ActivePage.SetTheme ActivePage.GetTheme(visThemeTypeIndex), ActivePage.GetTheme(visThemeTypeColor), 38, ActivePage.GetTheme(visThemeTypeConnector), ActivePage.GetTheme(visThemeTypeFont)
То есть ненужные параметры переустанавливает через .GetTheme, а в нужном передает требуемое значение.
Так в первом примере задается все,
во втором - только Color,
в третьем - только Effect.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как заблокировать темы ?
СообщениеДобавлено: 12 июл 2022, 11:46 
Не в сети
Content manager
Аватара пользователя

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как заблокировать темы ?
СообщениеДобавлено: 12 июл 2022, 11:51 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1925
Ну так, вроде должно работать
Код:
ActivePage.SetTheme 0, 0, 0, 0, 0

(А с примерами - каждая строка с ActivePage.SetTheme - это отдельный пример.)


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

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как заблокировать темы ?
СообщениеДобавлено: 12 июл 2022, 22:07 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1925
Цитата:
При выполнении кода написанного в Visio 2010 вылетает ошибки в строках
pg.ThemeColors = "visThemeNone"
pg.ThemeEffects = "visThemeEffectsNone"

Как я понимаю, при переходе от Visio 2007 к Visio 2010 слегка изменился API, по крайней мере для тем.
Началось с того, что структура тем стала другой. Но об этом явно говорилось в документации.
А вот о том, что это потянуло за собой отмену свойств .ThemeColors и .ThemeEffects, не сказано нигде. Во всяком случае мне не удалось найти информации об их отмирании. Прокол в документации!


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4600
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Tumanov писал(а):
Как я понимаю, при переходе от Visio 2007 к Visio 2010 слегка изменился API, по крайней мере для тем.
Наверно вы имели в виду версию 2013 ?
Именно тогда появился новый формат файла. Темы появились в 2007 версии, в 2010 там еще особо не чего было менять :mrgreen:
2007
2010
2013+
ThemeColors Property
ThemeEffects Property
SetTheme method
-
-
Tumanov писал(а):
А вот о том, что это потянуло за собой отмену свойств .ThemeColors и .ThemeEffects, не сказано нигде
Формально они то как бы есть, в окне Locals отображаются. Но точно не Read/Write !!!
Изображение
В Object browser версии Visio 2019 я их тоже вижу…
Surrogate писал(а):
Во всяком случае мне не удалось найти информации об их отмирании.
Так как появилось это скорее всего в версии 2013 документов в онлайне про это нет, качать SDK Visio 2013 лень. Есть онлайн описания 'что появилось нового для разработчика в версии' Visio 2016 / Visio 2019.

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как заблокировать темы ?
СообщениеДобавлено: 13 июл 2022, 15:02 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1925
Цитата:
качать SDK Visio 2013 лень

Можно не качать, у меня он есть. Там объявлено о появлении метода SetTheme, но ThemeColors и ThemeEffects описываются как рабочие без каких-либо примечаний.
Тем не менее, в Visio 2007 они работают, а в Visio 2010 (по Вашему утверждению выше) уже нет. В старших версиях тоже не работают.
Так что пропали они скорее всего все-таки в Visio 2010 и это совсем не обязательно должно быть связано с новым форматом файлов. Но сам я в Visio 2010 не проверял, у меня нет такой установленной версии.


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4600
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Tumanov писал(а):
Тем не менее, в Visio 2007 они работают, а в Visio 2010 (по Вашему утверждению выше) уже нет.
Не совсем так, я утверждал что в версии 2010 еще работало.
Surrogate писал(а):
При выполнении кода написанного в Visio 2010
в 2014 году я в версии Visio 2010 написал код, тогда был рабочий вариант :!:
вчера пытался запустить в версии 2019 :wall:

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: как заблокировать темы ?
СообщениеДобавлено: 13 июл 2022, 15:23 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1925
Цитата:
Не совсем так, я утверждал что в версии 2010 еще работало.
При выполнении кода написанного в Visio 2010

Ну надо же!...
А я понял с точностью до наоборот :)
Значит действительно изменилось в 2013.


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4600
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Tumanov писал(а):
Значит действительно изменилось в 2013.
Абсолютно точно Если перейти по вышеуказанной ссылке, там черным по белому пишут
M$FT в статье New in Visio for developers писал(а):
Themes
Themes have been redesigned in Visio 2013, making use of a greater variety of effects and styles including the integration of Shape Art effects. Users can now decide on an overarching style by applying a theme, personalize the diagram with theme variants, and highlight individual shapes with Quick Styles. ShapeSheet developers can take advantage of these features with new functions and cells in the ShapeSheet.

You can also manipulate themes at the Page, Shape, and Selection object level. New APIs for working with themes include Page.SetTheme method, Page.SetThemeVariant method, Shape.SetQuickStyle method, and the Selection.SetQuickStyle method.

For a detailed list of the new APIs in Visio 2013, see the Visio object model changes section in this article.

Самое печальное, что не помогло: ни установка нет темы на странице, ни последующая чистка документа от неиспользуемых тем, ни даже замена формул содержащих THEMEVAL/THEMEGUARD во вложенных фигурах. Пришлось модифицировать фигуру руками (делать сплошную заливку) вложенным фигурам и сохранять в новый трафарет. В общем крайне мутная тема :wall:

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


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

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



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

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


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

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