Форум пользователей Visio
http://visio.getbb.ru/

Склейка шейпов не коннекторов
http://visio.getbb.ru/viewtopic.php?f=6&t=1029
Страница 1 из 1

Автор:  Bill17 [ 29 сен 2016, 14:44 ]
Заголовок сообщения:  Склейка шейпов не коннекторов

Подскажите как склеить два шейпа, ни один из которых не является OneD?

Пробовал как-то так:
Код:
shp1.CellsU("PinX").GlueTo shp2.Cells("PinX")

Но выдаётся ошибка "Недопустимый исходный объект для данного действия."
Похоже это надо делать как-то по-другому.

Автор:  Surrogate [ 29 сен 2016, 15:01 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

Bill17 писал(а):
Подскажите как склеить два шейпа,
что значит склеить ?

Автор:  Bill17 [ 29 сен 2016, 15:17 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

Это значит приклеить один шейп к другому. Ну через GlueTo или GlueToPos.

Автор:  Shishok [ 29 сен 2016, 15:18 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

Если надо приклеить конец коннектора/линии к 2D шейпу:
Сначала выделить коннектор, потом шейп и:

Код:
Sub ShapeGlue()
Dim shp1 As Visio.Shape, shp2 As Visio.Shape
    Set shp1 = ActiveWindow.Selection(1)
    Set shp2 = ActiveWindow.Selection(2)
    shp1.CellsU("EndX").GlueTo shp2.CellsSRC(1, 1, 0) ' конец коннектора/линии к шейпу
    shp1.Cells("EndX").GlueTo shp2.Cells("Connections.X1") ' конец коннектора/линии к точке соединения шейпа (это лучше)
End Sub

Автор:  Bill17 [ 29 сен 2016, 15:24 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

Коннекторы - это стрелки? Мне надо не стрелки соединять, а два 2D шейпа.

Автор:  Tumanov [ 29 сен 2016, 15:27 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

PinX-ами замучаешься 2D шейпы клеить...
Лучше всего клеить Connection Points-ами. Причем нужно помнить, что они должны быть разными и клеить которые "наружу" к тем, которые "внутрь".
Вот запись макроса
Код:
    Set vsoCell3 = Application.ActiveWindow.Page.Shapes.ItemFromID(2).CellsSRC(visSectionConnectionPts, 0, 0)
    Set vsoCell4 = Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(visSectionConnectionPts, 0, 0)
    vsoCell3.GlueTo vsoCell4

И опять же надо помнить, что длинные "гирлянды" при перетаскивании разваливаются. То есть клеить можно, но увлекаться нельзя.

Автор:  Shishok [ 29 сен 2016, 15:29 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

Цитата:
Коннекторы - это стрелки? Мне надо не стрелки соединять, а два 2D шейпа.


Не внимательно прочитал.

Автор:  Tumanov [ 29 сен 2016, 15:43 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

.

Вложения:
glue2.gif
glue2.gif [ 80.82 Кб | Просмотров: 900 ]

Автор:  Гость [ 29 сен 2016, 15:48 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

Tumanov писал(а):
PinX-ами замучаешься 2D шейпы клеить...
Лучше всего клеить Connection Points-ами. Причем нужно помнить, что они должны быть разными и клеить которые "наружу" к тем, которые "внутрь".
Вот запись макроса
Код:
    Set vsoCell3 = Application.ActiveWindow.Page.Shapes.ItemFromID(2).CellsSRC(visSectionConnectionPts, 0, 0)
    Set vsoCell4 = Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(visSectionConnectionPts, 0, 0)
    vsoCell3.GlueTo vsoCell4

И опять же надо помнить, что длинные "гирлянды" при перетаскивании разваливаются. То есть клеить можно, но увлекаться нельзя.


Это работает, но возникла другая проблема. При таком коннекте шейпы сместились и прикрепились не в нужном мне месте.
Подскажите как это будет выглядеть при использовании GlueToPos?

Автор:  Surrogate [ 29 сен 2016, 16:09 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

MSDN в статье Cell.GlueToPos Method (Visio) писал(а):
Cell.GlueToPOS Method (Visio)
Glues one shape to another from a cell in the first shape to an x,y position in the second shape.
в примере первый шейп 1D!

Автор:  Tumanov [ 29 сен 2016, 16:14 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

Цитата:
При таком коннекте шейпы сместились

А как еще?
Второй шейп всегда либо растягивается (коннектор), либо смещается (2D).

Автор:  Tumanov [ 29 сен 2016, 16:23 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

.

Вложения:
glue3.gif
glue3.gif [ 75.19 Кб | Просмотров: 835 ]

Автор:  Bill17 [ 29 сен 2016, 16:26 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

Не понял к чему выделенное, если в той же статье пишут, что этим методом можно клеить два 2D объекта.
А вот в статье GlueToPos не особо написано про склейку двух 2D объектов.

Цитата:
А как еще?
Второй шейп всегда либо растягивается (коннектор), либо смещается (2D).


Мне бы хотелось 2D объект в точке склеить с другим 2D объектом.

Автор:  Bill17 [ 29 сен 2016, 16:39 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

Да, это то, что нужно. 1D к 2D я клеить умею, а вот 2D к 2D с помощью GlueToPos можно приклеить?

Автор:  Tumanov [ 29 сен 2016, 17:14 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

Судя по справке, нельзя.
Но что мешает сначала поставить нужные Connection points, а потом к ним приклеить? Так точно можно.

Автор:  Bill17 [ 29 сен 2016, 17:30 ]
Заголовок сообщения:  Re: Склейка шейпов не коннекторов

Спасибо, я понял как всё реализовать.

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/