Reinforcement DrawingDimensioning
Arch Rebar Drawing Dimensioning |
Menu location |
---|
Arch → Rebar |
Workbenches |
Arch, BIM |
Default shortcut |
None |
Introduced in version |
0.19 |
See also |
Arch Reinforcement Drawing, Arch Reinforcement Dimensioning, Arch Reinforcement Addon |
Please Note: The below work is present in develop branch of Reinforcement workbench here
Description
The Reinforcement Drawing Dimensioning tool allows the user to create drawing and dimensioning of reinforcing bars.
This command is part of the Reinforcement Addon, an external workbench that can be installed with the Addon Manager via the Tools → Addon manager → Reinforcement menu.
Drawing and dimensioning of reinforcing bars
Usage
1. Open FreeCAD Model containing reinforcement bars created using Reinforcement Addon.
2. In FreeCAD Python console, copy below code snippet to generate reinforcement drawing and dimensioning from different views for each Arch Structure element.
from ReinforcementDrawing.make_reinforcement_drawing import (
makeStructuresReinforcementDrawing,
)
for view in ("Front", "Rear", "Left", "Right", "Top", "Bottom"):
struct_drawing_page_dict = makeStructuresReinforcementDrawing(
view=view, perform_dimensioning=True
)
for drawing_page in struct_drawing_page_dict.values():
drawing_view = drawing_page.Views[0]
drawing_view.setExpression(
"LeftOffset",
u".Template.Width.Value / 2 - .Width.Value * .Scale / 2",
)
drawing_view.setExpression(
"TopOffset",
u".Template.Height.Value / 2 - .Height.Value * .Scale / 2",
)
drawing_view.recompute(True)
drawing_page.recompute(True)
Scripting
See also: Arch API, Reinforcement API and FreeCAD Scripting Basics.
The Reinforcement Drawing Dimensioning tool can be used in macros and from the Python console by using the following function:
Create Reinforcement Drawing And Dimensioning
from ReinforcementDrawing import make_reinforcement_drawing
structure_drawing_page_dict = make_reinforcement_drawing.makeStructuresReinforcementDrawing(
structure_list=None,
rebars_list=None,
view="Front",
rebars_stroke_width=0.35,
rebars_color_style="Automatic",
rebars_color=(0.67, 0.0, 0.0),
structure_stroke_width=0.5,
structure_color_style="Automatic",
structure_color=(0.3, 0.9, 0.91),
drawing_left_offset=20,
drawing_top_offset=20,
drawing_min_right_offset=20,
drawing_min_bottom_offset=20,
drawing_max_width=0, # It is set to 0 to automatically set default width based on other parameters
drawing_max_height=0, # It is set to 0 to automatically set default height based on other parameters
template_file=str(Path(make_reinforcement_drawing.__file__).parent.absolute() / "Templates" / "A4_Landscape_blank.svg"),
perform_dimensioning=True,
dimension_rebars_filter_list=None,
dimension_label_format="%M %C⌀%D,span=%S",
dimension_font_family="DejaVu Sans",
dimension_font_size=3,
dimension_stroke_width=0.25,
dimension_line_style="Continuous",
dimension_line_color=(0.0, 0.0, 0.50),
dimension_text_color=(0.0, 0.33, 0.0),
dimension_single_rebar_line_start_symbol="None",
dimension_single_rebar_line_end_symbol="FilledArrow",
dimension_multi_rebar_line_start_symbol="FilledArrow",
dimension_multi_rebar_line_end_symbol="FilledArrow",
dimension_line_mid_point_symbol="Dot",
dimension_left_offset=10,
dimension_right_offset=10,
dimension_top_offset=10,
dimension_bottom_offset=10,
dimension_left_offset_increment=6,
dimension_right_offset_increment=6,
dimension_top_offset_increment=6,
dimension_bottom_offset_increment=6,
dimension_single_rebar_outer_dim=False,
dimension_multi_rebar_outer_dim=True,
dimension_single_rebar_text_position_type="StartOfLine",
dimension_multi_rebar_text_position_type="MidOfLine",
)
- It returns
structure_drawing_page_dict
, a dictionary with structure as key and corresponding reinforcement drawing page as value. structure_list
is the list of structural objects to generate their reinforcement drawing. If not provided, structures will be selected from active document acting as Host for rebar objects.rebars_list
is the list of rebar objects to be included in drawing. If not provided, rebars objects having Host in structure_list will be selected from active document.view
specifies the view of drawing to be generated. It can be "Front", "Rear", "Left", "Right", "Top" or "Bottom".rebars_stroke_width
specifies the stroke-width of rebars in drawing svg.rebars_color_style
specifies the color style of rebars. Set it to "Automatic" to automatically select rebars color or "Custom" to choose shape color value from variablerebars_color
.rebars_color
specifies the fill color for rebars in drawing svg.
Format: (r, g, b) r, g, b value should be between 0 to 1, so you may need to divide value of r, g, b by 255 to get its value between 0 to 1 Make sure r, g, b must be float Example: (0.67, 0.0, 0.0)
structure_stroke_width
specifies the stroke-width of structure in drawing svg.structure_color_style
specifies the fill style of structure. Set it to "Automatic" to automatically select structure color or "Custom" to choose structure color value from variablestructure_color
.structure_color
specifies the fill color for structure in drawing svg. Format: (r, g, b)drawing_left_offset
specifies the left offset of drawing view ontemplate_file
.drawing_top_offset
specifies the top offset of drawing view ontemplate_file
.drawing_min_right_offset
specifies the minimum right offset of drawing view ontemplate_file
.drawing_min_bottom_offset
specifies the minimum bottom offset of drawing view ontemplate_file
.drawing_max_width
specifies the maximum width of drawing ontemplate_file
.drawing_max_height
specifies the maximum height of drawing ontemplate_file
.template_file
is the template file to be used for reinforcement drawing page.
perform_dimensioning
specifies if dimensioning needs to be created for rebars in drawing.dimension_rebars_filter_list
is the list of rebars to perform dimensioning. Set it to None to dimension all visible rebars in drawing.dimension_label_format
is the format used for dimension label.
Example: "%M %C⌀%D,span=%S" Here: %M -> Rebar.Mark %C -> Rebar.Amount %D -> Rebar.Diameter %S -> Rebar span length
dimension_font_family
is the font family of dimension label.dimension_font_size
is the font size of dimension label.dimension_stroke_width
is the stroke-width of dimension line.dimension_line_style
is the stroke style of dimension line. It can be "Continuous", "Dash", "Dot", "DashDot" or "DashDotDot".dimension_line_color
is the color of dimension line.
Format: (r, g, b) r, g, b value should be between 0 to 1, so you may need to divide value of r, g, b by 255 to get its value between 0 to 1 Make sure r, g, b must be float
dimension_text_color
is the color of dimension label.dimension_single_rebar_line_start_symbol
is the dimension line start symbol, in case of single rebar is visible. It can be "FilledArrow", "Tick", "Dot" or "None".dimension_single_rebar_line_end_symbol
is the dimension line end symbol, in case of single rebar is visible. It can be "FilledArrow", "Tick", "Dot" or "None".dimension_multi_rebar_line_start_symbol
is the dimension line start symbol, in case of multiple rebars are visible. It can be "FilledArrow", "Tick", "Dot" or "None".dimension_multi_rebar_line_end_symbol
is the dimension line end symbol, in case of multiple rebars are visible. It can be "FilledArrow", "Tick", "Dot" or "None".dimension_line_mid_point_symbol
is the dimension line mid points symbol. It can be "Tick", "Dot" or "None".dimension_left_offset
specifies the left offset of dimension from drawing.dimension_right_offset
specifies the right offset of dimension from drawing.dimension_top_offset
specifies the top offset of dimension from drawing.dimension_bottom_offset
specifies the bottom offset of dimension from drawing.dimension_left_offset_increment
is the increment in left offset to move each new dimension label away from drawing.dimension_right_offset_increment
is the increment in right offset to move each new dimension label away from drawing.dimension_top_offset_increment
is the increment in top offset to move each new dimension label away from drawing.dimension_bottom_offset_increment
is the increment in bottom offset to move each new dimension label away from drawing.dimension_single_rebar_outer_dim
specifies if dimension lines are to be outside of reinforcement drawing, in case of single rebar is visible.dimension_multi_rebar_outer_dim
specifies if dimension lines are to be outside of reinforcement drawing, in case of multiple rebars are visible.dimension_single_rebar_text_position_type
specifies the dimension label position type, in case of single rebar is visible. It can be "StartOfLine", "MidOfLine" or "EndOfLine".dimension_multi_rebar_text_position_type
specifies the dimension label position type, in case of multiple rebars are visible. It can be "StartOfLine", "MidOfLine" or "EndOfLine".
Example
from pathlib import Path
import FreeCAD, Draft, Arch
from ColumnReinforcement import TwoTiesSixRebars
from ReinforcementDrawing import make_reinforcement_drawing
# It doesn't work if the structure is not based on a face
# Structure = Arch.makeStructure(length=1000, width=400, height=400)
Rect = Draft.makeRectangle(400, 400)
Structure1 = Arch.makeStructure(Rect, height=1600)
Structure1.ViewObject.Transparency = 80
Structure2 = Arch.makeStructure(Rect, height=1600)
Structure2.ViewObject.Transparency = 80
Structure2.Placement = FreeCAD.Placement(FreeCAD.Vector(1000, 0, 0), FreeCAD.Rotation(FreeCAD.Vector(0, 0, 1), 0))
FreeCAD.ActiveDocument.recompute()
# Create Straight Rebars
TwoTiesSixRebars.makeTwoTiesSixRebars(
l_cover_of_ties=40,
r_cover_of_ties=40,
t_cover_of_ties=40,
b_cover_of_ties=40,
offset_of_ties=100,
bent_angle_of_ties=135,
extension_factor_of_ties=2,
dia_of_ties=8,
number_spacing_check=True,
number_spacing_value=10,
dia_of_main_rebars=16,
t_offset_of_rebars=40,
b_offset_of_rebars=40,
main_rebars_type="StraightRebar",
hook_orientation="Top Inside",
hook_extend_along="x-axis",
l_rebar_rounding=None,
hook_extension=None,
ties_sequence=("Tie1", "Tie2"),
structure=Structure1,
facename="Face6",
)
# Create LShaped Rebars with hook along x-axis
TwoTiesSixRebars.makeTwoTiesSixRebars(
l_cover_of_ties=40,
r_cover_of_ties=40,
t_cover_of_ties=40,
b_cover_of_ties=40,
offset_of_ties=100,
bent_angle_of_ties=135,
extension_factor_of_ties=2,
dia_of_ties=8,
number_spacing_check=True,
number_spacing_value=10,
dia_of_main_rebars=16,
t_offset_of_rebars=-40,
b_offset_of_rebars=-40,
main_rebars_type="LShapeRebar",
hook_orientation="Top Outside",
hook_extend_along="x-axis",
l_rebar_rounding=2,
hook_extension=40,
ties_sequence=("Tie1", "Tie2"),
structure=Structure2,
facename="Face6",
)
# Create Reinforcement Drawing and Dimensioning
for drawing_view in ("Front", "Rear", "Left", "Right", "Top", "Bottom"):
struct_drawing_page_dict = make_reinforcement_drawing.makeStructuresReinforcementDrawing(
structure_list=None,
rebars_list=None,
view="Front",
rebars_stroke_width=0.35,
rebars_color_style="Automatic",
rebars_color=(0.67, 0.0, 0.0),
structure_stroke_width=0.5,
structure_color_style="Automatic",
structure_color=(0.3, 0.9, 0.91),
drawing_left_offset=20,
drawing_top_offset=20,
drawing_min_right_offset=20,
drawing_min_bottom_offset=20,
drawing_max_width=0, # It is set to 0 to automatically set default width based on other parameters
drawing_max_height=0, # It is set to 0 to automatically set default height based on other parameters
template_file=str(Path(make_reinforcement_drawing.__file__).parent.absolute() / "Templates" / "A4_Landscape_blank.svg"),
perform_dimensioning=True,
dimension_rebars_filter_list=None,
dimension_label_format="%M %C⌀%D,span=%S",
dimension_font_family="DejaVu Sans",
dimension_font_size=3,
dimension_stroke_width=0.25,
dimension_line_style="Continuous",
dimension_line_color=(0.0, 0.0, 0.50),
dimension_text_color=(0.0, 0.33, 0.0),
dimension_single_rebar_line_start_symbol="None",
dimension_single_rebar_line_end_symbol="FilledArrow",
dimension_multi_rebar_line_start_symbol="FilledArrow",
dimension_multi_rebar_line_end_symbol="FilledArrow",
dimension_line_mid_point_symbol="Dot",
dimension_left_offset=10,
dimension_right_offset=10,
dimension_top_offset=10,
dimension_bottom_offset=10,
dimension_left_offset_increment=6,
dimension_right_offset_increment=6,
dimension_top_offset_increment=6,
dimension_bottom_offset_increment=6,
dimension_single_rebar_outer_dim=False,
dimension_multi_rebar_outer_dim=True,
dimension_single_rebar_text_position_type="StartOfLine",
dimension_multi_rebar_text_position_type="MidOfLine",
)
for drawing_page in struct_drawing_page_dict.values():
drawing_view = drawing_page.Views[0]
drawing_view.setExpression(
"LeftOffset",
u".Template.Width.Value / 2 - .Width.Value * .Scale / 2",
)
drawing_view.setExpression(
"TopOffset",
u".Template.Height.Value / 2 - .Height.Value * .Scale / 2",
)
drawing_view.recompute(True)
drawing_page.recompute(True)
- Elements: Wall, Structure, Curtain Wall, Window, Roof, Space, Stairs, Equipment, Frame, Fence, Truss, Profile, Pipe, Pipe Connector
- Reinforcements: Straight Rebar, U-Shape Rebar, L-Shape Rebar, Stirrup, Bent-Shape Rebar, Helical Rebar, Column Reinforcement, Beam Reinforcement, Slab Reinforcement, Footing Reinforcement, Custom Rebar
- Panels: Panel, Panel Cut, Panel Sheet, Nest
- Materials: Material, Multi-Material
- Organization: Building Part, Project, Site, Building, Level, External reference, Section Plane, Schedule
- Axes: Axis, Axes system, Grid
- Modification: Cut with plane, Add component, Remove component, Survey
- Utilities: Component, Clone component, Split Mesh, Mesh to Shape, Select non-manifold meshes, Remove Shape from Arch, Close Holes, Merge Walls, Check, Toggle IFC Brep flag, 3 Views from mesh, Create IFC spreadsheet, Toggle Subcomponents
- Additional: Preferences, Import Export Preferences (IFC, DAE, OBJ, JSON, 3DS, SHP), IfcOpenShell, IfcPlusPlus, Arch API