To --> program code (complete) Data snippet from the user editing area for complex curve: (program code is below the data snippet.) ------------------------------------------------------------------------------- number radius offset weight of --------- ------------ -------- points start arc X Y X Y Z left inc stretch CURVDATA: 100 90 160 18 44 0 0 8 -90 2.6 -4.0 90 160 18 43 0 0 7 -90 2.6 -3.6 100 90 160 18 43 0 0 7 -90 2.6 -3.6 90 160 17.33 41 0 0 5 -90 2.6 -3.2 100 90 160 17.33 41 0 0 5 -90 2.6 -3.2 90 160 16 39 0 0 3 -90 2.6 -2.8 100 90 160 16 39 0 0 3 -90 2.6 -2.8 90 160 14 37.5 0 0 1.5 -90 2.6 -2.4 100 90 160 14 37.5 0 0 1.5 -90 2.6 -2.4 90 160 11.33 36 0 0 0 -90 2.6 -2 100 90 160 11.33 36 0 0 0 -90 2.6 -2 90 160 8.33 35 0 0 -1 -90 2.6 -1.6 100 90 160 8.33 35 0 0 -1 -90 2.6 -1.6 90 160 .33 33 0 0 -3 -90 2.6 -.8 999 0 90 10 10 0 0 0 0 0 0 0 90 10 10 0 0 0 0 0 0 Leave these two rows under the 999 in place. Data reader needs dummy values. ------------------------------------------------------------------------------- program code snippet for reading the above data snippet: CZoREADDATA: DO WHILE TIPE$ <> "WIRECOLORS:" INPUT #2, TIPE$ LOOP INPUT #2, BACK, K10 DO WHILE TIPE$ <> "DARKESTCOLOR:" INPUT #2, TIPE$ LOOP INPUT #2, DRKCOL Do While TIPE$ <> "BEGIN-END:" Input #2, TIPE$ Loop Input #2, XBEGINDATA, XENDDATA, YBEGINDATA, YENDDATA, ZBEGINDATA, ZENDDATA DO WHILE TIPE$ <> "CURVDATA:" INPUT #2, TIPE$ LOOP FOR RD = 1 TO 400 'up to 400 sections in accordance with DIM statements INPUT #2, CURVPOINTS(RD) INPUT #2, DEGB(RD), ARCB(RD), RADXB(RD), RADYB(RD) INPUT #2, XB(RD), YB(RD), ZB(RD), LB(RD), INCB(RD), STREB(RD) INPUT #2, DEGT(RD), ARCT(RD), RADXT(RD), RADYT(RD) INPUT #2, XT(RD), YT(RD), ZT(RD), LT(RD), INCT(RD), STRET(RD) IF CURVPOINTS(RD) = 999 THEN EXIT FOR CURVEFINE(RD) = (CURVPOINTS(RD)) * .5 CURVINC(RD) = CURVEFINE(RD) - 1 PTPAIRS(RD) = CURVEFINE(RD) * 2 NP6 = NP6 + PTPAIRS(RD) COUNT = COUNT + 1 NEXT RD 'points FOR RD = 1 TO COUNT 'bottom DEG1 = DEGB(RD): DEG2 = DEG1 + ARCB(RD) DEG1 = (DEG1 * 3.14159) / 180: DEG2 = (DEG2 * 3.14159) / 180 ZDEG = LB(RD) FOR INC = 0 TO CURVINC(RD) CIRC = CIRC + 1 X(CIRC) = (RADXB(RD) * COS(DEG1 + (INC / CURVINC(RD)) * (DEG1 - DEG2))) + XB(RD) Y(CIRC) = (RADYB(RD) * SIN(DEG1 + (INC / CURVINC(RD)) * (DEG1 - DEG2))) + YB(RD) IF INCB(RD) = 0 THEN Z(CIRC) = ZB(RD): GOTO CZo10 ZDEG = ZDEG - INCB(RD) ZRAD = STREB(RD) * (COS((ZDEG * 3.14159) / 180)) Z(CIRC) = (-1 * (ZRAD)) + ZB(RD) CZo10: XR(CIRC) = X(CIRC): YR(CIRC) = Y(CIRC): ZR(CIRC) = Z(CIRC) NEXT INC 'top DEG1 = DEGT(RD): DEG2 = DEG1 + ARCT(RD) DEG1 = (DEG1 * 3.14159) / 180: DEG2 = (DEG2 * 3.14159) / 180 ZDEG = LT(RD) FOR INC = 0 TO CURVINC(RD) CIRC = CIRC + 1 X(CIRC) = (RADXT(RD) * COS(DEG1 + (INC / CURVINC(RD)) * (DEG1 - DEG2))) + XT(RD) Y(CIRC) = (RADYT(RD) * SIN(DEG1 + (INC / CURVINC(RD)) * (DEG1 - DEG2))) + YT(RD) IF INCT(RD) = 0 THEN Z(CIRC) = ZT(RD): GOTO CZo20 ZDEG = ZDEG - INCT(RD) ZRAD = STRET(RD) * (COS((ZDEG * 3.14159) / 180)) Z(CIRC) = (-1 * (ZRAD)) + ZT(RD) CZo20: XR(CIRC) = X(CIRC): YR(CIRC) = Y(CIRC): ZR(CIRC) = Z(CIRC) NEXT INC NEXT RD 'GOSUB CONNECT CONNECT: 'points FOR RD = 1 TO COUNT IF RD = 1 THEN CP = 1: GOTO C30 RPREVIOUS = RD - 1 CP = CP + PTPAIRS(RPREVIOUS) C30: FOR CNT = 1 TO CURVEFINE(RD) FP(RL) = CP: SP(RL) = CP + CURVEFINE(RD): RL = RL + 1: CP = CP + 1 NEXT CNT CP = CP - CURVEFINE(RD) FOR CNT = 1 TO CURVINC(RD) FP(RL) = CP: SP(RL) = CP + 1: RL = RL + 1: CP = CP + 1 NEXT CNT CP = CP + 1 FOR CNT = 1 TO CURVINC(RD) FP(RL) = CP: SP(RL) = CP + 1: RL = RL + 1: CP = CP + 1 NEXT CNT CP = (CP - PTPAIRS(RD)) + 1 NEXT RD 'planes FOR RD = 1 TO COUNT IF RD = 1 THEN PP = 1: RPL = 1: GOTO C40 RPREVIOUS = RD - 1 PP = PP + CURVEFINE(RPREVIOUS): RPL = RPL + CURVEFINE(RPREVIOUS) C40: FOR CNT = 1 TO CURVINC(RD) B1(RPL) = PP: T1(RPL) = PP + 1 B2(RPL) = PP + CURVEFINE(RD): T2(RPL) = PP + CURVEFINE(RD) + 1 RPL = RPL + 1: PP = PP + 1 NEXT CNT PP = PP + 1: RPL = RPL + 1 NEXT RD RL = RL - 2 NL10 = RL - (NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + NL7 + NL8 + NL9) RETURN RL = RL - 2 NL10 = RL - (NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + NL7 + NL8 + NL9) RETURN CZoERR1: GOSUB ERRORCODES CLOSE #2 READATA = 3 GOTO MAIN To --> program code (complete) |