Test create rebar in retaining wall.
Code: Select all
#-*- coding=utf8 -*-
"""
rebar in R-Wall
18 Jul 2017
"""
import Arch
import Draft
import Stirrup
from FreeCAD import Vector
from math import cos , radians
def makeRetainingWall():
L = 5000
beam = Arch.makeStructure(length=L,width=300.0,height=400.0 , name='Beam')
slab = Arch.makeStructure(length=L,width=1000.0,height=200.0 , name='Slab')
wall = Arch.makeStructure(length=L,width=200.0,height=3000.0 , name='R-Wall')
beam.Placement.Base = Vector(L , -0, -400/2)
slab.Placement.Base = Vector(L , +500+150, -200/2)
wall.Placement.Base = Vector(L , +50., +3000/2)
beam.ViewObject.Transparency = 80
slab.ViewObject.Transparency = 80
wall.ViewObject.Transparency = 80
# Slab Rebar
spacing = 125
num = int(L/spacing)
points=[Vector(0,1800,0.0),
Vector(0,0.0,0.0),
Vector(0,0,-150)]
line = Draft.makeWire(points,closed=False,face=False,support=None)
Draft.move(line , Vector(50,-150+25,-25))
rebar1 = Arch.makeRebar(diameter = 12)
rebar1.Base = line
rebar1.Label = 'CustomRebar'
rebar1.Host = slab
rebar1.Amount = 1
rebar1.Direction = (1., 0., 0.)
rebar1.Rounding = 2
rebar1.OffsetStart =50 ; rebar1.OffsetEnd =0
rebar1.Role = u"Rebar"
#Msg('%d@%d\n'%(num,spacing))
rebar1.CustomSpacing = '%d@%d'%(num,spacing)
#---------------------------------------------
points=[Vector(0,1800,0.0),
Vector(0,0.0,0.0),
Vector(0,0,+150)]
line = Draft.makeWire(points,closed=False,face=False,support=None)
Draft.move(line , Vector(50,-150+25,-200+25))
rebar2 = Arch.makeRebar(diameter = 12)
rebar2.Base = line
rebar2.Label = 'CustomRebar'
rebar2.Host = slab
rebar2.Amount = 1
rebar2.Direction = (1., 0., 0.)
rebar2.Rounding = 2
rebar2.OffsetStart =50+12+2 ; rebar1.OffsetEnd =0
rebar2.Role = u"Rebar"
rebar2.CustomSpacing = '%d@%d'%(num,spacing)
# Wall Rebar
spacing = 200
num = int(L/spacing)
points=[Vector(0,+300,0.0),
Vector(0,0.0,0.0),
Vector(0,0,3000+150)]
line = Draft.makeWire(points,closed=False,face=False,support=None)
Draft.move(line , Vector(0,150-25 ,-170))
rebar3 = Arch.makeRebar(diameter = 12)
rebar3.Base = line
rebar3.Label = 'CustomRebar'
rebar3.Host = wall
rebar3.Amount = 1
rebar3.Direction = (1., 0., 0.)
rebar3.Rounding = 2
rebar3.OffsetStart =50 ; rebar1.OffsetEnd =0
rebar3.Role = u"Rebar"
rebar3.CustomSpacing = '%d@%d'%(num,spacing)
points=[Vector(0,-100,0.0),
Vector(0,0.0,0.0),
Vector(0,0,3000+150)]
line = Draft.makeWire(points,closed=False,face=False,support=None)
Draft.move(line , Vector(0,-50+25 ,-170))
rebar4 = Arch.makeRebar(diameter = 12)
rebar4.Base = line
rebar4.Label = 'CustomRebar'
rebar4.Host = wall
rebar4.Amount = 1
rebar4.Direction = (1., 0., 0.)
rebar4.Rounding = 2
rebar4.OffsetStart =50+12+2 ; rebar1.OffsetEnd =0
rebar4.Role = u"Rebar"
rebar4.CustomSpacing = '%d@%d'%(num,spacing)
#-----------------------------
spacing = 200
num = int(3000/spacing)
points=[Vector(-150,0,0.0),
Vector(L+150 ,0.0,0.0),]
line = Draft.makeWire(points,closed=False,face=False,support=None)
Draft.move(line , Vector(0,-50+25+12 ,50))
rebar5 = Arch.makeRebar(diameter = 12)
rebar5.Base = line
rebar5.Label = 'CustomRebar'
rebar5.Host = wall
rebar5.Amount = 1
rebar5.Direction = (0, 0., 1.)
rebar5.Rounding = 2
rebar5.OffsetStart =50 ; rebar1.OffsetEnd =0
rebar5.Role = u"Rebar"
rebar5.CustomSpacing = '%d@%d'%(num,spacing)
points=[Vector(-150,0,0.0),
Vector(L+150 ,0.0,0.0),]
line = Draft.makeWire(points,closed=False,face=False,support=None)
Draft.move(line , Vector(0,150-25-12 ,50))
rebar6 = Arch.makeRebar(diameter = 12)
rebar6.Base = line
rebar6.Label = 'CustomRebar'
rebar6.Host = wall
rebar6.Amount = 1
rebar6.Direction = (0, 0., 1.)
rebar6.Rounding = 2
rebar6.OffsetStart =50 ; rebar1.OffsetEnd =0
rebar6.Role = u"Rebar"
rebar6.CustomSpacing = '%d@%d'%(num,spacing)
#wall.addComponents([slab,beam])
#Arch.addComponents([beam,slab],wall)
if __name__=='__main__':
makeRetainingWall()
Msg('Done!!\n\n')
FreeCAD.ActiveDocument.recompute()