Was ist Ebene "Ansicht" unter draft ?

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
Post Reply
luuv
Posts: 54
Joined: Fri Sep 13, 2013 3:27 pm

Was ist Ebene "Ansicht" unter draft ?

Post by luuv »

1. Ich suche eine Möglichkeit um die Ebene: "Ansicht" von draft in eine von zwei Geraden aufgespannte Ebene zu bringen.

Beiliegende Zeichnung "Raumflaeche"verdeutlicht das. Ich möchte in der Loft- Ebene (gem. beigefügter Zeichn.) zeichnen. Unter Draft ginge es meiner Meinung nach ohne Projektionsverkürzungen nur dann wenn die "Ansicht" in dieser Ebene liegt. Habe ich mit dieser Annahme Recht?

Alle Versuche ein sketch in diese Ebene zu bringen sind gescheitert. Macht man beispielsweise aus loft einen Volumenkörper längs der Flächennormalen so wird eine Parallel- Ebene zum Ausgangs- loft nicht als "Fang- Ebene" für Sketch unter Part- Design akzeptiert.

Wozu das Ganze? Ich möchte (immer noch) längs eines Bspline einen Volumenkörper "sweepen". Dazu soll der konstruierte Querschnitt senkrecht zum Anfang des BSpline liegen.

Die Tangenten, oder Normalen zu Bspline vermag ich mit meinen bescheidenen mathematischen Mitteln nicht zu errechnen. Ich habe aber eine interessante Beobachtung gemacht:

2. Unter Draft gibt es den Befehl: "Wire zu Bspline". Diese Befehl wirkt auch rückwärts als "BSpline zu Wire" und danach auch wieder zurück. Visuell sind Ausgangs- Bspline und nach zweifacher Transformation gebildetes Bspline gleich. Ist die Beobachtung richtig?

Meine (leider nur!) angenäherte Konstruktion würde darauf beruhen, dass ich aus dem BSpline ein Dwire mache, am Startpunkt zwei Linien senkrecht (unter Draft) auf Dwire konstruiere und zwischen diesen ein "loft" konstruiere. Dann wäre ich wieder beim Punkt 1.) meiner Anfrage und ohne Hilfe am Ende meiner Konstruktion.

Anmerkung zu Zeichnung: Man blickt vom Inneren in den umschließenden aufgeschnittenen Würfel, welcher nur zur Visualisierung der Raumsituation gedacht ist. So ist meines Erachtens die räumliche Lage von loft besser zu sehen.
Attachments
Raumflaeche.FCStd
(25.12 KiB) Downloaded 60 times
ickby
Veteran
Posts: 3116
Joined: Wed Oct 05, 2011 7:36 am

Re: Was ist Ebene "Ansicht" unter draft ?

Post by ickby »

Hallo,

ich kann dir leider nicht viel zu den konkreten fragen sagen, aber zu deinem generellen problem ein paar tipps wie man das recht einfach per python console lösen kann.

Angenommen dein BSpline hat den namen "MeinSpline". Weiterhin vorrausgesetzt das du schon einen Sketch auf der xy Ebene erzeugt hast, der "MeinSketch" heist. (die namen sind natürlich egal, nur das klar ist wo im Code die Namen eingefügt werden müssen). Der sketch kann auch leer sein, hauptsache er ist im Dokument. Dann kannst du folgendes machen (achtung, eventuell sind rechtschreibfehler in den Befehlen, benutze am besten den Class Browser der Python-Konsole):

Code: Select all


#als erstes brauchen wir informationen über den spline, also müssen wir uns die geomtrie besorgen.
shape = App.ActiveDocument.MeinSpline.Shape

#wir wissen das es eine Kurve ist, also können wir die Kurvengeometrie extrahieren
curve = shape.Curve

#der startpunkt ist simpel zu extrahieren
start = curve.StartPoint

#die Tangente könne wir über die uv-parameter gewinnen (der startpunkt ist bei u=0). 
#rückgabe ist eine liste, daher mit [] den ersten wert extrahieren 
tangente = curve.tangent(0)[0]

#da der sketchauf der xy ebene liegt, ist seine normale auf z. 
normale = App.Vector(0,0,1)

#eine rotation von der aktuellen z normale zur spline tangenten, die unsere neue normale sein soll
rotation = App.Rotation(normale, tangente)

#und ein Placement, was unsere neue sketch position beschreibt
place = App.Placement(start, rotation)

#und schlussendlich verschieben wir den skletch an die position
App.ActiveDocument.MeinSketch.Placement = place
das alles etwas kürzer:

Code: Select all

z = App.Vector(0,0,1);
p = App.ActiveDocument.MeinSpline.Shape.Curve.StartPoint
t = App.ActiveDocument.MeinSpline.Shape.Curve.tangent(0)[0]
App.ActiveDocument.MeinSketch.Placement = App.Placement(p,App.Rotation(z,t))
luuv
Posts: 54
Joined: Fri Sep 13, 2013 3:27 pm

Re: Was ist Ebene "Ansicht" unter draft ?

Post by luuv »

Hallo ickby

Dein Vorschlag klingt genial, genau was ich suchte. Leider habe ich so gut wie keine Kenntnisse in python und kann deshalb auch nicht Dein Makro korrigieren.
Von mir erledigt:
- BSpline ist umbenannt in MeinSpline
- sketch in x-y- Ebene ist umbenannt in MeinSketch
- das Semikolon aus Deinem Text entfernt
- "CODE: SELECT ALL" nicht in die python Konsole kopiert (wurde immer "angemeckert")
- Dein Vorschlag in in die python- Konsole kopiert ergibt folgende Fehlermeldungen:

>>> z = App.Vector(0,0,1)
>>> p = App.ActiveDocument.MeinSpline.Shape.Curve.StartPoint
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'App.Document' object has no attribute 'MeinSpline'
>>> t = App.ActiveDocument.MeinSpline.Shape.Curve.tangent(0)[0]
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'App.Document' object has no attribute 'MeinSpline'
>>> App.ActiveDocument.MeinSketch.Placement = App.Placement(p,App.Rotation(z,t))

"Da steh ich nun ich armer Tor und bin so klug als wie zuvor!" Würdest Du noch einmal helfen?

Quintessenz: Ich muss python lernen. Mach ich auch gern. Wie und wo kann man das am besten tun? Ich möchte kein Profi werden aber einiges doch beherrschen und nicht immer meinen Helfern, den ich dankbar bin, "auf den Geist gehen".
ickby
Veteran
Posts: 3116
Joined: Wed Oct 05, 2011 7:36 am

Re: Was ist Ebene "Ansicht" unter draft ?

Post by ickby »

Ah, das mit dem umbennenen Funktioniert leider nicht. Du must den Namen nehmen, mit dem der Sketch und der Spline zuerst ins Dokument eingefügt wurden.

Am besten gibst du die Befehle per hand ein, dann kannst du nämlich den code browser verwenden. Wenn du die Punkte . eintippst, erscheint ein Fenster, mit allen deinen Möglichkeiten. Das Prinzip ist folgendes:

App. --> Die komplette FreeCAD Application mit allen Grundtypen wie Vector oder Placement

ActiveDocument. --> Das aktuell geöffnete Dokument, mit allen Objeckten drin. Wenn du hier den Punkt eintippst werden auch alle Dokument Objekte angezeigt, auch dein Spline und dein Sketch (mit dem Namen mit dem es erzeugt wurde, ich nehme weiter einfach MeinSketch an, bei dir wird das dann anders heisen)

MeinSketch --> Das Dokument Objekt. Wenn du den Punkt drückst siehst du alles was in dem Dokument Objekt drin ist. Z.B. hat jedes Dokument objekt ein Placement property, das ist das gleiche was du im property editor verstellen kannst.

Shape. -->Objekte mit Geometrie haben ein Shape property, welches die Geometrie beinhaltet. Wenn du den punkt drückst, siehst du dinge wie Volumen oder Oberfläche (was natürlich für den Spline nicht definiert ist)

Curve --> Wenn die Geometrie eine Kurve ist, kann das Curve property verwended werden. Es hat spezielle functionen für Kurven

Python im allgemeinen kannst du gut über das ofizielle Tutorial lernen http://docs.python.org/2/tutorial/ , die FreeCAD API (also welche Befehle es gibt, wie alles aufgbaut ist) ist leider schwerer, da hier die Dokumentation ziemlich dünn ist. Da hilft dann weiter fragen :)
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Was ist Ebene "Ansicht" unter draft ?

Post by bernd »

ickby wrote:... Am besten gibst du die Befehle per hand ein, dann kannst du nämlich den code browser verwenden. Wenn du die Punkte . eintippst, erscheint ein Fenster, mit allen deinen Möglichkeiten...
Dem kann ich als python novice zu 100 % zustimmen! Dann verstehst du auch schnell wie so einfache dinge funktionieren. Und ruhig auch mal ein wenig rumprobieren mit dem python browser. Da lassen sich wunderbar attribute anzeigen und setzen. Mag zwar in vielen Fällen mit der maus schneller gehen, aber es hilft zum lernen und schafft vertrauen, wenn das passiert, was man vor hatte mit einem python befehl zu tun :)

Was ich auch sehr empfehlen kann sind die tutorials hier im wiki:
Das und die folgenden http://www.freecadweb.org/wiki/index.ph ... _to_Python (button next unten rechts)
Vor allem folgendes Tutorial fand ich sehr aufschlussreich in Verbindung mit freecad. http://freecadweb.org/wiki/index.php?ti ... _scripting

Ich hab mir noch nen dickes buch aus papier auf deutsch gekauft. Ist zwar für viele eine völlig veraltete methode des lernens, aber ich stehe noch darauf, vor allem wenn mir etwas völlig neu ist.

gruss bernd.
Post Reply