Sketcher ConstrainTangent/ru

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

Tangent Constraint can also be used with two lines to make them colinear.

Применение
Возможны пять вариантов применения данного ограничения:
 * 1) между двумя кривыми (доступно не для всех кривых)
 * 2) между двумя конечными точками кривой, делая гладкое соединение
 * 3) между кривой и конечной точкой другой кривой
 * 4) между двумя кривыми в точке, определённой пользователем
 * 5) между двумя линиями для создания условия коллинеарности

Для назначения ограничения касательности следует:
 * Выделить две или три элемента эскиза.
 * Вызвать ограничение, кликнув его иконку на панели инструментов или выделив в меню, или использовав клавиатурное сокращение.

Между двумя кривыми (прямое касание)


Две прямые станут касательными, но точка касания будет неопределённой. Этот режим назначается, когда выделены две кривые.

Допустимые выделения: Если прямое касание между выделенными кривыми не поддерживается (например, между оуружностью и эллипсом), автоматически будет добавлена вспомогательная точка, и будет применено tangency-via-point.
 * линия +  линия, окружность, дуга, эллипс, дуга эллипса
 * окружность, дуга +  окружность, дуга

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

Между двумя конечными точками (касание точка-к-точке)


В этом режиме конечные точки делаются совпадающими, и соединение делается касательным (C1-smooth, или "sharp", в зависимости от расположения кривых перед применением ограничения). Этот режим применяется, когда выделены две конечные точки двух кривых.

Допустимые выделения:
 * конечная точка линии/дуги/дуги-эллипса +  конечная точка линии/дуги/дуги-эллипса (т.е. две конечные точки любых двух кривых)

Между кривой и конечной точкой (касательная точки к кривой)


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

Допустимое выделение:
 * линия, окружность, дуга, эллипс, дуга эллипса +  конечная точка линии/дуги/дуги эллипса (то есть любая кривая + конечная точка любой кривой)

Между двумя кривыми в точке (касательная через точку) (v0.15)


В этом режиме две кривые делаются касательными и отслеживается точка касания. Этот режим применяется, когда выделены две кривые и точка.

Допустимое выделение: "Любая точка" может быть отдельной точкой, или точкой чего-либо, например, центр окружности, конечная точка дуги, начальная точка.
 * любая линия/кривая +  любая линия/кривая  +  любая точка

Чтобы ограничение работало правильно, точка должна быть на обоих кривых. Поэтому как только ограничение вызвано, точка будет автоматически ограничена на двух кривых (если нужно, будет добавлено вспомогательное ограничение), и кривые станут касательными в этой точке. Эти вспомогательные ограничения - простые регулярные ограничения. Они могут быть добавлены вручную, или удалены.

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

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

Between two lines (collinear)


Accepted selection:
 * any line/vertex +  any line/vertex

Программирование
Ограничение касательности может создаваться из макросов и из консоли Python следующим образом:

Где:
 * это объект эскиза
 * , это два целых идентификатора кривых, которые станут касательными. Целые это индексы в эскизе (значения, возвращаемые ).
 * , должны быть 1 для начальной и 2 для конечной точки.
 * и в  это индексы, указывающие точку касания.

The Sketcher scripting page explains the values which can be used for, , , , and  and contains further examples on how to create constraints from Python scripts.