All Forums
 Категория Visio
 Форум Вопросы и ответы
 Атоматическое соединение фигур
Previous Page
Author Previous Topic Topic Next Topic

ivan

31 Posts

Posted - 06/19/2006 :  10:10:43
а если визио соединяет в именно своем порядке, а мне надо в определенном?
Go to Top of Page

brace

Russia
358 Posts

Posted - 06/19/2006 :  10:19:33
соединяй их попарно : пару за парой

ActiveWindow.DeselectAll
ActiveWindow.Select vsoShape1, visSelect
ActiveWindow.Select vsoShape2, visSelect
Application.ActiveWindow.Selection.ConnectShapes
Go to Top of Page

ivan

31 Posts

Posted - 06/20/2006 :  11:51:29
на второй строке выдал ошибку
Go to Top of Page

ivan

31 Posts

Posted - 06/20/2006 :  12:02:00
визио нужен айди, шобы знать в каком порядке лепить связи
Go to Top of Page

brace

Russia
358 Posts

Posted - 06/20/2006 :  12:36:54
visio может соединять и без айди если ему дать названия шейпов
читай статью ConnectShapes method ...в хелпе visio VBE.
Go to Top of Page

ivan

31 Posts

Posted - 06/20/2006 :  12:41:58
Connects two or more selected shapes with a dynamic connector. Returns Nothing.

object.ConnectShapes()

object Required. An expression that returns a Selection object that contains the shapes to connect.



Version added
2003

Remarks
Calling the ConnectShapes method is equivalent to clicking Connect Shapes on the Shape menu.



Example
This Microsoft Visual Basic for Applications (VBA) macro shows how to use the ConnectShapes method to connect two shapes.

Public Sub ConnectShapes_Example()

Dim vsoShape1 As Visio.Shape
Dim vsoShape2 As Visio.Shape

Set vsoShape1 = Application.ActiveWindow.Page.DrawRectangle(2, 9, 4, 7)
Set vsoShape2 = Application.ActiveWindow.Page.DrawRectangle(5, 6, 7, 3)

ActiveWindow.DeselectAll
ActiveWindow.Select vsoShape1, visSelect
ActiveWindow.Select vsoShape2, visSelect
Application.ActiveWindow.Selection.ConnectShapes

End Sub

это?
Go to Top of Page

ivan

31 Posts

Posted - 06/20/2006 :  13:00:45
по поводу названий фигур в хелпе, шо-то там примера такого нет.
зато вот новый вопрос. как переделать строку:
"Set vsoShape1 = Application.ActiveWindow.Page.DrawRectangle(2, 9, 4, 7)
Set vsoShape2 = Application.ActiveWindow.Page.DrawRectangle(5, 6, 7, 3)"

в "Application.Windows.ItemEx("#208;#232;#241;#243;#237;#238;#234;1").Activate
Application.ActiveWindow.Page.Drop Application.Documents.Item("C:\Documents and Settings\kon\#208;#224;#225;#238;#247;#232;#233; #241;#242;#238;#235;\#207;#240;#238;#246;#229;#241;#241;#251;\#216;#224;#225;#235;#238;#237;#251; #244;#243;#237;#234;#246;#232;#233;.vss").Masters.ItemU("Process"), 0.590551, 10.826772

Application.Windows.ItemEx("#208;#232;#241;#243;#237;#238;#234;1").Activate
Application.ActiveWindow.Page.Drop Application.Documents.Item("C:\Documents and Settings\kon\#208;#224;#225;#238;#247;#232;#233; #241;#242;#238;#235;\#207;#240;#238;#246;#229;#241;#241;#251;\#216;#224;#225;#235;#238;#237;#251; #244;#243;#237;#234;#246;#232;#233;.vss").Masters.ItemU("Process"), 3.051181, 10.03937" шобы фигуры брались из конкретного трафарета?

тем более коннектор появляется без определенного направления:(
кроме того, если возможен вариант соединения по названиям фигур то как засунуть это в код? по поводу последнего вопроса, позырю статью, которую дал Туманыч, о, прощу прощения, Туманов
Go to Top of Page

ivan

31 Posts

Posted - 06/20/2006 :  13:17:18
пока вопросов нет кроме одного, если нужен коннектор со стрелочкой к одному главному объекту(фигуре)?
Go to Top of Page

brace

Russia
358 Posts

Posted - 06/20/2006 :  13:39:10
статья та самая...
я не программер макросы писать не умею
но ведь визио 2003 сам макросы пишет...
1 включи макрорекордер
2 ручками соедини переферию с центральным шейпом
3 выключи макрорекордер
посмотри на получившийся макрос... возможно он тебе подойдет.


Go to Top of Page

ivan

31 Posts

Posted - 06/20/2006 :  16:48:45
так я это и делал, дело было в другом, если у тебя 100 фигур, которые надо соединять, то можно вспотеть и время потратить попусту, соединяя все это вручную. таких людей я знаю, но меня их труд не привлекает.
Go to Top of Page

brace

Russia
358 Posts

Posted - 06/20/2006 :  17:57:16
ну не так ты меня понял :
записав макрос который сединяет 3 шейпа с центральным шейпом
можно понять принцип построения макроса
а затем просто добавить в макрос нужное кол-во шейпов
через их айди или названия...
Go to Top of Page

ivan

31 Posts

Posted - 06/21/2006 :  11:22:17
я это делал, на предыдущей странице я выложил лист того (очень длинный), шо я делал. я записал макрос, и просто добавил еще айди тех, кого хотел соединить, но выдал он ошибку%( и не хотел работать
Go to Top of Page

ivan

31 Posts

Posted - 06/21/2006 :  11:24:16
quote:
Originally posted by brace

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



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