Sketcher ConstrainTangent/ru: Difference between revisions

From FreeCAD Documentation
(Created page with "Для назначения ограничения касательности следует: * Выделить две или три элемента эскиза. * Вызв...")
No edit summary
 
(61 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<languages/>
<languages/>

{{Docnav/ru|
{{Docnav/ru
[[Sketcher_ConstrainPerpendicular/ru|Perpendicular]]|
|[[Sketcher_ConstrainPerpendicular/ru|Ограничение перпендикулярности]]
[[Sketcher_ConstrainEqual/ru|Equal Length]]|
|[[Sketcher_ConstrainEqual/ru|Ограничение эквивалентностью]]
[[Sketcher_Workbench/ru|Sketcher]]|
|[[Sketcher_Workbench/ru|Sketcher]]
IconL=Constraint_Perpendicular.png|IconC=Workbench_Sketcher.svg|IconR=Constraint_EqualLength.png
|IconL=Sketcher_ConstrainPerpendicular.svg
|IconR=Sketcher_ConstrainEqual.svg
|IconC=Workbench_Sketcher.svg
}}
}}


{{GuiCommand/ru
{{GuiCommand/ru
|Name/ru=Ограничение касательности
|Name=Sketcher ConstrainTangent
|Name=Sketcher_ConstrainTangent
|Name/ru=Sketcher ConstrainTangent
|Workbenches=[[Sketcher Workbench/ru|Sketcher]]
|MenuLocation=Sketch → Ограничения эскиза → Ограничение касательности
|MenuLocation=Sketch → Ограничения эскиза → Ограничение касательности
|Workbenches=[[Sketcher_Workbench/ru|Sketcher]]
|Shortcut=T
|Shortcut={{KEY|T}}
|SeeAlso=[[Sketcher ConstrainPointOnObject/ru|Constraint point on object]]
|SeeAlso=[[Sketcher_ConstrainPointOnObject/ru|Зафиксировать точку на объекте]]
}}
}}


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


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

Возможно четыре варианта назначения ограничения:
Ограничение касательности также можно использовать с двумя линиями, чтобы сделать их коллинеарными.

<span id="Usage"></span>
==Применение==

Возможны пять вариантов применения данного ограничения:
# между двумя кривыми (доступно не для всех кривых)
# между двумя кривыми (доступно не для всех кривых)
# между двумя конечными точками кривой, делая гладкое соединение
# между двумя конечными точками кривой, делая гладкое соединение
# между кривой и конечной точкой другой кривой
# между кривой и конечной точкой другой кривой
# между двумя кривыми в точке, определённой пользователем
# между двумя кривыми в точке, определённой пользователем
# между двумя линиями для создания условия коллинеарности


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


===Между двумя кривыми (прямое касание)===
===Between two curves (direct tangency)===
[[Image:Sketcher ConsraintTangent mode1.png|600px]]
[[Image:Sketcher ConsraintTangent mode1.png|600px]]


Две прямые станут касательными, но точка касания будет неопределённой. Этот режим назначается, когда выделены две кривые.
Two curves will be made tangent, and the point of tangency will be implicit. This mode is applied if two curves were selected.


'''Допустимые выделения:'''
'''Accepted selection:'''
* линия + линия, окружность, дуга, эллипс, дуга эллипса
* line + line, circle, arc, ellipse, arc-of-ellipse
* окружность, дуга + окружность, дуга
* circle, arc + circle, arc
Если прямое касание между выделенными кривыми не поддерживается (например, между оуружностью и эллипсом), автоматически будет добавлена вспомогательная точка, и будет применено tangency-via-point.
If direct tangency between selected curves is not supported (e.g. between a circle and an ellipse), a helper point will be added to sketch automatically, and tangency-via-point will be applied.


Не рекомендуется реконструировать точку касания созданием точки и установкой принадлежности её обоим кривым. Это будет работать, но конвергенция будет значительно медленнее, сложнее, и потребует вдвое больше итераций чем в норме. Используйте другие режимы этого ограничения, если нужна точка касания.
It is not recommended to reconstruct the point of tangency by creating a point and constraining it to lie on both curves. It will work, but the convergence will be seriously slower, jumpier, and will require about twice as many iterations to converge than normal. Use other modes of this constraint if the point of tangency is needed.


===Между двумя конечными точками (касание точка-к-точке)===
===Between two endpoints (point-to-point tangency)===
[[Image:Sketcher ConsraintTangent mode2.png|600px]]
[[Image:Sketcher ConsraintTangent mode2.png|600px]]


В этом режиме конечные точки делаются совпадающими, и соединение делается касательным (C1-smooth, или "sharp", в зависимости от расположения кривых перед применением ограничения). Этот режим применяется, когда выделены две конечные точки двух кривых. Если вам нужно такое касание, вы не должны использовать совпадение плюс касание между кривыми/линиями. Решатель не может создать стабильные решения для этой комбинации и соответствующим образом заменяет ограничения.
In this mode, the endpoints are made coincident, and the joint is made tangent (C1-smooth, or "sharp", depending on the placement of curves before the constraint is applied). This mode is applied when two endpoints of two curves were selected.


'''Допустимые выделения:'''
'''Accepted selection:'''
* конечная точка линии/дуги/дуги-эллипса + конечная точка линии/дуги/дуги-эллипса (т.е. две конечные точки любых двух кривых)
* endpoint of line/arc/arc-of-ellipse + endpoint of line/arc/arc-of-ellipse (i.e., two endpoints of any two curves)


===Между кривой и конечной точкой (касательная точки к кривой)===
===Between curve and endpoint (point-to-curve tangency)===
[[Image:Sketcher ConsraintTangent mode3.png|600px]]
[[Image:Sketcher ConsraintTangent mode3.png|600px]]


В этом режиме конечная точка одной кривой ограничивается лежать на другой кривой так, чтобы обе кривые были касательными в этой точке. Этот режим применяется, когда выделены кривая и конечная точка другой кривой.
In this mode, an endpoint of one curve is constrained to lie on the other curve, and the curves are forced tangent at the point. This mode is applied when a curve and an endpoint of another curve were selected.


'''Допустимое выделение:'''
'''Accepted selection:'''
* линия, окружность, дуга, эллипс, дуга эллипса + конечная точка линии/дуги/дуги эллипса (то есть любая кривая + конечная точка любой кривой)
* line, circle, arc, ellipse, arc-of-ellipse + endpoint of line/arc/arc-of-ellipse (i.e., any curve + endpoint of any curve)




===Между двумя кривыми в точке (касательная через точку) (v0.15)===
===Between two curves at point (tangent-via-point) (v0.15)===
[[Image:Sketcher ConsraintTangent mode4.png|600px]]
[[Image:Sketcher ConsraintTangent mode4.png|600px]]


В этом режиме две кривые делаются касательными и отслеживается точка касания. Этот режим применяется, когда выделены две кривые и точка.
In this mode, two curves are made tangent, and the point of tangency is tracked. This mode is applied when two curves and a point were selected.


'''Допустимое выделение:'''
'''Accepted selection:'''
* любая линия/кривая + любая линия/кривая + любая точка
* any line/curve + any line/curve + any point
"Любая точка" может быть отдельной точкой, или точкой чего-либо, например, центр окружности, конечная точка дуги, начальная точка.
"Any point" can be a lone point, or a point of something, e.g. a center of a circle, an endpoint of an arc, or the origin.


Чтобы ограничение работало правильно, точка должна быть на обоих кривых. Поэтому как только ограничение вызвано, точка будет автоматически ограничена на двух кривых (если нужно, будет добавлено [[Sketcher_helper_constraint/ru|вспомогательное ограничение]]), и кривые станут касательными в этой точке. Эти [[Sketcher_helper_constraint/ru|вспомогательные ограничения]] - простые регулярные ограничения. Они могут быть добавлены вручную, или удалены.
For the constraint to work correctly, the point must be on both curves. So, as the constraint is invoked, the point will be automatically constrained onto both curves ([[Sketcher helper constraint|helper constraints]] will be added, if necessary), and the curves will be forced tangent at the point. These [[Sketcher helper constraint|helper constraints]] are plain regular constraints. They can be added manually, or deleted.


В сравнении с прямой касательностью, это ограничение медленнее, поскольку привлекается большее число степеней свободы, но если нужна точка касания, это рекомендованный режим, поскольку он предлагает лучшую сходимость в сравнении к прямому касанию + точке на двух кривых.
Compared to direct tangency, this constraint is slower, because there are more degrees of freedom involved, but if the point of tangency is needed, it is the recommended mode because it offers better convergence compared to direct tangency + point on two curves.


Подсказкой вычислителю, где должно быть касание, будет размещение точки перед наложением ограничения. С этим ограничением можно ограничить два эллипса на касание в двух точках.
The placement of the point before the constraint is applied is a hint for the solver for where the tangency should be. With this constraint, one can constrain two ellipses to touch each other in two places.


<span id="Between_two_lines_(collinear)"></span>
==Scripting==
===Между двумя линиями (коллинеарно)===


[[Image:Sketcher_ConstraintTangent_mode5.png|600px]]
Tangent Constraint can be created from [[macros]] and from the python console by using the following:

'''Допустимое выделение:'''
* любая линия/вершина + любая линия/вершина

<span id="Scripting"></span>
==Программирование==

Ограничение касательности может создаваться из [[Macros/ru|макросов]] и из консоли [[Python/ru|Python]] следующим образом:
{{Code|code=
{{Code|code=
# direct tangency
# direct tangency
Line 90: Line 109:
Sketch.addConstraint(Sketcher.Constraint('TangentViaPoint',icurve1,icurve2,geoidpoint,pointpos))
Sketch.addConstraint(Sketcher.Constraint('TangentViaPoint',icurve1,icurve2,geoidpoint,pointpos))
}}
}}
Где:
where:
:* <tt>Sketch</tt> is a sketch object
:* {{incode|Sketch}} это объект эскиза
:* {{incode|icurve1}}, {{incode|icurve2}} это два целых идентификатора кривых, которые станут касательными. Целые это индексы в эскизе (значения, возвращаемые {{incode|Sketch.addGeometry}}).
:* <tt>icurve1, icurve2</tt> are two integers identifying the curves to be made tangent. The integers are indexes in the sketch (the value, returned by Sketch.addGeometry).
:* <tt>pointpos1, pointpos2</tt> should be 1 for start point and 2 for end point.
:* {{incode|pointpos1}}, {{incode|pointpos2}} должны быть 1 для начальной и 2 для конечной точки.
:* <tt>geoidpoint</tt> and <tt>pointpos</tt> in TangentViaPoint are the indexes specifying the point of tangency.
:* {{incode|geoidpoint}} и {{incode|pointpos}} в {{incode|TangentViaPoint}} это индексы, указывающие точку касания.


На странице [[Sketcher_scripting/ru|Программирование в Sketcher]] объясняются значения, которые можно использовать для {{incode|incurve1}}, {{incode|incurve2}}, {{incode|pointpos1}}, {{incode|pointpos2}}, {{incode|geoidpoint}} и {{incode|pointpos}} а также содержатся дополнительные примеры того, как создавать ограничения из сценариев Python.
{{Docnav|[[Sketcher_ConstrainPerpendicular|Perpendicular]]|[[Sketcher_ConstrainEqual|Equal Length]]|[[Sketcher_Workbench|Sketcher]]|IconL=Constraint_Perpendicular.png|IconC=Workbench_Sketcher.svg|IconR=Constraint_EqualLength.png}}


{{Sketcher Tools navi}}


{{Docnav/ru
{{Userdocnavi}}
|[[Sketcher_ConstrainPerpendicular/ru|Ограничение перпендикулярности]]
|[[Sketcher_ConstrainEqual/ru|Ограничение эквивалентностью]]
|[[Sketcher_Workbench/ru|Sketcher]]
|IconL=Sketcher_ConstrainPerpendicular.svg
|IconR=Sketcher_ConstrainEqual.svg
|IconC=Workbench_Sketcher.svg
}}


{{Sketcher_Tools_navi{{#translation:}}}}
{{clear}}
{{Userdocnavi{{#translation:}}}}

Latest revision as of 11:38, 1 March 2023

Ограничение касательности

Системное название
Sketcher_ConstrainTangent
Расположение в меню
Sketch → Ограничения эскиза → Ограничение касательности
Верстаки
Sketcher
Быстрые клавиши
T
Представлено в версии
-
См. также
Зафиксировать точку на объекте

Описание

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

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

Применение

Возможны пять вариантов применения данного ограничения:

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

Для назначения ограничения касательности следует:

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

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

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

Допустимые выделения:

  • линия + линия, окружность, дуга, эллипс, дуга эллипса
  • окружность, дуга + окружность, дуга

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

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

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

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

Допустимые выделения:

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

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

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

Допустимое выделение:

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


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

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

Допустимое выделение:

  • любая линия/кривая + любая линия/кривая + любая точка

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

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

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

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

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

Допустимое выделение:

  • любая линия/вершина + любая линия/вершина

Программирование

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

# direct tangency
Sketch.addConstraint(Sketcher.Constraint('Tangent',icurve1,icurve2))

# point-to-point tangency
Sketch.addConstraint(Sketcher.Constraint('Tangent',icurve1,pointpos1,icurve2,pointpos2))

# point-to-curve tangency
Sketch.addConstraint(Sketcher.Constraint('Tangent',icurve1,pointpos1,icurve2))

# tangent-via-point (plain constraint, helpers are not added automatically)
Sketch.addConstraint(Sketcher.Constraint('TangentViaPoint',icurve1,icurve2,geoidpoint,pointpos))

Где:

  • Sketch это объект эскиза
  • icurve1, icurve2 это два целых идентификатора кривых, которые станут касательными. Целые это индексы в эскизе (значения, возвращаемые Sketch.addGeometry).
  • pointpos1, pointpos2 должны быть 1 для начальной и 2 для конечной точки.
  • geoidpoint и pointpos в TangentViaPoint это индексы, указывающие точку касания.

На странице Программирование в Sketcher объясняются значения, которые можно использовать для incurve1, incurve2, pointpos1, pointpos2, geoidpoint и pointpos а также содержатся дополнительные примеры того, как создавать ограничения из сценариев Python.