![]() |
Форум visio.getbb.ru |
О форумах
Библиотека | Частые вопросы | Литература | Склад материалов Visio Navigator | Blog | Полезные ссылки | О сайте История Visio | Продукты Visio |
Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д. |
08.04.2009
Вычисление длин непрямых линий
Требуется вычислить длину произвольной линии (хотя бы дуги). Как это сделать?
Есть способ узнать длину сколь угодно кривой линии и её площадь. Но хлопотный. Сохрани файл в формате AutoCAD. Открой его AutoCAD-ом отметь нужный объект и набери команду LIST (AutoCAD имеет свою командную строку). В окне AREA площадь, а LENGTH длина линии либо периметр если объект замкнут. Для снятия отметок дави ESC. Если при открытии файла на экране пусто а в заголовке окна указано имя файла, значит чертеж находится за пределами экрана. Выбери VIEW-ZOOM-ALL увидишь весь чертеж. При нажатом Control колесико мыши приближает или удаляет. ВНИМАНИЕ: при создании чертежа в VISIO укажи правильно масштаб и единици измерения.
Как определить какая фигура данный Shape?
Мне хотелось бы знать можно ли определить какая фигура данный Shape в схеме, т.е. линия, круг, квадрат или еще что-то, и если можно то как?
Два варианта. Если шейп образован от какого-то мастер-шейпа (перетянут из шаблона), то его можно распознать по имени. Если он нарисован, то можно попытаться разобраться через секцию Geometry шейп-листа. Прямоугольник там представлен строкой MoveTo и четырьмя строками LineTo. Эллипс - только одной строкой Ellipse и т.д. То есть можно взять все фигуры, которые Вы собираетесь различать, посмотреть особенности данной секции в их шейп-листах, а потом при работе проверять наличие определенных ячеек в шейп-листе. В принципе можно даже выбирать из них значения и оперировать ими.
Как подсчитать длины всех видимых линий?
Есть ли в Visio 2002 встроенная функция или кто может макрос выслать. Задача такая - проект сети, убираю стены, двери и т.д., оставляю только короба определенного сечения на рабочем листе и хотелось бы подсчитать длины всех видимых линий (точнее просто сумму длин). Вручную считать долго и можно ошибиться, поэтому процесс нужно автоматизировать.
Макроса нет, но алгоритм для его построения представляется довольно легко. Только нужные короба надо рисовать одним типом шейпа (линии), чтобы он выделялся по имени, а стирать все остальное изображение не обязательно. Перебирается вся коллекция шейпов на рисунке, выбираются для обсчета только нужные шейпы. В этих шейпах в секции Geometry описана вся конфигурация линии (даже если она ломанная, только круглые не годятся). Перебираются строки секции и складываются длины, высчитываемые по двум координатам. Обсчитанные шейпы красятся в какой-нибудь цвет, чтобы глазом было заметно, не пропустил ли чего. Пропуски могут быть, если линии были сгруппированы, тогда их надо будет разгруппировать и повторить процесс или макрос сделать похитрее, чтобы в группу залезал. Потом останется только домножить на масштабы и все. Вариант 2. Если все нужные линии нарисованы не ломанными, а просто отрезками линий, то можно воспользоваться Tools / Report / Shape Inventory. Отчет вывести в Excel, суммировать Width и домножить на отношение масштабов. Только здесь нельзя подкрасить обсчитанное, придется верить на слово :). Добавка. Может быть даже проще не по именам ориентироваться, а располагать эти и только эти линии на одном слое. Тогда просто в фильтре указывается этот слой.