To --> program code (complete) Data snippet from the user editing area for repeating cubics: (program code is below the data snippet.) ------------------------------------------------------------------------- Rotation for light source: 0 = 0 1 = 90 2 = 180 3 = 270 x1,y1,z1 x6,y6,z6 spacing endcube rot,col -------- -------- ------- ------- ------- (1-19) AUTOCUBE00: 0,0,0 .292,.292,2.67 7.19 3 0,2 (21-39) AUTOCUBE20: 0,0,0 .292,.292,2.67 7.82 22 3,3 ------------------------------------------------------------------------- ----------------------------------------- first, last, zangle, tranx, trany, tranz TRAN ZROTATETRANSLATE: 1 38 90 23.89 41.2 8 201 238 0 .125 62.72 8 401 438 90 .417 45.49 8 999,999 999 999,999,999 ---------------------------------------- program code snippet for reading the above data snippet: AXBAS: READATA = 2 GOSUB WIPEVALUES ON ERROR GOTO AXoERR1 OPEN "DATA\" + T$ + "-" + G$ + ".txt" FOR INPUT AS #2 GOSUB AXoREADDATA GOSUB TRANSFORMATIONS CLOSE #2 GOTO MAIN AXoREADDATA: Do While TIPE$ <> "LIGHTDARK:" Input #2, TIPE$ Loop Input #2, LIGHT, DARKK DO WHILE TIPE$ <> "WIRECOLORS:" INPUT #2, TIPE$ LOOP INPUT #2, BACK, K6, K7, K8, K9 Do While TIPE$ <> "BEGIN-END:" Input #2, TIPE$ Loop Input #2, XBEGINDATA, XENDDATA, YBEGINDATA, YENDDATA, ZBEGINDATA, ZENDDATA AXoBLOCKS: DO WHILE TIPE$ <> "AUTOCUBE00:" INPUT #2, TIPE$ LOOP P = 1: RL = NL1 + NL2 + NL3 + NL4 + NL5 + 1 RPL = 1 INPUT #2, X1, Y1, Z1, X6, Y6, Z6, XINC, ENDCUBE, ROT, COLAC X1 = X1 - XINC: X6 = X6 - XINC: STOPREAD = ENDCUBE + 1 FOR AC = 0 TO ENDCUBE X1 = X1 + XINC X6 = X6 + XINC BLOK = 1: GOTO AXoB101 AXoB10: IF AC = STOPREAD THEN GOTO AXoB11 NEXT AC AXoB11: DO WHILE TIPE$ <> "AUTOCUBE20:" INPUT #2, TIPE$ LOOP P = P - 1: RL = RL - 1: RPL = RPL - 5 NL6 = RL - (NL1 + NL2 + NL3 + NL4 + NL5) NP1 = P P = 201: RL = NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + 1 RPL = 201 INPUT #2, X1, Y1, Z1, X6, Y6, Z6, XINC, ENDCUBE, ROT, COLAC X1 = X1 - XINC: X6 = X6 - XINC: STOPREAD = ENDCUBE + 1 FOR AC = 20 TO ENDCUBE X1 = X1 + XINC X6 = X6 + XINC BLOK = 2: GOTO AXoB101 AXoB20: IF AC = STOPREAD THEN GOTO AXoB21 NEXT AC AXoB21: DO WHILE TIPE$ <> "AUTOCUBE40:" INPUT #2, TIPE$ LOOP P = P - 1: RL = RL - 1: RPL = RPL - 5 NL7 = RL - (NL1 + NL2 + NL3 + NL4 + NL5 + NL6) NP2 = P - 200 P = 401: RL = NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + NL7 + 1 RPL = 401 INPUT #2, X1, Y1, Z1, X6, Y6, Z6, XINC, ENDCUBE, ROT, COLAC X1 = X1 - XINC: X6 = X6 - XINC: STOPREAD = ENDCUBE + 1 FOR AC = 40 TO ENDCUBE X1 = X1 + XINC X6 = X6 + XINC BLOK = 3: GOTO AXoB101 AXoB30: IF AC = STOPREAD THEN GOTO AXoB31 NEXT AC AXoB31: DO WHILE TIPE$ <> "AUTOCUBE60:" INPUT #2, TIPE$ LOOP P = P - 1: RL = RL - 1: RPL = RPL - 5 NL8 = RL - (NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + NL7) NP3 = P - 400 P = 601: RL = NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + NL7 + NL8 + 1 RPL = 601 FOR AC = 60 TO 79: REM cube numbers. (60-79) BLOK = 4: GOTO AXoB100 AXoB40: IF DUMMY% = 999 THEN EXIT FOR NEXT AC AXoB41: P = P - 1: RL = RL - 1: RPL = RPL - 5 NL9 = RL - (NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + NL7 + NL8) NP4 = P - 600 GOTO AXoFRAMINGREAD1 AXoB100: INPUT #2, DUMMY%, X1, Y1, Z1, X6, Y6, Z6, ROT(AC), COLAC(AC) IF DUMMY% = 999 THEN GOTO AXoB150 AXoB101: GOSUB B101ASSIGNMENTS IF BLOK = 4 THEN GOTO AXoSINGLES GOSUB FMEMBERS GOTO AXoB150 AXoSINGLES: GOSUB LUCKY AXoB150: IF BLOK = 1 THEN GOTO AXoB10 IF BLOK = 2 THEN GOTO AXoB20 IF BLOK = 3 THEN GOTO AXoB30 IF BLOK = 4 THEN GOTO AXoB40 AXoFRAMINGREAD1: GOSUB FRAMINGAXYZXYZ8 RETURN AXoERR1: GOSUB ERRORCODES CLOSE #2 READATA = 2 GOTO MAIN 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 FMEMBERS: T1(RPL) = P1: B1(RPL) = P2: T2(RPL) = P3: B2(RPL) = P4 DIR(RPL) = 1: COLR(RPL) = COLAC: ROTAT(RPL) = ROOT: RPL = RPL + 1 T1(RPL) = P3: B1(RPL) = P4: T2(RPL) = P5: B2(RPL) = P6 DIR(RPL) = 2: COLR(RPL) = COLAC: ROTAT(RPL) = ROOT: RPL = RPL + 1 T1(RPL) = P5: B1(RPL) = P6: T2(RPL) = P7: B2(RPL) = P8 DIR(RPL) = 3: COLR(RPL) = COLAC: ROTAT(RPL) = ROOT: RPL = RPL + 1 T1(RPL) = P7: B1(RPL) = P8: T2(RPL) = P1: B2(RPL) = P2 DIR(RPL) = 4: COLR(RPL) = COLAC: ROTAT(RPL) = ROOT: RPL = RPL + 1 T1(RPL) = P1: B1(RPL) = P3: T2(RPL) = P7: B2(RPL) = P5 DIR(RPL) = 5: COLR(RPL) = COLAC: ROTAT(RPL) = 0: RPL = RPL + 1 T1(RPL) = P2: B1(RPL) = P4: T2(RPL) = P8: B2(RPL) = P6 DIR(RPL) = 6: COLR(RPL) = COLAC: ROTAT(RPL) = 0: RPL = RPL + 5 RETURN LUCKY: 'in honor of Lucky 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): ROTAT(RPL) = 0: RPL = RPL + 1 T1(RPL) = P2: B1(RPL) = P4: T2(RPL) = P8: B2(RPL) = P6 DIR(RPL) = 6: COLR(RPL) = COLAC(AC): ROTAT(RPL) = 0: 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) |