Sketcher ConstrainSnellsLaw/it

Sketcher Vincolo di rifrazione

Posizione nel menu
Schizzo → Vincoli Sketcher → Vincolo di rifrazione (Legge di Snell)
Ambiente
Sketcher
Avvio veloce
K W
Introdotto nella versione
0.15
Vedere anche
Nessuno

Descrizione

Lo strumento Sketcher Vincolo di rifrazione vincola due linee a seguire la legge di rifrazione della luce mentre penetra attraverso un'interfaccia dove si incontrano due materiali con indici di rifrazione diversi. Vedere Legge di Snell.

Legge di Snell

Utilizzo

La sequenza dei clic è indicata da frecce gialle con numeri, n1 e n2 mostrano dove sono gli indici di rifrazione

  1. Preparare due linee per rappresentare un raggio di luce e un bordo che funga da interfaccia. Le linee dovrebbero trovarsi su lati diversi dell'interfaccia. L'interfaccia può essere una linea, un arco, una circonferenza o una conica.
  2. Selezionare un punto finale della prima linea, un punto finale della seconda linea e il bordo dell'interfaccia. Prendere nota dell'ordine di selezione dei punti finali.
  3. Esistono diversi modi per richiamare lo strumento:
    • Selezionare l'opzione Schizzo → Vincoli Sketcher → Vincolo di rifrazione (legge di Snell) dal menu.
    • Usare la scorciatoia da tastiera: K quindi W.
  4. Si apre la finestra di dialogo Vincolo di rifrazione.
  5. Inserire il Rapporto n2/n1. Dove n2 è per il supporto in cui risiede la seconda linea selezionata e n1 è per il supporto della prima linea.
  6. Viene aggiunto il vincolo della legge di Snell. Se richiesto, i punti finali vengono resi coincidenti e vincolati sull'interfaccia. Questi vincoli aggiuntivi sono chiamati vincoli di supporto.

Note

Script

Il vincoli possono essere creati da macro e dalla console Python utilizzando il seguente comando:

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

dove:

  • Sketch è un oggetto schizzo
  • line1 e pointpos1 sono due numeri interi che identificano il punto finale della linea nel mezzo con indice di rifrazione n1. line1 è l'indice della linea nello schizzo (il valore restituito da Sketch.addGeometry) e pointpos1 dovrebbe essere 1 per il punto iniziale e 2 per il punto finale.
  • line2 e pointpos2 sono gli indici che specificano il punto finale della seconda linea (nel mezzo n2)
  • interface è l'indice che specifica la linea che indica la posizione dell'interfaccia tra il mezzo n1 e il mezzo n2
  • n2byn1 è un numero in virgola mobile uguale al rapporto degli indici di rifrazione n2/n1

La pagina Sketcher scripting spiega i valori che possono essere utilizzati per line1, pointpos1, line2, pointpos2 e interface e contiene ulteriori esempi su come creare vincoli da script Python.

Esempio:

import Sketcher
import Part
import FreeCAD

StartPoint = 1
EndPoint = 2

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()