⚒️
MS Visio Automation Hints
  • 📖MS Visio VBA
  • 💡Объектная модель Visio
  • ⚠️Проблема с отображением кириллицы в VBA-редакторе
  • 💻Как изменить координаты фигуры программно
  • 📌Преобразование в абсолютные координаты страницы
  • 🕹️Эмуляция работы с интерфейсом приложения
  • 📜Применение CommandBars в Visio 2010+
Powered by GitBook
On this page
  • Особенности системы координат
  • «Положение булавки» или Pin Point
  • Раздел ShapeTransform в ShapeSheet
  • Как программно изменять размеры, ориентацию и местоположение фигуры
  • Примеры

Как изменить координаты фигуры программно

Описание системы координат, описание раздела в таблице свойств содержащей информацию о размерах и положении фигуры, нюансы обращения к ячейке.

PreviousПроблема с отображением кириллицы в VBA-редактореNextПреобразование в абсолютные координаты страницы

Last updated 2 years ago

Особенности системы координат

Для начала поговорим о том, как в MS Visio описываются координаты фигуры.

С помощью пользовательского интерфейса геометрические параметры фигуры можно изменять используя окно «».

По умолчанию, точкой отсчета координат страницы является ее левый нижний угол. Местоположение фигуры на странице определяется параметрами X, Y и «Положение булавки» (Pin Position).

«Положение булавки» или Pin Point

По умолчанию «Положение булавки» располагается в геометрическом центре фигуры (В середине по центру). С помощью выпадающего списка в окне «Размер и положение» можно изменять «Положение булавки».

Раздел ShapeTransform в ShapeSheet

Параметрам X/Y в окне «Размер и положение» соответствуют параметры содержащиеся в ячейках PinX/PinY таблицы свойств. А параметр «Положение булавки» соответствует комбинации параметров LocPinX и LocPinY.

Как программно изменять размеры, ориентацию и местоположение фигуры

В Visio вся информация о параметрах объекта хранится в ячейках таблицы свойств. Существует два способа обращения к ячейкам:

  • Синтаксис

    выражение.Cells("Имя ячейки")

    Параметры

    Имя

    Обязательный или необязательный

    Тип данных

    Описание

    Имя ячейки

    Обязательный

    Строка

    Имя ячейки таблицы свойств фигуры.

  • Синтаксис

    выражение. CellsSRC( Section , Row , Column )

    Параметры

    Имя

    Обязательный или необязательный

    Тип данных

    Описание

    Section

    Обязательный

    Integer

    Индекс раздела ячейки.

    Row

    Обязательный

    Integer

    Индекс строки в ячейке.

    Column

    Обязательный

    Integer

    Индекс столбца ячейки.

Разделу Shape Transform таблицы свойств соответствует одна из строк в разделе visSectionObject.

В нижеследующей таблице приведены названия констант, соответствующие значения и описания для строки и столбцов ячеек относящихся к разделу Shape Transform таблицы свойств.

Константа

Значение

Описание

visSectionObject

1

Содержит общие неповторяющихся свойства объекта.

visRowXFormOut

1

Индекс строки в разделе visSectionObject , который содержится информация о разделе Shape Transform (параметры размеров и местоположения фигуры).

visXFormWidth

2

Ячейка Width (раздел "Shape Transform")

visXFormHeight

3

Ячейка Height (раздел "Shape Transform")

visXFormAngle

6

Ячейка Angle (раздел "Shape Transform")

visXFormPinX

0

Ячейка PinX (раздел "Shape Transform")

visXFormPinY

1

Ячейка PinY (раздел "Shape Transform")

visXFormLocPinX

4

Ячейка LocPinX (раздел "Shape Transform")

visXFormLocPinY

5

Ячейка LocPinY (раздел "Shape Transform")

visXFormFlipX

7

Ячейка FlipX (раздел "Shape Transform")

visXFormFlipY

8

Ячейка FlipY (раздел "Shape Transform")

visXFormResizeMode

9

Ячейка ResizeMode (раздел "Shape Transform")

Примеры

Sub ShapeTransform_Cells()
Dim sh As Shape 
Set sh = ActiveWindow.Selection.PrimaryItem
sh.Cells("Width").FormulaU = "50 mm"
sh.Cells("Height").FormulaU = "30 mm"
sh.Cells("Angle").FormulaU = "33 deg"
sh.Cells("PinX").FormulaU = "60 mm"
sh.Cells("PinY").FormulaU = "60 mm"
sh.Cells("LocPinX").FormulaU = "Width*0"
sh.Cells("LocPinY").FormulaU = "Height*1"
sh.Cells("FlipX").FormulaU = "True"
sh.Cells("FlipY").FormulaU = "True"
sh.Cells("ResizeMode").FormulaU = "1"
End Sub 
  
Sub ShapeTransform_CellsSRC()
Dim sh As Shape
Set sh = ActiveWindow.Selection.PrimaryItem
sh.CellsSRC(visSectionObject, visRowXFormOut, visXFormWidth).FormulaU = "50 mm"
sh.CellsSRC(visSectionObject, visRowXFormOut, visXFormHeight).FormulaU = "50 mm"
sh.CellsSRC(visSectionObject, visRowXFormOut, visXFormAngle).FormulaU = "16 deg"
sh.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinX).FormulaU = "50 mm"
sh.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinY).FormulaU = "55 mm"
sh.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinX).FormulaU = "Width*0.5"
sh.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinY).FormulaU = "Height*0.5"
sh.CellsSRC(visSectionObject, visRowXFormOut, visXFormFlipX).FormulaU = "FALSE"
sh.CellsSRC(visSectionObject, visRowXFormOut, visXFormFlipY).FormulaU = "FALSE"
sh.CellsSRC(visSectionObject, visRowXFormOut, visXFormResizeMode).FormulaU = "FALSE"
End Sub

В параметры определяющие размеры и расположение фигуры содержатся в разделе .

с указанием непосредственно имени ячейки ()

выражение Переменная, представляющая объект .

с указанием индексов раздела, строки раздела и столбца в строке ( - Section (Раздел), Row (Строка), Column (Столбец)).

выражение Переменная, представляющая объект .

Некоторые языки программирования (например ) поддерживают обращение к ячейкам только с использованием CellsSRC!

При программировании в среде VBA в приложении Visio, в другом приложении с использованием можно использовать специальные константы Visio из . При использовании позднего связывания или языка программирования необходимо использовать числовые индексы соответствующие , и .

💻
таблице свойств фигуры (ShapeSheet)
Shape Transform
Cells
Shape
CellsSRC
Shape
C#
раннего связывания
перечисления стандартных констант Visio
Visual Basic Script
разделу
строкам
столбцам
Размер и положение
Окно «Размер и положение»
Определение координат фигуры
Положение булавки
Раздел Shape Transform