Thema |
---|
Architektur |
Niveau |
fortgeschrittener Anfänger |
Zeit zum Abschluss |
60 Minuten |
Autoren |
vocx |
FreeCAD-Version |
0.18 oder höher |
Beispieldateien |
keine |
Siehe auch |
None |
Dieses Tutorial zeigt, wie man benutzerdefinierte Fenster und Türen in einem Gebäudemodell platziert. Es verwendet die Arbeitsbereiche Entwurf (Draft), Architektur (Arch) und Skizze (Sketcher).
Häufig benutzte Werkzeuge sind: Draft:Raster (Grid), Draft:Fang (Snap), Draft: Linienwerkzeug (Wire), Arch:Wand (Wall), Arch:Fenster (Window) und Sketcher:Neue Skizze (NewSketch). Der Anwender sollte mit der Einschränkung von Skizzen vertraut sein.
Dieses Tutorial wurde inspiriert von den Tutorials von jpg87, welche in folgenden FreeCAD-Foren gepostet wurden:
Siehe auch den folgenden Forumsbeitrag für weitere Informationen über die Position von Fenstern und Türen.
Siehe auch die folgende Seite für einige Videos über das Ausrichten von Fenstern.
1. Öffne FreeCAD, erstelle ein neues, leeres Dokument und wechsel zum Architektur-Arbeitsbereich.
2. Stelle sicher, dass Deine Einheiten im Menü Bearbeiten → Einstellungen → Allgemein → Einheiten korrekt eingestellt sind. Zum Beispiel ist MKS (m/kg/s/Grad)
gut geeignet, um mit den Abständen in einem typischen Gebäude umzugehen; setze außerdem die Anzahl der Nachkommastellen auf 4
, um auch die kleinsten Teile eines Meters zu berücksichtigen.
3. Benutze die Schaltfläche Entwurfsraster ein-/ausschalten, um ein Raster mit ausreichender Auflösung einzublenden. Das Erscheinungsbild des Rasters kannst Du im Menü Bearbeiten → Einstellungen → Draft → Raster und einrasten → Raster ändern. Setze "Hauptlinien alle" auf
20
, "Rasterabstand" auf 50 mm
und "Rastergröße" auf 1000 Linien
(das Raster wird damit eine Fläche von 50m x 50m abdecken).
4. Zoome im 3D-Ansichtsfenster heraus, wenn Du zu nahe am Raster bist.
Jetzt sind wir bereit, um eine einfache Wand zu erstellen, in welcher wir Fenster und Türen positionieren können.
5. Benutze das Draft: Linienwerkzeug, um einen Linienzug zu erstellen. Gehe gegen den Uhrzeigersinn vor.
import FreeCAD
import Draft
p = [FreeCAD.Vector(0.0, 4000.0, 0),
FreeCAD.Vector(2000.0, 0.0, 0.0),
FreeCAD.Vector(4000.0, 0.0, 0.0),
FreeCAD.Vector(6000.0, 2000.0, 0.0),
FreeCAD.Vector(6000.0, 5000.0, 0.0)]
w = Draft.makeWire(p, closed=False)
6. Wähle DWire
im Modellbaum aus und klicke auf das Arch:Wand-Werkzeug; die Wände werden daraufhin mit einer voreingestellten Breite (Dicke) von 0.2 m und einer Höhe von 3 m erstellt.
Basis-Linienzug für die Wände
Die aus dem Linienzug konstruierten Wände
7. Klicke auf das Werkzeug Arch:Fenster, wähle die Voreinstellung (preset) Simple door
aus und ändere die Höhe auf 2 m.
Fangen des Mittelpunktes der unteren Wandkante um die Tür zu platzieren
Sill height
(Brüstungshöhe) ist der Abstand vom Fußboden bis zur unteren Fensterkante. Für Türen ist die Sill height
gewöhnlich 0 m weil Türen normalerweise bis zum Fußboden reichen; andererseits haben Fenster üblicherweise einen Abstand von 0,5 m bis 1,5 m zum Fußboden. Der Parameter Sill height
(Brüstungshöhe) kann nur während des ursprünglichen Erzeugens eines Fensters oder einer Tür mittels Voreinstellung (preset) eingegeben werden. Ist das Fenster oder die Tür erst einmal eingefügt, lässt sich seine Lage durch Editieren der Eigenschaft DatenPosition [x, y, z]
der zugrundeliegenden Skizze modifizieren.
8. Wechsel zum Sketcher-Arbeitsbereich, wähle den Teil der Wand auf der rechten Seite aus, welcher keine Tür hat. Klicke auf NeueSkizze und wähle FlatFace als Verknüpfungs-Methode. Wenn die vorhandene Geometrie Deine Sicht beeinträchtigt, klicke auf "Schnitt anzeigen", um diese auszublenden.
9. Zeichne eine ausgefallene Skizze, welche 3 geschlossene Linienzüge enthält. Stelle sicher, dass alle Linienzüge komplett beschränkt sind.
Width
und Height
. Eine Beschränkung definiert auch die Krümmung des äußeren Linienzuges. Gib ihm eine geeignete Bezeichnung, z.B. HeightCurve
.FrameFixedOffset
. Er wird für den oberen und beide seitlichen Versätze verwendet. Der untere Versatz bewirkt, wenn auf Null gesetzt, dass der Fensterrahmen den Boden der Öffnung berühren wird - dies kann verwendet werden, um anstelle eines Fensters eine Tür zu modellieren. Gib ihm eine passende Bezeichnung, z.B. FrameFixedBottom
.FrameInnerOffset
und FrameInnerBottom
.Beschränkungen für die äußeren Linienzüge der Skizze, welche das Fenster beschreiben
Beschränkungen für die inneren Linienzüge des Skizze, welche das Fenster beschreiben
10. Wenn die Skizze vollständig eingeschränkt ist, drücke Schließen um die Skizze zu verlassen (Skizze beenden).
[4 m, 1 m, 0 m]
, so dass die Skizze zentriert in der Wand sowie 1m über dem Fußboden liegt.Fenster-Skizze, verschoben zur gewünschten Position auf der Wand
Benannte Einschränkungen der Skizze, welche verändert werden können, ohne die Skizze zu öffnen
11. Wechsele zurück zum Architektur-Arbeitsbereich und benutze - mit ausgewählter Skizze Sketch002
- die Funktion Arch:Fenster. Es wird ein Fenster erstellt und eine Öffnung in der Wand erzeugt. Da das Fenster aus einer benutzerdefinierten Skizze erstellt wurde und nicht mittels einer Voreinstellung, ist es erforderlich, seine Einzelkomponenten, d.h. fester Rahmen, Fensterflügel und Glasscheibe, für eine korrekte Darstellung zu bearbeiten.
Benutzerdefiniertes Fenster, erzeugt aus einer Skizze; noch hat es weder einen echten Rahmen noch eine Glasscheibe
12. Wähle im Modellbaum den unter Window
liegenden Sketch002
und drücke Space oder ändere die Eigenschaft AnsichtVisibility auf true
.
13. Klicke doppelt auf Window
im Modellbaum um die Bearbeitung zu beginnen.
Window elements
befinden sich zwei Felder: Wires
und Components
. Es gibt 3 'Wires': Wire0
, Wire1
und Wire2
sowie 1 'Component': Default
. Die 'Wires' entsprechen den in der Skizze gezeichneten Linienzügen; Die 'Components' definieren die Bereiche in der Skizze, welche extrudiert werden, um Rahmen oder Glasscheibe mit realer Dicke zu erzeugen; diese Bereiche werden durch die Linienzüge begrenzt. Ein mittels Voreinstellung erzeugtes Fenster hat bereits 2 'Components': OuterFrame
und Glass
. Das benutzerdefinierte Fenster muss bearbeitet werden, um eine ähnliche Struktur zu erhalten.Dialog zum Bearbeiten eines Fensters oder einer Tür
Default
und dann auf Remove , um es zu entfernen.Name
, Typ
, Kantenzüge
, Dicke
, Versatz
, Gelenk
und Öffnungsmodus
. Vergib einen Namen wie etwa OuterFrame
, wähle Rahmen
als Typ
aus und klicke auf Wire0
und dann Wire1
. Diese sollten in der 3D-Ansicht hervorgehoben werden. Trage für Dicke
einen kleinen Wert ein: 15 mm
und hake die Checkbox dahinter an, um den Default-Wert hinzuzufügen. Dieser Default-Wert ist die der Eigenschaft DatenFrame zugeordnete Länge. Ein ähnlicher Default-Wert kann auch der Eigenschaft DatenVersetzen zugeordnet werden. Klicke abschließend auf die Schaltfläche + Erstelle/aktualisiere Komponente , um die Bearbeitung der Komponente zu beenden.InnerFrame
, wähle Rahmen
als Typ
und klicke auf Wire1
und dann Wire2
. Trage eine zweckmäßige Dicke
ein: 60 mm
sowie bei Versetzen
den Wert 15 mm
. Dann klicke auf + Erstelle/aktualisiere Komponente .Glass
, wähle als Typ
Glass panel
und klicke auf Wire2
. trage eine zweckmäßige Dicke
ein: 10 mm
sowie bei Versetzen
den Wert 40 mm
. Klicke dann auf + Erstelle/aktualisiere Komponente . Falls eine der drei Komponenten verändert werden soll, wähle diese aus und drücke Bearbeiten . Änderungen werden nur nach Bestätigen der Schaltfläche + Erstelle/aktualisiere Komponente gespeichert.Bearbeitung einer zuvor definierten Komponente eines Fensters oder einer Tür
OuterFrame
, InnerFrame
sowie Glass
. Gib einen Wert von 100 mm
bei DatenFrame ein, um eine Default-Dicke zu bestimmen, welche zu dem in der OuterFrame
- Komponente spezifizierten Wert hinzuaddiert wird.Eigenschafts-Dialog des Fensters, um die Default-Rahmenlänge, einen Versatz (Offset) und andere Einstellungen einzutragen
fertiges Fenster mit zugehörigen Komponenten, eingefügt in die Wand
14. Wähle Window
und den zugrundeliegenden Sketch002
im Modellbaum aus. Gehe dann zu Bearbeiten → Auswahl duplizieren und beantworte die Frage, ob nicht ausgewählte Abhängigkeiten dupliziert werden sollen, mit No. Ein neues Window001
mit Sketch003
wird an derselben Stelle wie die Original-Elemente erscheinen.
15. Wähle den neuen Sketch003
aus. Gehe zur Eigenschaft DatenMap Mode und klicke auf das Erweiterungsfeld rechts neben dem Wert FlatFace
. Wähle in der 3D-Ansicht den Wandabschnitt auf der linken Seite aus, welcher noch kein Element hat. Verdrehe die Ansicht soweit wie nötig. Verändere Attachment offset
zu [-1 m, 0 m, 0 m], um das Fenster zu zentrieren und klicke OK. Die Skizze und das Fenster sollten dann an der neuen Positionen erscheinen.
Dialog zum Editieren der Verbindungsebene der Skizze
16. Du kannst die Abmessungen des neuen Fensters durch Ändern der benannten Parameter im Sketch003
unter DatenConstraints einstellen. Setze zum Beispiel Height
auf 2 m
und Frame Fixed Bottom
auf 0 m
. Drücke dann Ctrl+R, um das Modell zu aktualisieren. Falls in der Wand kein vergrößertes Loch für das neue Fenster erscheint, wähle die Wand im Modellbaum mit Rechtsklick aus, klicke auf Markieren, um neu zu berechnen
und drücke dann Ctrl+R noch einmal.
17. Diese Operationen haben die Position des neuen Fensters verändert, aber die Öffnung in der Wand sieht noch nicht korrekt aus. Sie ist schief, was daran liegt, dass das Loch nicht senkrecht zur Wandoberfläche liegt und daher andere Teile der Wand schneidet. Das Problem besteht darin, dass Window001
die DatenNormal-Information des originalen Window
beibehalten hat.
Falsche Öffnung in der Wand wegen eines falschen Normalenvektors des Fensters
18. Jedes Arch:Fenster-Objekt kontrolliert die Extrusion seines Körpers und der Wandöffnung mittels der Eigenschaft DatenNormal.
Die Normale ist ein Vector [x, y, z]
, welcher die Richtung senkrecht zur Wand anzeigt. Wenn ein Fenster oder eine Tür mittels Voreinstellung und dem Werkzeug Arch:Fenster direkt über einer Arch:Wand erzeugt wird, wird die Normale automatisch ermittelt und das resultierende Fenster (oder die Tür) korrekt ausgerichtet; Die ersten beiden Objekte Door
und Door001
wurden auf diese Art erstellt.
In gleicher Weise wird eine Skizze, wenn durch Auswahl einer ebenen Oberfläche erstellt, auf diese Ebene ausgerichtet. Wenn dann das Werkzeug Arch:Fenster benutzt wird, verwendet das Fenster als Normale die zur Skizze senkrechte Richtung. Dies war der Fall beim dritten Objekt, dem benutzerdefinierten Window
.
Wenn ein bereits exitierendes Fenster verschoben werden soll - wie im Fall mit dem duplizierten Window001
- muss der Sketch einer anderen Fläche zugeordnet (gemappt) werden. Bei Ausführung werden sowohl der Sketch als auch das Fenster verschoben, jedoch wird bei letzterem die Normale nicht automatisch aktualisiert und somit hat es falsche Informationen für die Extrusion. Die Normale muss deshalb manuell berechnet und in DatenNormal eingetragen werden.
Die drei Werte des Normalen-Vectors werden wie folgt berechnet:
x = -sin(Winkel)
y = cos(Winkel)
z = 0
Wobei Winkel
den Winkel der lokalen Z-Achse bezogen auf die globale Y-Achse bezeichnet.
Wenn eine Skizze erzeugt wird, hat sie immer 2 Achsen: eine lokale X-Achse (rot) und eine lokale Y-Achse (grün). Wenn die Skizze auf die globale XY-Arbeitsebene bezogen ist, dann sind diese entsprechend daran ausgerichtet. Aber wenn eine Skizze auf die globale XZ- oder YZ-Ebene bezogen ist, wie es gewöhnlich bei Fenstern und Türen der Fall ist (die Skizzen "stehen aufrecht"), dann beschreibt die lokale Z-Achse einen Winkel zur globalen Y-Achse. Dieser Winkel variiert zwischen -180° und +180°. Der Winkel wird positiv betrachtet, wenn er sich - jeweils ausgehend von der globalen Y-Achse - entgegen des Uhrzeigersinns öffnet; und entsprechend negativ, wenn er sich im Uhrzeigersinn öffnet.
lokale Koordinaten einer "aufrecht stehenden" Skizze, d.h. bezogen auf die globale XZ-Ebene
verwendete Richtungen der Normalen für jede Tür und jedes Fenster
Wenn wir auf die bisher erstellte Geometrie schauen, sehen wir folgende Normalen:
Door
Winkel
(angle) = Null. Der Normalenvektor istx = -sin(0) = 0
y = cos(0) = 1
z = 0
oder DatenNormal ist [0, 1, 0]
.
Door001
Winkel
= 90 (positiv, weil gegen den Uhrzeigersinn öffnend). Der Nomalenvektor istx = -sin(90) = -1
y = cos(90) = 0
z = 0
oder DatenNormal ist [-1, 0, 0]
.
Window
Winkel
= 45 (positiv, weil gegen den Uhrzeigersinn öffnend). Der Nomalenvektor istx = -sin(45) = -0.7071
y = cos(45) = 0.7071
z = 0
oder DatenNormal ist [-0.7071, 0.7071, 0]
.
Window001
26.57
; Der gesuchte Winkel ist das Gegenstück dazu, also 90 - 26.57 = 63.43
.Das bedeutet, dass die lokale Z-Achse 63.43 Grad von der globalen Y-Achse verdreht ist, deshalb beträgt der Winkel
-63.46 (negativ, because im Uhrzeigersinn öffnende). Der Normalenvektor ist:
x = -sin(-63.43) = 0.8943
y = cos(-63.43) = 0.4472
z = 0
Deshalb DatenNormal sollte in [0.8943, 0.4472, 0]
geändert werden.
Nach Erledigung dieser Änderungen berechne das Modell mit Ctrl+R neu. Wenn das Loch in der Wand nicht aktualsiert wird, wähle diese im Modelbaum aus, rechtsklicke und wähle Markiere, um neu zu berechnen
, drücke dann noch einmal auf Ctrl+R.
19. Die Extrusionsrichtung der Fenster ist gelöst, zusammen nut der Öffnung in der Wand.
Korrekte Öffnung in der Wand, genau passend zur Normalen des Fensters
20. Wie demonstriert ist die anfängliche Platzierung der Arch: Fenster sehr wichtig. Der Anwender sollte entweder
Wenn das Fenster bereits vorhanden ist und verschoben werden soll, muss die zugrundeliegende Skizze auf die neue Fläche umprojiziert werden und die Eigenschaft DatenNormal des Fensters neu berechnet werden.
Die neue Normalen-Richtung kann durch Messen des Winkels
der neuen Wand in Bezug zur globalen Y-Achse und unter Berücksichtigung, ob der Winkel positiv (gegen den Uhrzeigersinn) oder negativ (im Uhrzeigersinn) ist, durch Verwendung einer einfachen Formel ermittelt werden:
x = -sin(angle)
y = cos(angle)
z = 0
Die Richtigkeit der Berechnungen kann überprüft werden, indem der absolute Betrag des Normalenvektors mit den folgenden Formeln ermittelt wird - er muss "eins" sein:
abs(N) = 1 = sqrt(x^2 + y^2 + z^2)
abs(N) = 1 = sqrt(sin^2(angle) + cos^2(angle) + z^2)
(FIXME)