Author |
Topic |
|
vtsoy
3 Posts |
Posted - 06/09/2005 : 08:01:51
|
Доброе время суток, уважаемые
Сабж....как быстро сваять кусок кода (макрос), для расчета периметра коннектора. Задача упоминавшаяся: есть шкаф, есть рабочее место (порт), но трасса проходит таким образом (с использованием коннектора), что на ней (трассе) более одного (в моем случае - 4 поворота на 90 градусов. Один проблем (для меня) в некоторых случаях трасса поворачивает на 180 градусов по отношению к шкафу. Пример: шкаф (как нулевая отметка)-5м на юг- 20м на запад- 10 м. на юг - 5 метров на восток- рабочее место. (Восток, юг, север, запад - соотв-т сторонам монитора... жуть сам запутался ) Т.е. имеет место "отрицательное" направление части коннектора. Обычно (до этого) всегда делал кабельную канализацию из прямых кусков, в кастомсвойствах автоматически (формулой) обсчитывал длину, количество концов в линии и иные свойства (запас кабеля у розетки, у шкафа, запас на спуски/подъемы, межэтажные запасы и проч.) Затем все это визардом в ексел.. дальше все просто. Счас решил попробовать коннектором и.. вот, столкнулся :( с незнанием ВБА. С уважением, Андрей |
|
denis
7 Posts |
Posted - 06/10/2005 : 07:28:25
|
Как я понял ты из координат (X,Y) шкафа вычитаешь координаты раб. места и получаешь длину кабеля. Но вомногих случаях это не дает верный результат. Для более точного расчета нужно брать какую-нибудь третью точку от которой расчитывается длина до раб. места. А длина кабеля от шкафа до этой точки будет величинной постоянной. |
|
|
Tumanov
Russia
1198 Posts |
Posted - 06/10/2005 : 07:46:29
|
Это считает геометрию шейпа: Function KabLength(Shap As Shape) As Double Dim i As Integer Dim Summa As Double Dim dx As Double, dy As Double Dim nRows As Integer nRows = Shap.RowCount(visSectionFirstComponent) - 1 Summa = 0 For i = 1 To nRows - 1 dx = (Shap.CellsSRC(visSectionFirstComponent, i, 0) - Shap.CellsSRC(visSectionFirstComponent, i + 1, 0)) * 0.0254 dy = (Shap.CellsSRC(visSectionFirstComponent, i, 1) - Shap.CellsSRC(visSectionFirstComponent, i + 1, 1)) * 0.0254 Summa = Summa + Sqr(dx ^ 2 + dy ^ 2) Next KabLength = Summa End Function |
|
|
vtsoy
3 Posts |
Posted - 06/10/2005 : 13:19:07
|
2 Denis. Не совсем. Метод "разности координат" :)) - более чем не идеален, нужно порой иметь не одну дополнительную базовую точку, а несколько, как-то их именовать, расставлять в процессе проектирования, делать точкой отсчета какую-то одну (или несколько)короче, головная боль.
Проще послойно обсчитать кол-во шейпов (в данном случае коннекторов), вычислить периметр каждого, добавить спуски-подъемы, запас на разделку и запас в шкафу. Добавить 10% и би хэппи. :)
2 Туманов БАльшое человеческое спасибо! :) Ничего (почти) из кода не понял, но это пока не важно.
2 олл А что, даже просто внимательно проштудировав этот форум, понабивав собственные шишки в борьбе с проектами и их реализацией в визио, вполне можно создать эдакий инструмент, с помощью которого можно делать собственно проектирование "непринужденно, легко и изящно" !))
С уважением, Андрей |
|
|
|
Topic |
|
|
|