Author |
Topic |
|
krys
55 Posts |
Posted - 10/24/2006 : 15:08:59
|
Добрый день. Я работаю с kоннекторами для которых должно действовать условие что, они могут сгибаться только под прямым углом. Имеется следующая ситуация : Ш1 Ш2 | | Коннектор расположен на чертеже под шейпом один конец коннектора подключен к етому шейпу, другой конец я программно подключаю к рядом стоящему шейпу, передавая Координатам линии EndX и EndY координаты Точки подключения данного шейпа. Я ожидаю увидеть следующее : Ш1 Ш2 | | |___|
Вместо етого я получаю Линию в Форме зуба:
Ш1 Ш2 | / | / |/
При етом в коннтекстном меню етой линии выбран пункт "прямоугольный" коннектор. Если я мышью кликаю еще раз на етом пункте, то линия принимает прямоугольную форму.
Я пробовал добавлять строки LineTo с нужными значениями в Секцию Geometry,но если v ячейкe ObjType я потом восстанавливаю изначальное значение равное 2 то эффект от этой акции нулевой
что я делаю неправильно?
Заранее спасибо за помощь. |
Edited by - krys on 10/24/2006 15:50:49 |
|
brace
Russia
358 Posts |
|
krys
55 Posts |
Posted - 10/25/2006 : 12:45:32
|
Привет. Для теста я создал два макроса: Sub Drop() Application.ActiveWindow.Page.Shapes.ItemFromID(3).Duplicate Dim UndoScopeID1 As Long UndoScopeID1 = Application.BeginUndoScope("Drop and Move") Dim vsoCell3 As Visio.Cell Dim vsoCell4 As Visio.Cell Set vsoCell1 = Application.ActiveWindow.Page.Shapes.ItemFromID(4).CellsU("BeginX") Set vsoCell2 = Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(7, 4, 0) vsoCell1.GlueTo vsoCell2 Set vsoCell1 = Application.ActiveWindow.Page.Shapes.ItemFromID(4).CellsU("EndX") Set vsoCell2 = Application.ActiveWindow.Page.Shapes.ItemFromID(2).CellsSRC(7, 4, 0) vsoCell1.GlueTo vsoCell2 Application.EndUndoScope UndoScopeID1, True End Sub
Sub Glue2() Dim UndoScopeID1 As Long UndoScopeID1 = Application.BeginUndoScope("Glue") Dim vsoCell1 As Visio.Cell Dim vsoCell2 As Visio.Cell Set vsoCell1 = Application.ActiveWindow.Page.Shapes.ItemFromID(4).CellsU("BeginX") Set vsoCell2 = Application.ActiveWindow.Page.Shapes.ItemFromID(4).CellsU("BeginY") vsoCell1.FormulaForceU = "126.0 mm" vsoCell2.FormulaForceU = "84.0 mm" Application.EndUndoScope UndoScopeID1, True
End Sub
Item1(ID=1) и Item2(ID=2): Пумпы-тип центрифуга, Item3 (ID=3) главный Трубопровод(без стрелок). Item4(ID=4) Дупликат трубопровода. Я не могу точно сказать как называется шаблон по-русски , вроде как "технология"
Трубопровод концами подключен к пунктам соединения Connections.X5,Connections.Y5 обоих пумп. Удерживая левую кнопку мыши на середине "основания" линии я вытягиваю линию.(концы линии зафиксированы)
Если я через меню по очереди выполняю операции прописанные в макросах, то я получаю результат отличный от того который я получаю при выполнении ниже показанного макроса.
Sub DuG2() Drop Glue2 End Sub
В первом случае начальный пункт дупликата получает новые координаты, но положение фигуры на чертеже не меняется. Во втором случае вся фигура смещается относительно начальной точки
Может мне кто-то обьяснить в чем разница.
|
Edited by - krys on 10/30/2006 02:41:05 |
|
|
brace
Russia
358 Posts |
Posted - 10/30/2006 : 09:23:21
|
если нужно чтобы шейп не сдвигался со своего места можно запретить ему это дело !!! Format > Protection выходит окно Protection в котором поставь птички в нужных местах. |
|
|
krys
55 Posts |
Posted - 10/30/2006 : 18:50:23
|
мне нужно что бы дубликат вел себя так же как и оригинал поетому не желательно вообще что либо менять:(. Меня же интересует почему дублицат в вроде бы схожих ситуациях ведет себя по разному .Может между операциями значения каких-то ячеек меняются? |
|
|
Tumanov
Russia
1198 Posts |
Posted - 10/30/2006 : 18:59:41
|
Может быть разница в том, что ручные операции не проходят на защищенных ячейках, а vsoCell1.FormulaForceU преодолевает Guard? |
|
|
krys
55 Posts |
Posted - 10/31/2006 : 14:03:00
|
Вручную ничего и не делается. Я ведь в обоих случаях выполняю одни и те же Макросы. |
|
|
brace
Russia
358 Posts |
Posted - 10/31/2006 : 18:16:22
|
чтобы шейп не двигался надо поставиь 1 в ячейки Lock Move X и Lock Move Y см. ShapeSheet секция Protection. это можно сделать пограммно ... |
|
|
krys
55 Posts |
Posted - 10/31/2006 : 21:08:27
|
Спасибо за подсказку. У меня вот какой вопрос: Как можно программно изменить путь динамического коннектора и как можно выбросить ненужные колени линии( а то если я один из концов коннектора приклеиваю к другой фигуре, он иногда так выкручивается, что и не поймешь, где начало где конец). Я попытался через изменение значений в ячейках Секции "Геометрия", но если ObjType=2, то я не вижу никаких перемен(переключение на 4 и обратно ничего не дает.) |
Edited by - krys on 10/31/2006 21:09:43 |
|
|
brace
Russia
358 Posts |
Posted - 11/01/2006 : 09:14:12
|
я конечно не знаю в каких ячейках чего надо менять если надо узнать -- делаю так : 1. просматриваю ShapeSheet до изменений формы шейпа 2. делаю нужные изменения шейпа 3. просматриваю ShapeSheet еще раз и смотрю что изменилось.
|
|
|
|
Topic |
|