All Forums
 Категория Visio
 Форум Вопросы и ответы
 размещение фигур.
Previous Page | Next Page
Author Previous Topic Topic Next Topic

brace

Russia
358 Posts

Posted - 03/14/2005 :  13:06:22
Hi Immortal!
На плане района надо расставить техточки. Фигура - пока квадрат.
Координаты точек известны.
Название у каждой точки свое и должно быть написано на фигуре.
Данные для всех точек однотипны но разные.
Их надо положить в Custom Properties.
пока все.
В дальнейше надо все точки соединить кабелем по схеме - одна цепь.
У каждого кабеля свои данные - те свои Custom Properties.



Go to Top of Page

immortal

Russia
391 Posts

Posted - 03/14/2005 :  13:52:30  Visit immortal's Homepage
понятно, а шейпик квадратика можно на мыло?

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page

brace

Russia
358 Posts

Posted - 03/14/2005 :  14:14:38
Извиняюсь, но как по мылу направить не знаю.
Аськи тоже не имею.
Фигура квадрат 1Х1 см на бумаге.
те это типа блок схемы будет.



Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 03/14/2005 :  22:06:37
По умолчанию Visio понимает координаты в дюймах.
А чтоб была какая-то основа для разговора, я сделал небольшой примерчик по Вашим данным.
Не уверен, что при переносе в другой каталог он будет работать без перенастройки, поэтому поначалу лучше разместить его в корне диска С:.
Инструкция: скачать файл http://visio.artberg.ru/store/temp.zip , разархивировать, все три файла положить в корень диска C: (без папки temp) и запустить рисунок Visio Vis.vsd. На рисунке должны появиться пять шейпов в координатах и с данными, указанными в файле Ex.xls. Custom Properties ID добавлено в качестве уникального ключа для связки. Если оно мешает, можно сделать невидимым.
Одновременно с открытием рисунка скорее всего запустится и Database Drawing Monitor. В принципе его можно закрыть.
Если изменять данные в Ex.xls, то и шейпы на рисунке будут это отслеживать. Только при включенном мониторе ручное изменение файла Excel заблокировано. Монитор включается из меню на листе правой кнопкой Launch Database Monitor.
Настройка может быть не оптимальной - я просто быстренько сделал работающий пример, а уж мучить его можно долго и постепенно.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 03/14/2005 :  22:13:16
Забыл написать, что это сделано в Visio 2002 (по вечерам я работаю с 2002 :), но повлиять скорее всего ни на что не должно.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 03/15/2005 :  08:45:49  Visit immortal's Homepage
quote:
Originally posted by brace

Hi Immortal!
На плане района надо расставить техточки. Фигура - пока квадрат.
Координаты точек известны.
Название у каждой точки свое и должно быть написано на фигуре.
Данные для всех точек однотипны но разные.
Их надо положить в Custom Properties.
пока все.
В дальнейше надо все точки соединить кабелем по схеме - одна цепь.
У каждого кабеля свои данные - те свои Custom Properties.


В общем данная задача уже стоит у меня на повестке, и предпологается делать импорт и экспорт данных в ексель, структура файла эксель следующая: первая строчка - имена полей кроме 1 и 2 ячейки, это соответственно имя файла .vss и имя мастера в этом файле, далее любые имена полей, если в шейпе нет такого имени или ячейка пустая то значение не присваевается, в принципе можно наверно как-то по другому, предложения рассмотрю.
Пока делается это для ЛЭП, но можно и использовать для чегото другого, кроме того будут учитываться относительные координаты, т.е. координаты шейпов задаются не относительно координат листа, а относительно топографической съёмки для возможности использовать GPS оборудование.

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page

brace

Russia
358 Posts

Posted - 03/15/2005 :  10:11:26
Троекратное УРА г-ну Туманову !
Все работает но есть дилетанские вопросы.
1. для чего нужен отдельный файл <st1>
по идее только два файла нужны Excel и Visio.
Первй содержит исх. данные
Второй их графически изображает.
2. я изменил одно слово в Excel но изменений на рисунке
не последовало. Только когда я закрыл и открыл Visio изменение произошло. Отсюда следует - нужна кнопка Refresh в меню Visio -
можно ли её организовать ?
3. хотелось бы самому с нуля связать таблицу Excel и Visio
опишите алгоритм.
4. Спасибо г-ну immortal за участие.



Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 03/15/2005 :  19:48:42
quote:
1. для чего нужен отдельный файл <st1>
Выше в последовательности стоял пункт "2. Сделать мастер-шейп, например, в Document Stencil, из которого будут формироваться шейпы на рисунке". Этот файл как раз и содержит этот мастер-шейп. Только в Visio 2003 его можно сделать в Document Stencil, а в Visio 2002 - сходу не получилось. Скорее всего тоже как-нибудь можно, но проще было вынести его в отдельный трафарет, что я и сделал.
quote:
2. нужна кнопка Refresh в меню Visio - можно ли её организовать ?
Щелкните правой кнопкой мыши на листе. В выпадающем меню увидите пункт Launch Database Monitor. Щелкаете по нему. Появляется окошко с монитором и одновременно рисунок обновляется.
quote:
3. хотелось бы самому с нуля связать таблицу Excel и Visio. Опишите алгоритм.
Ну, это уж Вы размечтались... :) Его два дня писать надо и все равно что-нибудь упустишь... У Microsoft и то не получилось...
Go to Top of Page

immortal

Russia
391 Posts

Posted - 03/16/2005 :  08:39:32  Visit immortal's Homepage
quote:
Originally posted by brace

3. хотелось бы самому с нуля связать таблицу Excel и Visio
опишите алгоритм.


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

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page

brace

Russia
358 Posts

Posted - 03/16/2005 :  09:55:40
Hi immortal !
Дано - таблица Excel в которой:
-количество строк это кол-во одинаковых фигур
-колонки 1 и 2 это координаты фигур
-колонка 3 это текст для помещения внутрь фигуры или рядом
-колонки 4-5-6 это некие однотипные данные
Надо - чтобы Visio сам разместил фигуры (пусть квадрат) на листе
а данные из колонок 4-5-6 положил в Custom Properties
Это задача минимум. Следующий этап.
Связать таблицу Excel и рисунок Visio так чтобы
изменения в таблице отражались в Visio.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 03/16/2005 :  10:33:15  Visit immortal's Homepage
Public vis As Object
Public exl As Object

Sub Main()
'обработка ошибок
On Error Resume Next
'ссылка на объекты ексель и визио (должны быть открыты) можно сделать по другому,
' но пока неохота
Set vis = GetObject(, "Visio.Application")
Set exl = GetObject(, "Excel.Application")
'подсчет количества заполненных столбцов и строк в ексель
exl.Range("A1").Select
Dim stolb
Dim strok
Dim znach
stolb = 0
1:
znach = exl.ActiveCell.Text
If znach = "" Then
Else
stolb = stolb + 1
exl.ActiveCell.Offset(0, 1).Range("A1").Select
GoTo 1
End If

exl.Range("A1").Select
strok = 0
2:
znach = exl.ActiveCell.Text
If znach = "" Then
Else
strok = strok + 1
exl.ActiveCell.Offset(1, 0).Range("A1").Select
GoTo 2
End If

'далее делаем циклы, где считываем значения из екселя с помощью
'exl.ActiveCell.Text, переход на ячейку в право exl.ActiveCell.Offset(0, 1).Range("A1").Select
'в низ exl.ActiveCell.Offset(1, 0).Range("A1").Select
'пока не написал
'первая строка в екселе это имена ячеек в визио в шейплисте, я для универсальности
'сделаю проверку первой и второй ячейки на наличие имени файла vss и имени мастера
'далее пишем вставку шейпа на лист и проставляем координаты, причем надо учесть,
' если у вас координаты не именованые
'то будет все в дюймах, чтобы было в миллиметрах необходимо писать в 
'екселе после значения " mm" вроде, хотя можно сделать чтобы
'это взяла на себя программа 

'как допишу сам, сразу сюда напишу скрипт



End Sub



визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 03/16/2005 :  10:42:16  Visit immortal's Homepage
следующий этап в принципе тоже можно реализовать, вот примерный алгоритм:
делаем шаблон в ексель с названиями (именами) полей необходимых для считывания, и например поле ID фигуры на чертеже
запускаем программу которая считывает все заданные имена и помещает их на лист ексель, причем создается документ ексель на основании этого шаблона имя документа = имени документа визио, имя листа в екселе = имени листа в визио, это необходимо для того чтобы обеспечить обновление,
далее при каком нибудь событии запускаем программу, которая сделанные изменения в екселе меняет в визио.

как вариант, встроить объект ексель в чертёж, и обращаться к нему, как, пока не знаю, но этот вариан дал бы независимость файлов.

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 03/16/2005 :  10:46:57  Visit immortal's Homepage
quote:
Originally posted by immortal

Public vis As Object
Public exl As Object

Sub Main()
'обработка ошибок
On Error Resume Next
'ссылка на объекты ексель и визио (должны быть открыты) можно сделать по другому,
' но пока неохота
Set vis = GetObject(, "Visio.Application")
Set exl = GetObject(, "Excel.Application")
'подсчет количества заполненных столбцов и строк в ексель
exl.Range("A1").Select
Dim stolb
Dim strok
Dim znach
stolb = 0
1:
znach = exl.ActiveCell.Text
If znach = "" Then
Else
stolb = stolb + 1
exl.ActiveCell.Offset(0, 1).Range("A1").Select
GoTo 1
End If

exl.Range("A1").Select
strok = 0
2:
znach = exl.ActiveCell.Text
If znach = "" Then
Else
strok = strok + 1
exl.ActiveCell.Offset(1, 0).Range("A1").Select
GoTo 2
End If

'далее делаем циклы, где считываем значения из екселя с помощью
'exl.ActiveCell.Text, переход на ячейку в право exl.ActiveCell.Offset(0, 1).Range("A1").Select
'в низ exl.ActiveCell.Offset(1, 0).Range("A1").Select
'пока не написал
'первая строка в екселе это имена ячеек в визио в шейплисте, я для универсальности
'сделаю проверку первой и второй ячейки на наличие имени файла vss и имени мастера
'далее пишем вставку шейпа на лист и проставляем координаты, причем надо учесть,
' если у вас координаты не именованые
'то будет все в дюймах, чтобы было в миллиметрах необходимо писать в 
'екселе после значения " mm" вроде, хотя можно сделать чтобы
'это взяла на себя программа 

'как допишу сам, сразу сюда напишу скрипт



End Sub



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

...а вобще-то я белый и пушистый.



визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page

brace

Russia
358 Posts

Posted - 03/16/2005 :  12:24:34
Спасибо всем за участие в решении этой задачи.
Интересно что разговор перешел в плоскость
Database Wisard vs VBA script
А что на самом деле лучше??? Вопрос к профи.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 03/16/2005 :  13:36:41  Visit immortal's Homepage
на счет профи, не знаю. что лучше использовать зависит от пользователя, я датабазе визард юзал давно и почему он мне не пондравился конкретно не помню, если вас устраивает датабазе визард, то лучше получается он, если не устраивает то он получается хуже того что вас устраивает, в принципе можно написать любой код (любую программу) которая делала бы все то-же что вы делаете руками(в ручную) качество разработки зависит от того, насколько понял разработчик заказчика.
с VBA завязал, делаю на VB

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page
Previous Topic Topic Next Topic  
Previous Page | Next Page
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)