Sandbox:Roy 043

Description
An Arch Window is a base object for all kinds of "embeddable" objects, such as windows and doors. It is designed to be either independent, or "hosted" inside another component such as an Arch Wall, Arch Structure, or Arch Roof. It has its own geometry, that can be made of several solid components (commonly a frame and inner panels), and also defines a volume to be subtracted from the host objects, in order to create an opening.

Window objects are based on closed 2D objects, such as Draft Rectangles or Sketches, that are used to define their inner components. The base 2D object must therefore contain several closed wires, that can be combined to form filled panels (one wire) or frames (several wires).

The Window tool features several presets; this allows the user to create common types of windows and doors with certain editable parameters, without the need for the user to create the base 2D objects and components manually.

All information applicable to an Arch Window also applies to an Arch Door, as it's the same underlying object. The main difference between a Window and a Door is that the Door has an internal panel that is shown opaque (the door itself), while the Window has a panel that is partially transparent (the glass).





Using a preset

 * 1) Press the  button, or press  then  keys.
 * 2) Select one of the presets in the list.
 * 3) Fill out the desired parameters.
 * 4) In the 3D view, move the window to the location where you wish to place it. If you move the pointer over an Arch Wall, the outline of the window should align itself with the face of that object.
 * 5) Click on the 3D view with the mouse, or press the  key three times to confirm the X, Y, Z coordinates of the placement.

Additional presets
If you install the Parts Library from the Addon Manager, the window tool will search this library for additional presets. These presets are FreeCAD files containing a single window based on a parametric sketch that has named constrains. You may place additional presets in the directory so that they are found by the window tool.

It is also possible to place custom windows and doors in your user directory.


 * The is the user directory where FreeCAD configuration files, macros, and external workbenches are stored. It can be found be entering  in the Python console.
 * On Linux it is usually
 * On Windows it is usually
 * On Mac OSX it is usually
 * The subdirectory name is just a suggestion, any name can be used. But the files must be placed in one or more subdirectories inside the  or  directories.

Creating from scratch

 * 1) Optionally, select a face on the Arch object where you want the window to be included.
 * 2) Switch to the Sketcher Workbench.
 * 3) Create a new sketch.
 * 4) Draw one or more closed wires (loops).
 * 5) Close the sketch.
 * 6) Switch back to the Arch Workbench.
 * 7) Press the  button, or press  then  keys.
 * 8) To adjust the window components and various properties, enter the window task panel by double-clicking on the created object in the tree view.

When creating the sketch, pay close attention to the creation order of the loops; the numbering of the "wires" in the task panel ("Window elements") depends on this.

Presets
The following presets are available:

Building components
Windows can include 3 types of components: panels, frames and louvres. Panels and louvres are made from one closed wire, which gets extruded, while frames are made from 2 or more closed wire, where each one is extruded, then the smaller ones are subtracted from the biggest one. You can access, create, modify and delete components of a window in edit mode (double-click the window in the Tree view). The components have the following properties:


 * Name: A name for the component
 * Type: The type of component. Can be "Frame", "Glass panel", "Solid panel" or "Louvres"
 * Wires: A comma-separated list of wires the component is based on
 * Thickness: The extrusion thickness of the component
 * Z Offset: The distance between the component and its base 2D wire(s)
 * Hinge: This allows you to select an edge from the base 2D object, then set that edge as a hinge for this component and the next ones in the list
 * Opening mode: If you defined a hinge in this component or any other earlier in the list, setting the opening mode will allow the window to appear open or to display 2D opening symbols in plan or elevation.



Options

 * Windows share the common properties and behaviours of all Arch Components
 * If the Auto-include checkbox on the Window creation task panel is unchecked, the window won't be inserted into any host object on creation.
 * Add a selected window to a wall by selecting both, then pressing the button.
 * Remove a selected window from a wall by selecting the window, then pressing the button.
 * When using presets, it is often convenient to turn the "Near" Draft Snap on, so you can snap your window to an existing face.
 * The hole created by a window in its host object is determined by two properties: and  . The Hole Wire number can be picked in the 3D view from the window's task panel available when double-clicking the window in the tree view
 * Windows can make use of Multi-Materials. The window will search in the attached Multi-Material for material layers with a same name for each of its window component, and use it if any is found. For example, a component named "OuterFrame" will search in the attached Multi-Material, for a material layer named "OuterFrame". If such material layer is found, its material will be attributed to the OuterFrame component. The thickness value of the material layer is disregarded.

Openings
Tutorial for open windows

Doors and windows can appear partially or fully open in the 3D model, or can display opening symbols both in plan and/or elevation. Consequently, these will also appear in extracted 2D views generated by Draft Shape2DView or TechDraw Workbench or Drawing Workbench. To obtain this, at least one of the window components must have a hinge and an opening mode defined (see the Building components above). Then, using the, or  properties, you can configure the appearance of the window:



Defining window types
Windows can also take advantage of other tools, specifically PartDesign workflows, to define a type. A type is an object that defines the shape of the window. This is specially well suited to work with App Parts:



Download the example file shown above

Example workflow

 * Create a window frame object, a glass panel, and any other window component you need, using Part Workbench or PartDesign tools.
 * For example, create a base rectangular sketch for your window, then a profile sketch for the frame, and create a Part Sweep to sweep the profile around the base sketch. Create a Part Offset2D from the base sketch, then a Part Extrude to create the glass panel
 * Make sure all these pieces have a unique, meaningful name (for example, "Frame" or "Glass Panel")
 * Create an App Part, and place all your subcomponents in it
 * Create a volume to be subtracted from the wall, for example by extruding the base sketch. Add this volume to the App Part. Make sure the volume is turned off
 * If using FreeCAD version 0.19 or later, you can add 3 properties to your App Part, by right-clicking its properties view, and check "Show All". Add the following properties (all of them are optional, the group doesn't matter):
 * Height as a PropertyLength and link it, for example, to a vertical constraint of your base sketch
 * Width as a PropertyLength and link it, for example, to a horizontal constraint of your base sketch
 * Subvolume as a PropertyLink and link it to the volume to be subtracted that we created above
 * Tag as a PropertyString

Materials
Our window type is now ready. We can create window objects from it, simply by selecting the App Part and pressing the window button. The "Height", "Width", "Subvolume" and "Tag" properties of the window will be linked to the corresponding property of the App Part, if existing.

To build a material for type-based windows:
 * Create a multi-material
 * Create one entry in the multi-material for each component of your App Part. For example, one "Frame", one "Glass panel" as we used above. Make sure to use the exact same name.
 * Attribute that multi-material to each of the windows derived from the same type

You can use any other kind of workflow than the one described above, the important points to remember are:
 * The type object must be one object, no matter the type (App Part, PartDesign Body, Part Compound, or even another Arch Window)
 * The type object must have a "Subvolume" property (linked to the window's Subvolume property) for openings in host objects to work
 * The type object must have a "Group" property with different children with same names as multi-material items for multi-materials to work

Properties

 * : The height of this window
 * : The width of this window
 * : The depth of the hole created by this window in its host object
 * : The number of the wire from the base object that is used to create a hole in the host object of this window. This value can be set graphically when double-clicking the window in the tree view. Setting a value of 0 will make the window automatically pick its biggest wire for the hole.
 * : A list of strings (5 strings per component, setting the component options above)
 * : If any of the components is set to "Louvres", this property defines the size of the louvre elements
 * : If any of the components is set to "Louvres", this property defines the spacing between the louvre elements
 * : All components that have their opening mode set, and provided a hinge is defined in them or in an earlier component in the list, will appear open by a percentage defined by this value
 * : Shows 2D opening symbol in plan
 * : Shows 2D opening symbol in elevation

Scripting
Arch API and FreeCAD Scripting Basics.

The Window tool can be used in macros and from the Python console by using the following function:


 * Creates a object based on, which should be a well formed, closed Draft Wire or Sketcher Sketch.
 * If available, sets the, , and (label) of the Window.
 * If the is not a closed shape, the tool may not create a proper solid figure.

Example:

You can also create a Window from a preset.


 * Creates a object based on, which should be one of the names defined in
 * Some of these presets are:, , , , , , ,.
 * and define the total size of the object, with units in millimeters.
 * The parameters, , (vertical offsets), ,  (widths), , and  (horizontal offsets) specify different distances in millimeters, and depend on the type of preset being created.
 * If a is given, it is used.

Example: