Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д.

Координаты

Ответы на вопросы

Подскажите, как в VBA получить координаты шейпа

Подскажите, как в VBA получить координаты шейпа относительно страницы, на которой он находится? 

Координаты шейпа относительно листа рисунка хранятся в шейп-листе данного шейпа в секции ShapeTransform в ячейках PinX и PinY. При этом под координатами шейпа понимаются координаты центра описанного прямоугольника. Доступ из VBA производится по имени ячейки .Cells("PinX") и .Cells("PinY").
Например, выражение ActivePage.Shapes(1).Cells("PinX") даст X координату первого шейпа на активной странице.
Координаты считаются от левого нижнего угла страницы в дюймах. 

Где взять инфу про Pinx и Piny?

Где взять инфу про Pinx и Piny? 

Немножко есть прямо в Help'е, только не в основном, а в том, который открывается из окна Visual Basic. Побольше - в DVS - (Developing Visio Solutions), который чаще всего входит в комплект поставки Visio. Правда, и то и другое на английском.
Да и что о них говорить-то особо. Просто координаты центра вращения шейпа, которые сидят в секции Shape Transform. 

Как обратиться к шейпу по координатам?

Подскажите, можно ли узнать принадлежит ли точка с координатами X,Y какому-нибудь шейпу (и соответственно его имя), и принадлежит ли эта точка какой то линии в этом шейпе (если он составной из нескольких фигур (линий))? 

Например, перебираем всю коллекцию шейпов, вычисляя для них 

intRet = object.HitTest(x, y, tolerance) 

где object - очередной шейп.
Как только натыкаемся на шейп, выдающий visHitOnBoundary или visHitInside, выбираем имя данного шейпа. 

Как определить путь?

Я хочу взять элемент из трафарета. У меня на компьютере он лежит
C:\Program Files\Visio\Solutions\папкастрафаретами ,
а у соседа чего-то там Visio10/1033/ и вообще какой-то другой путь.
Если я напишу
Set stnObj = appVisio.Documents.Open(appVisio.Path &
"\Solutions\centel\adress_узел.vss"), то соседний компьютер все равно не поймет, у него же между программной директорией и папкой Solutions лежит еще папка 1033.
Нельзя ли как-то указать на папку Solutions вне зависимости от версии Visio? 

У объекта Application существуют свойства:
AddonPaths, StartupPaths, DrawingPaths, StencilPaths, FilterPaths, TemplatePaths, and HelpPaths.
В данном случае следует использовать
Set stnObj = appVisio.Documents.Open(appVisio.StencilPaths &
"\centel\adress_узел.vss")