All Forums
 Категория Visio
 Форум Вопросы и ответы
 Экспорт в БД, пара вопросов
Next Page
Author Previous Topic Topic Next Topic

Kuzmich

18 Posts

Posted - 03/31/2005 :  18:46:32
Как экспортировать в БД данные таким образом:
имя объекта|с какими объектами соединен(перечисление)|длины соединяющих линий(перечисление)
Заранее спасибо...

Tumanov

Russia
1198 Posts

Posted - 03/31/2005 :  20:24:06
Нужно писать программу (макрос, Add-on...)
Без программы поставляемыми средствами можно экспортировать только свойства шейпов, значения ячеек шейп-листа. А приписать шейпу список связанных с ним шейпов нельзя.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 04/01/2005 :  09:12:14  Visit immortal's Homepage
quote:
Originally posted by Kuzmich

Как экспортировать в БД данные таким образом:
имя объекта|с какими объектами соединен(перечисление)|длины соединяющих линий(перечисление)
Заранее спасибо...


опишите проблему подробнее, возможно решение уже есть или над ним я уже работаю, или можно найти другое решение, или посмотрите топик для заказчиков http://visio.artberg.ru/forum/forum.asp?FORUM_ID=5, возможно там есть интересующие вас вопросы, можете туда написать подробно вашу проблему, и я или ещё кто нить ее решит, если вы владеете формулами екселя то можите воспользоваться моей программой
http://www.immortal.vstu.edu.ru/visio/excel.rar, с помощью её думаю можно решить вашу задачу обсуждение программы велось тут: topic.asp@TOPIC_ID=444.html
вопросы и предложения по ней можно мне на мыло или в асью


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

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

brace

Russia
358 Posts

Posted - 04/01/2005 :  12:39:35
делайте так:
View > Size&Position Window
затем кликаем на нужную линию и смотрим строку Lenght
в ней икомая длина линии в мм. То есть понимаем что visio
уже подсчитал длину каждой линии и хранит это где то в башке.
а теперь надеюсь профи нам подскажут как экспортировать эти данные в Excel or Access or TXT файл.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 04/01/2005 :  14:13:33  Visit immortal's Homepage
quote:
Originally posted by brace
... профи ...


хватит обзываться
я уже сказал
quote:
можите воспользоваться моей программой
http://www.immortal.vstu.edu.ru/visio/excel.rar


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

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

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

Tumanov

Russia
1198 Posts

Posted - 04/01/2005 :  19:38:17
Видите ли, brace, Ваше сообщение звучит так, как будто Вы знаете, что все очень легко решается, а вот люди, называющие себя "профи", на самом деле профаны. Подсказывать им приходится...
Поэтому начнем с отступления. Я себя "профи" не считаю. Не имею никаких лицензий, не проходил специального обучения, профессиональная деятельность практически не связана с Visio. До всего дошел думая и изучая подвернувшуюся информацию.
Тем не менее, знаний у меня гораздо больше, чем у новичков. И трудности иногда вижу там, где они их и не ожидают.
Так вот, Size&Position Window - это не основной движок Visio, а отдельная дополнительная программа. Она может подсчитать длину селектированной линии, но это совсем не значит, что Visio эту длину уже где-то хранит. Да и считает она далеко не все. Нарисуйте ломаную линию и посмотрите, что Вам скажет про ее длину Size&Position Window...
Но задача-то ставится несколько сложнее, чем определение длины линии: "...имя объекта|с какими объектами соединен(перечисление)|...". То есть для каждого объекта нужно составить список соединенных с ним объектов. Программно эта задача решается довольно легко, о чем и говорил immortal, а вот решить ее только за счет стандартного экспорта, не прибегая к программированию, невозможно. А для написания программы, естественно, нужны некоторые уточнения. Да никто и не просил сразу программу писать, спрашивали только о способе решения задачи.
Так какие у Вас претензии к "профи"? Вы считаете, что они мешают новичкам, и этот сайт лучше закрыть?
Go to Top of Page

immortal

Russia
391 Posts

Posted - 04/02/2005 :  09:43:59  Visit immortal's Homepage
вот-вот...
начнем разбор по порядку, сначала у нас идёт имя объекта наверно не устроит получение имени того которое автоматически присваивает визио при вставке объекта (меню Формат - особый - Имя:), правильно?, думаю надо что нибудь "осязаемое" т.е например марку оборудования и возможно номер на плане, для этого у шейпов необходимо поставить кустом проперти соответственно, и желательно исправить установленные по умолчанию имена Prop.Row_1 на допустим Prop.Marka (Меню Окно -Показать лист), и эти данные будем экспортировать, но также необходимо экспортировать и имя шейпа (меню Формат - особый - Имя:).
далее с какими объектами соединен(перечисление) тут видимо объекты соеденяются не прямо друг с другом, а через линии, поэтому делаем на объекте точки соединения и на линиях с двух сторон также делаем точки соединения (для линий необходимо сделать мастер), методика соединения следующая: рисуются объекты, затем ставяться соединительные линии и присоединяются соединительные линии к точкам присоединения, если ломанная, то она рисуется несколькими отдельными линиями, далее нам необходимо экспортировать имя линии то что в меню Формат - особый - Имя:, длинна линии ячейка Width, и BeginX, EndX,
экспортируем всё в ЕКСЕЛЬ, моя программа не позволяет экспортировать имя объекта, но это поправимо.
далее соединения между объектами вычисляем уже в Екселе, т.е. в BeginX и EndX будет примерно следующее =PAR(PNT(Sheet.1!Connections.X1,Sheet.1!Connections.Y1)) где нам необходимо отобрать выделенное мной, т.е от 9 символа до восклицательного знака - 1, причем необходимо сначала проверить есть ли строка "PAR(PNT(" всё это делается в екселе уже, имея на против соединительных линий имена шейпов с которыми они сконнектены далее делаем обработку этих данных и получаем
имя объекта|с какими объектами соединен(перечисление)|длины соединяющих линий(перечисление)

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

З.Ы. тоже не считаю себя профи в визио (они видемо в мелкософте все сидять), т.к. работаю простым библиотекарем

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

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

Edited by - immortal on 04/02/2005 09:47:00
Go to Top of Page

Kuzmich

18 Posts

Posted - 04/02/2005 :  22:49:11
quote:
опишите проблему подробнее, возможно решение уже есть или над ним я уже работаю

Попробую по-подробнее...
Имя лучше действительно лучше из Custom Properties...
Возможно еще пару значений оттуда же, к примеру с именами Prop1 и Prop2, будет что-то, вроде целостности элемента, значение строковое...
Что касается соединения, то перечисление элементов, соединенных линейно с исходным...
Узлы также желательно описать как элементы...
В итоге что-то вроде этого:
Объект1|Объект3;Объект7|5;17|Свойство1|Свойство2
Вообще нужно экспортировать в SQL Server, но это пока не самое важное...
Go to Top of Page

brace

Russia
358 Posts

Posted - 04/04/2005 :  09:04:54
Ладно, с сего дня будем считать слово профи ругательным.
Хотя толковый словарь так не считает. Обязуюсь не использовать.
Однако:
кто нить может написать макрос для экспорта длины линии из
таблицы Size & Position в файл Excel/Access/TXT.
Речь идет конечно о прямых линиях. Что касается кустом проперти
то все они экспортируются штатным средством Tools > Reports
Go to Top of Page

immortal

Russia
391 Posts

Posted - 04/04/2005 :  11:08:15  Visit immortal's Homepage
quote:
Originally posted by brace
Однако:
кто нить может написать макрос для экспорта длины линии из
таблицы Size & Position в файл Excel/Access/TXT.
Речь идет конечно о прямых линиях.

дык ить
quote:
Originally posted by immortal
длинна линии ячейка Width


вот значит скрин листа ексель, то что делает моя программа
http://www.immortal.vstu.edu.ru/excel2visio.png

т.е. первая строка это наименование ячеек в шейп листе, но как видно там формулы а не значения, это первая сложность, её я исправлю, только пока не знаю как указывать когда брать формулу а когда значение, ибо брать формулы тоже необходимо, в данном сдучае из ячеек BeginX и EndX, как вы видите 5 и 6 строка это шейп провод, в BeginX и EndX нам необходимо взять значения Розетка Розетка.2 Розетка.3, т.е. понятно что провод из 5 строки соединяет Розетка и Розетка.2 а провод из 6 строки соеденяет Розетка.3 и Розетка.2 но как узнать в какой из строк: 2, 3 или 4 находяться Розетка Розетка.2 Розетка.3
может кто подскажет как взять их из шейплиста (т.е. получить эти значения с помощью формул в шейплисте), а то в напряг писать изменения в программе, если это не возможно то изменения напишу. т.е. в листе ексель не хватает Имени шейпа, в прочем можно первой строкой в екселе написать слово shape и тогда будет там писаться имя мастера, т.е. Розетка Розетка Розетка, что будет соответствовать нумерации по порядку, т.е. соответственно Розетка Розетка.2 Розетка.3 далее всю обработку идём в екселе с помощью формул екселя.
кустом проперти прямо пишем Prop.Row_1 и т.д. в примере проперти у шейпов переименованы в prop.Marka, в случае если проперти с таким именем нет, то ячейка будет пустой.




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

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

Edited by - immortal on 04/04/2005 11:09:20
Go to Top of Page

brace

Russia
358 Posts

Posted - 04/04/2005 :  11:51:34
когда мы кликаем на линию то в таблице
Size & Position нет поля Width а только Length
те visio понимает что у линии (кабеля) может быть только длина.
Она то всем и нужна. И при чем здесь Width ???
Go to Top of Page

immortal

Russia
391 Posts

Posted - 04/04/2005 :  12:11:09  Visit immortal's Homepage
quote:
Originally posted by brace

когда мы кликаем на линию то в таблице
Size & Position нет поля Width а только Length
те visio понимает что у линии (кабеля) может быть только длина.
Она то всем и нужна. И при чем здесь Width ???


У фигур бывает два Interaction style (Взаимодействие стиля): Line (Строка, Линия) и Box (Ящик)
дак вот, линия имеет координаты начала и конца, а Нeight = 0, Width = =SQRT((EndX-BeginX)^2+(EndY-BeginY)^2), т.е. расстояние от начала и до конца, воть так, плюс угол angle = =ATAN2(EndY-BeginY,EndX-BeginX), т.е. он показывает на сколько градусов линия повернута, и если вы сравните Lenght в Size & Position и Width в шейп листе, то они будут одинаковыми

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

к стати Визио двухмерный редактор, поэтому и два измерения, у нас же получается три (Ширина, Высота и Длинна) в данном случае Ширина = Длинне, чтобы людей не путать и было логично у линии называется Ширина Длинной, фактически таковой не являясь с точки зрения обработки визио, ломанная линия к стати превращается в Box(Ящик)


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

Edited by - immortal on 04/04/2005 12:18:34
Go to Top of Page

brace

Russia
358 Posts

Posted - 04/04/2005 :  12:35:04
не знаю что это - шейп листы.
наверное программерам это и нужно - мне нет.
Поле с названием LENGTH не я придумал
и логичнее переименовать что-то в вашей программе
ибо название любого поля должно отражать характер данных
в нем сохраняемых.


Go to Top of Page

immortal

Russia
391 Posts

Posted - 04/04/2005 :  12:50:03  Visit immortal's Homepage
quote:
Originally posted by brace

не знаю что это - шейп листы.
наверное программерам это и нужно - мне нет.
Поле с названием LENGTH не я придумал
и логичнее переименовать что-то в вашей программе
ибо название любого поля должно отражать характер данных
в нем сохраняемых.




понятно учту, так и надо было написать: "сделай length = width", хм, вобщето это уже учтено, в файл replace добавляем две строки:
length
width

и усё

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

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

Edited by - immortal on 04/04/2005 13:18:33
Go to Top of Page

immortal

Russia
391 Posts

Posted - 04/04/2005 :  13:04:22  Visit immortal's Homepage
а ещё лучше
Длинна
Width


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

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

immortal

Russia
391 Posts

Posted - 04/04/2005 :  14:11:15  Visit immortal's Homepage
дальнейшее обсуждение моей программы visio2excel перенесём сюда: topic.asp@TOPIC_ID=478.html

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

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

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