Sketcher ConstrainTangent/ru: Difference between revisions

From FreeCAD Documentation
No edit summary
(Updating to match new version of source page)
 
Line 10: Line 10:
}}
}}


<div class="mw-translate-fuzzy">
{{GuiCommand/ru
{{GuiCommand/ru
|Name/ru=Ограничение касательности
|Name/ru=Ограничение касательности
Line 18: Line 19:
|SeeAlso=[[Sketcher_ConstrainPointOnObject/ru|Зафиксировать точку на объекте]]
|SeeAlso=[[Sketcher_ConstrainPointOnObject/ru|Зафиксировать точку на объекте]]
}}
}}
</div>


<span id="Description"></span>
<span id="Description"></span>
==Описание==
==Описание==


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

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


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


See also: [[Sketcher_Workbench#Drawing_aids|Drawing aids]].
Возможны пять вариантов применения данного ограничения:
# между двумя кривыми (доступно не для всех кривых)
# между двумя конечными точками кривой, делая гладкое соединение
# между кривой и конечной точкой другой кривой
# между двумя кривыми в точке, определённой пользователем
# между двумя линиями для создания условия коллинеарности


===[[Sketcher_Workbench#Continue_modes|Continue mode]]===
Для назначения ограничения касательности следует:
* Выделить две или три элемента эскиза.
* Вызвать ограничение, кликнув его иконку на панели инструментов или выделив в меню, или использовав клавиатурное сокращение.


# Make sure there is no selection.
# There are several ways to invoke the tool:
#* Press the {{Button|[[Image:Sketcher_ConstrainTangent.svg|16px]] [[Sketcher_ConstrainTangent|Constrain tangent or collinear]]}} button.
#* Select the {{MenuCommand|Sketch → Sketcher constraints → [[Image:Sketcher_ConstrainTangent.svg|16px]] Constrain tangent or collinear}} option from the menu.
#* {{Version|1.0}}: Right-click in the [[3D_view|3D view]] and select the {{MenuCommand|Constrain → [[Image:Sketcher_ConstrainTangent.svg|16px]] Constrain tangent or collinear}} option from the context menu.
#* Use the keyboard shortcut: {{KEY|T}}.
# The cursor changes to a cross with the tool icon.
# Do one of the following:
#* Select two edges. The edges can be any edge except a B-spline.
#* Select a point and two edges (in that order).
#* Select an edge, a point and another edge (idem).
# A Tangent constraint is added. If a point and two edges have been selected, up to two [[Sketcher_ConstrainPointOnObject|Point on object constraints]] can also be added. See [[#Between_two_edges_at_point|Examples]].
# Optionally keep creating constraints.
# To finish, right-click or press {{KEY|Esc}}, or start another geometry or constraint creation tool.

===Run-once mode===

# Do one of the following:
#* Select two edges (see above).
#* Select two endpoints belonging to different edges.
#* Select an edge and the endpoint of another edge (in any order).
#* Select a point and two edges (idem).
# Invoke the tool as explained above, or with the following additional option:
#* {{Version|1.0}}: Right-click in the [[3D_view|3D view]] and select the {{MenuCommand|[[Image:Sketcher_ConstrainTangent.svg|16px]] Constrain tangent or collinear}} option from the context menu.
# A Tangent constraint is added. If a point and two edges have been selected, up to two [[Sketcher_ConstrainPointOnObject|Point on object constraints]] can also be added. See [[#Between_two_edges_at_point|Examples]].

==Examples==

<span id="Between_two_edges"></span>
<div class="mw-translate-fuzzy">
===Между двумя кривыми (прямое касание)===
===Между двумя кривыми (прямое касание)===
[[Image:Sketcher ConsraintTangent mode1.png|600px]]
[[Image:Sketcher ConsraintTangent mode1.png|600px]]
</div>


[[Image:Sketcher_ConsraintTangent_mode1.png|400px]]
Две прямые станут касательными, но точка касания будет неопределённой. Этот режим назначается, когда выделены две кривые.


The two edges are made tangent. If one of the edges is a [[Sketcher_Workbench#Sketcher_CompCreateConic|conic]], a [[Sketcher_CreatePoint|Point object]] that has a [[Sketcher_ConstrainPointOnObject|Point on object constraint]] with both (extended) edges is added.
'''Допустимые выделения:'''
* линия + линия, окружность, дуга, эллипс, дуга эллипса
* окружность, дуга + окружность, дуга
Если прямое касание между выделенными кривыми не поддерживается (например, между оуружностью и эллипсом), автоматически будет добавлена вспомогательная точка, и будет применено tangency-via-point.


<div class="mw-translate-fuzzy">
Не рекомендуется реконструировать точку касания созданием точки и установкой принадлежности её обоим кривым. Это будет работать, но конвергенция будет значительно медленнее, сложнее, и потребует вдвое больше итераций чем в норме. Используйте другие режимы этого ограничения, если нужна точка касания.
Не рекомендуется реконструировать точку касания созданием точки и установкой принадлежности её обоим кривым. Это будет работать, но конвергенция будет значительно медленнее, сложнее, и потребует вдвое больше итераций чем в норме. Используйте другие режимы этого ограничения, если нужна точка касания.
</div>


<span id="Between_two_endpoints"></span>
<div class="mw-translate-fuzzy">
===Между двумя конечными точками (касание точка-к-точке)===
===Между двумя конечными точками (касание точка-к-точке)===
[[Image:Sketcher ConsraintTangent mode2.png|600px]]
[[Image:Sketcher ConsraintTangent mode2.png|600px]]
</div>


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


The endpoints are made coincident, and the angle between the edges at that point is set to 180° (smooth joint) or 0° (sharp joint), depending on the placement of the edges before the constraint is applied.
'''Допустимые выделения:'''
* конечная точка линии/дуги/дуги-эллипса + конечная точка линии/дуги/дуги-эллипса (т.е. две конечные точки любых двух кривых)


<span id="Between_edge_and_endpoint"></span>
<div class="mw-translate-fuzzy">
===Между кривой и конечной точкой (касательная точки к кривой)===
===Между кривой и конечной точкой (касательная точки к кривой)===
[[Image:Sketcher ConsraintTangent mode3.png|600px]]
[[Image:Sketcher ConsraintTangent mode3.png|600px]]
</div>


[[Image:Sketcher_ConsraintTangent_mode3.png|400px]]

<div class="mw-translate-fuzzy">
В этом режиме конечная точка одной кривой ограничивается лежать на другой кривой так, чтобы обе кривые были касательными в этой точке. Этот режим применяется, когда выделены кривая и конечная точка другой кривой.
В этом режиме конечная точка одной кривой ограничивается лежать на другой кривой так, чтобы обе кривые были касательными в этой точке. Этот режим применяется, когда выделены кривая и конечная точка другой кривой.
</div>


<span id="Between_two_edges_at_point"></span>
'''Допустимое выделение:'''
<div class="mw-translate-fuzzy">
* линия, окружность, дуга, эллипс, дуга эллипса + конечная точка линии/дуги/дуги эллипса (то есть любая кривая + конечная точка любой кривой)


===Между двумя кривыми в точке (касательная через точку) (v0.15)===
===Между двумя кривыми в точке (касательная через точку) (v0.15)===
[[Image:Sketcher ConsraintTangent mode4.png|600px]]
[[Image:Sketcher ConsraintTangent mode4.png|600px]]
</div>


[[Image:Sketcher_ConsraintTangent_mode4.png|400px]]

<div class="mw-translate-fuzzy">
В этом режиме две кривые делаются касательными и отслеживается точка касания. Этот режим применяется, когда выделены две кривые и точка.
В этом режиме две кривые делаются касательными и отслеживается точка касания. Этот режим применяется, когда выделены две кривые и точка.
</div>


<div class="mw-translate-fuzzy">
'''Допустимое выделение:'''
* любая линия/кривая + любая линия/кривая + любая точка
"Любая точка" может быть отдельной точкой, или точкой чего-либо, например, центр окружности, конечная точка дуги, начальная точка.

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

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


<span id="Between_two_lines"></span>
Подсказкой вычислителю, где должно быть касание, будет размещение точки перед наложением ограничения. С этим ограничением можно ограничить два эллипса на касание в двух точках.
<div class="mw-translate-fuzzy">

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


[[Image:Sketcher_ConstraintTangent_mode5.png|600px]]
[[Image:Sketcher_ConstraintTangent_mode5.png|400px]]


The two lines are made collinear.
'''Допустимое выделение:'''
* любая линия/вершина + любая линия/вершина


<span id="Scripting"></span>
<span id="Scripting"></span>

Latest revision as of 15:01, 23 April 2024

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

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

Описание

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

Применение

See also: Drawing aids.

Continue mode

  1. Make sure there is no selection.
  2. There are several ways to invoke the tool:
    • Press the Constrain tangent or collinear button.
    • Select the Sketch → Sketcher constraints → Constrain tangent or collinear option from the menu.
    • introduced in version 1.0: Right-click in the 3D view and select the Constrain → Constrain tangent or collinear option from the context menu.
    • Use the keyboard shortcut: T.
  3. The cursor changes to a cross with the tool icon.
  4. Do one of the following:
    • Select two edges. The edges can be any edge except a B-spline.
    • Select a point and two edges (in that order).
    • Select an edge, a point and another edge (idem).
  5. A Tangent constraint is added. If a point and two edges have been selected, up to two Point on object constraints can also be added. See Examples.
  6. Optionally keep creating constraints.
  7. To finish, right-click or press Esc, or start another geometry or constraint creation tool.

Run-once mode

  1. Do one of the following:
    • Select two edges (see above).
    • Select two endpoints belonging to different edges.
    • Select an edge and the endpoint of another edge (in any order).
    • Select a point and two edges (idem).
  2. Invoke the tool as explained above, or with the following additional option:
  3. A Tangent constraint is added. If a point and two edges have been selected, up to two Point on object constraints can also be added. See Examples.

Examples

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

The two edges are made tangent. If one of the edges is a conic, a Point object that has a Point on object constraint with both (extended) edges is added.

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

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

The endpoints are made coincident, and the angle between the edges at that point is set to 180° (smooth joint) or 0° (sharp joint), depending on the placement of the edges before the constraint is applied.

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

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

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

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

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

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

The two lines are made collinear.

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

Ограничение касательности может создаваться из макросов и из консоли 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.