Author |
Topic |
|
oleg753
26 Posts |
Posted - 06/11/2009 : 10:06:35
|
Как в Визио узнать длину линии, нарисованой инструментом "произв. линия"? Надо для вычисления длины кабельной трассы. Вообще, есть ли такая возможность? |
|
bdfy
Belarus
267 Posts |
Posted - 06/11/2009 : 14:00:21
|
да вариантов тыща. куда по вашему удобней результат вывести и по какому действию ? |
|
|
oleg753
26 Posts |
Posted - 06/11/2009 : 15:17:48
|
Куда результат и по какому действию - не приципиально. Мне он нужен для справки. |
|
|
bdfy
Belarus
267 Posts |
Posted - 06/11/2009 : 16:04:53
|
да откройте просто shape sheet вашей линии (правой кнопкой по фигуре), посмотрите свойство Width. |
|
|
oleg753
26 Posts |
Posted - 06/11/2009 : 16:52:47
|
Мне надо узнать длину КРИВОЙ линии, а не параметр ширины прямоугольника, в который она вписана. Там есть такой параметр - длина линии? Может я не там смотрю, у меня русифицированный визио. Подскажите как по русски звучит это меню. |
|
|
Tumanov
Russia
1198 Posts |
Posted - 06/11/2009 : 16:53:35
|
Как я понимаю, речь идет немного о другом случае... "Произв. линия" - это наверное Freeform Tool. А для нее Width не годится. Width будет показывать расстояние между конечными точками, а надо отследить все изгибы. В этом случае придется разбираться со сплайнами. Это строка NURBSTo в секции геометрии с примерно такой формулой =NURBS(7.2352, 3, 0, 0, 0.0547,0.452,0,1, 0.042,0.8541,0,1, 0.3959,1.0469,0,1, 0.6961,0.858,1.7061,1, 0.6376,0.4479,2.7269,1, 0.5794,-0.1704,3.2506,1, 1.0118,0.1377,4.9008,1) А нельзя рисовать не через Freeform Tool, а ломаной линией? Тогда длину можно вычислить суммированием прямых в секции геометрии, а это должно быть гораздо проще.
|
|
|
oleg753
26 Posts |
Posted - 06/11/2009 : 18:23:08
|
quote: Originally posted by Tumanov
Как я понимаю, речь идет немного о другом случае... "Произв. линия" - это наверное Freeform Tool. А для нее Width не годится. Width будет показывать расстояние между конечными точками, а надо отследить все изгибы. В этом случае придется разбираться со сплайнами.
Да, именно так.
quote: Originally posted by Tumanov
Это строка NURBSTo в секции геометрии с примерно такой формулой =NURBS(7.2352, 3, 0, 0, 0.0547,0.452,0,1, 0.042,0.8541,0,1, 0.3959,1.0469,0,1, 0.6961,0.858,1.7061,1, 0.6376,0.4479,2.7269,1, 0.5794,-0.1704,3.2506,1, 1.0118,0.1377,4.9008,1)
Можно подробнее: достаточно только эту формулу прописать? Где будет результат?
quote: Originally posted by Tumanov
А нельзя рисовать не через Freeform Tool, а ломаной линией? Тогда длину можно вычислить суммированием прямых в секции геометрии, а это должно быть гораздо проще.
Как работать с этим вариантом, я знаю, он описан в учебнике с примером. Но в моем случае он не подойдет. Я на существующей топокарте наношу трассу, обводя нанесенный трек. Потом сплайнами подгоняю нарисованную линию до совпадения с источником.
|
|
|
Tumanov
Russia
1198 Posts |
Posted - 06/11/2009 : 19:18:27
|
quote: Можно подробнее: достаточно только эту формулу прописать? Где будет результат?
Нет, все гораздо хуже... Visio всего лишь позволяет подсмотреть коэффициенты, которые он вычислил по Вашим действиям для описания результирующей линии. Количество аргументов в функции-формуле зависит от количества узлов. В хелпе функция описана довольно скупо: NURBS(knotLast, degree, xType, yType, x1, y1, knot1, weight1, ...) knotLast The last knot. degree The spline's degree. xType Specifies how to interpret the x input data. If xType is 0, all x input data are interpreted as a percentage of Width. If xType is 1, all x input data are interpreted as local coordinates. yType Specifies how to interpret the y input data. If yType is 0, all y input data are interpreted as a percentage of Height. If yType is 1, all y input data are interpreted as local coordinates. x1 An x-coordinate. y1 A y-coordinate. knot1 A knot on the B-spline. weight1 A weight on the B-spline. Ну а дальше нужно разбирать строку на коэффициенты и передавать их в некую программку, способную вычислить длину. Про готовую такую программку слышать как-то не доводилось. --- P.S. И сдается мне, что если просто взять X и Y всех узлов, и высчитать длину ломаной, то погрешность составит несколько процентов. Для большинства задач может этого вполне достаточно будет. И алгоритм для такого приближения достаточно прост.
|
|
|
oleg753
26 Posts |
Posted - 06/12/2009 : 09:14:42
|
quote: Originally posted by Tumanov
quote: Можно подробнее: достаточно только эту формулу прописать? Где будет результат?
Нет, все гораздо хуже...
Спасибо за развернутый ответ. Это я и хотел выяснить. |
|
|
Tumanov
Russia
1198 Posts |
Posted - 06/14/2009 : 05:50:42
|
А вот и наврал я в развернутом ответе :( А все потому, что по привычке пользуюсь Visio 2003... Для Visio 2007 программа существует, самому писать не надо! Среди аддонов Visio есть "Shape Area and Perimeter". Это программка, которая показывает в отдельном окошке площадь и периметр селектированного шейпа. В Visio 2003 для разомкнутых шейпов она не работала. То есть для прямой линии и для квадрата длину считала, а для ломаной показывала ноль. Соответственно и для линии, нарисованной Freeform Tool, тоже давала ноль. А в Visio 2007 алгоритм подправили. Так что в нем Ваша задача решается. Можно вызвать аддон "Shape Area and Perimeter" (через Tools / Add-Ons / Visio Extras) и в поле "Total perimeter" видеть длину селектированной линии. Прошу извинить за то, что ввел в заблуждение. |
|
|
oleg753
26 Posts |
Posted - 06/14/2009 : 09:21:20
|
quote: Originally posted by Tumanov
Прошу извинить за то, что ввел в заблуждение.
Ничего страшного, у меня все равно визио 2003. Но теперь думаю ставить 2007. Спасибо за поправку. |
|
|
ESV
Ukraine
21 Posts |
Posted - 06/15/2009 : 10:13:13
|
В Visio 2003 достаточно соединить оба конца кривой линии 1-й - 2-мя отрезками прямой, так, что бы получилась замкнутая фигура. Ну а далее, думаю, все понятно.
________________________________________________________
Не надо ломать друг-другу глаза, используйте [cоde][/cоde] |
|
|
Surrogate
Russia
122 Posts |
|
|
Topic |
|
|
|