To --> program code (complete)



Data snippet from the user editing area for single cubics:
(program code is below the data snippet.)

-------------------------------------------------------------------------
Rotation for light source:   0 = 0   1 = 90   2 = 180   3 = 270

point one    min x,y,z       max x,y,z       rotation,color
---------    ---------       ---------       --------------

Points 201 - 398
Use line labels 201, 211, 221 .... 391

AUTOCUBE20:
201   0   0     0           .5   44    1.5     2,2
211   0   0     48.5        .5   44    51      2,2
221   0   0     1.5         .5   2     48.5    2,2
231   0   42    1.5         .5   44    48.5    2,2
241   0   0     0           .5   40    1.5     2,2
251   0   0     48.5        .5   40    51      2,2
261   0   0     1.5         .5   2     48.5    2,2
271   0   38    1.5         .5   40    48.5    2,2
281   0   0     0           .5   128   1.5     3,2
291   0   0     40.5        .5   128   43      3,2
301   0   0     1.5         .5   2     40.5    3,2
311   0   42.3  1.5         .5   44.3  40.5    3,2
321   0   83.7  1.5         .5   85.7  40.5    3,2
331   0   126   1.5         .5   128   40.5    3,2
341   0   0     1.5         .5   78    1.5     3,2
351   0   0     40.5        .5   78    43      3,2
361   0   0     1.5         .5   2     40.5    3,2
371   0   38    1.5         .5   40    40.5    3,2
381   0   76    1.5         .5   78    40.5    3,2
391   0   0     0           .5   44    1.5     3,2
999  999,999,999         999,999,999        0,0


Points 401 - 598
Use line labels 401, 411, 421 .... 591

AUTOCUBE40:
401   0   0     40.5        .5   44    43      3,2
411   0   0     1.5         .5   2     40.5    3,2
421   0   42    1.5         .5   44    40.5    3,2
431   0   0     80          .5   36    82      2,2
441   0   0     0           .5   2     80      2,2
451   0   34    0           .5   36    80      2,2
461   0   2     0           0    34    80      2,3
471   0   0     80          .5   40    82      3,2
481   0   0     0           .5   2     80      3,2
491   0   38    0           .5   40    80      3,2
501   0   2     0           0    38    80      3,3
999  999,999,999         999,999,999        0,0
-------------------------------------------------------------------------

Plane   t1,b1,t2,b2            direction,color

----------------------------------------------
AUTOPLANE:
999     999,999,999,999                    0,0
----------------------------------------------

---------------------------------------
Autoframing lines

Plane, number of framing lines
-------------
AUTOFRAMING1:
999,999
-------------
-------------
AUTOFRAMING2:
999,999
-------------

---------------------------------------
Transformations

---------------------------------
 first, last, multX, multY, multZ

TRAN
RESIZE:
201  508       .16   .08333  .08333
999,999, 999,999,999
---------------------------------

-----------------------------------------
 first, last, zangle, tranx, trany, tranz

LR north window
TRAN
ZROTATETRANSLATE:
201  238      90    17.33   41.2     10.75
999,999     999    999,999,999

kitchen north window
TRAN
ZROTATETRANSLATE:
241  278      90    6.667   41.2     10.75
999,999     999    999,999,999

LR east windows
TRAN
ZROTATETRANSLATE:
281  338      0     24      28.17    11.417
999,999     999    999,999,999

Den windows
TRAN
ZROTATETRANSLATE:
341  388      0     24      12.25    11.417
999,999     999    999,999,999

SE BR east window
TRAN
ZROTATETRANSLATE:
391  428      0     24      4.17     11.417
999,999     999    999,999,999

kitchen door
TRAN
ZROTATETRANSLATE:
431  468      90   11.67    41.2     8
999,999     999    999,999,999

front door
TRAN
ZROTATETRANSLATE:
471  508      0    24       22.79    8
999,999     999    999,999,999


---------------- End pasting here.
TRAN
STOP
--------------------------------------------------------


program code snippet for reading the above data snippet:

SBAS :
 
READATA = 2

GOSUB WIPEVALUES

ON ERROR GOTO SoERR1

OPEN "DATA\" + T$ + "-" + G$ + ".txt" FOR INPUT AS #2

GOSUB SoREADDATA

GOSUB TRANSFORMATIONS

CLOSE #2
GOTO MAIN

SoREADDATA :

Do While TIPE$ <> "LIGHTDARK:"
  Input #2, TIPE$
Loop
Input #2, LIGHT, DARKK

DO WHILE TIPE$ <> "WIRECOLORS:"
  INPUT #2, TIPE$
LOOP

INPUT #2, BACK, K1, K2, K3, K4, K5, K6, K7, K8

Do While TIPE$ <> "BEGIN-END:"
  Input #2, TIPE$
Loop
Input #2, XBEGINDATA, XENDDATA, YBEGINDATA, YENDDATA, ZBEGINDATA, ZENDDATA

GOSUB STANDARDPOINTSLINES

SoAUTOCUBE:

DO WHILE TIPE$ <> "AUTOCUBE20:"
  INPUT #2, TIPE$
LOOP

P = 201: RL = NL1 + NL2 + NL3 + NL4 + NL5 + 1
RPL = 201
FOR AC = 20 TO 39
BLOK = 1: GOTO SoB100

SoB10:
IF DUMMY% = 999 THEN EXIT FOR
NEXT AC
SoB11:

DO WHILE TIPE$ <> "AUTOCUBE40:"
  INPUT #2, TIPE$
LOOP

P = P - 1: RL = RL - 1: RPL = RPL - 5
NL6 = RL - (NL1 + NL2 + NL3 + NL4 + NL5)
NP2 = P - 200

P = 401: RL = NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + 1
RPL = 401
FOR AC = 40 TO 59
BLOK = 2: GOTO SoB100

SoB20:
IF DUMMY% = 999 THEN EXIT FOR
NEXT AC
SoB21:

   DO WHILE TIPE$ <> "AUTOCUBE60:"
     INPUT #2, TIPE$
   LOOP

   P = P - 1: RL = RL - 1: RPL = RPL - 5
   NL7 = RL - (NL1 + NL2 + NL3 + NL4 + NL5 + NL6)
   NP3 = P - 400

   P = 601: RL = NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + NL7 + 1
   RPL = 601
   FOR AC = 60 TO 79
   BLOK = 3: GOTO SoB100

SoB30:
   IF DUMMY% = 999 THEN EXIT FOR
   NEXT AC
SoB31:

   P = P - 1: RL = RL - 1: RPL = RPL - 5
   NL8 = RL - (NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + NL7)
   NP4 = P - 600

GOTO SoJKREAD

SoB100 :
INPUT #2, DUMMY%, X1, Y1, Z1, X6, Y6, Z6, ROT(AC), COLAC(AC)
IF DUMMY% = 999 THEN GOTO SoB150

GOSUB B101ASSIGNMENTS

GOSUB T1B1T2B2

SoB150:
IF BLOK = 1 THEN GOTO SoB10
IF BLOK = 2 THEN GOTO SoB20
IF BLOK = 3 THEN GOTO SoB30

SoJKREAD :

DO WHILE TIPE$ <> "AUTOPLANE:"
  INPUT #2, TIPE$
LOOP

FOR RPL = 1 TO 800
INPUT #2, DUMMY%, T1(RPL), B1(RPL), T2(RPL), B2(RPL), DIR(RPL), COLR(RPL)
IF DUMMY% = 999 THEN EXIT FOR
NEXT RPL

GOSUB FRAMINGSTMXYZ8

RETURN

SoERR1 :

GOSUB ERRORCODES

  CLOSE #2
  READATA = 2
  GOTO MAIN

RESIZE:
FOR RD = 1 TO 1000
  INPUT #2, FIRST, LAST, MULTX, MULTY, MULTZ
  IF FIRST = 999 THEN EXIT FOR
  FOR RESIZE = FIRST TO LAST
   X(RESIZE) = X(RESIZE) * MULTX: XR(RESIZE) = X(RESIZE)
   Y(RESIZE) = Y(RESIZE) * MULTY: YR(RESIZE) = Y(RESIZE)
   Z(RESIZE) = Z(RESIZE) * MULTZ: ZR(RESIZE) = Z(RESIZE)
  NEXT RESIZE
NEXT RD
GOTO TRANSFORMATIONS

ZROT:
FOR RD = 1 TO 1000
  INPUT #2, FIRST, LAST, ZANGLE, TRANX, TRANY, TRANZ
  IF FIRST = 999 THEN EXIT FOR
  ZANGLE = (ZANGLE * 3.14159) / 180
  FOR ROT = FIRST TO LAST
   X(ROT) = (XR(ROT) * COS(ZANGLE)) - (YR(ROT) * SIN(ZANGLE)) + TRANX
   Y(ROT) = (XR(ROT) * SIN(ZANGLE)) + (YR(ROT) * COS(ZANGLE)) + TRANY
   Z(ROT) = ZR(ROT) + TRANZ
   XR(ROT) = X(ROT): YR(ROT) = Y(ROT): ZR(ROT) = Z(ROT)
  NEXT ROT
NEXT RD
GOTO TRANSFORMATIONS

WIPEVALUES:

  NL1 = 0: NL2 = 0: NL3 = 0: NL4 = 0: NL5 = 0
  NL6 = 0: NL7 = 0: NL8 = 0: NL9 = 0: NL10 = 0
  NP1 = 0: NP2 = 0: NP3 = 0: NP4 = 0: NP5 = 0: NP6 = 0

 For WIPE = 1 To 800
  X(WIPE) = 0: Y(WIPE) = 0: Z(WIPE) = 0
  XR(WIPE) = 0: YR(WIPE) = 0: ZR(WIPE) = 0
  T1(WIPE) = 0: T2(WIPE) = 0: B1(WIPE) = 0: B2(WIPE) = 0
  AUTOFRM1(WIPE) = 0
  AUTOFRM2(WIPE) = 0

  TDIR(WIPE) = 0
  ROTAT(WIPE) = 0
  DIR(WIPE) = 0
  COLR(WIPE) = 0
  ROT(WIPE) = 0
 Next WIPE

 For WIPE = 1 To 80
  COLAC(WIPE) = 0
 Next WIPE

RETURN

B101ASSIGNMENTS:

DX = X6 - X1: DY = Y6 - Y1: DZ = Z6 - Z1

X(P) = X1: Y(P) = Y1: Z(P) = Z1: P1 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1
X(P) = X1: Y(P) = Y1: Z(P) = Z1 + DZ: P2 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1
X(P) = X1: Y(P) = Y1 + DY: Z(P) = Z1: P3 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1
X(P) = X1: Y(P) = Y1 + DY: Z(P) = Z1 + DZ: P4 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1
X(P) = X1 + DX: Y(P) = Y1 + DY: Z(P) = Z1: P5 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1
X(P) = X6: Y(P) = Y6: Z(P) = Z6: P6 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1
X(P) = X1 + DX: Y(P) = Y1: Z(P) = Z1: P7 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1
X(P) = X1 + DX: Y(P) = Y1: Z(P) = Z1 + DZ: P8 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1

X(P) = 0: Y(P) = 0: Z(P) = 0: P = P + 1
X(P) = 0: Y(P) = 0: Z(P) = 0: P = P + 1

FP(RL) = P1: SP(RL) = P2: RL = RL + 1
FP(RL) = P3: SP(RL) = P4: RL = RL + 1
FP(RL) = P5: SP(RL) = P6: RL = RL + 1
FP(RL) = P7: SP(RL) = P8: RL = RL + 1
FP(RL) = P1: SP(RL) = P3: RL = RL + 1
FP(RL) = P3: SP(RL) = P5: RL = RL + 1
FP(RL) = P5: SP(RL) = P7: RL = RL + 1
FP(RL) = P7: SP(RL) = P1: RL = RL + 1
FP(RL) = P2: SP(RL) = P4: RL = RL + 1
FP(RL) = P4: SP(RL) = P6: RL = RL + 1
FP(RL) = P6: SP(RL) = P8: RL = RL + 1
FP(RL) = P8: SP(RL) = P2: RL = RL + 1

RETURN

T1B1T2B2:

T1(RPL) = P1: B1(RPL) = P2: T2(RPL) = P3: B2(RPL) = P4
DIR(RPL) = 1: COLR(RPL) = COLAC(AC): ROTAT(RPL) = ROT(AC): RPL = RPL + 1

T1(RPL) = P3: B1(RPL) = P4: T2(RPL) = P5: B2(RPL) = P6
DIR(RPL) = 2: COLR(RPL) = COLAC(AC): ROTAT(RPL) = ROT(AC): RPL = RPL + 1

T1(RPL) = P5: B1(RPL) = P6: T2(RPL) = P7: B2(RPL) = P8
DIR(RPL) = 3: COLR(RPL) = COLAC(AC): ROTAT(RPL) = ROT(AC): RPL = RPL + 1

T1(RPL) = P7: B1(RPL) = P8: T2(RPL) = P1: B2(RPL) = P2
DIR(RPL) = 4: COLR(RPL) = COLAC(AC): ROTAT(RPL) = ROT(AC): RPL = RPL + 1

T1(RPL) = P1: B1(RPL) = P3: T2(RPL) = P7: B2(RPL) = P5
DIR(RPL) = 5: COLR(RPL) = COLAC(AC): RPL = RPL + 1

T1(RPL) = P2: B1(RPL) = P4: T2(RPL) = P8: B2(RPL) = P6
DIR(RPL) = 6: COLR(RPL) = COLAC(AC): RPL = RPL + 5

RETURN

FRAMINGAXYZXYZ8:

Do While TIPE$ <> "AUTOFRAMING1:"
  Input #2, TIPE$
Loop

Do While NFL <> 999
 Input #2, SPL, EPL, NFL
 If NFL = 999 Then NFL = 0: AUTOFRM1(PL) = 0: Exit Do
 For PL = SPL To EPL Step 10
   AUTOFRM1(PL) = NFL
 Next PL
Loop

Do While TIPE$ <> "AUTOFRAMING2:"
  Input #2, TIPE$
Loop

Do While NFL <> 999
 Input #2, SPL, EPL, NFL
 If NFL = 999 Then NFL = 0: AUTOFRM2(PL) = 0: Exit Do
 For PL = SPL To EPL Step 10
   AUTOFRM2(PL) = NFL
 Next PL
Loop

RETURN


To --> program code (complete)