Собственно, есть схожая тема на refland’е, но видимо я сформулировал там не очень внятно.
Попытаюсь объяснить еще раз (уже здесь) на примере.
(пример отослан на help@vingeo.com)
Поправляйте, если что не так.
Итак, у нас есть четыре типа привязки P - точка, L - линия, I - пересечение, E - перпендикуляр.
Активизируется привязка либо нажатием соответствующей клавиши во время сбора или из контекстного меню правой кнопки.
Общим для всех команд является то, что привязка осуществляется от положения курсора к ближайшей точке или линии. Если помечен какой-либо объект, привязка идет к нему, за исключением пересечения (всегда ближайшее).
На самом деле,
- при работе с горячими клавишами - все типы работают как ожидается, кроме E (перепендируляра).
Перпендикуляр опускается из последней зарегестрированой точки на ближайшую к НЕЙ ЖЕ линию, хотя ожидается, что будет построен к ближайшей к текущему положению курсора.
(В примере – попробуйте опустить перепендикуляр из точки 1 на сегмент АБ.)
Также, перпендикуляр, если некуда опускаться, просто привязывается к конечному узлу. Мне кажется лучше будет опускать на условно продолженую линию, либо игнорировать команду.
- при выборе команды на привязку из контектного меню - вообще наблюдается непонятно что!
Попробуйте перейти в режим сбора (ничего не помечено) и привязаться к точке 1 через меню. Реально привяжемся к углу печатной рамки.
Похожая ситуация и по другим видам привязки.
Суть явления вероятней всего кроется в том, что в качестве исходной координаты для поиска ближайшей точки/линии берётся та, которую занимает курсор в момент клика левой кнопкой мышки в меню.
А реально нужно использовать координаты курсора в момент, когда меню вызывается.