lunes, 25 de abril de 2011

DIBUJO DE UN PORTICO A PARTIR DE LOS RESULTADOS GENERADOS CON CA17.BAS



input "Escribe el nombre del fichero (sin la extension) " ff$
f$=ff$,".res"
dim  k(30), l(30), b(30), h(30), q(30), c(30), p(30)
open "I" f$
finput t
for n=1 to (3*t+1)
  finput l(n)
  l(n)=l(n)*100
  finput b(n)
  finput h(n)
next
' Terminacion izquierda con voladizo
if l(1)>0 then
  >: [100+l(1)-h(3)/2][900]
  >pr [0][0]
  >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][900]
  >pr [0][-125]
  >v
end if
' Parte baja de las jacenas
for n=2 to t
  if l(3*n-2)>0 then
  >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]
  end if
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][0]
  >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
if l(3*t-2)=0 then
 >pr [h(3*t-3)][0]
 >pr [0][125]
 >v
end if
' Parte alta de las vigas
t=t-1
>movexy [100+l(1)-h(3)/2][900]
for n=2 to t
  if l(3*n-2)>0 then
  >pr [h(3*n-4)][0]
  >pr [0][0]
  'x5=(h(3*n-3)+h(3*n))/2
    x5=(h(3*n-3))/2
  x2=l(3*n-2)-x5
  '  x2=l(3*n-2)
  'x3=h(3*n-3)-h(3*n-4)
  x3=h(3*n-3)
  'x4=h(3*n)-h(3*n-1)
  x4=h(3*n)
  if n=2 then
    x1=x2+x3
    x1=x1+x4/2
    >pr [x1][0]
    >pr [0][0]
    >v
  end if
  if n>2 then
    if n
      x1=x2+x3/2
      x1=x1+x4/2
      >pr [x1][0]
      >pr [0][0]
      >v
    end if
  end if
  if n=t then
    x1=x2+x3/2
    x1=x1+x4
    >pr [x1][0]
    >pr [0][0]
    >v
  end if
  end if
next
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
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
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 ["1R"][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 ["1R"][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 ["1R"][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
  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 ["1R"][dr(ja)]
    >pr [-100][-35]
    >pr [60][0]
    >t [lr]
    >pr [-70][25]
    >pr [lr][0]
    >v
  NEXT m
finput dai
' Armadura constructiva superior
p=1000
ar=10
gosub constru
' Armadura constructiva inferior
p=600
ar=dai
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 ["1R"][dr(3*n-1)]
        '>pr [-80-lr/2-tr/2][-35]
        '>pr [60][0]
        ''if lr>0 then >t [lr]
        'if lr>0 then >t ["."]
        'if lr=0 then >t ["·"]
        ''>pr [lr/2+tr/2-60][0]
        >pr [-80][-35]
        >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]
       if l(3*n-2)>0 then >t ["Estribos D=8 mm."]
       if l(3*n-2)=0 then >t ["·"]
     end if
   end if
  finput se(3*n-2)
  finput le(3*n-2)
 if (se(3*n-2))>0 then
    >: [x1-40][y1-50]
    >pr [80][0]
    if (se(3*n-2))>0 then >t ["c/"][se(3*n-2)]
    if (se(3*n-2))=0 then >t["·"]
 end if
  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]
      if (se(3*n-1))>0 then >t ["c/"][se(3*n-1)]
      if (se(3*n-1))=0 then >t ["·"]
    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]
     if (se(3*n-3))>0 then >t ["c/"][se(3*n-3)]
     if (se(3*n-3))=0 then >t ["·"]
    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)]["R "][ar]
    >pr [-100][-45]
    >pr [100][0]
    >pr [-100][30]
    >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: