Arch Rebar BOM

Description
The Bill Of Material tool allows the user to create bill of material of reinforcing bars.

This command is part of the Reinforcement Workbench, an external workbench that can be installed with the Addon Manager via the  menu.



Usage
1. Select objects you want to include in Bill Of Material. Or select objects to include  objects hosted by that into Bill Of Material. If nothing is selected, then Bill Of Material will be generated for all and Rebar2 objects present in model.

2. Then select from the rebar tools.

3. A dialog box will pop-out on screen as shown below.



4. Modify data to suit your requirements.

5. To edit SVG configurations, click on. A dialog box will pop-out as shown below.



6. Modify SVG configurations and then click on  to apply changes.

7. Click or  to generate Bill Of Material for rebars.

8. Click to exit the dialog box.

Properties
General:
 * : A dictionary with column_data as key and tuple (column_display_header, column_sequence) as value.
 * : A dictionary with keys: "Diameter", "RebarLength", "RebarsTotalLength" and their corresponding units as value.
 * : A dictionary with diameter as key and corresponding weight as value.
 * : Rebar Length Type specifies the type of rebar length used for BOM calculations i.e. "RealLength" or "LengthWithSharpEdges".
 * : A list of ArchRebar and/or rebar2 and/or structures (to select ArchRebar in that structure) objects.

SVG:
 * : Font Family of text in BOM SVG.
 * : Font filename corresponding to font family required in console mode.
 * : Font size in mm.
 * : Width of each column in BOM SVG table.
 * : Height of each row in BOM SVG table.
 * : Left offset of BOM SVG table.
 * : Top offset of BOM SVG table.
 * : Minimum right offset of BOM SVG table.
 * : Minimum bottom offset of BOM SVG table.
 * : Maximum width of BOM SVG table.
 * : Maximum height of BOM SVG table.
 * : Template svg file for BOM SVG.
 * : BOM SVG Output file.

Scripting
Arch API, Reinforcement API and FreeCAD Scripting Basics.

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

Create Bill Of Material Spreadsheet
Example: { "Host": ("Member", 1), "Mark": ("Mark", 2), "RebarsCount": ("No. of Rebars", 3), "Diameter": ("Diameter in mm", 4), "RebarLength": ("Length in m/piece", 5), "RebarsTotalLength": ("Total Length in m", 6), }            set column sequence number to 0 to hide column. Example: { "Diameter": "mm", "RebarLength": "m", "RebarsTotalLength": "m", }   Syntax: { 6: FreeCAD.Units.Quantity("0.222 kg/m"), 8: FreeCAD.Units.Quantity("0.395 kg/m"), 10: FreeCAD.Units.Quantity("0.617 kg/m"), 12: FreeCAD.Units.Quantity("0.888 kg/m"), ...,            }
 * Creates a spreadsheet object for given.
 * If list is empty, then  spreadsheet will be created for all rebars in a model.
 * is a dictionary with keys: "Host", "Mark", "RebarsCount", "Diameter", "RebarLength", "RebarsTotalLength" and values are tuple of column_header and their sequence number.
 * is a dictionary with keys: "Diameter", "RebarLength", "RebarsTotalLength" and their corresponding units as value.
 * is a dictionary with diameter as key and corresponding weight as value.
 * specifies the type of rebar length used for BOM calculations; it can be "RealLength" or "LengthWithSharpEdges".
 * is a list of ArchRebar and/or rebar2 and/or structures (to select ArchRebar in that structure) objects.

Create Bill Of Material SVG
Example: { "Host": ("Member", 1), "Mark": ("Mark", 2), "RebarsCount": ("No. of Rebars", 3), "Diameter": ("Diameter in mm", 4), "RebarLength": ("Length in m/piece", 5), "RebarsTotalLength": ("Total Length in m", 6), }            set column sequence number to 0 to hide column. Example: { "Diameter": "mm", "RebarLength": "m", "RebarsTotalLength": "m", }   Syntax: { 6: FreeCAD.Units.Quantity("0.222 kg/m"), 8: FreeCAD.Units.Quantity("0.395 kg/m"), 10: FreeCAD.Units.Quantity("0.617 kg/m"), 12: FreeCAD.Units.Quantity("0.888 kg/m"), ...,            }
 * Creates and return a RebarBillOfMaterial_SVG object for given.
 * If list is empty, then  object will be created for all rebars in a model.
 * is a dictionary with keys: "Host", "Mark", "RebarsCount", "Diameter", "RebarLength", "RebarsTotalLength" and values are tuple of column_header and their sequence number.
 * is a dictionary with keys: "Diameter", "RebarLength", "RebarsTotalLength" and their corresponding units as value.
 * is a dictionary with diameter as key and corresponding weight as value.
 * specifies the type of rebar length used for bill of material calculations; it can be "RealLength" or "LengthWithSharpEdges".
 * specifies the font family of data text.
 * specifies font filename or full path of font file corresponding to font_family. This is required if you are working in pure console mode, without any gui.
 * specifies the font size of data text.
 * specifies the width of each column in bill of material table svg.
 * specifies the height of each row in bill of material table svg.
 * specifies the left offset of bill of material svg on.
 * specifies the top offset of bill of material svg on.
 * specifies the minimum right offset of bill of material svg on.
 * specifies the minimum bottom offset of bill of material svg on
 * specifies the maximum width of bill of material table in svg.
 * specifies the maximum height of bill of material table in svg.
 * specifies the template file used to place generated bill of material table on it. It must be valid TechDraw template file as here.
 * specifies the output file to write generated bill of material svg.
 * is a list of ArchRebar and/or rebar2 and/or structures (to select ArchRebar in that structure) objects.
 * specifies how reinforcement objects should be grouped; it can be "Mark" or "Host".
 * specifies if object is to be created or not. If  is True, then neither  object is created nor svg is written to . And it returns svg element.