| 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   | 
                  | 
               
             
           | 
         
       
     |