Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 18 окт 2017, 11:08

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)



Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
 Заголовок сообщения: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 14:44 
Подскажите как склеить два шейпа, ни один из которых не является OneD?

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

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


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 15:01 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Bill17 писал(а):
Подскажите как склеить два шейпа,
что значит склеить ?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 15:17 
Это значит приклеить один шейп к другому. Ну через GlueTo или GlueToPos.


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 15:18 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 431
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Если надо приклеить конец коннектора/линии к 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


Последний раз редактировалось Shishok 29 сен 2016, 15:28, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 15:24 
Коннекторы - это стрелки? Мне надо не стрелки соединять, а два 2D шейпа.


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 15:27 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 933
Очков репутации: 100578

Добавить очки репутацииУменьшить очки репутации
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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 15:29 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 431
Использую Visio c: 2008
Очков репутации: 97

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


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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 15:43 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 933
Очков репутации: 100578

Добавить очки репутацииУменьшить очки репутации
.


Вложения:
glue2.gif
glue2.gif [ 80.82 Кб | Просмотров: 256 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 15:48 
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?


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 16:09 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
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!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 16:14 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 933
Очков репутации: 100578

Добавить очки репутацииУменьшить очки репутации
Цитата:
При таком коннекте шейпы сместились

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 16:23 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 933
Очков репутации: 100578

Добавить очки репутацииУменьшить очки репутации
.


Вложения:
glue3.gif
glue3.gif [ 75.19 Кб | Просмотров: 212 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 16:26 
Не понял к чему выделенное, если в той же статье пишут, что этим методом можно клеить два 2D объекта.
А вот в статье GlueToPos не особо написано про склейку двух 2D объектов.

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


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


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 16:39 
Да, это то, что нужно. 1D к 2D я клеить умею, а вот 2D к 2D с помощью GlueToPos можно приклеить?


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 17:14 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 933
Очков репутации: 100578

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Склейка шейпов не коннекторов
СообщениеДобавлено: 29 сен 2016, 17:30 
Спасибо, я понял как всё реализовать.


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB