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

Форум по вопросам применения и программирования в Visio
Текущее время: 26 мар 2017, 20:54

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


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


Размещение файлов в формате vsd (а не vsdx/vsdm), увеличивает вероятность ответа стремительным домкратом !!!



Начать новую тему Ответить на тему  [ Сообщений: 86 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 17 ноя 2016, 11:39 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
Или так:
Код:
= Str( (x1 + (sh_r / 25.4))) & " mm"


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 17 ноя 2016, 11:50 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3172
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
ИзображениеСемен Семеныч !
Surrogate писал(а):
Код:
EX = (x1 + (sh_r / 25.4))
appVisio.ActiveWindow.Selection.PrimaryItem.CellsSRC(visSectionObject, visRowXForm1D, vis1DEndX).FormulaU = EX

Так и только так !
Shishok писал(а):
Или так:
Код:
= Str( (x1 + (sh_r / 25.4))) & " mm"
Я упустил из виду что речь идет о ячейке EndX. По умолчанию единица измерения в визио дюйм.
надо или как предлагал Shishok делать формулу содержащую единицу измерения. Либо вести все расчеты в дюймах, но для нас это конечно дико


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 17 ноя 2016, 11:52 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
Вот вариант еще:
Код:
Dim EX As Single

EX = (x1 + (sh_r / 25.4))
appVisio.ActiveWindow.Selection.PrimaryItem.CellsSRC(visSectionObject, visRowXForm1D, vis1DEndX).Result(visDrawingUnits) = EX


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

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 39
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
но можно ввести промежуточную переменную. вычислить ее значение и подставить в формулу.

он говорит, что нельзя :cry:
Изображение


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

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 39
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
хотел приложить набор, но vss запрещено ...


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

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

Добавить очки репутацииУменьшить очки репутации
Варианты выше пробовал?


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

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

Добавить очки репутацииУменьшить очки репутации
Эта ошибка означает что ты хочешь вставить в ячейку значение с десятичной запятой. А надо с точкой!


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

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 39
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Код:
Str( (x1 + (sh_r / 25.4))) & " mm"

вот этот работает


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

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 39
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
хочу к картинке описание сделать
тоже из данных ячеек
Код:
    appVisio.ActiveWindow.Page.DrawRectangle 9.84252, 185.03937, 43.307087, 165.354331
    appVisio.ActiveWindow.Selection.PrimaryItem.Characters.Text = "высота " & Str(Worksheets("запрос").Range("F3").Value) & " мм"


в общем с цифрами проблем нет, а для текста
Код:
Str(Worksheets("запрос").Range("F3").Value)
не катит, явно нужно Str на что то заменить.


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

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

Добавить очки репутацииУменьшить очки репутации
В данном случае Str() не надо. Это не вставка формулы в ячейку.


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

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

Добавить очки репутацииУменьшить очки репутации
Если вставляешь в текст шейпа строку то ничего не надо:
Это получается строка - "высота " & 45 & " mm"
А если вставляешь чистое значение, то Str() - обязательно.


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

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 39
Использую Visio c: 2013
Очков репутации: 0

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


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

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

Добавить очки репутацииУменьшить очки репутации
Есть еще одна тонкость (это относится к VBA, а не к Visio).
Дробное числовое значение обернутое в функцию Str() дает всегда в результате десятичный разделитель - точку.
А если надо все таки запятую, то можно делать так:
Код:
Dim v As String
v = 34.567  ' результат - строка "34,567"
' или, пограмотнее:
ActiveWindow.Selection.PrimaryItem.Characters.Text = CStr(23.45)

Вероятно эти разделители еще зависят от настроек Windows ('Региональные Стандарты' или 'Язык и Региональные Стандарты')


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 23 дек 2016, 17:37 
Не в сети
Новичок

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 39
Использую Visio c: 2013
Очков репутации: 0

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 23 дек 2016, 17:49 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3172
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
DArkadiy писал(а):
внутри цикла рисую по очереди 3 объекта и хочу их группировать (так как по логике они составляют одну деталь)
и в чем геморрой ? давай сюда код которым ты все это делаешь !
DArkadiy писал(а):
что бы потом когда в висио начну двигать, что бы не нужно было их выделять и группировать в ручную.
двигать в визио будешь уже руками ?


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

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 39
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
пока кода нет, думаю делать цикл в котором в массив писать номера шейпов, потом выделять шейпы из массива и группировать, но как это реализовать на практике, я ещё не придумал :oops:


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3172
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
DArkadiy писал(а):
пока кода нет
ну если так хочется сделать это кодом. а не так как я советовал
Surrogate в сообщении #10120 писал(а):
а зачем все это делать программно ? проще создать смарт-шейп, внешний вид которого можно изменять меняя поля в shape data !
придется генерить каждый раз одно и тоже !
Surrogate в сообщении #1688 писал(а):
Данный макрос формирует таблицу из 30 строк и 9 столбцов, где каждая строка это группа из 9 шейпов
вместо того, чтоб уже готовому смарт-шейпу сообщить как он должен выглядеть в этот раз
Дополнено позднее:
Код:
Set rw = ActiveWindow.Shape.DrawRectangle(0, 0, 0, 0) ' рисуем прямоугольник нулевой ширины и высоты
ActiveWindow.Selection.ConvertToGroup ' преобразуем шейп в группу
rw.OpenDrawWindow.Activate ' входим внутрь данной группы
Set ooo = ActiveWindow
For x = 1 To 9 ' начинаем заполнять строку шейпами-столбцами
tx = xc(x - 1) ' левая координата прямоугольника
bx = xc(x) ' правая нижняя координата прямоугольника
ty = 0 + rh * (y - 1) ' нижняя координата прямоугольника
by = 0 + rh * (y) ' верхняя координата прямоугольника
Set rect = ooo.Shape.DrawRectangle(tx, ty, bx, by) ' рисуем прямоугольник с полученными ранее координатами
Next x
ooo.Close
Application.ActiveWindow.Selection.UpdateAlignmentBox ' производим выравнивание размеров группы, в соответствии с размерами дочерних шейпов
в вышеуказанном коде я выбросил все лишнее оставил лишь одну суть:
1. Рисуется родительский шейп
2. Родительский шейп конвертируется в группу
3. Открываем группу и внутри нее добавляем шейпы
4. Закрываем группу и выполняем обновление размеров рамки выравнивания фигуры (Update alignment box)


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

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 39
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
ну я начал делать что то из примеров выше
Код:
Dim arrBal(1 To 3) As Object
...
Set arrBal(1) = appVisio.ActiveWindow.Page.DrawRectangle(xb1, yb1, xb2, yb2)  'балка
       arrBal(1).CellsSRC(visSectionObject, visRowFill, visFillPattern).FormulaForceU = "USE(""балка"")" 'заливка
Set arrBal(2) = appVisio.ActiveWindow.Page.DrawRectangle(xb1 - 23 / 25.4, yb1 - 37 / 25.4, xb1 + 21 / 25.4, yb1 + 108 / 25.4)         'раскос левый
       appVisio.ActiveWindow.Selection.PrimaryItem.CellsSRC(visSectionObject, visRowLine, visLinePattern).FormulaU = "0"
       appVisio.ActiveWindow.Selection.PrimaryItem.CellsSRC(visSectionObject, visRowFill, visFillPattern).FormulaForceU = "USE(""зацеп левый"")" 'заливка

     appVisio.Select arrBal(1).CellsSRC, visSelect' так я пытаюсь выделить но это не работает
     appVisio.Select arrBal(2)
'     appVisio.Select Application.ActiveWindow.Page.Shapes.ItemFromID(29), visSelect ' так висио при записи макроса выделяет
     appVisio.Selection.Group
я точно делаю что то не так


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3172
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
DArkadiy писал(а):
appVisio.Select arrBal(1).CellsSRC, visSelect' так я пытаюсь выделить но это не работает
подчеркнутый фрагмент явно лишний !


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

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 39
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
подчеркнутый фрагмент явно лишний !

к сожалению его удаление не влияет на результат...


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

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



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

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


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

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