![]() |
Форум visio.getbb.ru |
О форумах
Библиотека | Частые вопросы | Литература | Склад материалов Visio Navigator | Blog | Полезные ссылки | О сайте История Visio | Продукты Visio |
Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д. |
07.04.2022
20.12.2021
09.06.2021
19.01.2020
01.11.2019
13.08.2019
03.03.2018
06.08.2017
05.02.2016
01.01.2016
16.11.2014
17.09.2014
24.07.2014
24.07.2014
14.06.2014
17.04.2014
17.04.2014
16.04.2014
16.03.2012
21.03.2011
10.07.2010
21.04.2010
01.03.2010
10.07.2007
01.01.2007
14.12.2006
04.10.2006
03.10.2006
05.09.2006
Как можно закрепить длину линии?
Как можно закрепить длину линии (а координаты можно было бы менять)? конкретно: Надо перенести с рисунка многоугольник, у которого точно известны только длины сторон. А может у кого-нибудь есть такой многоугольник (вручную вводится кол-во сторон и их длина, а потом на листе можно произвольно менять форму - длина сторон не меняется) p/s прошу сильно не пинать, первый раз начал работать с Visio
Просто закрепить длину линии (ребра многоугольника) нельзя. Но можно подойти с другой стороны. Visio рисует геометрическую фигуру последовательным применением функции MoveTo(x,y). Значит если вычислить координаты x и y всех точек многоугольника так, чтобы они удовлетворяли заданным условиям (фиксированные расстояния между вершинами), то задача будет решена. Останется только вписать соответствующие формулы в ячейки секции Geometry шейп-листа и защитить их функцией Guard от изменения. То есть задача основывается на решении математической задачи построения многоугольника по заданным длинам сторон. Надо будет только придумать, куда вставить управляемую переменную, которая будет зависеть от воздействия оператора. Например, мышкой можно будет тянуть вершину многоугольника по координате x, а координата y этой вершины и обе координаты соседней вершины (минимум одной) должны вычисляться как функции этой переменной. Причем управляться может не одна соседняя вершина, а несколько. И тянуть можно в принципе любую вершину, что еще более запутывает вычисления. Короче, задача в принципе разрешима, но не думаю, чтобы у кого-то был такой многоугольник.
Как в Visio 2002 включить автопозиционирование шаблона?
Как в Visio 2002 включить автопозиционирование шаблона? Т.е. чтоб при размещении на листе он автоматически вставал на одно и то же место. (Пример - стандартный штамп для А4,А3 и т.п.)
Рисуешь штамп, группируешь и в ShapeSheet вносишь:
Width "=GUARD(196 mm/ThePage!PageScale*ThePage!DrawingScale)" Height "=GUARD(283 mm/ThePage!PageScale*ThePage!DrawingScale)" PinX "=GUARD(ThePage!PageWidth-(3 mm/ThePage!PageScale*ThePage!DrawingScale))" PinY "=GUARD(7 mm/ThePage!PageScale*ThePage!DrawingScale)" LocPinX "=GUARD(200 mm/ThePage!PageScale*ThePage!DrawingScale)" LocPinY "=GUARD(0)"
Это все справедливо для полного штампа А4. С А3, я думаю, проблем не возникнет. На сайте в примерах что-то подобное уже было...
Как в EventDrop (секция Events) указать предыдущий объект?
Добрый день! Как сделать следующее: 1. в EventDrop (секция Events) указать предыдущий объект (т.е. шейп, который до этого бросили)? 2. как можно программно (скажем VB)? перед тем как бросить шейп на рисунок изменить у него какое-нить поле в ShapeSheet?
1. В EventDrop можно и не пытаться. То есть можно придумать какое-нибудь извращение через третий шейп, в котором отслеживать последний размещенный на странице шейп. Но будет куча сложностей, когда шейп бросят, потом удалят, потом бросят новый и т.д. На все случаи не рассчитаешь, так что лучше этим и не заниматься. А вот с VBA наверное можно попробовать смотреть последний шейп в коллекции. Они вроде всегда в конец добавляются. 2. Нет никакой разницы, когда менять поле - перед тем как бросить или после того, это не заметно. Так что смело обрабатывайте событие ShapeAdded и в этом обработчике изменяйте поле.