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 »

Shiv_Charan wrote: Sat Jun 19, 2021 5:21 pm
amrit3701 wrote: Sat Jun 19, 2021 3:06 pm Nice! I reviewed the PR.
Thanks @amrit3701, I'm working on requested changes.
Hi @amrit3701,

I have made required changes in PR.
Please review changes, let me know if further changes are required in it.

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: Fri Jun 18, 2021 1:23 pm
here is pull request: https://github.com/amrit3701/FreeCAD-Re ... t/pull/156
Current implementation use same type of rebar for both parallel and cross rebars in slab.
I am working on adding support for different type of rebar for parallel and cross rebars.
Hi @amrit3701,

Implementation for different type of rebars for parallel and cross rebars in slab reinforcement is done.
here is commit: https://github.com/ShivCharanSharma/Fre ... 0c26a8c91d
Currently, I am working on the custom spacing between rebars.

Some of the test scripts and their output on the given file is as follows.

File:-
slab.FCStd
(6.22 KiB) Downloaded 82 times
1. Slab having straight rebars for both parallel and cross rebars

Code: Select all


from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    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,
    parallel_rounding=None,
    parallel_bent_bar_length=None,
    parallel_bent_bar_angle=None,

    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,
    cross_amount_spacing_value=10,
    cross_rounding=None,
    cross_bent_bar_length=None,
    cross_bent_bar_angle=None,
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',
)
outputs :
Image

2. Slab having straight rebars and L shaped rebars

Code: Select all

from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    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,
    parallel_rounding=None,
    parallel_bent_bar_length=None,
    parallel_bent_bar_angle=None,

    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,
    cross_amount_spacing_value=10,
    cross_rounding=2,
    cross_bent_bar_length=None,
    cross_bent_bar_angle=None,
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',
)
outputs :
Slab having stright and L shape rebars 1.png
Slab having stright and L shape rebars 1.png (86.83 KiB) Viewed 4656 times
3. Slab having straight rebars and U shape rebars:

Code: Select all

from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    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,
    parallel_rounding=None,
    parallel_bent_bar_length=None,
    parallel_bent_bar_angle=None,

    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=10,
    cross_rounding=2,
    cross_bent_bar_length=None,
    cross_bent_bar_angle=None,
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',
)

outputs:
Image

4. Slab having straight and bent shape rebars

Code: Select all


from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    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,
    parallel_rounding=None,
    parallel_bent_bar_length=None,
    parallel_bent_bar_angle=None,

    cross_rebar_type="BentShapeRebar",
    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=10,
    cross_rounding=2,
    cross_bent_bar_length=50,
    cross_bent_bar_angle=135,
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',
)

outputs:
slab having stright and bent shape rebars.png
slab having stright and bent shape rebars.png (102.28 KiB) Viewed 4656 times
5. Slab having L shape rebars for both parallel and cross rebars

Code: Select all


from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    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,
    parallel_rounding=2,
    parallel_bent_bar_length=None,
    parallel_bent_bar_angle=None,

    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,
    cross_amount_spacing_value=10,
    cross_rounding=2,
    cross_bent_bar_length=None,
    cross_bent_bar_angle=None,
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',
)
outputs:
different rebar test having both side L rebars.png
different rebar test having both side L rebars.png (120.5 KiB) Viewed 4656 times
6. Slab having L shaped rebars and U shaped rebars

Code: Select all


from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    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,
    parallel_rounding=2,
    parallel_bent_bar_length=None,
    parallel_bent_bar_angle=None,

    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=10,
    cross_rounding=2,
    cross_bent_bar_length=None,
    cross_bent_bar_angle=None,
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',
)
outputs:
Image

7. Slab having L shaped rebars and bent shaped rebars.

Code: Select all


from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    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,
    parallel_rounding=2,
    parallel_bent_bar_length=None,
    parallel_bent_bar_angle=None,

    cross_rebar_type="BentShapeRebar",
    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=10,
    cross_rounding=2,
    cross_bent_bar_length=50,
    cross_bent_bar_angle=135,
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',
)

outputs:
Slab having L shaped and Bent Shaped rebars.png
Slab having L shaped and Bent Shaped rebars.png (95.56 KiB) Viewed 4656 times
8. Slab having U Shaped rebars for both parallel and cross rebars

Code: Select all


from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    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,
    parallel_rounding=2,
    parallel_bent_bar_length=None,
    parallel_bent_bar_angle=None,

    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=10,
    cross_rounding=2,
    cross_bent_bar_length=None,
    cross_bent_bar_angle=None,
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',
)
outputs:
Image

9. Slab having U shaped and Bent shaped rebars.

Code: Select all


from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    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,
    parallel_rounding=2,
    parallel_bent_bar_length=None,
    parallel_bent_bar_angle=None,

    cross_rebar_type="BentShapeRebar",
    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=10,
    cross_rounding=2,
    cross_bent_bar_length=50,
    cross_bent_bar_angle=135,
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',
)
outputs:

Image

10. Slab having bent shaped rebars for both parallel and cross rebars

Code: Select all


from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    parallel_rebar_type="BentShapeRebar",
    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=20,
    parallel_rounding=2,
    parallel_bent_bar_length=150,
    parallel_bent_bar_angle=135,

    cross_rebar_type="BentShapeRebar",
    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=20,
    cross_rounding=2,
    cross_bent_bar_length=150,
    cross_bent_bar_angle=135,
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',
)
outputs:
Image

Thanks and 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 Jun 20, 2021 3:32 pm Hi @amrit3701,

Implementation for different type of rebars for parallel and cross rebars in slab reinforcement is done.
here is commit: https://github.com/ShivCharanSharma/Fre ... 0c26a8c91d.
Nice progress! :D
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 »

Hi @amrit3701

amrit3701 wrote: Mon Jun 21, 2021 6:38 pm Nice progress! :D
Thank you :)

Implementation of distribution rebars for slab having Bent shape rebars (i.e. slab spaning in one direction) is done.
here is commit: https://github.com/ShivCharanSharma/Fre ... a0147b75ab

I have also added different option for hook orientation of L-shape rebars.
Now in Slab reinforcement L-Shape Hook can be oriented in "Left", "Right", "Alternate". directions.
Earlier it was only "Alternate".
here is commit : https://github.com/ShivCharanSharma/Fre ... fc49dec194

Some sample script and their output on given file is as below:-
slab.FCStd
(6.2 KiB) Downloaded 90 times
1. Slab having Left L-Shape in parallel and Alternate L-Shape in cross.

Code: Select all

from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    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,
    parallel_rounding=2,
    parallel_bent_bar_length=None,
    parallel_bent_bar_angle=None,
    parallel_l_shape_hook_orintation="Left",

    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,
    cross_amount_spacing_value=10,
    cross_rounding=2,
    cross_bent_bar_length=None,
    cross_bent_bar_angle=None,
    cross_l_shape_hook_orintation="Alternate",
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',
)
output:
Image

2. Slab having L-shaped rebars having Left hook orientation in both parallel and cross.

Code: Select all

   
from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    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,
    parallel_rounding=2,
    parallel_bent_bar_length=None,
    parallel_bent_bar_angle=None,
    parallel_l_shape_hook_orintation="Left",

    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,
    cross_amount_spacing_value=10,
    cross_rounding=2,
    cross_bent_bar_length=None,
    cross_bent_bar_angle=None,
    cross_l_shape_hook_orintation="Left",
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',
)

outputs:
Image

3. slab having straight in parallel and L-Shaped rebars (Left hook orientation) in cross:

Code: Select all


from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    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,
    parallel_rounding=2,
    parallel_bent_bar_length=None,
    parallel_bent_bar_angle=None,
    parallel_l_shape_hook_orintation="Left",

    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,
    cross_amount_spacing_value=10,
    cross_rounding=None,
    cross_bent_bar_length=None,
    cross_bent_bar_angle=None,
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',
)


output:
Slab having stright and left L-shaped rebars reinforcement.png
Slab having stright and left L-shaped rebars reinforcement.png (78.53 KiB) Viewed 4497 times
4. Slab having L-shaped rebars having hook orientation "Alternate" in parallel and "RIght" in cross .

Code: Select all

from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    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,
    parallel_rounding=2,
    parallel_bent_bar_length=None,
    parallel_bent_bar_angle=None,
    parallel_l_shape_hook_orintation="Alternate",

    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,
    cross_amount_spacing_value=10,
    cross_rounding=2,
    cross_bent_bar_length=None,
    cross_bent_bar_angle=None,
    cross_l_shape_hook_orintation="Right",
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',
)
output:
Image

Scripts and outputs for Slab having distribution rebars:-


1. Slab spaning in one direction.

Code: Select all


from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    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=20,
    parallel_rounding=None,
    parallel_bent_bar_length=None,
    parallel_bent_bar_angle=None,

    cross_rebar_type="BentShapeRebar",
    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=10,
    cross_rounding=2,
    cross_bent_bar_length=150,
    cross_bent_bar_angle=135,
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',

    cross_distribution_rebars_diameter=8,
    cross_distribution_rebars_check = True,
    cross_distribution_rebars_count = 4,
)
output:
Isometric view:-

Image

Side view:-

Image

2. Slab spaining in two direction:-

Code: Select all


from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    parallel_rebar_type="BentShapeRebar",
    parallel_front_cover=20,
    parallel_rear_cover=20,
    parallel_left_cover=10,
    parallel_right_cover=10,
    parallel_top_cover=30,
    parallel_bottom_cover=20,
    parallel_diameter=8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=10,
    parallel_rounding=2,
    parallel_bent_bar_length=150,
    parallel_bent_bar_angle=135,

    cross_rebar_type="BentShapeRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover=29,
    cross_bottom_cover=20,
    cross_diameter=8,
    cross_amount_spacing_check=True,
    cross_amount_spacing_value=10,
    cross_rounding=2,
    cross_bent_bar_length=150,
    cross_bent_bar_angle=135,
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',

    parallel_distribution_rebars_check= True,
    parallel_distribution_rebars_diameter=8,
    parallel_distribution_rebars_count= 4,
    cross_distribution_rebars_check = True,
    cross_distribution_rebars_diameter=8,
    cross_distribution_rebars_count = 4,
)
outputs:
Isometric view:-

Image

Side view 1:-
Image

Side view 2:-
Image

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 »

Hello everyone,

Today @amrit3701 and I had a meeting on current progress and on some of my doubt/questions.
As per discussion in the meeting. Now I will start working on GUI implementation.
That will help to get feedback from different type of users, for any changes if required.

Thanks and Regards
User avatar
Zolko
Veteran
Posts: 2213
Joined: Mon Dec 17, 2018 10:02 am

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

Post by Zolko »

This seems extremely specific: does it really belong to "Open Discussions " ?
try the Assembly4 workbench for FreCAD — tutorials here and here
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 »

Zolko wrote: Sun Jun 27, 2021 5:41 pm This seems extremely specific: does it really belong to "Open Discussions " ?
Hi Zolko,

This is the GSoC project, so the project's scope was already defined in the student's project proposal. https://wiki.freecadweb.org/User:Shiv_C ... c_proposal

However, we (me, yorik and shiv) are planning to schedule a weekly meeting during the weekend to track the progress report. I will record that session and share it here. :)

Cheers!
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 »

Hi @amrit3701,

Implementation for adding distribution rebars by spacing is done.
here is the commit : https://github.com/ShivCharanSharma/Fre ... 7a8ad87241
Earlier distribution rebars were added by amount only.

Implementation for UI is in progress and will be complete soon. :)

Now scripts will look as follows:-
eg. -
Distribution rebars (In blue colour) for parallel bent shape rebars are added by taking the amount as input.
Distribution rebars (In purple colour) for cross bent shape rebars are added by taking space as input.

Code: Select all


from SlabReinforcement import SlabReinforcement
import importlib
importlib.reload(SlabReinforcement)
SlabReinforcement.makeSlabReinforcement(
    parallel_rebar_type="BentShapeRebar",
    parallel_front_cover=20,
    parallel_rear_cover=20,
    parallel_left_cover=10,
    parallel_right_cover=10,
    parallel_top_cover=30,
    parallel_bottom_cover=20,
    parallel_diameter=8,
    parallel_amount_spacing_check=True,
    parallel_amount_spacing_value=10,
    parallel_rounding=2,
    parallel_bent_bar_length=150,
    parallel_bent_bar_angle=135,

    cross_rebar_type="BentShapeRebar",
    cross_front_cover=20,
    cross_rear_cover=20,
    cross_left_cover=10,
    cross_right_cover=10,
    cross_top_cover=29,
    cross_bottom_cover=20,
    cross_diameter=8,
    cross_amount_spacing_check=True,
    cross_amount_spacing_value=10,
    cross_rounding=2,
    cross_bent_bar_length=150,
    cross_bent_bar_angle=135,
    mesh_cover_along="Bottom",
    structure=App.getDocument("slab").getObject("Beam"),
    facename='Face4',

    parallel_distribution_rebars_check= True,
    parallel_distribution_rebars_diameter=8,
    parallel_distribution_rebars_amount_spacing_check= True,
    parallel_distribution_rebars_amount_spacing_value= 6,
    cross_distribution_rebars_check = True,
    cross_distribution_rebars_diameter=8,
    cross_distribution_rebars_amount_spacing_check=False,
    cross_distribution_rebars_amount_spacing_value = 40,
)
output:

isometric view:
distribution rebars by spacing and amount.png
distribution rebars by spacing and amount.png (137.13 KiB) Viewed 4152 times
Distribution rebar added by taking the amount as input:-
distribution rebars by amount.png
distribution rebars by amount.png (4.23 KiB) Viewed 4152 times
Distribution rebar added by taking the spacing as input:-
distribution rebar by spacing.png
distribution rebar by spacing.png (4.52 KiB) Viewed 4152 times
Thanks and 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 »

amrit3701 wrote: Sun Jun 27, 2021 8:05 pm
However, we (me, yorik and shiv) are planning to schedule a weekly meeting during the weekend to track the progress report. I will record that session and share it here. :)
Weekly progress report of Shiv: https://www.patreon.com/posts/implementation-53254413
Direct video link: https://www.youtube.com/watch?v=pvSmhWrcdc0

Thanks,
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 »

Hi @amrit3701
Shiv_Charan wrote: Thu Jul 01, 2021 2:16 pm
Implementation for UI is in progress and will be complete soon. :)
Implementation of UI to make slab Reinforcement is complete, including suggestions related to removing separate tabs for parallel/cross distribution rebars as discussed in meeting.
here is the merge request : https://github.com/amrit3701/FreeCAD-Re ... t/pull/158

Implementation of rebar grouping and edit slab reinforcement in progress and will be complete soon. :)

here are some sample UI input and output:
I will also create separate documentation for it once the edit part is done.

1. Slab having Straight Rebars on both side:
Input UI:
parallel:-
Image

cross:
Image

output:
Image

2. Slab having Alternate L shape in parallel and UShape rebars in cross
Input UI
parallel:-
Image
cross:-
Image
output:
Image

3. Slab having Bent shape without distribution rebar in parallel and Bent shape with distribution rebars in cross:
Input UI:
parallel:
Image
cross:
Image
Image
output:
UI output slab having bent shape in parallel and bent shape with distribution in crossin corss.png
UI output slab having bent shape in parallel and bent shape with distribution in crossin corss.png (88.35 KiB) Viewed 3794 times
Thanks and Regards
Post Reply