GSoC Proposal: Automate Reinforcement Process of Slab and Footing in FreeCAD

Contributions from the participants, questions and answers to their projects.
Discussions of proposals for upcoming events.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Shiv_Charan
Posts: 59
Joined: Wed Mar 03, 2021 12:10 pm

Re: GSoC Proposal: Automate Reinforcement Process of Slab and Footing in FreeCAD

Post by Shiv_Charan »

Hi @amrit3701,

I have created a merge request for detailing function of Footing Reinforcement:
here is merge request: https://github.com/amrit3701/FreeCAD-Re ... t/pull/166

This merge request cover detailing function to make footing reinforcement of following type:
  • Isolated column footing
  • Rectangular footing.
  • Edge footing
  • Corner footing
  • Combined Footing
  • Raft footing
Further each type of footing has option for mesh along Bottom side or both side ( Top and bottom for reinforcement in high wind or seismic areas)
each mesh can have Straight , L-Shape , U-Shape reabrs and their combinations.

Also columns part for each footing have option to add or not add secondary rebars in column.
In combine and raft footing columns can be separated from each other by amount or spacing inputs.

There more different type of options, some of them I will try to show in upcoming posts by examples.
In my next posts I'm adding script examples and their outputs of above footing by using Footing Reinforcement module.

Thanks and Regards
Shiv_Charan
Posts: 59
Joined: Wed Mar 03, 2021 12:10 pm

Re: GSoC Proposal: Automate Reinforcement Process of Slab and Footing in FreeCAD

Post by Shiv_Charan »

Shiv_Charan wrote: Sun Aug 08, 2021 4:57 pm
There more different type of options, some of them I will try to show in upcoming posts by examples.
In my next posts I'm adding script examples and their outputs of above footing by using Footing Reinforcement module.
1. Isolated column footing :-

Structure file used:
footing1.FCStd
(10.57 KiB) Downloaded 103 times
a. Isolated column footing with straight rebar mesh on bottom side.
script:

Code: Select all

from FootingReinforcement import FootingReinforcement
import importlib
importlib.reload(FootingReinforcement)
FootingReinforcement.makeFootingReinforcement(
    parallel_rebar_type= "StraightRebar",
    parallel_front_cover= 20,
    parallel_rear_cover= 20,
    parallel_left_cover= 10,
    parallel_right_cover= 10,
    parallel_top_cover= 20,
    parallel_bottom_cover= 20,
    parallel_diameter= 8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=10,
    cross_rebar_type="StraightRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover= 20,
    cross_bottom_cover= 20,
    cross_diameter= 8,
    cross_amount_spacing_check= True,
    column_front_cover= 400,
    column_left_cover= 400,
    column_right_cover= 400,
    column_rear_cover= 400,
    tie_top_cover= 500,
    tie_bottom_cover= 10,
    tie_bent_angle= 135,
    tie_extension_factor= 2,
    tie_diameter= 8,
    tie_number_spacing_check= True,
    tie_number_spacing_value= 5,
    column_main_rebar_diameter= 8,
    column_main_rebars_t_offset= 500,
    cross_amount_spacing_value=10,
    column_width= 200,
    column_length= 200,
    xdir_column_amount_spacing_check= True,
    xdir_column_amount_spacing_value= 1,
    ydir_column_amount_spacing_check= True,
    ydir_column_amount_spacing_value= 1,
    column_main_rebars_type=  "LShapeRebar",
    column_main_hook_orientation= "Bottom Outside",
    column_main_hook_extend_along= "x-axis",
    column_l_main_rebar_rounding=  2,
    column_main_hook_extension= 80,
    mesh_cover_along=  "Bottom",
    structure=  App.getDocument("footing1").getObject("Structure003"),
    facename=  "Face4",
)
outputs:
isomentric_view_Isolated_Column_Footing_1.png
isomentric_view_Isolated_Column_Footing_1.png (103.51 KiB) Viewed 4387 times
side_view_ isolated column footing 1.png
side_view_ isolated column footing 1.png (9.19 KiB) Viewed 4387 times
b. Isolated column footing with U-shape rebar mesh on bottom side.

Code: Select all

from FootingReinforcement import FootingReinforcement
import importlib
importlib.reload(FootingReinforcement)
FootingReinforcement.makeFootingReinforcement(
    parallel_rebar_type= "UShapeRebar",
    parallel_front_cover= 20,
    parallel_rear_cover= 20,
    parallel_left_cover= 10,
    parallel_right_cover= 10,
    parallel_top_cover= 20,
    parallel_bottom_cover= 20,
    parallel_diameter= 8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=10,
    cross_rebar_type="UShapeRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover= 20,
    cross_bottom_cover= 20,
    cross_diameter= 8,
    cross_amount_spacing_check= True,
    column_front_cover= 400,
    column_left_cover= 400,
    column_right_cover= 400,
    column_rear_cover= 400,
    tie_top_cover= 500,
    tie_bottom_cover= 10,
    tie_bent_angle= 135,
    tie_extension_factor= 2,
    tie_diameter= 8,
    tie_number_spacing_check= True,
    tie_number_spacing_value= 5,
    column_main_rebar_diameter= 8,
    column_main_rebars_t_offset= 500,
    cross_amount_spacing_value=10,
    column_width= 200,
    column_length= 200,
    xdir_column_amount_spacing_check= True,
    xdir_column_amount_spacing_value= 1,
    ydir_column_amount_spacing_check= True,
    ydir_column_amount_spacing_value= 1,
    parallel_rounding = 2,
    cross_rounding= 2,
    column_main_rebars_type=  "LShapeRebar",
    column_main_hook_orientation= "Bottom Outside",
    column_main_hook_extend_along= "x-axis",
    column_l_main_rebar_rounding=  2,
    column_main_hook_extension= 80,
    mesh_cover_along=  "Bottom",
    structure=  App.getDocument("footing1").getObject("Structure003"),
    facename=  "Face4",
)

outputs:
isolated column reinforcement with U-shape rebar mesh.png
isolated column reinforcement with U-shape rebar mesh.png (127.18 KiB) Viewed 4387 times
c. Isolated column footing with L-shape rebar mesh on bottom side.

Code: Select all

 
from FootingReinforcement import FootingReinforcement
import importlib
importlib.reload(FootingReinforcement)
FootingReinforcement.makeFootingReinforcement(
    parallel_rebar_type= "LShapeRebar",
    parallel_front_cover= 20,
    parallel_rear_cover= 20,
    parallel_left_cover= 10,
    parallel_right_cover= 10,
    parallel_top_cover= 20,
    parallel_bottom_cover= 20,
    parallel_diameter= 8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=10,
    cross_rebar_type="LShapeRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover= 20,
    cross_bottom_cover= 20,
    cross_diameter= 8,
    cross_amount_spacing_check= True,
    column_front_cover= 400,
    column_left_cover= 400,
    column_right_cover= 400,
    column_rear_cover= 400,
    tie_top_cover= 500,
    tie_bottom_cover= 10,
    tie_bent_angle= 135,
    tie_extension_factor= 2,
    tie_diameter= 8,
    tie_number_spacing_check= True,
    tie_number_spacing_value= 5,
    column_main_rebar_diameter= 8,
    column_main_rebars_t_offset= 500,
    cross_amount_spacing_value=10,
    column_width= 200,
    column_length= 200,
    xdir_column_amount_spacing_check= True,
    xdir_column_amount_spacing_value= 1,
    ydir_column_amount_spacing_check= True,
    ydir_column_amount_spacing_value= 1,
    parallel_rounding = 2,
    parallel_l_shape_hook_orintation= "Alternate",
    cross_rounding= 2,
    cross_l_shape_hook_orintation="Alternate",
    column_main_rebars_type=  "LShapeRebar",
    column_main_hook_orientation= "Bottom Outside",
    column_main_hook_extend_along= "y-axis",
    column_l_main_rebar_rounding=  2,
    column_main_hook_extension= 80,

    mesh_cover_along=  "Bottom",
    structure=  App.getDocument("footing1").getObject("Structure003"),
    facename=  "Face4",
)
 
outputs:
isolated column reinforcement with L-Shape rebars mesh.png
isolated column reinforcement with L-Shape rebars mesh.png (110.6 KiB) Viewed 4387 times
Regards
User avatar
amrit3701
Posts: 343
Joined: Mon Jun 13, 2016 5:37 pm

Re: GSoC Proposal: Automate Reinforcement Process of Slab and Footing in FreeCAD

Post by amrit3701 »

Shiv_Charan wrote: Sun Aug 08, 2021 6:21 pm 1. Isolated column footing :-

Structure file used:
footing1.FCStd

a. Isolated column footing with straight rebar mesh on bottom side.
script:

Code: Select all

from FootingReinforcement import FootingReinforcement
import importlib
importlib.reload(FootingReinforcement)
FootingReinforcement.makeFootingReinforcement(
    parallel_rebar_type= "StraightRebar",
    parallel_front_cover= 20,
    parallel_rear_cover= 20,
    parallel_left_cover= 10,
    parallel_right_cover= 10,
    parallel_top_cover= 20,
    parallel_bottom_cover= 20,
    parallel_diameter= 8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=10,
    cross_rebar_type="StraightRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover= 20,
    cross_bottom_cover= 20,
    cross_diameter= 8,
    cross_amount_spacing_check= True,
    column_front_cover= 400,
    column_left_cover= 400,
    column_right_cover= 400,
    column_rear_cover= 400,
    tie_top_cover= 500,
    tie_bottom_cover= 10,
    tie_bent_angle= 135,
    tie_extension_factor= 2,
    tie_diameter= 8,
    tie_number_spacing_check= True,
    tie_number_spacing_value= 5,
    column_main_rebar_diameter= 8,
    column_main_rebars_t_offset= 500,
    cross_amount_spacing_value=10,
    column_width= 200,
    column_length= 200,
    xdir_column_amount_spacing_check= True,
    xdir_column_amount_spacing_value= 1,
    ydir_column_amount_spacing_check= True,
    ydir_column_amount_spacing_value= 1,
    column_main_rebars_type=  "LShapeRebar",
    column_main_hook_orientation= "Bottom Outside",
    column_main_hook_extend_along= "x-axis",
    column_l_main_rebar_rounding=  2,
    column_main_hook_extension= 80,
    mesh_cover_along=  "Bottom",
    structure=  App.getDocument("footing1").getObject("Structure003"),
    facename=  "Face4",
)
outputs:
isomentric_view_Isolated_Column_Footing_1.png
side_view_ isolated column footing 1.png

b. Isolated column footing with U-shape rebar mesh on bottom side.

Code: Select all

from FootingReinforcement import FootingReinforcement
import importlib
importlib.reload(FootingReinforcement)
FootingReinforcement.makeFootingReinforcement(
    parallel_rebar_type= "UShapeRebar",
    parallel_front_cover= 20,
    parallel_rear_cover= 20,
    parallel_left_cover= 10,
    parallel_right_cover= 10,
    parallel_top_cover= 20,
    parallel_bottom_cover= 20,
    parallel_diameter= 8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=10,
    cross_rebar_type="UShapeRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover= 20,
    cross_bottom_cover= 20,
    cross_diameter= 8,
    cross_amount_spacing_check= True,
    column_front_cover= 400,
    column_left_cover= 400,
    column_right_cover= 400,
    column_rear_cover= 400,
    tie_top_cover= 500,
    tie_bottom_cover= 10,
    tie_bent_angle= 135,
    tie_extension_factor= 2,
    tie_diameter= 8,
    tie_number_spacing_check= True,
    tie_number_spacing_value= 5,
    column_main_rebar_diameter= 8,
    column_main_rebars_t_offset= 500,
    cross_amount_spacing_value=10,
    column_width= 200,
    column_length= 200,
    xdir_column_amount_spacing_check= True,
    xdir_column_amount_spacing_value= 1,
    ydir_column_amount_spacing_check= True,
    ydir_column_amount_spacing_value= 1,
    parallel_rounding = 2,
    cross_rounding= 2,
    column_main_rebars_type=  "LShapeRebar",
    column_main_hook_orientation= "Bottom Outside",
    column_main_hook_extend_along= "x-axis",
    column_l_main_rebar_rounding=  2,
    column_main_hook_extension= 80,
    mesh_cover_along=  "Bottom",
    structure=  App.getDocument("footing1").getObject("Structure003"),
    facename=  "Face4",
)

outputs:
isolated column reinforcement with U-shape rebar mesh.png

c. Isolated column footing with L-shape rebar mesh on bottom side.

Code: Select all

 
from FootingReinforcement import FootingReinforcement
import importlib
importlib.reload(FootingReinforcement)
FootingReinforcement.makeFootingReinforcement(
    parallel_rebar_type= "LShapeRebar",
    parallel_front_cover= 20,
    parallel_rear_cover= 20,
    parallel_left_cover= 10,
    parallel_right_cover= 10,
    parallel_top_cover= 20,
    parallel_bottom_cover= 20,
    parallel_diameter= 8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=10,
    cross_rebar_type="LShapeRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover= 20,
    cross_bottom_cover= 20,
    cross_diameter= 8,
    cross_amount_spacing_check= True,
    column_front_cover= 400,
    column_left_cover= 400,
    column_right_cover= 400,
    column_rear_cover= 400,
    tie_top_cover= 500,
    tie_bottom_cover= 10,
    tie_bent_angle= 135,
    tie_extension_factor= 2,
    tie_diameter= 8,
    tie_number_spacing_check= True,
    tie_number_spacing_value= 5,
    column_main_rebar_diameter= 8,
    column_main_rebars_t_offset= 500,
    cross_amount_spacing_value=10,
    column_width= 200,
    column_length= 200,
    xdir_column_amount_spacing_check= True,
    xdir_column_amount_spacing_value= 1,
    ydir_column_amount_spacing_check= True,
    ydir_column_amount_spacing_value= 1,
    parallel_rounding = 2,
    parallel_l_shape_hook_orintation= "Alternate",
    cross_rounding= 2,
    cross_l_shape_hook_orintation="Alternate",
    column_main_rebars_type=  "LShapeRebar",
    column_main_hook_orientation= "Bottom Outside",
    column_main_hook_extend_along= "y-axis",
    column_l_main_rebar_rounding=  2,
    column_main_hook_extension= 80,

    mesh_cover_along=  "Bottom",
    structure=  App.getDocument("footing1").getObject("Structure003"),
    facename=  "Face4",
)
 
outputs:

isolated column reinforcement with L-Shape rebars mesh.png
Hey Shiv,

Nice to see your progress on footing reinforcement.

One suggestion, after looking above code it's looks like you are creating column reinforcement without reference to column object (I mean you are assuming column in the center of footing). Here can you also add the option to pass column object too as an argument in FootingReinforcement.makeFootingReinforcement, and then calculates rebar placements accordingly.
Amritpal Singh
Github, Like my work, sponsor me!
Shiv_Charan
Posts: 59
Joined: Wed Mar 03, 2021 12:10 pm

Re: GSoC Proposal: Automate Reinforcement Process of Slab and Footing in FreeCAD

Post by Shiv_Charan »

Shiv_Charan wrote: Sun Aug 08, 2021 4:57 pm
There more different type of options, some of them I will try to show in upcoming posts by examples.
In my next posts I'm adding script examples and their outputs of above footing by using Footing Reinforcement module.
2. Isolated column footing reinforcement :
Having mesh on both side and secondary rebars in column.

a. Isolated column footing reinforcement having Straight rabar mesh on top and bottom side.

Code: Select all

from FootingReinforcement import FootingReinforcement
import importlib
importlib.reload(FootingReinforcement)
FootingReinforcement.makeFootingReinforcement(
    parallel_rebar_type= "StraightRebar",
    parallel_front_cover= 20,
    parallel_rear_cover= 20,
    parallel_left_cover= 10,
    parallel_right_cover= 10,
    parallel_top_cover= 20,
    parallel_bottom_cover= 20,
    parallel_diameter= 8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=10,
    cross_rebar_type="StraightRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover= 20,
    cross_bottom_cover= 20,
    cross_diameter= 8,
    cross_amount_spacing_check= True,
    column_front_cover= 400,
    column_left_cover= 400,
    column_right_cover= 400,
    column_rear_cover= 400,
    tie_top_cover= 500,
    tie_bottom_cover= 10,
    tie_bent_angle= 135,
    tie_extension_factor= 2,
    tie_diameter= 8,
    tie_number_spacing_check= True,
    tie_number_spacing_value= 5,
    column_main_rebar_diameter= 8,
    column_main_rebars_t_offset= 500,
    cross_amount_spacing_value=10,
    column_width= 200,
    column_length= 200,
    xdir_column_amount_spacing_check= True,
    xdir_column_amount_spacing_value= 1,
    ydir_column_amount_spacing_check= True,
    ydir_column_amount_spacing_value= 1,
    column_main_rebars_type=  "LShapeRebar",
    column_main_hook_orientation= "Bottom Outside",
    column_main_hook_extend_along= "x-axis",
    column_l_main_rebar_rounding=  2,
    column_main_hook_extension= 80,
    column_sec_rebar_check= True,
    column_sec_rebars_t_offset= (500, 500),
    column_sec_rebars_number_diameter = (
        "1#6mm+1#6mm+1#6mm",
        "1#6mm+1#6mm+1#6mm",
    ),
    column_sec_rebars_type= (
        "LShapeRebar",
        "LShapeRebar",
    ),
    column_sec_hook_orientation = (
        "Bottom Outside",
        "Bottom Outside",
    ),
    column_l_sec_rebar_rounding = (2, 2),
    column_sec_hook_extension = (80, 80),
    mesh_cover_along=  "Both",
    structure=  App.getDocument("footing1").getObject("Structure003"),
    facename=  "Face4",
)

Output:
isolated column footing_4.png
isolated column footing_4.png (115.32 KiB) Viewed 4356 times
side view isolated cloumn footing_4.png
side view isolated cloumn footing_4.png (10.01 KiB) Viewed 4356 times
b. Isolated column footing reinforcement having U-shape rabar mesh on top and bottom side.

Code: Select all


from FootingReinforcement import FootingReinforcement
import importlib
importlib.reload(FootingReinforcement)
FootingReinforcement.makeFootingReinforcement(
    parallel_rebar_type= "UShapeRebar",
    parallel_front_cover= 20,
    parallel_rear_cover= 20,
    parallel_left_cover= 10,
    parallel_right_cover= 10,
    parallel_top_cover= 20,
    parallel_bottom_cover= 20,
    parallel_diameter= 8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=10,
    cross_rebar_type="UShapeRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover= 20,
    cross_bottom_cover= 20,
    cross_diameter= 8,
    cross_amount_spacing_check= True,
    column_front_cover= 400,
    column_left_cover= 400,
    column_right_cover= 400,
    column_rear_cover= 400,
    tie_top_cover= 500,
    tie_bottom_cover= 10,
    tie_bent_angle= 135,
    tie_extension_factor= 2,
    tie_diameter= 8,
    tie_number_spacing_check= True,
    tie_number_spacing_value= 5,
    column_main_rebar_diameter= 8,
    column_main_rebars_t_offset= 500,
    cross_amount_spacing_value=10,
    column_width= 200,
    column_length= 200,
    xdir_column_amount_spacing_check= True,
    xdir_column_amount_spacing_value= 1,
    ydir_column_amount_spacing_check= True,
    ydir_column_amount_spacing_value= 1,
    parallel_rounding = 2,
    cross_rounding= 2,
    column_main_rebars_type=  "LShapeRebar",
    column_main_hook_orientation= "Bottom Outside",
    column_main_hook_extend_along= "x-axis",
    column_l_main_rebar_rounding=  2,
    column_main_hook_extension= 80,
    column_sec_rebar_check= True,
    column_sec_rebars_t_offset= (500, 500),
    column_sec_rebars_number_diameter = (
        "1#6mm+1#6mm+1#6mm",
        "1#6mm+1#6mm+1#6mm",
    ),
    column_sec_rebars_type= (
        "LShapeRebar",
        "LShapeRebar",
    ),
    column_sec_hook_orientation = (
        "Bottom Outside",
        "Bottom Outside",
    ),
    column_l_sec_rebar_rounding = (2, 2),
    column_sec_hook_extension = (80, 80),
    mesh_cover_along=  "Both",
    structure=  App.getDocument("footing1").getObject("Structure003"),
    facename=  "Face4",
)

Outputs:
Isolated column footing type 5.png
Isolated column footing type 5.png (146.69 KiB) Viewed 4356 times
side view Isolated column footing type 5.png
side view Isolated column footing type 5.png (14.41 KiB) Viewed 4356 times
c. Isolated column footing reinforcement having L-shape rabar mesh on top and bottom side.

Code: Select all


from FootingReinforcement import FootingReinforcement
import importlib
importlib.reload(FootingReinforcement)
FootingReinforcement.makeFootingReinforcement(
    parallel_rebar_type= "LShapeRebar",
    parallel_front_cover= 20,
    parallel_rear_cover= 20,
    parallel_left_cover= 10,
    parallel_right_cover= 10,
    parallel_top_cover= 20,
    parallel_bottom_cover= 20,
    parallel_diameter= 8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=10,
    cross_rebar_type="LShapeRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover= 20,
    cross_bottom_cover= 20,
    cross_diameter= 8,
    cross_amount_spacing_check= True,
    column_front_cover= 400,
    column_left_cover= 400,
    column_right_cover= 400,
    column_rear_cover= 400,
    tie_top_cover= 500,
    tie_bottom_cover= 10,
    tie_bent_angle= 135,
    tie_extension_factor= 2,
    tie_diameter= 8,
    tie_number_spacing_check= True,
    tie_number_spacing_value= 5,
    column_main_rebar_diameter= 8,
    column_main_rebars_t_offset= 500,
    cross_amount_spacing_value=10,
    column_width= 200,
    column_length= 200,
    xdir_column_amount_spacing_check= True,
    xdir_column_amount_spacing_value= 1,
    ydir_column_amount_spacing_check= True,
    ydir_column_amount_spacing_value= 1,
    parallel_rounding = 2,
    parallel_l_shape_hook_orintation= "Alternate",
    cross_rounding= 2,
    cross_l_shape_hook_orintation="Alternate",
    column_main_rebars_type=  "LShapeRebar",
    column_main_hook_orientation= "Bottom Outside",
    column_main_hook_extend_along= "y-axis",
    column_l_main_rebar_rounding=  2,
    column_main_hook_extension= 80,
    column_sec_rebar_check= True,
    column_sec_rebars_t_offset= (500, 500),
    column_sec_rebars_number_diameter = (
        "1#6mm+1#6mm+1#6mm",
        "1#6mm+1#6mm+1#6mm",
    ),
    column_sec_rebars_type= (
        "LShapeRebar",
        "LShapeRebar",
    ),
    column_sec_hook_orientation = (
        "Bottom Outside",
        "Bottom Outside",
    ),
    column_l_sec_rebar_rounding = (2, 2),
    column_sec_hook_extension = (80, 80),
    mesh_cover_along=  "Both",
    structure=  App.getDocument("footing1").getObject("Structure003"),
    facename=  "Face4",
)

outputs:
Isolated column footing 6.png
Isolated column footing 6.png (157.45 KiB) Viewed 4356 times
Regards
Shiv_Charan
Posts: 59
Joined: Wed Mar 03, 2021 12:10 pm

Re: GSoC Proposal: Automate Reinforcement Process of Slab and Footing in FreeCAD

Post by Shiv_Charan »

amrit3701 wrote: Sun Aug 08, 2021 6:45 pm
Hey Shiv,

Nice to see your progress on footing reinforcement.

One suggestion, after looking above code it's looks like you are creating column reinforcement without reference to column object (I mean you are assuming column in the center of footing). Here can you also add the option to pass column object too as an argument in FootingReinforcement.makeFootingReinforcement, and then calculates rebar placements accordingly.
Hello Amrit,

Currently, column position is managed with the help of covers inputs.So that we can place column as per need.
Also, In current implementation of footing we can have multiple column in footing reinforcement (example combined footing and raft footing)

I will surely try suggested method. :)

Regards
Shiv_Charan
Posts: 59
Joined: Wed Mar 03, 2021 12:10 pm

Re: GSoC Proposal: Automate Reinforcement Process of Slab and Footing in FreeCAD

Post by Shiv_Charan »

Shiv_Charan wrote: Sun Aug 08, 2021 4:57 pm
There more different type of options, some of them I will try to show in upcoming posts by examples.
In my next posts I'm adding script examples and their outputs of above footing by using Footing Reinforcement module.
3. Rectangular Footing:

file used:
rectangular footing.FCStd
(10.61 KiB) Downloaded 111 times

Code: Select all


from FootingReinforcement import FootingReinforcement
import importlib
importlib.reload(FootingReinforcement)
FootingReinforcement.makeFootingReinforcement(
    parallel_rebar_type= "UShapeRebar",
    parallel_front_cover= 20,
    parallel_rear_cover= 20,
    parallel_left_cover= 10,
    parallel_right_cover= 10,
    parallel_top_cover= 20,
    parallel_bottom_cover= 20,
    parallel_diameter= 8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=15,
    cross_rebar_type="UShapeRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover= 20,
    cross_bottom_cover= 20,
    cross_diameter= 8,
    cross_amount_spacing_check= True,
    cross_amount_spacing_value=15,
    column_front_cover= 400,
    column_left_cover= 800,
    column_right_cover= 800,
    column_rear_cover= 1200,
    tie_top_cover= 1500,
    tie_bottom_cover= 10,
    tie_bent_angle= 135,
    tie_extension_factor= 2,
    tie_diameter= 8,
    tie_number_spacing_check= True,
    tie_number_spacing_value= 5,
    column_main_rebar_diameter= 8,
    column_main_rebars_t_offset= 1500,
    column_width= 400,
    column_length= 400,
    xdir_column_amount_spacing_check= True,
    xdir_column_amount_spacing_value= 1,
    ydir_column_amount_spacing_check= True,
    ydir_column_amount_spacing_value= 1,
    parallel_rounding = 2,
    cross_rounding= 2,
    column_main_rebars_type=  "LShapeRebar",
    column_main_hook_orientation= "Bottom Outside",
    column_main_hook_extend_along= "x-axis",
    column_l_main_rebar_rounding=  2,
    column_main_hook_extension= 80,
    column_sec_rebar_check= True,
    column_sec_rebars_t_offset= (1500, 1500),
    column_sec_rebars_number_diameter = (
        "1#6mm+1#6mm+1#6mm",
        "1#6mm+1#6mm+1#6mm",
    ),
    column_sec_rebars_type= (
        "LShapeRebar",
        "LShapeRebar",
    ),
    column_sec_hook_orientation = (
        "Bottom Outside",
        "Bottom Outside",
    ),
    column_l_sec_rebar_rounding = (2, 2),
    column_sec_hook_extension = (80, 80),
    mesh_cover_along=  "Both",
    structure=  App.getDocument("rectangular_footing").getObject("Structure"),
    facename=  "Face3",
)

Output:
Rectangular footing.png
Rectangular footing.png (158.19 KiB) Viewed 4330 times
side view rectangular footing.png
side view rectangular footing.png (7.36 KiB) Viewed 4330 times
Shiv_Charan
Posts: 59
Joined: Wed Mar 03, 2021 12:10 pm

Re: GSoC Proposal: Automate Reinforcement Process of Slab and Footing in FreeCAD

Post by Shiv_Charan »

Shiv_Charan wrote: Sun Aug 08, 2021 4:57 pm
This merge request cover detailing function to make footing reinforcement of following type:
  • Isolated column footing
  • Rectangular footing.
  • Edge footing
  • Corner footing
  • Combined Footing
  • Raft footing
4. Edge Footing

Code: Select all


from FootingReinforcement import FootingReinforcement
import importlib
importlib.reload(FootingReinforcement)
FootingReinforcement.makeFootingReinforcement(
    parallel_rebar_type= "UShapeRebar",
    parallel_front_cover= 20,
    parallel_rear_cover= 20,
    parallel_left_cover= 10,
    parallel_right_cover= 10,
    parallel_top_cover= 20,
    parallel_bottom_cover= 20,
    parallel_diameter= 8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=10,
    cross_rebar_type="UShapeRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover= 20,
    cross_bottom_cover= 20,
    cross_diameter= 8,
    cross_amount_spacing_check= True,
    column_front_cover= 20,
    column_left_cover= 400,
    column_right_cover= 400,
    column_rear_cover= 780,
    tie_top_cover= 500,
    tie_bottom_cover= 10,
    tie_bent_angle= 135,
    tie_extension_factor= 2,
    tie_diameter= 8,
    tie_number_spacing_check= True,
    tie_number_spacing_value= 5,
    column_main_rebar_diameter= 8,
    column_main_rebars_t_offset= 500,
    cross_amount_spacing_value=10,
    column_width= 200,
    column_length= 200,
    xdir_column_amount_spacing_check= True,
    xdir_column_amount_spacing_value= 1,
    ydir_column_amount_spacing_check= True,
    ydir_column_amount_spacing_value= 1,
    parallel_rounding = 2,
    cross_rounding= 2,
    column_main_rebars_type=  "LShapeRebar",
    column_main_hook_orientation= "Bottom Outside",
    column_main_hook_extend_along= "x-axis",
    column_l_main_rebar_rounding=  2,
    column_main_hook_extension= 80,
    column_sec_rebar_check= True,
    column_sec_rebars_t_offset= (500, 500),
    column_sec_rebars_number_diameter = (
        "1#6mm+1#6mm+1#6mm",
        "1#6mm+1#6mm+1#6mm",
    ),
    column_sec_rebars_type= (
        "LShapeRebar",
        "LShapeRebar",
    ),
    column_sec_hook_orientation = (
        "Bottom Right",
        "Bottom Outside",
    ),
    column_l_sec_rebar_rounding = (2, 2),
    column_sec_hook_extension = (80, 80),
    mesh_cover_along=  "Both",
    structure=  App.getDocument("footing1").getObject("Structure003"),
    facename=  "Face4",
)




output:
Edge footing.png
Edge footing.png (160.68 KiB) Viewed 4312 times
side view edge footing.png
side view edge footing.png (13.3 KiB) Viewed 4312 times
top view edge footing.png
top view edge footing.png (15.86 KiB) Viewed 4312 times
Shiv_Charan
Posts: 59
Joined: Wed Mar 03, 2021 12:10 pm

Re: GSoC Proposal: Automate Reinforcement Process of Slab and Footing in FreeCAD

Post by Shiv_Charan »

Shiv_Charan wrote: Sun Aug 08, 2021 4:57 pm
This merge request cover detailing function to make footing reinforcement of following type:
  • Isolated column footing
  • Rectangular footing.
  • Edge footing
  • Corner footing
  • Combined Footing
  • Raft footing
5. Corner Footing

Code: Select all


from FootingReinforcement import FootingReinforcement
import importlib
importlib.reload(FootingReinforcement)
FootingReinforcement.makeFootingReinforcement(
    parallel_rebar_type= "UShapeRebar",
    parallel_front_cover= 20,
    parallel_rear_cover= 20,
    parallel_left_cover= 10,
    parallel_right_cover= 10,
    parallel_top_cover= 20,
    parallel_bottom_cover= 20,
    parallel_diameter= 8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=10,
    cross_rebar_type="UShapeRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover= 20,
    cross_bottom_cover= 20,
    cross_diameter= 8,
    cross_amount_spacing_check= True,
    column_front_cover= 20,
    column_left_cover= 20,
    column_right_cover= 780,
    column_rear_cover= 780,
    tie_top_cover= 500,
    tie_bottom_cover= 10,
    tie_bent_angle= 135,
    tie_extension_factor= 2,
    tie_diameter= 8,
    tie_number_spacing_check= True,
    tie_number_spacing_value= 5,
    column_main_rebar_diameter= 8,
    column_main_rebars_t_offset= 500,
    cross_amount_spacing_value=10,
    column_width= 200,
    column_length= 200,
    xdir_column_amount_spacing_check= True,
    xdir_column_amount_spacing_value= 1,
    ydir_column_amount_spacing_check= True,
    ydir_column_amount_spacing_value= 1,
    parallel_rounding = 2,
    cross_rounding= 2,
    column_main_rebars_type=  "LShapeRebar",
    column_main_hook_orientation= "Bottom Right",
    column_main_hook_extend_along= "x-axis",
    column_l_main_rebar_rounding=  2,
    column_main_hook_extension= 80,
    column_sec_rebar_check= True,
    column_sec_rebars_t_offset= (500, 500),
    column_sec_rebars_number_diameter = (
        "1#6mm+1#6mm+1#6mm",
        "1#6mm+1#6mm+1#6mm",
    ),
    column_sec_rebars_type= (
        "LShapeRebar",
        "LShapeRebar",
    ),
    column_sec_hook_orientation = (
        "Bottom Right",
        "Bottom Right",
    ),
    column_l_sec_rebar_rounding = (2, 2),
    column_sec_hook_extension = (80, 80),
    mesh_cover_along=  "Both",
    structure=  App.getDocument("footing1").getObject("Structure003"),
    facename=  "Face4",
)

outputs:
corner footing.png
corner footing.png (134.72 KiB) Viewed 4306 times
side view corner footing.png
side view corner footing.png (13.86 KiB) Viewed 4306 times
top view corner footing.png
top view corner footing.png (15.25 KiB) Viewed 4306 times
Shiv_Charan
Posts: 59
Joined: Wed Mar 03, 2021 12:10 pm

Re: GSoC Proposal: Automate Reinforcement Process of Slab and Footing in FreeCAD

Post by Shiv_Charan »

Shiv_Charan wrote: Sun Aug 08, 2021 4:57 pm
This merge request cover detailing function to make footing reinforcement of following type:
  • Isolated column footing
  • Rectangular footing.
  • Edge footing
  • Corner footing
  • Combined Footing
  • Raft footing
6. Combined Footing:

Code: Select all


from FootingReinforcement import FootingReinforcement
import importlib
importlib.reload(FootingReinforcement)
FootingReinforcement.makeFootingReinforcement(
    parallel_rebar_type= "UShapeRebar",
    parallel_front_cover= 20,
    parallel_rear_cover= 20,
    parallel_left_cover= 10,
    parallel_right_cover= 10,
    parallel_top_cover= 20,
    parallel_bottom_cover= 20,
    parallel_diameter= 8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=15,
    cross_rebar_type="UShapeRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover= 20,
    cross_bottom_cover= 20,
    cross_diameter= 8,
    cross_amount_spacing_check= True,
    cross_amount_spacing_value=15,
    column_front_cover= 400,
    column_left_cover= 800,
    column_right_cover= 800,
    column_rear_cover= 400,
    tie_top_cover= 1500,
    tie_bottom_cover= 10,
    tie_bent_angle= 135,
    tie_extension_factor= 2,
    tie_diameter= 8,
    tie_number_spacing_check= True,
    tie_number_spacing_value= 5,
    column_main_rebar_diameter= 8,
    column_main_rebars_t_offset= 1500,
    column_width= 400,
    column_length= 400,
    xdir_column_amount_spacing_check= True,
    xdir_column_amount_spacing_value= 2,
    ydir_column_amount_spacing_check= True,
    ydir_column_amount_spacing_value= 1,
    parallel_rounding = 2,
    cross_rounding= 2,
    column_main_rebars_type=  "LShapeRebar",
    column_main_hook_orientation= "Bottom Outside",
    column_main_hook_extend_along= "x-axis",
    column_l_main_rebar_rounding=  2,
    column_main_hook_extension= 80,
    column_sec_rebar_check= True,
    column_sec_rebars_t_offset= (1500, 1500),
    column_sec_rebars_number_diameter = (
        "1#6mm+1#6mm+1#6mm",
        "1#6mm+1#6mm+1#6mm",
    ),
    column_sec_rebars_type= (
        "LShapeRebar",
        "LShapeRebar",
    ),
    column_sec_hook_orientation = (
        "Bottom Outside",
        "Bottom Outside",
    ),
    column_l_sec_rebar_rounding = (2, 2),
    column_sec_hook_extension = (80, 80),
    mesh_cover_along=  "Both",
    structure=  App.getDocument("rectangular_footing").getObject("Structure"),
    facename=  "Face3",
)

Note: It take some time to add reinforcement if column are more with secondary rebars.

Output:
Combined footing.png
Combined footing.png (172.31 KiB) Viewed 4295 times
side view combined footing.png
side view combined footing.png (11.33 KiB) Viewed 4295 times
top view combined footing.png
top view combined footing.png (14.66 KiB) Viewed 4295 times
Regards
Shiv_Charan
Posts: 59
Joined: Wed Mar 03, 2021 12:10 pm

Re: GSoC Proposal: Automate Reinforcement Process of Slab and Footing in FreeCAD

Post by Shiv_Charan »

Shiv_Charan wrote: Sun Aug 08, 2021 4:57 pm
This merge request cover detailing function to make footing reinforcement of following type:
  • Isolated column footing
  • Rectangular footing.
  • Edge footing
  • Corner footing
  • Combined Footing
  • Raft footing
7. Raft Footing

File used :
Raft Footing.FCStd
(10.55 KiB) Downloaded 97 times
Note : If columns are more, It take some time to complete reinforcement process.

Code: Select all


from FootingReinforcement import FootingReinforcement
import importlib
importlib.reload(FootingReinforcement)
FootingReinforcement.makeFootingReinforcement(
    parallel_rebar_type= "UShapeRebar",
    parallel_front_cover= 20,
    parallel_rear_cover= 20,
    parallel_left_cover= 10,
    parallel_right_cover= 10,
    parallel_top_cover= 20,
    parallel_bottom_cover= 20,
    parallel_diameter= 8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=15,
    cross_rebar_type="UShapeRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover= 20,
    cross_bottom_cover= 20,
    cross_diameter= 8,
    cross_amount_spacing_check= True,
    cross_amount_spacing_value=15,
    column_front_cover= 200,
    column_left_cover= 200,
    column_right_cover= 200,
    column_rear_cover= 200,
    tie_top_cover= 1500,
    tie_bottom_cover= 10,
    tie_bent_angle= 135,
    tie_extension_factor= 2,
    tie_diameter= 8,
    tie_number_spacing_check= True,
    tie_number_spacing_value= 5,
    column_main_rebar_diameter= 8,
    column_main_rebars_t_offset= 1500,
    column_width= 200,
    column_length= 200,
    xdir_column_amount_spacing_check= True,
    xdir_column_amount_spacing_value= 4,
    ydir_column_amount_spacing_check= True,
    ydir_column_amount_spacing_value= 4,
    parallel_rounding = 2,
    cross_rounding= 2,
    column_main_rebars_type=  "LShapeRebar",
    column_main_hook_orientation= "Bottom Outside",
    column_main_hook_extend_along= "x-axis",
    column_l_main_rebar_rounding=  2,
    column_main_hook_extension= 80,
    mesh_cover_along=  "Both",
    structure=  App.getDocument("Raft_Footing").getObject("Structure"),
    facename=  "Face3",
)

output:
Raft footing.png
Raft footing.png (212.39 KiB) Viewed 4275 times
side view of raft footing.png
side view of raft footing.png (14.73 KiB) Viewed 4275 times
top view of raft footing.png
top view of raft footing.png (19.85 KiB) Viewed 4275 times
Regards
Post Reply