Author |
Topic |
Kuzmich
18 Posts |
Posted - 03/31/2005 : 18:46:32
|
Как экспортировать в БД данные таким образом: имя объекта|с какими объектами соединен(перечисление)|длины соединяющих линий(перечисление) Заранее спасибо... |
|
Tumanov
Russia
1198 Posts |
Posted - 03/31/2005 : 20:24:06
|
Нужно писать программу (макрос, Add-on...) Без программы поставляемыми средствами можно экспортировать только свойства шейпов, значения ячеек шейп-листа. А приписать шейпу список связанных с ним шейпов нельзя.
|
|
|
immortal
Russia
391 Posts |
Posted - 04/01/2005 : 09:12:14
|
quote: Originally posted by Kuzmich
Как экспортировать в БД данные таким образом: имя объекта|с какими объектами соединен(перечисление)|длины соединяющих линий(перечисление) Заранее спасибо...
опишите проблему подробнее, возможно решение уже есть или над ним я уже работаю, или можно найти другое решение, или посмотрите топик для заказчиков forum.asp@FORUM_ID=5.html возможно там есть интересующие вас вопросы, можете туда написать подробно вашу проблему, и я или ещё кто нить ее решит, если вы владеете формулами екселя то можите воспользоваться моей программой http://www.immortal.vstu.edu.ru/visio/excel.rar, с помощью её думаю можно решить вашу задачу обсуждение программы велось тут: topic.asp@TOPIC_ID=444.html вопросы и предложения по ней можно мне на мыло или в асью
визио 2003 форэвер
...а вобще-то я белый и пушистый. |
|
|
brace
Russia
358 Posts |
Posted - 04/01/2005 : 12:39:35
|
делайте так: View > Size&Position Window затем кликаем на нужную линию и смотрим строку Lenght в ней икомая длина линии в мм. То есть понимаем что visio уже подсчитал длину каждой линии и хранит это где то в башке. а теперь надеюсь профи нам подскажут как экспортировать эти данные в Excel or Access or TXT файл.
|
|
|
immortal
Russia
391 Posts |
Posted - 04/01/2005 : 14:13:33
|
quote: Originally posted by brace ... профи ...
хватит обзываться я уже сказал quote: можите воспользоваться моей программой http://www.immortal.vstu.edu.ru/visio/excel.rar
более подробно надо знать проблему чтобы точнее дать ответ, вариантов много
визио 2003 форэвер
...а вобще-то я белый и пушистый. |
|
|
Tumanov
Russia
1198 Posts |
Posted - 04/01/2005 : 19:38:17
|
Видите ли, brace, Ваше сообщение звучит так, как будто Вы знаете, что все очень легко решается, а вот люди, называющие себя "профи", на самом деле профаны. Подсказывать им приходится... Поэтому начнем с отступления. Я себя "профи" не считаю. Не имею никаких лицензий, не проходил специального обучения, профессиональная деятельность практически не связана с Visio. До всего дошел думая и изучая подвернувшуюся информацию. Тем не менее, знаний у меня гораздо больше, чем у новичков. И трудности иногда вижу там, где они их и не ожидают. Так вот, Size&Position Window - это не основной движок Visio, а отдельная дополнительная программа. Она может подсчитать длину селектированной линии, но это совсем не значит, что Visio эту длину уже где-то хранит. Да и считает она далеко не все. Нарисуйте ломаную линию и посмотрите, что Вам скажет про ее длину Size&Position Window... Но задача-то ставится несколько сложнее, чем определение длины линии: "...имя объекта|с какими объектами соединен(перечисление)|...". То есть для каждого объекта нужно составить список соединенных с ним объектов. Программно эта задача решается довольно легко, о чем и говорил immortal, а вот решить ее только за счет стандартного экспорта, не прибегая к программированию, невозможно. А для написания программы, естественно, нужны некоторые уточнения. Да никто и не просил сразу программу писать, спрашивали только о способе решения задачи. Так какие у Вас претензии к "профи"? Вы считаете, что они мешают новичкам, и этот сайт лучше закрыть? |
|
|
immortal
Russia
391 Posts |
Posted - 04/02/2005 : 09:43:59
|
вот-вот... начнем разбор по порядку, сначала у нас идёт имя объекта наверно не устроит получение имени того которое автоматически присваивает визио при вставке объекта (меню Формат - особый - Имя:), правильно?, думаю надо что нибудь "осязаемое" т.е например марку оборудования и возможно номер на плане, для этого у шейпов необходимо поставить кустом проперти соответственно, и желательно исправить установленные по умолчанию имена 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 |
|
|
Kuzmich
18 Posts |
Posted - 04/02/2005 : 22:49:11
|
quote: опишите проблему подробнее, возможно решение уже есть или над ним я уже работаю
Попробую по-подробнее... Имя лучше действительно лучше из Custom Properties... Возможно еще пару значений оттуда же, к примеру с именами Prop1 и Prop2, будет что-то, вроде целостности элемента, значение строковое... Что касается соединения, то перечисление элементов, соединенных линейно с исходным... Узлы также желательно описать как элементы... В итоге что-то вроде этого: Объект1|Объект3;Объект7|5;17|Свойство1|Свойство2 Вообще нужно экспортировать в SQL Server, но это пока не самое важное... |
|
|
brace
Russia
358 Posts |
Posted - 04/04/2005 : 09:04:54
|
Ладно, с сего дня будем считать слово профи ругательным. Хотя толковый словарь так не считает. Обязуюсь не использовать. Однако: кто нить может написать макрос для экспорта длины линии из таблицы Size & Position в файл Excel/Access/TXT. Речь идет конечно о прямых линиях. Что касается кустом проперти то все они экспортируются штатным средством Tools > Reports |
|
|
immortal
Russia
391 Posts |
Posted - 04/04/2005 : 11:08:15
|
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 |
|
|
brace
Russia
358 Posts |
Posted - 04/04/2005 : 11:51:34
|
когда мы кликаем на линию то в таблице Size & Position нет поля Width а только Length те visio понимает что у линии (кабеля) может быть только длина. Она то всем и нужна. И при чем здесь Width ??? |
|
|
immortal
Russia
391 Posts |
Posted - 04/04/2005 : 12:11:09
|
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 |
|
|
brace
Russia
358 Posts |
Posted - 04/04/2005 : 12:35:04
|
не знаю что это - шейп листы. наверное программерам это и нужно - мне нет. Поле с названием LENGTH не я придумал и логичнее переименовать что-то в вашей программе ибо название любого поля должно отражать характер данных в нем сохраняемых.
|
|
|
immortal
Russia
391 Posts |
Posted - 04/04/2005 : 12:50:03
|
quote: Originally posted by brace
не знаю что это - шейп листы. наверное программерам это и нужно - мне нет. Поле с названием LENGTH не я придумал и логичнее переименовать что-то в вашей программе ибо название любого поля должно отражать характер данных в нем сохраняемых.
понятно учту, так и надо было написать: "сделай length = width", хм, вобщето это уже учтено, в файл replace добавляем две строки: length width и усё
визио 2003 форэвер
...а вобще-то я белый и пушистый. |
Edited by - immortal on 04/04/2005 13:18:33 |
|
|
immortal
Russia
391 Posts |
Posted - 04/04/2005 : 13:04:22
|
а ещё лучше Длинна Width
визио 2003 форэвер
...а вобще-то я белый и пушистый. |
|
|
immortal
Russia
391 Posts |
Posted - 04/04/2005 : 14:11:15
|
дальнейшее обсуждение моей программы visio2excel перенесём сюда: topic.asp@TOPIC_ID=478.html
визио 2003 форэвер
...а вобще-то я белый и пушистый. |
Edited by - immortal on 04/04/2005 14:12:37 |
|
|
Topic |
|
|
|