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

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

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


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


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

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



Начать новую тему Ответить на тему  [ Сообщений: 103 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Как создать Add-On?
СообщениеДобавлено: 15 мар 2016, 13:53 
Не в сети
Постоянный участник

Зарегистрирован: 31 май 2014, 02:42
Сообщений: 67
Использую Visio c: 1994
Отрасль: Газ нефте добыча
Должность: инженер
Уровнь квалификации: всего по немножку
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Когда-то я написал аддон на VB6. И сейчас захотел его обновить. Установил Visual Studio Community 2015 скачал SDK 2013.
Заготовки аддона увы нет. А старый проект, современный Visual Studio Community 2015 читать не желает. Есть путь последовательной конвертации, но это слишком утомительно. Подскажите где можно взять шаблон аддона на VB. Поскольку на С++ есть, но мне надо на VB. Буду благодарен за любую помощь.
Дополнено позднее: 08.09.2021
Boris в сообщении #16210 писал(а):


Вложения:
Комментарий к файлу: Это тот файл который хочу переписать. Создаёт плоские массивы четырёхугольные и по дуге. Можно текст по дуге. Появились новые идеи, хочу реализовать их. Могу выложить старый проект на VB6.
и букв.zip [23.35 Кб]
Скачиваний: 111
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 25 мар 2016, 18:42 
Не в сети
Content manager
Content manager
Аватара пользователя

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 25 мар 2016, 18:54 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
nbelyh писал(а):
Shishok писал(а):
Да поставь просто цифры!

Именно, больше цифр, хороших и разных! Враги не должны узнать, что делает код! :mrgreen:


:lol:

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 27 мар 2016, 16:27 
Не в сети
Постоянный участник

Зарегистрирован: 31 май 2014, 02:42
Сообщений: 67
Использую Visio c: 1994
Отрасль: Газ нефте добыча
Должность: инженер
Уровнь квалификации: всего по немножку
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Сам неправильно указывал параметры в expression .Select(SheetObject, SelectAction)
Теперь разобрался. Работает.

Но вылезла другая бяка
ViAp.ScreenUpdating = False не даёт ничего. VS не ругается но Визио честно отображает все шаги построения.
А требуется чтобы отображался только конечный результат.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 27 мар 2016, 17:38 
Не в сети
Постоянный участник

Зарегистрирован: 31 май 2014, 02:42
Сообщений: 67
Использую Visio c: 1994
Отрасль: Газ нефте добыча
Должность: инженер
Уровнь квалификации: всего по немножку
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Нашел кто обновляет экран
Во всём виновата ActivePage.Shapes("Sheet.3").Duplicate()
После неё идёт обновление дисплея невзирая на ScreenUpdating = False
А мне без дублирования не обойтись.
Что делать?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 27 мар 2016, 17:55 
Не в сети
Постоянный участник

Зарегистрирован: 31 май 2014, 02:42
Сообщений: 67
Использую Visio c: 1994
Отрасль: Газ нефте добыча
Должность: инженер
Уровнь квалификации: всего по немножку
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Попробовал применить ViAp.ActiveWindow.Visible = False
Но выигрыша в скорости нет, а картинка полностью пропадает.
Лучше когда картинка обновляется только после полного построения.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 29 мар 2016, 13:45 
Не в сети
Просто PowerCat
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
У меня есть VB 6 - могу выложить кому требуется


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 31 мар 2016, 21:51 
Не в сети
Постоянный участник

Зарегистрирован: 31 май 2014, 02:42
Сообщений: 67
Использую Visio c: 1994
Отрасль: Газ нефте добыча
Должность: инженер
Уровнь квалификации: всего по немножку
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Нашел ещё одного негодяя который отменяет ActiveWindow.Visible = False
Это оказалось перемещение выделенного шейпа: ActiveWindow.Selection.PrimaryItem.Cells("PinX").Formula = qq & "mm"
Если снять выделение и перемещать этот же шейп так: ActivePage.Shapes(sh).Cells("PinX").Formula = qq & "mm"
То обновление выключается и включается правильно. Как задумано.
Видимо выделение шейпа принудительно обновляет экран.
Тогда вопрос: как дублировать шейп чтобы копия не была выделена?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 31 мар 2016, 22:34 
Не в сети
Ветеран

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 02 апр 2016, 13:52 
Не в сети
Постоянный участник

Зарегистрирован: 31 май 2014, 02:42
Сообщений: 67
Использую Visio c: 1994
Отрасль: Газ нефте добыча
Должность: инженер
Уровнь квалификации: всего по немножку
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Мне надо размножать пользовательский шейп.
А что юзер нарисует я не знаю и знать не хочу.
Нужно создать копию, чтобы копия была БЕЗ ВЫДЕЛЕНИЯ и получить имя копии.
Drop тут не поможет.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 02 апр 2016, 14:10 
Не в сети
Content manager
Content manager
Аватара пользователя

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 02 апр 2016, 16:07 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
Boris
ты почитай пожалуйста про метод Drop сначала - справка по F1. при чем тут выделение? Drop дублирует шейп, который ты ему в параметрах передаешь и размещает копию в нужных координатах. и возвращает объект - копию.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 02 апр 2016, 16:54 
Не в сети
Постоянный участник

Зарегистрирован: 31 май 2014, 02:42
Сообщений: 67
Использую Visio c: 1994
Отрасль: Газ нефте добыча
Должность: инженер
Уровнь квалификации: всего по немножку
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
Попробуй получи имя выделенного шейпа. Сделай Desellectall, обратись к шейпу по имени
Именно так я и делаю. Но при большом количестве фигур процесс затягивается из-за неизбежного обновления при создании копии. Да и моргание шейпа копии красоты не добавляет.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 02 апр 2016, 17:42 
Не в сети
Content manager
Content manager
Аватара пользователя

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

Согласен. Есть у меня один макрос с похожим поведением, правда кодом я меняю
Свойство (user-defined cell), и от этого свойства шейп прилуняется куда надо. Я не смог убрать
Это моргание.
Drop попробовал, но дропнутый шейп тоже селектирован!

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 02 апр 2016, 18:07 
Не в сети
Постоянный участник

Зарегистрирован: 31 май 2014, 02:42
Сообщений: 67
Использую Visio c: 1994
Отрасль: Газ нефте добыча
Должность: инженер
Уровнь квалификации: всего по немножку
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Попробовал DROP результат очень интересный.
Буду дальше пробовать. Я раньше им не пользовался.
Спасибо за подсказку.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 02 апр 2016, 19:59 
Не в сети
Постоянный участник

Зарегистрирован: 31 май 2014, 02:42
Сообщений: 67
Использую Visio c: 1994
Отрасль: Газ нефте добыча
Должность: инженер
Уровнь квалификации: всего по немножку
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Изумительно. Именно то что я хотел.
Разумеется на странице должен быть шейп с именем Sheet.3

Код:
Visio.Application.ScreenUpdating = False
        Dim sh As String
        Dim qwq As Object
        qwq = Visio.ActivePage.Shapes("Sheet.3")

        Do Until qq = 100
            sh = Visio.ActivePage.Drop(qwq, 2, 5).Name
            Visio.ActivePage.Shapes(sh).Cells("PinX").Formula = qq & "mm"
            qq = qq + 1
        Loop

       Visio.Application.ActiveWindow.DeselectAll()
       Visio.Application.ScreenUpdating = True


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 02 апр 2016, 20:00 
Не в сети
Постоянный участник

Зарегистрирован: 31 май 2014, 02:42
Сообщений: 67
Использую Visio c: 1994
Отрасль: Газ нефте добыча
Должность: инженер
Уровнь квалификации: всего по немножку
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
9rey Вам отдельное спасибо!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 03 апр 2016, 10:44 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
многовато лишнего. лучше так:

Цитата:
Visio.Application.ScreenUpdating = False
Dim sh As Shape
Dim qwq As Shape
Dim qq as Long

Set qwq = Visio.ActivePage.Shapes("Sheet.3")

'1 дюйм = 25,4 мм
Do Until qq = 100
Set sh = Visio.ActivePage.Drop(qwq, qq/25.4, 5)
'ниже строку можно не писать (т.к. уже шейп размещен где надо), но если писать, то обращаться через уже полученный шейп sh.
'sh.Cells("PinX").Formula = qq & "mm"
qq = qq + 1
Loop

Visio.Application.ActiveWindow.DeselectAll()
Visio.Application.ScreenUpdating = True


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 03 апр 2016, 14:03 
Не в сети
Постоянный участник

Зарегистрирован: 31 май 2014, 02:42
Сообщений: 67
Использую Visio c: 1994
Отрасль: Газ нефте добыча
Должность: инженер
Уровнь квалификации: всего по немножку
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Простите но я выставил не рабочий код а пример работы обновления экрана.
Так как экспериментировал, так и выложил. Просто чтобы показать что DROP великолепно справляется с поставленной задачей.
Создаёт много копий и очень быстро. И обновление экрана включается и выключается корректно.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 03 апр 2016, 15:20 
Не в сети
Постоянный участник

Зарегистрирован: 31 май 2014, 02:42
Сообщений: 67
Использую Visio c: 1994
Отрасль: Газ нефте добыча
Должность: инженер
Уровнь квалификации: всего по немножку
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Вот такая конструкцияVisio.ActivePage.Drop(qwq, 2, 2).Cells("Angle").Formula = 45 & "deg"
Делает три действия: создаёт копию, ставит её на место и потом поворачивает её.
Так что DROP реально хорошая метода.
Кстати вы привели код для VBA а у меня Visual Studio там синтаксис немного другой. Например SET уже не требуется.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как создать Add-On?
СообщениеДобавлено: 04 апр 2016, 02:55 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Boris писал(а):
Так что DROP реально хорошая метода.
Мне что-то не помогло избавиться от моргания / это вопрос скорее риторический. тот макрос писался на заказ. Заказчика не смутило, что экран во время выполнения макроса обновлялся несколько раз. больше мне не удавалось воспроизвести такое поведение
Surrogate в сообщении #8767 писал(а):
Есть у меня один макрос с похожим поведением, правда кодом я меняю Свойство (user), и от этого свойства шейп прилуняется куда надо. Я не смог убратьЭто моргание.
макрос был написан более года назад, я позабыл многое.
оказалось я все же использовал drop (правда из мастера), код примерно такой
Код:
Set sh = ActivePage.Shapes.Item("box").Shapes("up_level1")
sh.Cells("user.on").FormulaU = Chr(34) & 1 & Chr(34)
PS в коде ни разу не встречалось ActiveWindow.

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


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

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



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

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


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

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