Поддерживать пропорции и относительное положение в группе Visio

В настоящее время я создаю пользовательскую форму контейнера в Visio 2010, но у меня возникли проблемы с правильным поведением изменения размера. Мой контейнер состоит из основного прямоугольника и небольшой треугольной формы в правом верхнем углу (см. Изображение). Обе эти фигуры сгруппированы.

Пользовательский контейнер, состоящий из прямоугольника и треугольника

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

Когда я устанавливаю поведение изменения размера треугольника на "Использовать настройку группы" (по умолчанию), оно изменяется при изменении размера:

треугольник деформирован

Когда я устанавливаю поведение изменения размера треугольника на "Reposition only", он не остается привязанным к прямоугольнику:

треугольник отделен

Есть ли способ получить желаемое поведение?

3 ответа

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

Интересующие вас формулы: PinX, PinY, Width и Height для прямоугольника. Ширина и высота должны оставаться неизменными, поэтому формула должна быть просто =GUARD(0,25 дюйма), где вы заменяете 0,25 любой шириной или высотой.

Когда вы группируете фигуры, Visio автоматически настраивает формулы для растягивания вложенных фигур и перемещает их пропорционально размеру фигуры группы. Так что, если вы посмотрите на формулу PinX для треугольника, это может быть что-то вроде: =Sheet.1!Width*0.95 . Это просто означает, что местоположение треугольника X всегда будет на 95% ширины родительской фигуры.

Но это не то, что вы хотите. То, что вы хотите, чтобы треугольник всегда находился на правом краю прямоугольника. Поэтому, чтобы сделать это, ваша формула просто должна быть вычислена, чтобы быть правым краем прямоугольника (его ширина) плюс половина ширины вашего треугольника (по умолчанию местоположение булавки является средней точкой вашей фигуры).

Таким образом, чтобы создать формулу, вам нужен идентификатор под фигуры прямоугольника, который вы можете найти, открыв диалоговое окно Формат-> Специальный для прямоугольника. Как только вы получите это число, формула PinX для треугольника должна быть просто =GUARD(Sheet.RectangleID!Width+(Width/2))

Я думаю, что PinY для треугольника должен быть установлен как есть, при условии, что ширина и высота защищены.

Отредактируйте форму для треугольника, чтобы ширина была функцией высоты. W= Н *AspectRatio

Убедитесь, что вы защищаете ячейку, чтобы она не изменилась.

Похоже, что это предполагаемое поведение: http://blogs.msdn.com/b/visio/archive/2007/01/30/working-with-resizemode.aspx

Другие вопросы по тегам