Sketcher ConstrainCoincident/de

Beschreibung
Erstellen einer deckungsgleichen Zwangsbedingung für das ausgewählte Element

Dieses Zwangsbedingungswerkzeug nimmt zwei Punkte als Argument und dient dazu, die beiden Punkte deckungsgleich zu machen. (Das bedeutet, sie wie einen Punkt zu setzen).

In der Praxis ist dieses Zwangsbedingungswerkzeug nützlich, wenn es z.B. zu einem Bruch in einem Profil kommt - wenn zwei Linien nahe beieinander enden und verbunden werden müssen - wird eine deckungsgleiche Zwangsbedingung ihrer Endpunkte die Lücke schließen.

Anwendung
Wie bereits erwähnt, benötigt dieses Werkzeug zwei Argumente - beide sind Punkte.
 * 1) Zunächst ist es notwendig, zwei verschiedene Punkte zu markieren. (Beachte, dass dies nicht funktioniert, wenn Du zum Beispiel versuchst, den Start- und Endpunkt der gleichen Linie auszuwählen.)
 * 2) Das Markieren eines Zeichnungselements erfolgt durch Bewegen der Maus über das Element und Anklicken der linken Maustaste.
 * 3) Ein markierter Eintrag ändert die Farbe in grün (Die Farbe kann mit ) bearbeitet werden.
 * 4) Nachfolgende Elemente können durch Wiederholung der obigen Prozedur(en) hervorgehoben werden HINWEIS: Es ist nicht erforderlich, eine spezielle Taste wie Strg gedrückt zu halten, um eine Mehrfachauswahl von Elementen in einer Zeichnung zu erreichen.
 * 5) Wenn Du zwei Punkte markiert hast, klickst Du mit der linken Maustaste auf die 'PunktaufPunkt' [[Image:Constraint_PointOnPoint.png|32px]] Zwangsbedingung, werden die beiden Punkte deckungsgleich und durch einen einzigen Punkt ersetzt.

HINWEIS: Um zwei Punkte deckungsgleich zu machen, muss FreeCAD unbedingt einen oder beide der ursprünglichen Punkte verschieben.

Allgemeine Skriptsteuerung
Die Zwangsbedingung kann aus Makros und aus der Python Konsole mit dem folgenden Befehl erstellt werden:

wo :
 * Skizze ist ein Skizzenobjekt.
 * LinieFixiert ist die Nummer der Zeile, die sich durch die Anwendung der Zwangsbedingung nicht bewegt.
 * PunktderfixiertenLinie ist die Nummer des Scheitelpunktes der Linie fixiertenLinie, der die Bedingung erfüllen muss.
 * LinieBewegt ist die Nummer der Zeile, die sich durch Anwendung der Zwangsbedingung bewegt.
 * PunktderbewegtenLinie ist die Nummer der Zeile LineMoving, die die Zwangsbedingung erfüllen muss.

Das Hauptproblem bei der Verwendung dieser Funktion ist die korrekte Identifizierung der Zeilennummer und der Scheitelpunktnummer der zu verarbeitenden Linien.

Der nächste Abschnitt erklärt Dir, wie Du die Nummerierung einer Linie und eines Scheitels einer Linie identifizieren kannst.

Identifizieren der Nummerierung einer Zeile
Ich habe drei Linien gezeichnet, wie in der folgenden Abbildung dargestellt.



Durch Bewegen des Mauszeigers über die Linie siehst Du die Zeilennummer unten links in den FreeCAD Fenstern, siehe nächste Abbildung.



Leider beginnt die Nummerierung in den FreeCAD-Fenstern bei 1, während die Nummerierung der für das Skript verwendeten Zeile bei 0 beginnt: Dies bedeutet, dass Du jedes Mal eine abrufen musst, wenn Du auf eine Zeile verweisen möchtest.

Identifizieren der Nummerierung der Eckpunkte einer Linie
Die Eckpunkte einer Linie können nur den Wert 1 oder 2 haben. (Frag mich nicht, warum die Nummerierung der Knoten nicht bei 0 beginnt....) Die Knoten sind entsprechend ihrer Reihenfolge der Erstellung nummeriert. Um die Reihenfolge ihrer Erstellung herauszufinden (Wenn Du viele Linien hast, kannst Du Dir nicht merken, welchen Knoten Du zuerst erstellt hast), musst Du nur den Mauszeiger über die beiden Knoten einer Linie bewegen, siehe folgende Abbildung.



If you read e.g. 4 and 5, it means that the vertex 4 will be referenced by using the number 1 in the script command and the vertex 5 will be referenced by using the number 2 in the script command. Etc.

Example
Let us take the previous example of the three lines. The subsequent figure indicates the numbering of each line and their vertices according to the convention for scripting.



blue text = numbering of line, black text = numbering of vertices

The command

yields following result:



The command yields following result: