Форма Visio - получить позицию X, Y - PullRequest
4 голосов
/ 17 сентября 2010

Мне удалось программно вставить фигуру в Visio с помощью кода ниже:

ActiveWindow.Page.Drop(VisioApp.Documents["ORGCH_M.VSS"].Masters.ItemU["Executive"], 5.433071, 7.559055);

Как мне программно получить координаты X, Y после вставки фигуры?

Спасибо!

1 Ответ

5 голосов
/ 20 сентября 2010

Чтобы получить координаты новой фигуры, сначала получите ссылку на новую фигуру. Page.Drop вернет эту ссылку.Затем посмотрите в этом объекте формы для его PinX и PinY ячеек.Это даст вам координаты в единицах Visio по умолчанию, т.е. в дюймах.Вот пример в VBA:

Dim newShape As Visio.Shape
Dim x As Double
Dim y As Double

Set newShape = ActiveWindow.Page.Drop(Visio.Application.Documents("ORGCH_M.VSS")
                    .Masters.ItemU("Executive"), 5.433071, 7.559055)

x = newShape.Cells("PinX")
y = newShape.Cells("PinY")

Я заметил, что вы работаете в метрической схеме (т. Е. _M в имени файла).Вы можете предпочесть работать в другом отделении.Вот тот же пример с использованием миллиметров:

Dim newShape As Visio.Shape
Dim xIn As Double
Dim yIn As Double
Dim xOut As Double
Dim yOut As Double

xIn = Visio.Application.ConvertResult(100, visMillimeters, visInches)
yIn = Visio.Application.ConvertResult(120, visMillimeters, visInches)

Set newShape = ActiveWindow.Page.Drop(Visio.Application.Documents("ORGCH_M.VSS")
                    .Masters.ItemU("Executive"), xIn, yIn)

xOut = newShape.Cells("PinX").Result(visMillimeters)
yOut = newShape.Cells("PinY").Result(visMillimeters)
...