All Forums
 Категория Visio
 Форум Вопросы и ответы
 Как правильно приконнектить розетку к стене
Next Page
Author Previous Topic Topic Next Topic

AndrewKuz

Russia
7 Posts

Posted - 10/26/2005 :  18:29:41
Начинаю потихоньку автоматизировать процесс проектирования внутрянки. Может кто подскажет, как сделать так, чтобы при помещении розеток на план этажа они не просто приконнекчивались к стене, а ориентировались перпендикулярно стене. Стены могут быть под разными углами - 45, 90, 180 градусов и др. Хотелось не вращать шейп вручную, а сделать так, чтобы он сам занимал нужное положение.

Tumanov

Russia
1198 Posts

Posted - 10/26/2005 :  20:12:54
Приблизительно такими свойствами обладает шейп Socket outlet из трафарета Electrical and Telecom при коннекте к шейпу Wall.
В принципе, задача разбивается на следующие:
1. Вычислить шейп стены, к которому коннектится розетка;
2. Перевести ячейку Angle стены и розетки в какую-нибудь одну систему координат;
3. Установить Angle розетки равным Angle стены.
Вторая и третья подзадачи решаются формулами шейп-листа.
Для первой скорее всего придется писать AddOn. Срабатывать он должен по событиям EventXFMod и скорее всего EventDrop.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 10/27/2005 :  09:14:37  Visit immortal's Homepage
да, немного странное представление об автоматизации проектирования, а провода не надо к розетке коннектить для построения схемы сети и кабельного журнала?

вобще коннектить явно я думаю нельзя, да и сложно, алгоритм действительно как описан выше, только первый пункт я бы сформулировал немного по другому: "вычислить ближайший к розетке шейп стены", т.е. не коннектить розетку к стене, причём необходимо учитывать тот факт, что координаты шейпа стены имеют начало А(х1,у1) и конец В(х2,у2), т.е. необходимо вычислять расстояние от точки (в данном случае розетки) до прямой АВ.
если приципляем к какомуто событию шейпа, то перебирать адд-он должен все шейпы и могут возникнуть проблемы с расстановкой розеток в углах.

второй вариант прицепить макрос на экшен, тогда запускать по мере необходимости и алгоритм тотже, и третий вариант, также цепляем на экшэн, но запускаем его выделив розетку и стену, и не надо перебирать вычислять расстояния.

какой из вариантов удобнее и быстрее судите сами.

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page

AndrewKuz

Russia
7 Posts

Posted - 10/27/2005 :  19:04:17
Уважаемый Immortal.
Я не точно выразился. Понятно, что нужно и провода коннектить и строить однолинейную схему ЩР и многое другое. До этого я все это рисовал руками. Теперь задумался что можно автоматизировать. Кое-что уже написал. Кстати, за основу взял Ваши библиотеки. Честно говоря, автоматически прокладывать провода мне кажется трудная задача. Группа может разветвляться. Я пока прокладываю вручную. И розетки я помещаю в нужное место вручную. Загорается квадратик коннекта, отпускаю перемещаемый шейп, а он не всегда разворачивается в нужном направлении. Может что-то я не так делаю. Честно скажу с Visio работаю недавно (2 месяца). Программировал до этого много, в том числе на VBA. Хотелось бы сделать так - перетащил на схему в нужные места требуемые устройства, они сами сориентировались в нужном направлении(например розетки перпендикулярно стене и наружу а не внутрь стены). Подправил их свойства. Поместил на схему провод, установил нужные свойства - соединил элементы 1-й группы. Затем 2-я и т.д. На выходе получил максимум возможно построенных таблиц и схем. Чтобы автоматом строились однолинейные схемы, спецификация и др. Понятно, что что-то придется делать ручками. Но при типовых проектах - это не так много. Повторюсь - занимался пока только внутрянкой, внешние сети не делал. Может и до них дойдут руки.


quote:
Originally posted by immortal

да, немного странное представление об автоматизации проектирования, а провода не надо к розетке коннектить для построения схемы сети и кабельного журнала?

вобще коннектить явно я думаю нельзя, да и сложно, алгоритм действительно как описан выше, только первый пункт я бы сформулировал немного по другому: "вычислить ближайший к розетке шейп стены", т.е. не коннектить розетку к стене, причём необходимо учитывать тот факт, что координаты шейпа стены имеют начало А(х1,у1) и конец В(х2,у2), т.е. необходимо вычислять расстояние от точки (в данном случае розетки) до прямой АВ.
если приципляем к какомуто событию шейпа, то перебирать адд-он должен все шейпы и могут возникнуть проблемы с расстановкой розеток в углах.

второй вариант прицепить макрос на экшен, тогда запускать по мере необходимости и алгоритм тотже, и третий вариант, также цепляем на экшэн, но запускаем его выделив розетку и стену, и не надо перебирать вычислять расстояния.

какой из вариантов удобнее и быстрее судите сами.

визио 2003 форэвер

...а вобще-то я белый и пушистый.

Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 10/27/2005 :  20:03:24
Я же не зря сослался на поставляемое майкрософтовское решение. Иногда не надо изобретать велосипед, а достаточно присмотреться к тому, что уже сделано.
Указанная розетка именно коннектится к стене и неплохо получается.
Вместо ручного вычисления растояния до прямой проще воспользоваться функцией SpatialNeighbors.
А насчет углов - как я понял в задаче розетку размещает пользователь, а зачем же он будет совать ее в угол...
В майкрософтовском решении, вроде, все получается достаточно удобно и красиво.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 10/28/2005 :  10:25:33  Visit immortal's Homepage
quote:
Честно говоря, автоматически прокладывать провода мне кажется трудная задача. Группа может разветвляться.


вобще алгоритм есть, нет времени пока на его реализацию. прокладка естественно будет вручную, но смысл в том чтобы можно как можно больше вытащить из этого чертежа, особенно возможность вычислить адреса. с разветвлениями в принципе понятно, т.е. задаём у одного провода номера линий, при коннекте такогоже провода к нему номера распространяются автоматически на него, в случае если количество линий при коннекте куска провода не совпадает (т.е. меньше), выходит окно для указания какие линии пошли туда, соответственно при коннекте к оборудованию будет видно к каким линиям и группам присоединено оборудование, сколько метров и какой провод или кабель, всё что нужно для кабельного журнала.

могу в принципе я сделать, скажите каким из описанных мной способом удобнее, так и сделаю.

quote:
Указанная розетка именно коннектится к стене и неплохо получается.
согласен, не плохо, но она должна коннектится и к проводу ,вернее провод к ней.
в принципе можно и четвёртый метод, сделать два коннекта, один к стене, другой для провода.
quote:

Приблизительно такими свойствами обладает шейп Socket outlet из трафарета Electrical and Telecom при коннекте к шейпу Wall
как его приконнектить, у меня не получается.

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page

brace

Russia
358 Posts

Posted - 10/28/2005 :  11:00:20
где то читал что Visio 2000 Technical Edition
имеет адоны для планировщиков внутрянки
но сам не такого визио не имею.
Go to Top of Page

AndrewKuz

Russia
7 Posts

Posted - 10/28/2005 :  11:31:52
Спасибо за наводку. Действительно стандартный шейп ориентируется как надо. Правда шейп из библиотеки Immortalа коннектится скажем так заметно лучше, да и поинтересней будет. Попробую разобраться и соединить лучшие свойства обоих шейпов. Кстати, сначала были проблемы с вращением стандартного шейпа. Но быстро понял, что розетка после коннекта поворачивается в ту сторону, куда двигался курсор когда подносишь шейп к стене.
И еще плюс у стандартного решения - если в тексте шейпа внести номер розетки, то при вращении номер всегда правильно ориентируется.
Попробую собрать все лучшее воедино.

quote:
Originally posted by Tumanov

Я же не зря сослался на поставляемое майкрософтовское решение. Иногда не надо изобретать велосипед, а достаточно присмотреться к тому, что уже сделано.
Указанная розетка именно коннектится к стене и неплохо получается.
Вместо ручного вычисления растояния до прямой проще воспользоваться функцией SpatialNeighbors.
А насчет углов - как я понял в задаче розетку размещает пользователь, а зачем же он будет совать ее в угол...
В майкрософтовском решении, вроде, все получается достаточно удобно и красиво.

Go to Top of Page

AndrewKuz

Russia
7 Posts

Posted - 10/28/2005 :  11:48:40
Спасибо за наводку. Действительно стандартный шейп ориентируется как надо. Правда шейп из библиотеки Immortalа коннектится скажем так заметно лучше, да и поинтересней будет. Попробую разобраться и соединить лучшие свойства обоих шейпов. Кстати, сначала были проблемы с вращением стандартного шейпа. Но быстро понял, что розетка после коннекта поворачивается в ту сторону, куда двигался курсор когда подносишь шейп к стене.
И еще плюс у стандартного решения - если в тексте шейпа внести номер розетки, то при вращении номер всегда правильно ориентируется.
Попробую собрать все лучшее воедино.

quote:
Originally posted by Tumanov

Я же не зря сослался на поставляемое майкрософтовское решение. Иногда не надо изобретать велосипед, а достаточно присмотреться к тому, что уже сделано.
Указанная розетка именно коннектится к стене и неплохо получается.
Вместо ручного вычисления растояния до прямой проще воспользоваться функцией SpatialNeighbors.
А насчет углов - как я понял в задаче розетку размещает пользователь, а зачем же он будет совать ее в угол...
В майкрософтовском решении, вроде, все получается достаточно удобно и красиво.

Go to Top of Page

immortal

Russia
391 Posts

Posted - 10/28/2005 :  12:28:59  Visit immortal's Homepage
quote:
Действительно стандартный шейп ориентируется как надо
а у меня чегото не получается.
quote:
обладает шейп Socket outlet из трафарета Electrical and Telecom при коннекте к шейпу Wall.
как его приконнектить?

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page

AndrewKuz

Russia
7 Posts

Posted - 10/28/2005 :  16:04:37
Да вроде никаких особенностей. Коннектится при включенном Glue to Shape Geometry. Больше никаких особенностей.

quote:
Originally posted by immortal

quote:
Действительно стандартный шейп ориентируется как надо
а у меня чегото не получается.
quote:
обладает шейп Socket outlet из трафарета Electrical and Telecom при коннекте к шейпу Wall.
как его приконнектить?

визио 2003 форэвер

...а вобще-то я белый и пушистый.

Go to Top of Page

AndrewKuz

Russia
7 Posts

Posted - 10/28/2005 :  16:13:32
Попробовал разобраться с Socket Outlet. Может кто поможет. Моих знаний не хватает. Не понимаю откуда появляются значения в секции Shape Transform при коннекте розетки к разным фрагментам стены. В формулах ссылок не нахожу, а обработчиков событий вроде бы как тоже нет.
Подскажите пожалуйста у кого опыта побольше.

quote:
Originally posted by AndrewKuz

Спасибо за наводку. Действительно стандартный шейп ориентируется как надо. Правда шейп из библиотеки Immortalа коннектится скажем так заметно лучше, да и поинтересней будет. Попробую разобраться и соединить лучшие свойства обоих шейпов. Кстати, сначала были проблемы с вращением стандартного шейпа. Но быстро понял, что розетка после коннекта поворачивается в ту сторону, куда двигался курсор когда подносишь шейп к стене.
И еще плюс у стандартного решения - если в тексте шейпа внести номер розетки, то при вращении номер всегда правильно ориентируется.
Попробую собрать все лучшее воедино.

quote:
Originally posted by Tumanov

Я же не зря сослался на поставляемое майкрософтовское решение. Иногда не надо изобретать велосипед, а достаточно присмотреться к тому, что уже сделано.
Указанная розетка именно коннектится к стене и неплохо получается.
Вместо ручного вычисления растояния до прямой проще воспользоваться функцией SpatialNeighbors.
А насчет углов - как я понял в задаче розетку размещает пользователь, а зачем же он будет совать ее в угол...
В майкрософтовском решении, вроде, все получается достаточно удобно и красиво.



Go to Top of Page

AndrewKuz

Russia
7 Posts

Posted - 10/28/2005 :  17:51:47
Ну кое в чем разобрался. Если кому интересно, то на вращение шейпа влияет секция Connection Points. Если в ShapeSheet почитать Help для этой секции, то многое становится понятным.
Осталось непонятным, почему для шейпа розетки, сделанного Immortal установка этой секции по аналогии со стандартным Socket Outlet работает только если установить стиль шейпа 2-dimensional.
Странно, потому что установка стиля 1-dimensional для стандартного Socket Outlet, не мешает тому правильно ориентироваться.
Странно. Но не так критично. Просто мне кажется в 1-dimensional стиле сокет Immortala коннектился пошустрей.

quote:
Originally posted by AndrewKuz

Попробовал разобраться с Socket Outlet. Может кто поможет. Моих знаний не хватает. Не понимаю откуда появляются значения в секции Shape Transform при коннекте розетки к разным фрагментам стены. В формулах ссылок не нахожу, а обработчиков событий вроде бы как тоже нет.
Подскажите пожалуйста у кого опыта побольше.



Go to Top of Page

immortal

Russia
391 Posts

Posted - 10/29/2005 :  12:30:24  Visit immortal's Homepage
я посмотрю намедни свой мастершейп, вроде у меня икс и угрек начала совпадают и из за этого может в данном случае не правильно работать, либо вобще секции геометрю не привязаны к х и у или к углу, ладно разберусь напишу.

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 11/03/2005 :  19:27:43  Visit immortal's Homepage
в общем так! никак я не мог приконнектить ни стандартный Socket Outlet ни мой никак не коннектится к геометрии шейпа, если кто подскажет буду рад.

чтобы моя розетка коннектилась как надо я предпологаю надо сделать следующее:

создать вторую точку в коннектио поинтс, переделать геометрию таким образом чтобы крутилост не у основания УГО розетки, а вокруг точки коннектион поинтс которую мы создали.

в принципе могу я сам модефицировать свой шейп и протестить если ктонибудьобъяснит мне почему у меня не коннектит Socket Outlet при установленных всех галочек в привязке и клее.

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 11/04/2005 :  08:40:28  Visit immortal's Homepage
однако разобрался, значит так! создаём второй коннектион поинтс и копируем туда все свойства первого.
устанавливаем значение DirY/B = 1 мм. type/c = 1

в принципе на этом всё, далее "бантики" :

если необходимо задать постоянное расстояние от стены до розетки то ставим в ячейку Y формулу =-1 mm*ThePage!DrawingScale/ThePage!PageScale
если задаём постоянное расстояние от коннекта провода, то это просто дописываем в конец и получаем =Height*0-Prop.Row_16*ThePage!DrawingScale/ThePage!PageScale-1 mm*ThePage!DrawingScale/ThePage!PageScale

красным выделено расстояние
вот собственно и все примудрости.

визио 2003 форэвер

...а вобще-то я белый и пушистый.

Edited by - immortal on 11/04/2005 08:42:12
Go to Top of Page
Previous Topic Topic Next Topic  
Next Page
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)