All Forums
 Категория Visio
 Форум Вопросы и ответы
 ВСЕГДА ПО СЕТКЕ!!!
Author Previous Topic Topic Next Topic  

Renfoold

13 Posts

Posted - 04/02/2006 :  16:06:41
Всем привет.
Столкнулся с проблемой.
Создаю шейп. Например конденсатор или резистор.
Необходимо что бы шейп распологался строго по сетке 2,5 мм.
Проблема заключается в том что когда выделаешь фрагмент схемы, то после ее сдвига на листе - сдвиг происходит на половину сетки.

Можно ли в шейпе сделать проверку на кратность сетке.. и коррекцию?
с макросом не интересно.

Tumanov

Russia
1198 Posts

Posted - 04/02/2006 :  17:36:30
Неправильная мысль.
Правильно будет снять привязку к делениям линейки и установить привязку к сетке.
В меню Tools / Snap & Glue открывается окошко Snap & Glue. На вкладке General в колонке Snap to нужно:
- убрать галочку Ruler subdivisions
- поставить галочку Grid.
А если когда-нибудь понадобится двигать на маленькие расстояния, делайте это с шифтом.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 04/02/2006 :  19:27:13
Правда, если размер области выделения составляет нечетное число делений сетки, то все равно будут перемещения по половине деления :( Зато при четных - все нормально :)
А вариант проверки на кратность и коррекции очень страшен.
В самой ячейке Visio не разрешит корректировать, скажет формула зациклена.
Придется использовать левую ячейку, типа Scratch.
В ней можно сравнивать значение PinX с округленным значением PinX до определенного знака и с масштабом.
В зависимости от величины и знака отклонения нужно либо записывать округленное значение PinX, либо уменьшенное на величину сетки, либо увеличенное на величину сетки.
Я попробовал поэкспериментировать.
Даже если рассматривать отклонение только в одну сторону и не учитывать масштаб, то формула получается примерно такой
If(Round(GetVal(PinX);0)-PinX>0.1;SETF(GetRef(PinX);Round(GetVal(PinX);0)+1);SETF(GetRef(PinX);Round(GetVal(PinX);0)))
Если эту формулу записать в ячейку X секции Scratch, то по горизонтали шейп будет двигаться заданным образом (только шаги размером в дюйм и мешает отсутствие второго условия).
Можно пооптимизировать, конечно, но все равно такое решение мне кажется несерьезным...
Go to Top of Page

Kalinin

Russia
64 Posts

Posted - 04/03/2006 :  00:20:51
ВИЗИО-дамочка капризная.С ней надо построже.
Как художник художника спрошу: Не пробовали исходно рисовать шейпы после такого увеличения листа, чтобы сетка была именно 2,5 мм?Все(грубо говоря) элементы шейпа должны касаться сетки.
И надписи тоже надо строго вписывать в сетку. Зеленые кубики рамки текста должны находиться в перекрестках сетки и не иначе. Полезно рамку текста превратить в горизонтальную линию. И сам текст трэба расположить по оси этой линии. А линию по сетке. Просто.
Для правильной липучести можно присобачить к концам(или вершинам и касательным) синие крестики "Точки соединений". Блин не помню как их правильно зовут.
Линии связи не стоит рисовать карандашом и отрезками. Пользуйтесь специальными умными линиями "connector".



Пишите письма:
power-kalinin@mail.ru
Go to Top of Page

Renfoold

13 Posts

Posted - 04/03/2006 :  03:15:45
Всем привет.
Туманов ... мысль со скратч.. мне нравится.
У меня тоже формула зацикливалась. Я нечто подобное пытался писать в PINX. Я недавно начал заниматься визио.. всего пару дней висю в интернете..
Кстати я пока что не понял на счет событий - может это можно сделать в событиях когда при движении выделеной группы при "отпускании" группы на лист - сделать кореекцию Pinx Piny?



Попробую через скратч.
На счет специальных линий... (connectoin) и точек (connection point) - все совершенно правильно, именно этого я и добиваюсь. Но движение выделеного фрагмента при нечетном колличестве сетки ...- все портит.


А вообще сетка очень странная в визио. Не понятно почему ее так сделали. Не ясно что к чему привязывается. И нет возможности при движении выделеной группы менять точку привязки к сетке.

Если кто работал наприер в Pcad тот знает о чем я говорю.

Кстати в визио мне для жесткой првязки приходится ставить значение 999 в "степени привязки" Snap&Glue.

И если дальше будем обсуждать эту тему то давайте начнем с того что прыгаем мы ТОЛЬКО по сетке, а клеемся ТОЛЬКО к connection point.
Go to Top of Page

Renfoold

13 Posts

Posted - 04/03/2006 :  03:58:44
Всем привет.
Туманову. Слушай. попробовал твою формулу вставить как ты рекомендовал. Формула не вводится.
В эту ячейку не вводится даже формула Round(GetVal(PinX);0).
Говорит ошибка фоформуле.
Что может быть?
И вообще у меня множество попытока написания различных формул заканчиваются такой ошибкой.. хотя вроде выглядит все безобидно.
Посоветуйте в чем проблема а?
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 04/03/2006 :  07:34:09
Скорее всего в Вашей системе нужно точку с запятой на запятую заменять.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 04/03/2006 :  11:12:38  Visit immortal's Homepage
аналогичный вопрос тут уже был, я помоему писал (ударение на букву а) аддон для этого, а может и написал (ударение на а) и то что написано в низу,однако, тем не менее, главное чтобы секция геометрии не привязывалась к координатам шейпа, а работала через другие ячейки, делаем:
User.PinX - =INT(PinX/2.5 mm)*2.5 mm
User.PinY - =INT(PinY/2.5 mm)*2.5 mm
User.Width - размер шейпа
User.Height - размер шейпа

в геометрии изменяем следующим образом:
Width меняем на User.Width
Height меняем на User.Height
во все ячейки Х дописываем: -(PinX-User.PinX)
во все ячейки У дописываем: -(PinY-User.PinY)
в ячейку где идёт ссылка на геометрию не меняем

теперь можно Width и Height установить в 0 это не играет никакой роли
если вы будите перемещать данный шейп, то геометрия шейпа будет перемещаться через 2,5 мм, если сетку надо изменить, поменяйте соотв. значения выделенные жирным


можно шаг вынести в кустом проперти, тогда будет гибче.


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

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

Edited by - immortal on 04/03/2006 11:38:16
Go to Top of Page

Renfoold

13 Posts

Posted - 04/03/2006 :  17:20:59
Туманову. = да уже разобрался.. действительно точка с запятой была заменена на запятую.

Для immortal - попробовал предложенный пример... толи я что то сделал не так.. толи одно из двух. Вроде все просто.. Но нельзя ли поподробнее? или на Renfoold@yandex.ru пример кинуть?

И еще. Пролему бы решил .. но ..
Чот я ни как с размерностями не разберусь.

Вот эта формула определяет дробную часть значения Pinx.
Только если это значение попытаться присвоить какой либо ячейки то получаются совсем не милиметры.
Как быть?
FORMATEX(PinX;"0.00";"in";"mm")-INT(FORMATEX(PinX;"0.00";"in";"mm"))


Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 04/03/2006 :  21:06:06
immortal,
но при Вашем способе нужно будет всегда помнить, что шейп может находиться не там, где Вы его видите, а немного рядом :)
То есть в стандартных отчетах, оперирующих PinX, PinY, или в каких либо расчетах легко пропустить ошибку.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 04/05/2006 :  10:26:44  Visit immortal's Homepage
quote:
толи я что то сделал не так.. толи одно из двух. Вроде все просто.. Но нельзя ли поподробнее?
пример [url=http://www.immortal.vstu.edu.ru/index.php?name=Files&op=view_file&lid=62]тут[/url]

quote:
но при Вашем способе нужно будет всегда помнить, что шейп может находиться не там, где Вы его видите, а немного рядом :)
То есть в стандартных отчетах, оперирующих PinX, PinY, или в каких либо расчетах легко пропустить ошибку.
да согласен, вобще надо быть адекватным в любых своих действиях, и в данном случае оперировать надо с User.PinX и User.PinY

к стати именно по такому принципу сделано много моих шейпов, а именно все рамки и штампы

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

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