domingo, 17 de abril de 2011

Dibujo automatico de portico de Hormigon armado


' D1.BSC
'Este pequeño programa escrito en Basicad dibuja de forma automatica
'un portico de hormigon armado con su despiece de hierro y acotado
' tambien calcula el peso del hierro y el volumen de hormigon.
'-------------------------------------------------------------------

input "Escriba el nombre del fichero " ff$
f$=ff$,".cal"
input "Piso ultimo o intermedio " x$
dim k(30), l(45), b(45), h(45), q(30), c(30), p(30)
open "I" f$
finput a$
finput t
finput a$
finput abcisa
finput a$
for n=1 to t
finput k$
next
finput a$
for n=1 to (3*t+1)
finput l(n)
l(n)=l(n)*100
finput b(n)
finput h(n)
next
finput a$
for n=1 to (t+1)
finput q(n)
finput c(n)
finput p(n)
next
' Terminacion izquierda con voladizo
if l(1)>0 then
>: [100+l(1)-h(3)/2][950]
>pr [0][-50]
>pr [-l(1)+h(3)/2][0]
>pr [0][-h(1)]
>pr [l(1)-h(3)/2][0]
>pr [0][-125+h(1)]
>v
>pr [-160][0]
>pr [150][0]
>t [b(1)]["x"][h(1)]
>moverel [10][0]
end if
' Terminacion izquierda sin voladizo
if l(1)=0 then
>: [100-h(3)/2][950]
>pr [0][-50-125]
>v
end if
' Parte baja de las jacenas
for n=2 to t
>pr [h(3*n-3)][0]
>pr [0][125-h(3*n-2)]
>pr [l(3*n-2)-h(3*n-3)/2-h(3*n)/2][0]
>pr [0][-125+h(3*n-2)]
>v
>pr [-l(3*n-2)/2-80][0]
>pr [150][0]
>t [b(3*n-2)]["x"][h(3*n-2)]
>moverel [l(3*n-2)/2-70][0]
next
' Terminacion derecha con voladizo
t=t+1
if l(3*t-2)>0 then
>pr [h(3*t-3)][0]
>pr [0][125-h(3*t-2)]
>pr [l(3*t-2)-h(3*t-3)/2][0]
>pr [0][h(3*t-2)]
>pr [-l(3*t-2)+h(3*t-3)/2][0]
>pr [0][50]
>v
>pr [10][-175]
>pr [150][0]
>t [b(3*t-2)]["x "][h(3*t-2)]
>moverel [-160][175]
end if
' Terminacion derecha sin voladizo
>pr [h(3*t-3)][0]
>pr [0][125+50]
>v
'
' Parte alta de las vigas
t=t-1
>movexy [100+l(1)-h(3)/2][950]
for n=2 to t
>pr [h(3*n-4)][0]
>pr [0][-50]
x5=(h(3*n-3)+h(3*n))/2
x2=l(3*n-2)-x5
x3=h(3*n-3)-h(3*n-4)
x4=h(3*n)-h(3*n-1)
if n=2 then
x1=x2+x3
x1=x1+x4/2
>pr [x1][0]
>pr [0][50]
>v
end if
if n>2 then
if n
x1=x2+x3/2
x1=x1+x4/2
>pr [x1][0]
>pr [0][50]
>v
end if
end if
if n=t then
x1=x2+x3/2
x1=x1+x4
>pr [x1][0]
>pr [0][50]
>v
end if
next
open "I" f$
finput a$
finput t
finput a$
finput abcisa
finput a$
for n=1 to t
finput k$
if n=1 then >: [100+l(1)-30][650]
if n>1 then >pr [l(3*n-2)][0]
>pr [60][0]
>pr [-60][80]
>t [k$]
>moverel [0][-80]
next
close
j=t+1
ja=3*j-2
ji=3*j
je=3*j-4
dim ac(j)
dim nr(2*ji)
dim dr(2*ji)
dim se(ja)
dim le(ja)
' datos de armaduras
f$=ff$,".res"
open "I" f$
FOR n=1 TO j
finput ac(n)
NEXT
'
finput nr(3)
finput dr(3)
FOR n=2 TO t
finput nr(3*n-2)
finput dr(3*n-2)
finput nr(3*n-1)
finput dr(3*n-1)
finput nr(3*n)
finput dr(3*n)
NEXT
finput nr(ja)
finput dr(ja)
'
' negativos del voladizo izquierdo
if l(1)>0 then
FOR m=1 TO nr(3)
finput lr
x1=100+l(1)-110
x2=100*(11+nr(3)-m+0.1)
>: [x1][x2]
>pr [100][0]
>t ["2R"][dr(3)]
>pr [-60][-35]
>pr [60][0]
>t [lr]
>pr [10][25]
>pr [-lr][0]
>v
NEXT
end if
lt=l(1)
' Negativos de las vigas
FOR n=2 TO t
FOR m=1 TO nr(3*n-2)
finput lr
x1=100+lt+10
x2=100*(11+nr(3*n-2)-m+0.1)
>: [x1][x2]
>pr [100][0]
>t ["2R"][dr(3*n-2)]
>pr [-100][-35]
>pr [60][0]
>t [lr]
>pr [-70][25]
>pr [lr][0]
>v
NEXT m
lt=lt+l(3*n-2)
FOR m=1 TO nr(3*n)
finput lr
x1=100+lt-110
x2=100*(11+nr(3*n)-m+0.1)
>: [x1][x2]
>pr [100][0]
>t ["2R"][dr(3*n)]
>pr [-60][-35]
>pr [60][0]
>t [lr]
>pr [10][25]
>pr [-lr][0]
>v
NEXT m
NEXT n
' Negativos del voladizo derecho
if l(3*t-2)>0 then
FOR m=1 TO nr(ja)
finput lr
x1=100+lt+10
x2=100*(11+nr(ja)-m+0.1)
>: [x1][x2]
>pr [100][0]
>t ["2R"][dr(ja)]
>pr [-100][-35]
>pr [60][0]
>t [lr]
>pr [-70][25]
>pr [lr][0]
>v
NEXT m
end if
' Armadura constructiva superior
p=1000
gosub constru
' Armadura constructiva inferior
p=600
gosub constru
' Positivos
lt=l(1)
rp=0
FOR n=2 TO t
if rp
nr=nr((3*n-1))
if nr>0 then
FOR m=1 TO nr
finput lr
finput pr
finput tr
if tr>0 then
x1=100+lt+lr+tr/2-50
x2=100*(6-m+0.1)
>: [x1][x2]
>pr [100][0]
>t ["2R"][dr(3*n-1)]
>pr [-80-lr/2-tr/2][-35]
>pr [60][0]
>t [lr]
>pr [lr/2+tr/2-60][0]
>pr [60][0]
>t [tr]
>: [100+lt+lr][x2-10]
>pr [tr][0]
>v
end if
NEXT m
end if
lt=lt+l(3*n-2)
NEXT n
' Estribos
lt=0
FOR n=1 TO j
lt=lt+l(3*n-2)
x1=100+lt-(l(3*n-2))/2
y1=100*(5-rp)
if n>1 then
if n
>: [x1-125][y1]
>pr [250][0]
>t ["Estribos D=6 mm."]
end if
end if
>: [x1-40][y1-50]
>pr [80][0]
finput se(3*n-2)
finput le(3*n-2)
if se(3*n-2)>0 then >t ["c/"][se(3*n-2)]
>pr [-80][-40]
>pr [80][0]
>t [le(3*n-2)]
IF n
finput se(3*n-1)
finput le(3*n-1)
if (se(3*n-1))>0 then
>: [100+lt-120][y1-50]
>pr [80][0]
>t ["c/"][se(3*n-1)]
>pr [-80][-40]
>pr [80][0]
>t [le(3*n-1)]
end if
end if
IF n>1 THEN
finput se(3*n-3)
finput le(3*n-3)
if (se(3*n-3))>0 then
>: [100+lt-l(3*n-2)+40][y1-50]
>pr [80][0]
>t ["c/"][se(3*n-3)]
>pr [-80][-40]
>pr [80][0]
>t [le(3*n-3)]
end if
end if
NEXT n
close
end
constru:
lt=0
For n=1 to j
lt=lt+l(3*n-2)
if l(3*n-2)>0 then
>: [100+lt-l(3*n-2)/2-50][p+10]
>pr [100][0]
>t [ac(n)]["R10"]
>pr [-100][-45]
>pr [100][0]
>t [l(3*n-2)]
>: [100+lt-l(3*n-2)][p]
>pr [l(3*n-2)][0]
>v
end if
NEXT
return

No hay comentarios: