Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Глюк PCAD2006: невозможно переместить объект в заданную точку...
Форум разработчиков электроники ELECTRONIX.ru > Печатные платы (PCB) > Разрабатываем ПП в САПР - PCB development > P-CAD 200x howto
Доктор ТуамОсес
Столкнулся со следующим глюком P-CAD PCB.
Имеется разведенная плата ЛЕВЫЙ НИЖНИЙ УГОЛ {далее по тексту просто ЛНУ} которой имеет координаты (53.281;57.632) в абсолютной системе координат {далее просто СК}. Я захотел передвинуть плату так, чтобы её ЛНУ имел бы координаты (0.000;0.000) в абсолютной СК. Сказано - сделано. Выбираю всё. Размещаю SelectionPoint в ЛНУ. И...А она не размещается - автоматом прыгает в центр ближайшего отверстия (Pad). Вопрос: почему???
"Ну ладно" - подумал я - "не мытьём так катанием" и измерил расстояния dX и dY центра этого пресловутого отверстия, в который прыгает SelectionPoint, от ЛНУ по оси X и Y соответственно. Опять выделяю всё, ставлю SelectionPoint в центр этого пресловутого отверстия {точнее говоря, не ставлю, а она сама туда ставиться при попытке установить её в ЛНУ}, захватываю бакшпаком выделенное и ввожу с клавиатуры координаты (dX,dY) - плата вообще не двигается. "Наверное из-за ширина линии границы платы в слое Board часть линии попадает в "минус" - за пределы Workspace" - подумал я.
Тогда я решил двинуть плату так, чтобы ЛНУ имел координаты (100.000;100.000) - тоже ведь круглое число и ничего при этом за границу Workspace не вылезет. Увеличиваю Workspace, чтоб плата точно уж влезла {даже с большим запасом}. Опять выделяю всё, ставлю SelectionPoint в центр этого пресловутого отверстия {точнее говоря не ставлю, а она сама туда ставиться при попытке установить её в ЛНУ}, захватываю бакшпаком выделенное и ввожу с клавиатуры координаты (100.000+dX,100.000+dY) {разумеется ввожу конкретные числа, а не формулы, которые я здесь привожу}. Щёлкаю ещё раз бакшпаком {чтобы "оторвать" выделенное от указателя мыши}. Плата оказывается перемещённой... Ну куда???... Координаты её ЛНУ в абсолютной СК равны (100.000+ErrorX;100.000+ErrorY), где ErrorX и ErrorY - некотрые ошибки позиционирования значения которых лежат в диапазоне: -0.010...+0.010 мм.. И причём они меняются случайным образом от попытке к попытке разместить плату так, как я описал.
Пробовал перемещать плату по-другому: не вводя координаты с клавиатуры, а, двигая её кнопками со стрелками - всё равно не удаётся установить так, как надо - есть ошибки позиционирования ErrorX и ErrorY.
Да, сетка у меня была при всех моих экспериментах 0.001 мм.... Пробовал даже с сеткой 0.0002 мм {которая устанавливаться устанавливается, а отображается как 0.000}...Не помогло..

Итак, вопросы:

1) Почему невозможно установить SelectionPoint в произвольную точку выделенной группы объектов???
2) Почему невозможно переместить выделенную группу объектов в произвольную точку??? Почему имеют место быть ErrorX и ErrorY ???
3) И какой во всё этом мистический смысл???

© Доктор ТуамОсес inc.©

Вторник. 8 мая 2007 года. 13-35.
NightWish
Попробуйте установить Selection Point в правый нижний угол платы (или любой другой) и переместить плату. Что при этом получится?

p.s. Знатный опус получился smile.gif
Доктор ТуамОсес
Я серьёзно....Есть идеи и предложения по теме
NightWish
Я тоже серьезно. Если не получается за один угол оттащить, попробуйте за остальные.
andrvisht
Цитата(Доктор ТуамОсес @ May 8 2007, 12:36) *
Столкнулся со следующим глюком P-CAD PCB.
1) Почему невозможно установить SelectionPoint в произвольную точку выделенной группы объектов???
2) Почему невозможно переместить выделенную группу объектов в произвольную точку??? Почему имеют место быть ErrorX и ErrorY ???
3) И какой во всё этом мистический смысл???


О глюках PCAD можно написать брошюру, и постоянно добавлять глюки новой версии smile.gif
Но все равно многие ею пользуються, потому как лучьше либо нет, лобо сложная и малораспостранена.
Что касается selectPoint то по крайней мере с 2000-го PCAD оно вяжеться либо к центру "пятака" либо по сетке, что ближе. Интересен также тот факт, что если Вы вяжетесь по сетке вне зоны выделения, то тащить группу обьектов нужно начинать не от точки привязки, а от любой точки находящейся в зоне выделения.

Произвольных точек в PCAD нет, система сеточная, просто сетка может быть очень мелкой ....

смысл ErrorX и ErrorY наверное знает тот программист который писал этот модуль, а может он его стянул из нета и знание это утеряно ....
Доктор ТуамОсес
Цитата(&-rey @ May 8 2007, 15:32) *
О глюках PCAD можно написать брошюру, и постоянно добавлять глюки новой версии smile.gif

Да ужжжжж....3 недели как пересел на версию 2006 и уже нашёл более 10-ти глючков {хотя конечно не исключаю, что большинство из них из серии "кривые руки"}



Цитата(&-rey @ May 8 2007, 15:32) *
Что касается selectPoint то по крайней мере с 2000-го PCAD оно вяжеться либо к центру "пятака" либо по сетке, что ближе.

Получается что и так и так...И какова закономерность - не ясно...Как левая нога захочет biggrin.gif

Цитата(&-rey @ May 8 2007, 15:32) *
Произвольных точек в PCAD нет, система сеточная, просто сетка может быть очень мелкой ....

Дык это мне хорошо известно...Поэтому я и вводил минимально возможный шаг сетки..Даже использовал недокументированную возможность ввода шага сетки, меньшего чем 0.001мм....Ничего не помогло....Т.е. не могу установить объект точнее чем 0.010 мм


Цитата(&-rey @ May 8 2007, 15:32) *
смысл ErrorX и ErrorY наверное знает тот программист который писал этот модуль, а может он его стянул из нета и знание это утеряно ....

biggrin.gif
Uree
А где сказано, что ввод координат переместит выделенное в заданную точку? В ПКАДе ввод координат перемещает в заданную точку ТОЛЬКО КУРСОР, не более. Так что не вижу в происходящем глюка.
Доктор ТуамОсес
Цитата(Uree @ May 8 2007, 17:41) *
А где сказано, что ввод координат переместит выделенное в заданную точку? В ПКАДе ввод координат перемещает в заданную точку ТОЛЬКО КУРСОР, не более. Так что не вижу в происходящем глюка.

Я же написал про SelectionPoint и захват выделенного бакшпаком....


Пардон Господа....Описка...Не бакшпаком, а просто шпаком....Ачепатка...Простите ещё раз
Uree
Цитата(Доктор ТуамОсес @ May 8 2007, 12:36) *
...ввожу с клавиатуры координаты (dX,dY) - плата вообще не двигается
... и ввожу с клавиатуры координаты (100.000+dX,100.000+dY)...


Где Вы вводите координаты? Если в окошках слева внизу - то это ТОЛЬКО ПЕРЕМЕЩЕНИЕ КУРСОРА. Тупость здесь не при чем. Проверьте. Двигание клавишами курсора - то же самое, двигает только курсор. Выделили, нажали RM, и потащили куда надо. Все. К чему тут сложности?... При желании точно попадать в нужные координаты - ставьте правильную, не очень мелкую сетку(чтоб нужная координата была в этой сетке и легче было в нее попасть), меняйте зум в процессе перемещения и все.
Доктор ТуамОсес
Цитата(Uree @ May 8 2007, 19:00) *
Где Вы вводите координаты? Если в окошках слева внизу - то это ТОЛЬКО ПЕРЕМЕЩЕНИЕ КУРСОРА. Тупость здесь не при чем. Проверьте. Двигание клавишами курсора - то же самое, двигает только курсор. Выделили, нажали RM, и потащили куда надо. Все. К чему тут сложности?... При желании точно попадать в нужные координаты - ставьте правильную, не очень мелкую сетку(чтоб нужная координата была в этой сетке и легче было в нее попасть), меняйте зум в процессе перемещения и все.

Предыдущий мой ответ почему-то удалили. sad.gif
Ну что ж....Отвечу ещё раз...Вы не правы...Учите матчасть...
Да действительно, двигая выделенное хоть мышью, хоть кнопками со стрелками, хоть вводя непосредственно координаты с клавиатуры мы перемещаем указатель мыши. Но Вы забываете, что если "захватить" мышью выделенное (или при размещении компонента такой захват происходит автоматически) то можно вместей с указателем мыши двигать и то, что им захвачено....А захват выделенного происходит за определённую точку - SelectionPoint, которую можно установить в любой узёл текущей сетки {реально глючит и не ставиться в произвольный-то}.

Цитата(Uree @ May 8 2007, 19:00) *
Выделили, нажали RM, и потащили куда надо. Все. К чему тут сложности?... При желании точно попадать в нужные координаты - ставьте правильную, не очень мелкую сетку(чтоб нужная координата была в этой сетке и легче было в нее попасть), меняйте зум в процессе перемещения и все.


По-моему сложности это то что предлагаете Вы.. Вы сами то пробовали установить выделенную плату со всеми объектами на ней в заданную точку с точностью 0.001 мм??? Попробуйте...И увидите сколько времени и телодвижений {при зумах и перемещениях} это потребует (если вообще удасться)...А рука ведь дрожит {а надо установить с точностью до микрона}, а перересовка большой платы не успевает за вашим движением...Так что получается кино: какие-то объекты уже прорисовались, а какие-то ещё "в пути". ...Тем более когда нужно "перетащить" выделенную группу объектов мышью или кнопками со стрелками на расстояние в несколько микрон пикад вообще себя странно ведёт...Несколько последовательных нажатий координата вообще не меняется...А потом бац..Происходит скачок координаты...И переехали нужную точку....Приходится возвращаться и так много раз....И сколько времени это займёт???

А если ввести координаты с клавиатуры, то потребуется гораздо меньше усилий, дёрганий, времени и нервов...И выделенное встаёт сразу туда куда нужно {должно вставать по идее, но я столкнулся, что реально при выделении большой группы объектов не удаётся установить её в заданную точку точнее чем -0.010...0.010мм....Поэтому я и создал эту тему, чтобы узнать как с этим бороться}.
atlantic
Действительно описанный глюк имеет место.
Зря вы ругаете автора поста, он грабли нашел,
которые обходить надо.
Только стоит уточнить, что это за глюк,
просто по ответам видно, что не все поняли в чем дело.

Глюк в следующем:
При перемещении объектов(не зависимо от кол-ва)
на расстояние превышающее кратность текущей
координатной сетки в несколько порядков раз,
происходит ошибка позиционирования на ожидаемые координаты.

Один из примеров, на котором видна ошибка:
1. установите сетку 1.0: 1.0 (мм)
2. нарисуйте две пересекающиеся лини крестиком(+) напр. 2 на 2 мм.
3. выделите линии "схвативши"(Selection Point) их за место пересечения.
4. установите сетку 0.001: 0.001
5. переместите эти линии на координаты: 500.0 : 500.0
( через J)
6. установите сетку 1.0: 1.0
теперь можно увидеть(при максимальном зуме) ,
что пересечение линий не попадают точно на сетку(а должно попадать).
Именно этот глюк описал автор этого поста.

Теперь "лекарство" , как с этим бороться:
(вернее один из вариантов)
1. установите сетку 1.0: 1.0 (мм)
2. нарисуйте две пересекающиеся лини крестиком(+) напр. 2 на 2 мм.
3. выделите линии "схвативши"(Selection Point) их за место пересечения.
4. удалите объекты в буфер обмена(Clipboard) // напр: Ctrl+X
5. установите сетку 0.001: 0.001
6. переместите курсор на координаты: 500.0 : 500.0 (с максимальным зумом)
( через J) //будьте внимательны, смотрите на координаты в строке состояния

7. вставьте объекты из буфера, посредством клавиатуры:
Alt+E\Paste\From Clipboard\ и нажать два раза клавишу пробел.
(или Ctrl+V и тоже нажать два раза клавишу пробел :-) )
8. установите сетку 1.0: 1.0
теперь можно увидеть(при максимальном зуме) ,
что пересечение линий попадают точно на сетку.

Этот метод(лекарство) подходит для любого кол-ва объектов,
как мне кажется, он наиболее эффективен
(нет многочисленных прорисовок, при перемещении).
Надо быть только предельно внимательным.

Несколько замечаний:

1. Многим непонятно, зачем такое делать(делать перемещение на сетке в 0.001)
на расстояние в сотни миллиметров(мне например тоже, зачем???)
(если у автора поста есть желание, пусть объяснит, чего он хотел добиться)
Но в принципе программа должна корректно это отрабатывать,
поэтому все вышеописаное, конечно ошибка PCAD,
грабли на которые можно попасть.

2. Ошибка видимо связана с пересчетом отображаемых пикселов в узлы сетки,
(при определенных зумах в одном пикселе(экранном) может быть несколько узлов
координатной сетки, и это кол-во может быть не целым числом.
Неприятный момент: при сетке в 0.001 и максимальном зуме, видна только
вторичная сетка (10x Grid), т.е перемещение по первичной сетке не видно,
недостаточный зум заложеный в программу для этой величины сетки.

3. "Грабли" есть во всех программах, только одни не знают где они лежат,
а другие наступая на них, не замечают (конечно есть и еще варианты:-).
GKI
Наконец-то хоть одно конструктивное сообщение.
Замечание ко всем:
1. Попытайтесь всё-таки не уклоняться от обсуждения проблемы и поменьше переходить на личности.
2. Не увлекайтесь оверквотингом, когда цитата в несколько раз больше ответа.
Mikle Klinkovsky
Цитата(atlantic @ May 11 2007, 00:56) *
Глюк в следующем:
...
Один из примеров, на котором видна ошибка:
1. установите сетку 1.0: 1.0 (мм)
2. нарисуйте две пересекающиеся лини крестиком(+) напр. 2 на 2 мм.
3. выделите линии "схвативши"(Selection Point) их за место пересечения.
4. установите сетку 0.001: 0.001
5. переместите эти линии на координаты: 500.0 : 500.0
( через J)
6. установите сетку 1.0: 1.0
теперь можно увидеть(при максимальном зуме) ,
что пересечение линий не попадают точно на сетку(а должно попадать).
Именно этот глюк описал автор этого поста.

Нет этого глюка.
Нажмите для просмотра прикрепленного файла
Глюк состоит только в том, что перемещается именно КУРСОР мыши. И от момента перемещения до момента отпускания выделения мышь остается включенной. И поскольку у вас сетка слишком мелкая, то малейшее жрожание мыши приводит к этому глюку.

Покажите мне этот глюк, при сетке, когда на один узел приходится несколько точек экрана...

Цитата
(или Ctrl+V и тоже нажать два раза клавишу пробел :-) )
...
Этот метод(лекарство) подходит для любого кол-ва объектов,
как мне кажется,

Вам кажется. Вы не пробовали этот метод на плате с цепями, размерами и полигонами. (со связанными объектами).
Только Paste Circuit !
atlantic
>Нет этого глюка.
...
Наверно, вы не внимательно читаете и действуете.

1. Прежде всего замечу, что автор этого поста использовал именно сетку 0.001 мм.

2. Повторю еще раз описание глюка другими словами:
(даже файл специально прицепляю)

При ПЕРЕМЕЩЕНИИ (MOVE) объектов "схваченых"(Selection Point)
в одной сетке (напр 1.0:1.0) и перемешении их в другой сетке,
на несколько порядков меньше(напр 0.001:0.001),
чем сетка "захвата"(Selection Point 1.0:1.0), происходит
ошибка позиционирования(причем сетка перемещения кратна
сетке захвата на целое кол-во раз),
особенно проявляющаяся при клавиатурном вводе новых
координат(через J),не пользуясь мышью, а работая
исключительно через клавиатуру!

Теперь пример на котором это видно
(файл прилагается).

Описание: в файле пересекающиеся линии описаные окружностью,
координаты пересечения линий в верхнем слое 10.0:10.0
и нижнем слое 12.0: 12.0

1. включить сетку 1.0:1.0

2. выделить в слое TOP объекты: две линии и окружность

3. установить точку захвата для перемещения (Selection Point)
в центр пересечения линий.

4. далее вввод с клавиатур(к мышке не прикасаемся руками)
включить сетку 0.001 : 0.001( клавиатурная команда G)
>Покажите мне этот глюк, при сетке,
> когда на один узел приходится несколько точек экрана...
(можно включить и 0.002: 0.002 две! точки на один узел)
(в данном примере нажать два раза G)

5. вввод с клавиатур(к мышке не прикасаемся руками):
клавиша J,
вводим цифры: 12.0,
нажимаем табуляцию,
вводим цифры: 12.0,
нажимаем Enter,
нажимаем один раз клавишу пробела(фиксируем объекты).

6. включить сетку 1.0:1.0 (клавиатурная команда G)
(далее можно работать и мышью, перемещение уже сделано)

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

P.S. точность отображения мм. желательно вернуть в pcb.ini
по умолчанию 3 знака, если было усталено 4 знака.
Для повторяемости глюка smile.gif.

...
Ctrl+V
Этот метод(лекарство) подходит для любого кол-ва объектов,
как мне кажется,
...
>Вам кажется. Вы не пробовали этот метод на плате с цепями,
>размерами и полигонами. (со связанными объектами).
>Только Paste Circuit !

Это уже не в этой теме, но я отвечу.
Здесь я употребил слово "кажется" как наиболее удобный
метод, именно при ПЕРЕМЕЩЕНИИ, я пробывал это и на больших
платах связанных объектах, итд, пробывал на разведенной плате
с 500 элементами. А Paste Circuit нужна, когда вы вставляете
и ДОБАВЛЯЕТЕ! другие связанные элементы к уже существующим.
Например при мультиплицировании.
А здесь, речь шла только о ПЕРЕМЕЩЕНИИ, никаких новых
элементов не добавляется, поэтому при ПЕРЕМЩЕНИИ
таким способом можно обойтись и Ctrl+V.

Вывод:
Главный глюк, а может это и опция :-). Почти все о нем знают,
автор этого поста пытался получить на него ответ,
заключается в том, что при вводе координат(через J)
может происходить ошибка (можно это назвать и по другому smile.gif
позиционирования курсора, и все что сним связано, к ближайшему
узлу координатной сетки. Другими словами, при ПЕРЕМЕЩЕНИИ,
надо отслеживать размеры сетки и вводимые координаты,
так чтоб они были кратны целому числу, и автор этого поста нашел ситуацию,
когда и при соблюдении этих правил можно поймать ошибку.

Правильно на мой взгляд было бы так:
Точность ввода(при перемещении) по координатам с клавиатуры,
не должена зависить от размеров заданной сетки.
Пусть даже введенные координаты(через J) не ложатся на сетку,
но объект извольте поставить по тем координатам которые ввел,
а то надо постоянно смотреть на сетку, не логично.
Например в свойствах некоторых(pad, via ...) объектов,
можно поменять их координаты , независимо от текущей сетки.
Поэтому логично, чтоб и ПЕРЕМЕЩЕНИЕ работало независимо
от сетки, или дожна быть опция которая этим управляет.

Плюс правильный зум, чтоб было отображение првичной сетки,
при ЛЮБОМ ее значении(напр 0.001:-).
Но это дороботки в SP3, если будут :-).
Mikle Klinkovsky
1) У меня нет 2006го Пикада.
2) Я делал все точно так, как написано в процитированном.
3) Глюк наблюдался только если смещалась мышь.

Провел эту хрень повторно по "новому сценарию". Глюка нет.

Глюк наблюдается только если не пользоваться зумом, но это не глюк, а "Руки.sys".

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

При масштабе в несколько пикселей между узлами сетки, глюка нет!

Цитата(atlantic @ May 11 2007, 17:12) *
...
Ctrl+V
Этот метод(лекарство) подходит для любого кол-ва объектов,
как мне кажется,
...
>Только Paste Circuit !
...
я пробывал это и на больших платах связанных объектах, итд, пробывал на разведенной плате
с 500 элементами.

Ну не знаю как там в 2006м, но во всех остальных Ctrl+V удаляет цепи с компонентов, полигонов, убивает привязанность размеров...
>Только Paste Circuit !
Доктор ТуамОсес
Цитата(Владимир @ May 11 2007, 10:41) *
Никогда не перемещал на НЕСКОЛЬКО порядков сетки.

А в чём проблема-то???
А Вы наверное мышкой перемещаете ??? Или кнопкой со стрелкой??? Тогда это действительно маразм..
Но я же ввожу координаты с клавиатуры...Вы про такой способ перемещения выделенных объектов Вы не в курсе???
А если мне хочется, всё же, двинуть выделенное кнопками со стрелками, то я сначала двигаюсь в крупной сетке, а при приближении к точке назначения переключаюсь на мелкую (если конечно узел нужная мне точка не попадает в узел текущей сетки - только тогда переключаюсь на более мелкую)....Так что....Опять Вы мимо...



Цитата(Владимир @ May 11 2007, 10:41) *
Никогда не перемещал на НЕСКОЛЬКО порядков сетки.

Смотря как перемещать...Ответил чуть выше в этом же топике.


Цитата(Владимир @ May 11 2007, 10:41) *
Перемещать мелкими шажками по экрану на большие расстояния - это надо иметь зверское терпение и твердость в определенном месте

А кто же так перемещает??? Покажите мне этого человека...Таких просто нет...(И смотрите чуть выше)


И главное:Для меня не является самоцелью добиться того, чтобы перемещение составляло несколько порядков сетки (как многие из Вас предполагают причём напрасно {"а слона ты мы и не заметили"}) и я не двигаю мышью или кнопками со стрелками в сетки 0.001мм на расстояния в десятки мм {я что похож не сумасшедшего} щёлкая по 10000 раз. Целью было установить плату в произвольную, нужную мне, точку с точностью 0.001мм.



Да ....И последнее...Тут высказывалась мысль, что проблема вызвана пересчётом координат в пикселы экрана, что будто бы из-за этого точка видится не в узле сетки...Но я "не верю глазам" своим и просчитываю все варианты....Поэтому я кликаю правой кнопочкой мыши и смотрю координаты перемещённых объектов в окошечке "Properties"...И вижу, что они не соответсвуют тем, которые должны иметь в своём новом месте расположения..Например, я расчитал, что эта Pad на плате должна попасть в точку (Xp,Yp)....Смотрю её свойства И вижу, что она находится в точке (Xp+ErrorX;Yp+ErrorY)..Так что, Господа.....Опять вы мимо....Обана!!!...Возникла идея...А может это связано с работой драйвера мышки??? Хотя нет...Туплю...Я же и напрямую координаты точки назначения вводил с клавы...
P.S. Надеюсь я понятно объяснил???
MaslovVG
А вы уверены, что несмотря на то, что вы не прикасаетесь к "мыше", она неподвижна. Вполне возмошны ее колебания на несколько дискрет вследсвии виврации стола здания и т.д.
Доктор ТуамОсес
Цитата(MaslovVG @ May 13 2007, 09:26) *
А вы уверены, что несмотря на то, что вы не прикасаетесь к "мыше", она неподвижна. Вполне возмошны ее колебания на несколько дискрет вследсвии виврации стола здания и т.д.

Слушайте!!! А и вправду...При нажатии клавиш клавиатуры стол же всё-таки подрагивает....Надо проверить эту идею...
Спасибо за ответ...В нём есть здравый смысл....Спасибо,что не стали пересказывать приёмы работы из моего же топика (как это делали (не в обиду им будет сказано) некоторые другие участники)
GKI
Учитывая "пожелания трудящихся" топик закрывается и жёстко модерируется.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.