Sketcher ConstrainSnellsLaw/fr: Difference between revisions

From FreeCAD Documentation
(Created page with "==Utilisation==")
No edit summary
 
(59 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages/>
<languages/>

{{Docnav/fr
{{Docnav/fr
|[[Sketcher_ConstrainAngle/fr|Contrainte angulaire]]
|[[Sketcher_ConstrainAngle/fr|Contrainte angulaire]]
|[[Sketcher_ToggleDrivingConstraint/fr|Contraintes pilotantes]]
|[[Sketcher_ConstrainInternalAlignment/fr|Contrainte d'alignement interne]]
|[[Sketcher_Workbench/fr|Atelier Sketcher]]
|[[Sketcher_Workbench/fr|Atelier Sketcher]]
|IconL=Constraint_InternalAngle.png
|IconL=Sketcher_ConstrainAngle.svg
|IconR=Sketcher_ToggleDrivingConstraint.svg
|IconC=Workbench_Sketcher.svg
|IconC=Workbench_Sketcher.svg
|IconR=Constraint_InternalAlignment.png
}}
}}


{{GuiCommand/fr
{{GuiCommand/fr
|Name=Sketcher ConstrainSnellsLaw
|Name=Constraint SnellsLaw
|Name/fr=Sketcher Contrainte de réfraction
|Name/fr=Sketcher Contrainte de réfraction
|MenuLocation=Sketch Sketcher Contraintes → Contrainte de réfraction (Loi de Snell)
|MenuLocation=Esquisse → Contraintes d'esquisse → Contrainte de réfraction (Loi de Snell)
|Workbenches=[[Sketcher Workbench|Sketcher]]
|Workbenches=[[Sketcher_Workbench/fr|Sketcher]]
|Shortcut={{KEY|K}} {{KEY|W}}
|Version=0.15
|Version=0.15
}}
}}
Line 19: Line 21:
==Description==
==Description==


Contraint deux lignes à suivre la loi de la réfraction de la lumière qui pénètre à travers une interface, où deux matériaux de différents indices de réfraction se rencontrent. Voir [ http://fr.wikipedia.org/wiki/Loi_de_Snell_Descartes Loi de Snell] sur Wikipedia pour plus d'info.
Contraint deux lignes à suivre la loi de la réfraction de la lumière qui pénètre à travers une interface, où deux matériaux de différents indices de réfraction se rencontrent. Voir [http://fr.wikipedia.org/wiki/Loi_de_Snell_Descartes Loi de Snell] sur Wikipedia pour plus d'info.
[[Image: Snells law2 witheq.svg|thumb|left|200px|Snell's law]]
{{clear}}


[[File:Snells_law2_witheq.svg|x400px]]

{{Caption|Loi de Snell}}

<span id="Usage"></span>
==Utilisation==
==Utilisation==


[[Image:Sketcher SnellsLaw Example1.png|500px]]
<div class="mw-translate-fuzzy">
{{Caption|La séquence des clics est indiquée par des flèches jaunes avec des chiffres. n1, n2 ne sont que des indications pour montrer où se trouvent les indices de réfraction.}}
==Utilisation==
[[Image: Sketcher SnellsLaw Example1.png|thumb|none|500px|La séquence de clics est indiqué par des flèches jaunes avec des numéros. n1, n2 sont labelisées sur cette photo uniquement pour montrer où sont les indices de réfraction.]]
</div>


* Vous aurez besoin de deux lignes qui vont suivre un faisceau de lumière, et une courbe pour agir comme une interface. Les lignes doivent être sur des côtés différents de l'interface.
* Vous aurez besoin de deux lignes qui vont suivre un faisceau de lumière, et une courbe pour agir comme une interface. Les lignes doivent être sur des côtés différents de l'interface.
* Sélectionnez l'extrémité d'une ligne, un point d'extrémité d'une autre ligne, et le bord de l'interface. L'interface peut être une ligne, un cercle / arc, ellipse / arc d'ellipse. Notez l'ordre dans lequel vous avez sélectionné les paramètres.
* Sélectionnez l'extrémité d'une ligne, un point d'extrémité d'une autre ligne, et le bord de l'interface. L'interface peut être une [[Sketcher_CreateLine/fr|ligne]], un [[Sketcher_CompCreateArc/fr|arc]], un [[Sketcher_CompCreateCircle/fr|cercle]] ou un [[Sketcher_CompCreateConic/fr|conique]]
* Appelez la contrainte. Une boîte de dialogue apparaît pour demander un rapport d'indices de réfraction n2 / n1. n2 correspond au milieu où la ligne du deuxième critère sélectionné réside, n1 est pour la première ligne.
* Lancez la contrainte. Une boîte de dialogue apparaît pour demander un rapport d'indices de réfraction n2/n1. n2 correspond au milieu où la ligne du deuxième critère sélectionné réside, n1 est pour la première ligne.
* Les critères d'évaluation seront mis en coïncidence (si nécessaire), contraint à l'interface (si nécessaire), et la loi de Snell deviendront contraint.
* Les critères d'évaluation seront mis en coïncidence (si nécessaire), contraint à l'interface (si nécessaire), et la loi de Snell deviendront contraint.


Notez que plusieurs contraintes [[Sketcher helper constraint/fr|Sketcher Aide pour contraindre]] seront ajoutées intelligemment (point sur objet, coïncident). Ils peuvent être supprimés s'ils causent une redondance ou ajoutés manuellement s'ils n'ont pas été ajoutés automatiquement. Pour la contrainte de la loi de Snell, les extrémités des lignes doivent coïncider et reposer sur l'interface, sinon le comportement n'est pas défini.
Notez que plusieurs [[Sketcher_helper_constraint/fr|Sketcher Aides pour contraindre]] seront ajoutées automatiquement (point sur objet, coïncidence). Elles peuvent être supprimées si elles créeent une redondance ou ajoutées manuellement si elles n'ont pas été ajoutées automatiquement. Pour la contrainte de la loi de Snell, les extrémités des lignes doivent coïncider et reposer sur l'interface, sinon le comportement n'est pas défini.


En utilisant l'outil {{Button|[[File:Sketcher_CreatePolyline.svg|16px]] [[Sketcher_CreatePolyline/fr|Sketcher Polyligne]]}}, il est possible d'accélérer le tracé des rayons de lumière. Dans ce cas, il est possible de sélectionner deux extrémités coïncidentes par sélection de boîte.
<div class="mw-translate-fuzzy">
En utilisant l'outil [[Sketcher_CreatePolyline/fr|Polyligne d'esquisse Sketcher]] [[Image: Sketcher_CreatePolyline.png|24px]], il est possible d'accélérer le tracé des rayons de lumière. Dans ce cas, il est possible de sélectionner deux extrémités coïncidentes par sélection de boîte.
</div>


<span id="Remarks"></span>
==Remarques==
==Remarques==

* La contrainte actuelle de la loi de Snell applique la plaine équation de la loi n1 * sin (theta1) = n2 * sin (theta2). Il a besoin que les extrémités des lignes soient confondues et sur l'interface par d'autres contraintes. Les contraintes auxiliaires nécessaires sont ajoutées automatiquement en fonction des coordonnées actuelles des éléments.
* La contrainte actuelle de la loi de Snell applique la plaine équation de la loi n1*sin(theta1) = n2*sin(theta2). Il a besoin que les extrémités des lignes soient confondues et sur l'interface par d'autres contraintes. Les contraintes auxiliaires nécessaires sont ajoutées automatiquement en fonction des coordonnées actuelles des éléments.
* La routine de Python n'ajoute pas les contraintes d'aide. Celles-ci doivent être ajoutées manuellement par le script (voir l'exemple dans la section Script)
* La routine de Python n'ajoute pas les contraintes d'aide. Celles-ci doivent être ajoutées manuellement par le script (voir l'exemple dans la section Script)
* Ces contraintes auxiliaires peuvent être supprimées temporairement et les points terminaux traînés dehors, ce qui peut être utile au cas où on veut construire un rayon réfléchi ou des rayons biréfringent.
* Ces contraintes auxiliaires peuvent être supprimées temporairement et les points terminaux traînés dehors, ce qui peut être utile au cas où on veut construire un rayon réfléchi ou des rayons biréfringent.
* Contrairement à la réalité, les indices de réfraction sont associés à des rayons de lumière, mais non pas selon les côtés de la frontière. C'est utile pour émuler la biréfringence, construire des chemins de longueurs d'onde différentes en raison de la réfraction, et construire facilement l'angle de début de réflexion interne totale.
* Contrairement à la réalité, les indices de réfraction sont associés à des rayons de lumière, mais non pas selon les côtés de la frontière. C'est utile pour émuler la biréfringence, construire des chemins de longueurs d'onde différentes en raison de la réfraction, et construire facilement l'angle de début de réflexion interne totale.
* Les deux rayons peuvent être sur le même côté de l'interface, répondant à l'équation de contrainte. Cela n'a aucun sens physique, à moins que le rapport n2 / n1 est de 1,0, auquel cas la contrainte émule une réflexion.
* Les deux rayons peuvent être sur le même côté de l'interface, répondant à l'équation de contrainte. Cela n'a aucun sens physique, à moins que le rapport n2/n1 est de 1,0, auquel cas la contrainte émule une réflexion.
* Arcs de cercle et une ellipse sont également acceptés comme les rayons (non-sens physique).
* Arcs de cercle et une ellipse sont également acceptés comme les rayons (non-sens physique).


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


Les contraintes peuvent être créées à partir de [[macros]] et de la console python en utilisant la fonction suivante:
Les contraintes peuvent être créées à partir de [[Macros/fr|macros]] et de la console [[Python/fr|Python]] en utilisant la fonction suivante:

{{Code|code=
{{Code|code=
Sketch.addConstraint(Sketcher.Constraint('SnellsLaw',line1,pointpos1,line2,pointpos2,interface,n2byn1))
Sketch.addConstraint(Sketcher.Constraint('SnellsLaw',line1,pointpos1,line2,pointpos2,interface,n2byn1))
}}
}}

où:
où:
: * <Tt> Sketch </ tt> est un objet d'esquisse
:* {{incode|Sketch}} est un objet d'esquisse
: * <Tt> ligne1 </ tt> et <tt> pointpos1 </ tt> sont deux entiers identifiant l'extrémité de la ligne dans le milieu d'indice de réfraction de '' n1 ''. <tt> ligne1 </ tt> est l'index de la ligne dans l'esquisse (la valeur retournée par Sketch.addGeometry), et <tt> pointpos1 </ tt> devrait être de 1 pour point de départ et 2 pour le point de fin.
:* {{incode|line1}} et {{incode|pointpos1}} sont deux entiers identifiant l'extrémité de la ligne dans le milieu avec un indice de réfraction de ''n1''. {{incode|line1}} est l'index de la ligne dans l'esquisse (la valeur, retournée par Sketch.addGeometry), et {{incode|pointpos1}} doit être 1 pour le point de départ et 2 pour le point final.
: * <Tt> line2 </ tt> et <tt> pointpos2 </ tt> sont les indices spécifiant le point final de la deuxième ligne (dans un milieu '' n2 '')
:* {{incode|line2}} et {{incode|pointpos2}} sont les index spécifiant le point final de la seconde ligne (dans le support ''n2'')
:* {{incode|interface}} est l'index spécifiant la ligne indiquant la position de l'interface entre le support ''n1'' et le support ''n2''
: * <Tt> n2byn1 </ tt> est un nombre à virgule flottante égal au rapport des indices de réfraction '' n2 '' / '' n1 ''
:* {{incode|n2byn1}} est un nombre à virgule flottante égal au rapport des indices de réfraction ''n2/n1''

La page [[Sketcher_scripting/fr|Sketcher Scripts]] explique les valeurs qui peuvent être utilisées pour {{incode|line1}}, {{incode|pointpos1}}, {{incode|line2}}, {{incode|pointpos2}} et {{incode|interface}} et contient d'autres exemples sur la façon de créer des contraintes à partir de scripts Python.

Exemple :


Exemple:
{{Code|code=
{{Code|code=
import Sketcher
import Sketcher
Line 87: Line 97:
}}
}}


==Version==
La contrainte a été introduit en FreeCAD v0.15.4387


{{Docnav/fr
{{Docnav/fr
|[[Sketcher_ConstrainAngle/fr|Contrainte angulaire]]
|[[Sketcher_ConstrainAngle/fr|Contrainte angulaire]]
|[[Sketcher_ToggleDrivingConstraint/fr|Contraintes pilotantes]]
|[[Sketcher_ConstrainInternalAlignment/fr|Contrainte d'alignement interne]]
|[[Sketcher_Workbench/fr|Atelier Sketcher]]
|[[Sketcher_Workbench/fr|Atelier Sketcher]]
|IconL=Constraint_InternalAngle.png
|IconL=Sketcher_ConstrainAngle.svg
|IconR=Sketcher_ToggleDrivingConstraint.svg
|IconC=Workbench_Sketcher.svg
|IconC=Workbench_Sketcher.svg
|IconR=Constraint_InternalAlignment.png
}}
}}


{{Sketcher Tools navi{{#translation:}}}}
{{Sketcher_Tools_navi{{#translation:}}}}
{{Userdocnavi{{#translation:}}}}
{{Userdocnavi{{#translation:}}}}
{{clear}}

Latest revision as of 13:05, 3 June 2023

Sketcher Contrainte de réfraction

Emplacement du menu
Esquisse → Contraintes d'esquisse → Contrainte de réfraction (Loi de Snell)
Ateliers
Sketcher
Raccourci par défaut
K W
Introduit dans la version
0.15
Voir aussi
Aucun

Description

Contraint deux lignes à suivre la loi de la réfraction de la lumière qui pénètre à travers une interface, où deux matériaux de différents indices de réfraction se rencontrent. Voir Loi de Snell sur Wikipedia pour plus d'info.

Loi de Snell

Utilisation

La séquence des clics est indiquée par des flèches jaunes avec des chiffres. n1, n2 ne sont que des indications pour montrer où se trouvent les indices de réfraction.

  • Vous aurez besoin de deux lignes qui vont suivre un faisceau de lumière, et une courbe pour agir comme une interface. Les lignes doivent être sur des côtés différents de l'interface.
  • Sélectionnez l'extrémité d'une ligne, un point d'extrémité d'une autre ligne, et le bord de l'interface. L'interface peut être une ligne, un arc, un cercle ou un conique
  • Lancez la contrainte. Une boîte de dialogue apparaît pour demander un rapport d'indices de réfraction n2/n1. n2 correspond au milieu où la ligne du deuxième critère sélectionné réside, n1 est pour la première ligne.
  • Les critères d'évaluation seront mis en coïncidence (si nécessaire), contraint à l'interface (si nécessaire), et la loi de Snell deviendront contraint.

Notez que plusieurs Sketcher Aides pour contraindre seront ajoutées automatiquement (point sur objet, coïncidence). Elles peuvent être supprimées si elles créeent une redondance ou ajoutées manuellement si elles n'ont pas été ajoutées automatiquement. Pour la contrainte de la loi de Snell, les extrémités des lignes doivent coïncider et reposer sur l'interface, sinon le comportement n'est pas défini.

En utilisant l'outil Sketcher Polyligne, il est possible d'accélérer le tracé des rayons de lumière. Dans ce cas, il est possible de sélectionner deux extrémités coïncidentes par sélection de boîte.

Remarques

  • La contrainte actuelle de la loi de Snell applique la plaine équation de la loi n1*sin(theta1) = n2*sin(theta2). Il a besoin que les extrémités des lignes soient confondues et sur l'interface par d'autres contraintes. Les contraintes auxiliaires nécessaires sont ajoutées automatiquement en fonction des coordonnées actuelles des éléments.
  • La routine de Python n'ajoute pas les contraintes d'aide. Celles-ci doivent être ajoutées manuellement par le script (voir l'exemple dans la section Script)
  • Ces contraintes auxiliaires peuvent être supprimées temporairement et les points terminaux traînés dehors, ce qui peut être utile au cas où on veut construire un rayon réfléchi ou des rayons biréfringent.
  • Contrairement à la réalité, les indices de réfraction sont associés à des rayons de lumière, mais non pas selon les côtés de la frontière. C'est utile pour émuler la biréfringence, construire des chemins de longueurs d'onde différentes en raison de la réfraction, et construire facilement l'angle de début de réflexion interne totale.
  • Les deux rayons peuvent être sur le même côté de l'interface, répondant à l'équation de contrainte. Cela n'a aucun sens physique, à moins que le rapport n2/n1 est de 1,0, auquel cas la contrainte émule une réflexion.
  • Arcs de cercle et une ellipse sont également acceptés comme les rayons (non-sens physique).

Script

Les contraintes peuvent être créées à partir de macros et de la console Python en utilisant la fonction suivante:

Sketch.addConstraint(Sketcher.Constraint('SnellsLaw',line1,pointpos1,line2,pointpos2,interface,n2byn1))

où:

  • Sketch est un objet d'esquisse
  • line1 et pointpos1 sont deux entiers identifiant l'extrémité de la ligne dans le milieu avec un indice de réfraction de n1. line1 est l'index de la ligne dans l'esquisse (la valeur, retournée par Sketch.addGeometry), et pointpos1 doit être 1 pour le point de départ et 2 pour le point final.
  • line2 et pointpos2 sont les index spécifiant le point final de la seconde ligne (dans le support n2)
  • interface est l'index spécifiant la ligne indiquant la position de l'interface entre le support n1 et le support n2
  • n2byn1 est un nombre à virgule flottante égal au rapport des indices de réfraction n2/n1

La page Sketcher Scripts explique les valeurs qui peuvent être utilisées pour line1, pointpos1, line2, pointpos2 et interface et contient d'autres exemples sur la façon de créer des contraintes à partir de scripts Python.

Exemple :

import Sketcher
import Part
import FreeCAD

StartPoint = 1
EndPoint = 2
MiddlePoint = 3

f = App.activeDocument().addObject("Sketcher::SketchObject","Sketch")

# add geometry to the sketch
icir = f.addGeometry(Part.Circle(App.Vector(-547.612366,227.479736,0),App.Vector(0,0,1),68.161979))
iline1 = f.addGeometry(Part.LineSegment(App.Vector(-667.331726,244.127090,0),App.Vector(-604.284241,269.275238,0)))
iline2 = f.addGeometry(Part.LineSegment(App.Vector(-604.284241,269.275238,0),App.Vector(-490.940491,256.878265,0)))
# add constraints
# helper constraints:
f.addConstraint(Sketcher.Constraint('Coincident',iline1,EndPoint,iline2,StartPoint)) 
f.addConstraint(Sketcher.Constraint('PointOnObject',iline1,EndPoint,icir)) 
# the Snell's law:
f.addConstraint(Sketcher.Constraint('SnellsLaw',iline1,EndPoint,iline2,StartPoint,icir,1.47))

App.ActiveDocument.recompute()