Описание системы координат, описание раздела в таблице свойств содержащей информацию о размерах и положении фигуры, нюансы обращения к ячейке.
Для начала поговорим о том, как в MS Visio описываются координаты фигуры.
С помощью пользовательского интерфейса геометрические параметры фигуры можно изменять используя окно «Размер и положение».
По умолчанию, точкой отсчета координат страницы является ее левый нижний угол.
Местоположение фигуры на странице определяется параметрами X, Y и «Положение булавки» (Pin Position).
По умолчанию «Положение булавки» располагается в геометрическом центре фигуры (В середине по центру).
С помощью выпадающего списка в окне «Размер и положение» можно изменять «Положение булавки».
В таблице свойств фигуры (ShapeSheet) параметры определяющие размеры и расположение фигуры содержатся в разделе
Shape Transform.
Параметрам X/Y в окне «Размер и положение» соответствуют параметры содержащиеся в ячейках PinX/PinY таблицы свойств. А параметр
«Положение булавки» соответствует комбинации параметров LocPinX и LocPinY.
выражение.Cells
("Имя ячейки"
)
выражение Переменная, представляющая объект Shape .
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Имя ячейки | Обязательный | Строка | Имя ячейки таблицы свойств фигуры. |
выражение. CellsSRC
( Section
, Row
, Column
)
выражение Переменная, представляющая объект Shape .
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Section | Обязательный | Integer | Индекс раздела ячейки. |
Row | Обязательный | Integer | Индекс строки в ячейке. |
Column | Обязательный | Integer | Индекс столбца ячейки. |
Некоторые языки программирования (например C#) поддерживают обращение к ячейкам только с использованием CellsSRC!
Разделу Shape Transform таблицы свойств соответствует раздел visSectionObject.
При программировании в среде VBA в приложении Visio, в другом приложении с использованием раннего связывания можно использовать специальные константы Visio из перечисления стандартных констант Visio. При использовании позднего связывания или языка программирования Visual Basic Script необходимо использовать числовые индексы соответствующие разделу, строкам и столбцам.
В нижеследующей таблице приведены названия констант, соответствующие значения и описания для строки и столбцов ячеек относящихся к разделу 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