Arch Roof: Difference between revisions

From FreeCAD Documentation
No edit summary
(Marked this version for translation)
(41 intermediate revisions by 8 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
<translate>
<translate>

<!--T:30-->
<!--T:30-->
{{Docnav
{{docnav|[[Arch_Grid|Grid]]|[[Arch_Space|Space]]|[[Arch_Module|Arch]]|IconL=Arch_Grid.svg |IconC=Workbench_Arch.svg |IconR=Arch_Space.svg}}
|[[Arch_Window|Window]]
|[[Arch_CompAxis|CompAxis]]
|[[Arch_Workbench|Arch]]
|IconL=Arch_Window.svg
|IconR=Arch_CompAxis.png
|IconC=Workbench_Arch.svg
}}


<!--T:13-->
<!--T:13-->
Line 8: Line 16:
|Name=Arch Roof
|Name=Arch Roof
|MenuLocation=Arch → Roof
|MenuLocation=Arch → Roof
|Workbenches=[[Arch Module|Arch]]
|Workbenches=[[Arch_Workbench|Arch]]
|Shortcut=R F
|Shortcut={{KEY|R}} {{KEY|F}}
|SeeAlso=[[Arch Structure]], [[Arch Wall]]
|SeeAlso=[[Arch_Structure|Arch Structure]], [[Arch_Wall|Arch Wall]]
}}
}}


Line 16: Line 24:


<!--T:15-->
<!--T:15-->
The Roof tool allows you to create a sloped roof from a selected wire. The created roof object is parametric, keeping its relationship with the base object. The principle is that each edge is seen allotting a profile of roof (slope, width, overhang, thickness).
The {{Button|[[Image:Arch Roof.svg|16px]] [[Arch_Roof|Arch Roof]]}} tool allows for the creation of a sloped roof from a selected wire. The created roof object is parametric, keeping its relationship with the base object. The principle is that each edge is seen allotting a profile of roof (slope, width, overhang, thickness).


<!--T:29-->
<!--T:29-->
This tool is still in development, and might fail with very complex shapes.
'''Note:''' This tool is still in development, and might fail with very complex shapes.


</translate>
</translate>
Line 27: Line 35:
{{Caption|View from above a building model showing the roof with certain transparency}}
{{Caption|View from above a building model showing the roof with certain transparency}}


==How to use== <!--T:17-->
==Usage (wire base)== <!--T:17-->


<!--T:18-->
<!--T:18-->
# Create a wire with following the counterclockwise direction and select it.
# Create a closed wire with following the counter-clockwise direction and select it.
#*[[Image:CounterclockwiseWire.png|600px]]
#:[[Image:CounterclockwiseWire.png|600px]]
# Press the {{Button|[[Image:Arch Roof.svg|16px]] [[Arch Roof]]}} button, or press {{KEY|R}} then {{KEY|F}} keys
# Press the {{Button|[[Image:Arch Roof.svg|16px]] [[Arch Roof|Arch Roof]]}} button, or press {{KEY|R}} then {{KEY|F}} keys
# The default roof object could have a strange shape, it's because the tool have not all the needed informations.
# The default roof object could have a strange shape, it's because the tool is missing some necessary information.
# After creating the default roof, double click on the object in the tree view to access and edit all the properties. Angle must be between 0 and 90.
# After creating the default roof, double click on the object in the [[Tree_view|tree view]] to access and edit all the properties. Angle must be between 0 and 90.
#*[[File:RoofTable.png]]
#:[[File:RoofTable.png]]
# Each line correspond to a roof pane. So you can set properties you want for each roof pane.
# Each line corresponds to a roof pane. So you can set the properties you want for each roof pane.
# To help you, you can set Angle or Run to 0 and defined a Relative Id, this make automatic calculs to find the data relative to the relative Id.
# To help you, you can set {{incode|Angle}} or {{incode|Run}} to {{incode|0}} and define a {{incode|Relative Id}}, this makes an automatic calculation to find the data relative to the {{incode|Relative Id}}.
# It work like this :
# It works like this:
## If Angle = 0 and Run = 0 then profile is identical to the relative profile.
## If {{incode|Angle &#61; 0}} and {{incode|Run &#61; 0}} then profile is identical to the relative profile.
## If Angle = 0 then angle is calculated so that the height is the same one as the relative profile.
## If {{incode|Angle &#61; 0}} then {{incode|Angle}} is calculated so that the height is the same one as the relative profile.
## If Run = 0 then Run is calculated so that the height is the same one as the relative profile.
## If {{incode|Run &#61; 0}} then {{incode|Run}} is calculated so that the height is the same one as the relative profile.
# At the end, set an angle to 90° to make a gable.
# Finally, set an Angle to 90° to make a gable.
#*[[Image:RoofProfil.png|600px]]
#:[[Image:RoofProfil.png|600px]]
# '''Also you can check this video''' : https://www.youtube.com/watch?v=4Urwru71dVk
# {{Emphasis|Note}}: for better comprehension, please see this [https://www.youtube.com/watch?v=4Urwru71dVk youtube clip].

==Usage (solid base)== <!--T:36-->

<!--T:37-->
If your roof has a complex shape (e.g. contains pitched windows or other non-standard features) you can create a custom solid object using various other FreeCAD workbenches ([[Part_Workbench|Part]], [[Sketcher_Workbench|Sketcher]] etc.). And then use this solid as the {{PropertyData|Base}} object of your roof:

<!--T:38-->
# Select the solid base object.
# Press the {{Button|[[Image:Arch_Roof.svg|16px]] [[Arch Roof|Arch Roof]]}} button, or press {{KEY|R}} then {{KEY|F}} keys.

==Subtracting a roof== <!--T:42-->

<!--T:43-->
Roofs have an automatically generated subtraction volume ({{Version|0.22}} for roofs with a solid base). When a roof is [[Arch_Remove|removed]] from the walls of a building, both the roof itself as well as everything above it is subtracted from the walls.

<!--T:44-->
{{Version|0.22}}: It is possible to override the automatic subtraction volume by setting the {{PropertyData|Subvolume}} property of the roof to a custom solid object.

</translate>
[[File:Arch_Roof_Subtract_Default.png|x150px]] [[File:Arch_Roof_Subtract_Subvolume.png|x150px]] [[File:Arch_Roof_Subvolume_Example.png|x150px]]
<translate>
<!--T:45-->
{{Caption|Solid-based roof before (1st image) and after (2nd image) [[Arch_Remove|removing]] it from walls.<br>
The 3rd image shows the generated subtraction volume.}}


==Options== <!--T:26-->
==Options== <!--T:26-->


<!--T:27-->
<!--T:27-->
* Roofs share the common properties and behaviours of all [[Arch Component|Arch Components]]
* Roofs share the common properties and behaviors of all [[Arch_Component|Arch Components]].


==Properties== <!--T:20-->
==Properties== <!--T:20-->

===Data=== <!--T:34-->

<!--T:35-->
{{TitleProperty|Roof}}


<!--T:21-->
<!--T:21-->
* {{PropertyData|Angles}}: List of the slope angle of the roof pane (an angle for each edge in the wire).
* {{PropertyData|Angles|FloatList}}: The list of angles of the roof segments.
* {{PropertyData|Runs}}: List of the width of the roof pane (a run for each edge in the wire).
* {{PropertyData|Border Length|Length}}: The total length of the borders of the roof.
* {{PropertyData|IdRel}}: List of relation Id The slope angle of the roof
* {{PropertyData|Face|Integer}}: The face number of the base object used to build the roof (not used).
* {{PropertyData|Thickness}}: List of thickness of the roof pane. (a thickness for each edge in the wire).
* {{PropertyData|Flip|Bool}}: Specifies if the direction of the roof should be flipped.
* {{PropertyData|Overhang}}: List of the overhang of the roof pane (an overhang for each edge in the wire).
* {{PropertyData|Heights|FloatList}}: The list of calculated heights of the roof segments.
* {{PropertyData|Face}}: The face index of the base object to be used #Not really used
* {{PropertyData|Id Rel|IntegerList}}: The list of IDs of the relative profiles of the roof segments.
* {{PropertyData|Overhang|FloatList}}: The list of overhangs of the roof segments.
* {{PropertyData|Ridge Length|Length}}: The total length of the ridges and hips of the roof.
* {{PropertyData|Runs|FloatList}}: The list of horizontal length projections of the roof segments.
* {{PropertyData|Subvolume|Link}}: The volume to subtract. If specified it is used instead of the auto-generated subvolume. {{Version|0.22}}
* {{PropertyData|Thickness|FloatList}}: The list of thicknesses of the roof segments.


==Scripting== <!--T:22-->
==Scripting== <!--T:33-->

{{Emphasis|See also:}} [[Arch API]] and [[FreeCAD Scripting Basics]].
<!--T:22-->
{{Emphasis|See also:}} [[Arch API|Arch API]] and [[FreeCAD Scripting Basics|FreeCAD Scripting Basics]].


<!--T:23-->
<!--T:23-->
The Roof tool can be used in [[macros]] and from the [[Python]] console by using the following function:
The Roof tool can be used in [[Macros|macros]] and from the [[Python|Python]] console by using the following function:

</translate>
</translate>
{{Code|code=
{{Code|code=
Line 79: Line 124:
<!--T:25-->
<!--T:25-->
Example:
Example:

</translate>
</translate>
{{Code|code=
{{Code|code=
import FreeCAD, Arch, Draft
import FreeCAD as App
import Arch, Draft


doc = App.newDocument()
Rect = Draft.makeRectangle(3000, 4000)
Roof = Arch.makeRoof(Rect, angles=[30.,])
FreeCAD.ActiveDocument.recompute()


rect = Draft.makeRectangle(3000, 4000)
p1 = FreeCAD.Vector(0, 0, 0)
doc.recompute()
p2 = FreeCAD.Vector(1000, 1000, 0)
p3 = FreeCAD.Vector(0, 2000, 0)
Wire = Draft.makeWire([p1, p2, p3], closed=True)
Roof2 = Arch.makeRoof(Wire)
FreeCAD.ActiveDocument.recompute()
}}


roof = Arch.makeRoof(rect, angles=[30.,])

p1 = App.Vector(0, 0, 0)
p2 = App.Vector(1000, 1000, 0)
p3 = App.Vector(0, 2000, 0)

wire = Draft.make_wire([p1, p2, p3], closed=True)
doc.recompute()

roof1 = Arch.makeRoof(wire)

doc.recompute()
}}
<translate>
<translate>
<!--T:28-->
{{docnav|[[Arch_Grid|Grid]]|[[Arch_Space|Space]]|[[Arch_Module|Arch]]|IconL=Arch_Grid.svg |IconC=Workbench_Arch.svg |IconR=Arch_Space.svg}}


{{Arch Tools navi}}


<!--T:28-->
{{Userdocnavi}}
{{Docnav
|[[Arch_Window|Window]]
|[[Arch_CompAxis|CompAxis]]
|[[Arch_Workbench|Arch]]
|IconL=Arch_Window.svg
|IconR=Arch_CompAxis.png
|IconC=Workbench_Arch.svg
}}

</translate>
</translate>
{{Arch Tools navi{{#translation:}}}}
{{Userdocnavi{{#translation:}}}}

Revision as of 11:57, 11 April 2024

Arch Roof

Menu location
Arch → Roof
Workbenches
Arch
Default shortcut
R F
Introduced in version
-
See also
Arch Structure, Arch Wall

Description

The Arch Roof tool allows for the creation of a sloped roof from a selected wire. The created roof object is parametric, keeping its relationship with the base object. The principle is that each edge is seen allotting a profile of roof (slope, width, overhang, thickness).

Note: This tool is still in development, and might fail with very complex shapes.

View from above a building model showing the roof with certain transparency

Usage (wire base)

  1. Create a closed wire with following the counter-clockwise direction and select it.
  2. Press the Arch Roof button, or press R then F keys
  3. The default roof object could have a strange shape, it's because the tool is missing some necessary information.
  4. After creating the default roof, double click on the object in the tree view to access and edit all the properties. Angle must be between 0 and 90.
  5. Each line corresponds to a roof pane. So you can set the properties you want for each roof pane.
  6. To help you, you can set Angle or Run to 0 and define a Relative Id, this makes an automatic calculation to find the data relative to the Relative Id.
  7. It works like this:
    1. If Angle = 0 and Run = 0 then profile is identical to the relative profile.
    2. If Angle = 0 then Angle is calculated so that the height is the same one as the relative profile.
    3. If Run = 0 then Run is calculated so that the height is the same one as the relative profile.
  8. Finally, set an Angle to 90° to make a gable.
  9. Note: for better comprehension, please see this youtube clip.

Usage (solid base)

If your roof has a complex shape (e.g. contains pitched windows or other non-standard features) you can create a custom solid object using various other FreeCAD workbenches (Part, Sketcher etc.). And then use this solid as the DataBase object of your roof:

  1. Select the solid base object.
  2. Press the Arch Roof button, or press R then F keys.

Subtracting a roof

Roofs have an automatically generated subtraction volume (introduced in version 0.22 for roofs with a solid base). When a roof is removed from the walls of a building, both the roof itself as well as everything above it is subtracted from the walls.

introduced in version 0.22: It is possible to override the automatic subtraction volume by setting the DataSubvolume property of the roof to a custom solid object.

Solid-based roof before (1st image) and after (2nd image) removing it from walls.
The 3rd image shows the generated subtraction volume.

Options

Properties

Data

Roof

  • DataAngles (FloatList): The list of angles of the roof segments.
  • DataBorder Length (Length): The total length of the borders of the roof.
  • DataFace (Integer): The face number of the base object used to build the roof (not used).
  • DataFlip (Bool): Specifies if the direction of the roof should be flipped.
  • DataHeights (FloatList): The list of calculated heights of the roof segments.
  • DataId Rel (IntegerList): The list of IDs of the relative profiles of the roof segments.
  • DataOverhang (FloatList): The list of overhangs of the roof segments.
  • DataRidge Length (Length): The total length of the ridges and hips of the roof.
  • DataRuns (FloatList): The list of horizontal length projections of the roof segments.
  • DataSubvolume (Link): The volume to subtract. If specified it is used instead of the auto-generated subvolume. introduced in version 0.22
  • DataThickness (FloatList): The list of thicknesses of the roof segments.

Scripting

See also: Arch API and FreeCAD Scripting Basics.

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

Roof = makeRoof(baseobj=None, facenr=0, angles=[45.,], run=[], idrel=[0,], thickness=[50.,], overhang=[100.,], name="Roof")
  • Creates a Roof object from the given baseobj, which can be a closed wire or a solid object.
    • If baseobj is a wire, you can provide lists for angles, run, idrel, thickness, and overhang, for each edge in the wire to define the shape of the roof.
    • The lists are automatically completed to match the number of edges in the wire.

Example:

import FreeCAD as App
import Arch, Draft

doc = App.newDocument()

rect = Draft.makeRectangle(3000, 4000)
doc.recompute()

roof = Arch.makeRoof(rect, angles=[30.,])

p1 = App.Vector(0, 0, 0)
p2 = App.Vector(1000, 1000, 0)
p3 = App.Vector(0, 2000, 0)

wire = Draft.make_wire([p1, p2, p3], closed=True)
doc.recompute()

roof1 = Arch.makeRoof(wire)

doc.recompute()