Test create rebars in footing with 3 types of rebars.
Code: Select all
#-*- coding=utf8 -*-
"""
TestFooting1.py
"""
import FreeCAD
import Draft
import Arch
from FreeCAD import Vector
from math import cos, radians
# BS8666
def shape21(A=300, B=1000, C=300):
points=[Vector(0,0,A),
Vector(0,0,0),
Vector(B,0,0),
Vector(B,0,C),
]
line = Draft.makeWire(points,closed=False,face=False,support=None)
return line
def shape41(A=100, B=300, C=1000, D=300, E=100):
points=[Vector(A,0,B),
Vector(0,0,B),
Vector(0,0,0),
Vector(C,0,0),
Vector(C,0,D),
Vector(C-E,0,D),
]
line = Draft.makeWire(points,closed=False,face=False,support=None)
return line
def shape47(A=300, B=100, C=2*12+5*12, D=2*12+5*12, R=2*12):
points=[Vector(2*R,0,A-C),
Vector(2*R,0,A),
Vector(0,0,A),
Vector(0,0,0),
Vector(B,0,0),
Vector(B,0,A),
Vector(B-2*R,0,A),
Vector(B-2*R,0,A-D),
]
line = Draft.makeWire(points,closed=False,face=False,support=None)
return line
def makeFooting1(rebarType=1):
B = 1000
L = B
t = 300
covering = 50
dia = 12
footing1 = Arch.makeStructure(length=L,width=B,height=t,name='Footing1')
footing1.Placement.Base=Vector(+L/2., 0 , +t/2.)
footing1.ViewObject.Transparency = 80
R = 2*dia
if rebarType==1:
A1 = t-2*covering-dia/2.
B1 = L-2*covering-dia
line1 = shape21(A=A1 , B=B1 , C=A1)
line1.Support = [footing1,'Face1']
Draft.move(line1, Vector(-B1/2 ,-B/2,+covering+dia/2.))
elif rebarType==2:
A1 = R+6*dia
B1 = t-2*covering-dia
C1 = L-2*covering-dia
line1 = shape41(A=A1, B=B1, C=C1, D=B1, E=A1)
line1.Support = [footing1,'Face1']
Draft.move(line1, Vector(-C1/2 ,-B/2,+covering+dia/2.))
elif rebarType==3:
A1 = t-2*covering-dia
B1 = L-2*covering-dia
line1 = shape47(A=A1, B=B1, C=2*12+5*12, D=2*12+5*12, R=2*12)
line1.Support = [footing1,'Face1']
Draft.move(line1, Vector(-B1/2 ,-B/2,+covering+dia/2.))
line1.ViewObject.Visibility = False
rebar1 = Arch.makeRebar(diameter = dia)
rebar1.Base = line1
rebar1.Label = 'CustomRebar_bar_No_1'
rebar1.Host = footing1
rebar1.Amount = 8
rebar1.OffsetStart = covering + 2*R
rebar1.OffsetEnd = covering + 2*R
rebar1.Direction = (0.0, 1.0, 0.0)
rebar1.Rounding = 2
rebar1.ViewObject.ShapeColor = (0.0,0.0,1.0)
if rebarType==1:
A2 = t-2*covering-dia/2. - dia
B2 = B-2*covering-dia
line2 = shape21(A=A2 , B=B2 , C=A2)
line2.Support = [footing1,'Face1']
Draft.rotate(line2,90 , Vector(0,0,0) , Vector(0,0,1) )
Draft.move(line2, Vector(-L/2 ,-B1/2 ,+covering+dia/2.+dia))
elif rebarType==2:
A2 = R+6*dia
B2 = t-2*covering-dia - dia
C2 = B-2*covering-dia
line2 = shape41(A=A1, B=B1, C=C1, D=B1, E=A1)
line2.Support = [footing1,'Face1']
Draft.rotate(line2,90 , Vector(0,0,0) , Vector(0,0,1) )
Draft.move(line2, Vector(-L/2 ,-C2/2,+covering+dia/2.+dia))
elif rebarType==3:
A1 = t-2*covering-dia
B1 = L-2*covering-dia
line2 = shape47(A=A1, B=B1, C=2*12+5*12, D=2*12+5*12, R=2*12)
line2.Support = [footing1,'Face1']
Draft.rotate(line2,90 , Vector(0,0,0) , Vector(0,0,1) )
Draft.move(line2, Vector(-L/2 ,-B1/2,+covering+dia/2.+dia))
line2.ViewObject.Visibility = False
rebar2 = Arch.makeRebar(diameter = dia)
rebar2.Base = line2
rebar2.Label = 'CustomRebar_bar_No_2'
rebar2.Host = footing1
rebar2.Amount = 8
rebar2.OffsetStart = covering + 2*R
rebar2.OffsetEnd = covering + 2*R
rebar2.Direction = (1.0, 0.0, 0.0)
rebar2.Rounding = 2
rebar2.ViewObject.ShapeColor = (0.0,1.0,0.0)
if __name__=='__main__':
makeFooting1(rebarType=1)
Msg('Done!!\n\n')
FreeCAD.ActiveDocument.recompute()