Article 9778 of rec.bicycles:
Path: orion.cf.uci.edu!ucsd!ucbvax!agate!usenet
From: marquis@qal.qal.berkeley.edu (Roger Marquis)
Newsgroups: rec.bicycles
Subject: Spoke.bas, Repost
Message-ID: <1989Sep3.015129.13829@agate.uucp>
Date: 3 Sep 89 01:51:29 GMT
Sender: usenet@agate.uucp (USENET Administrator;;;;ZU44)
Organization: University of California, Berkeley
Lines: 246


'     * ***************************************************** *
'     * *                                                   * *
'     * *      Spoke.bas 1.1, by Roger Marquis, 6/89        * *
'     * *    Thanks to Rik & Jon Hjertberg @ Wheelsmith     * *
'     * *                                                   * *
'     * *           Public  Domain,   Freeware.             * *
'     * *                                                   * *
'     * ***************************************************** *

BEGIN:
 RIMDIAM = 0         ' rim diameter
 HUBWID = 0          ' hub width
 HUBDIAM = 0         ' hub diameter
 NCROSS$ = ""        ' number of spoke crosses, input
 NCROSS = 0          ' number of spoke crosses, output
 NSPKS = 0           ' number of spokes
 'Q and Q$           ' misc input variable

'*************************************************************************

 CLS : LOCATE 3, 1
 PRINT "           Input rim diameter, spoke tip to opposite tip in mm"
 PRINT "               or RETURN for a list of common rim diameters"
 LOCATE 10, 5
 INPUT ; RIMDIAM
 WHILE RIMDIAM < 99
        IF RIMDIAM < 99 THEN GOSUB RIMMENU
        PRINT : PRINT "? ", : Q$ = INPUT$(1): Q = VAL(Q$)
        ON Q GOSUB RIMCHART1, RIMCHART2, RIMCHART3, RIMCHART4, RIMCHART5
        PRINT : PRINT : PRINT "DIAMETER (or ENTER for menu)  ";
        INPUT ; RIMDIAM
 WEND

'************************************************************************

 CLS : LOCATE 19, 25: PRINT "RIM DIAMETER = "; RIMDIAM
 LOCATE 2, 1
 PRINT "          Input effective hub diameter in mm"
 PRINT "          measured from center of spoke hole, across"
 PRINT "          axle, to opposite spoke hole"
 PRINT
 PRINT "          And the width of the hub in mm"
 PRINT "          measured from flange to opposite flange"
 PRINT
 PRINT "          or RETURN for a list of common hub dimensions"
 LOCATE 12, 1
 WHILE HUBDIAM <= 1 OR HUBDIAM > 99
        INPUT "HUB DIAMETER"; HUBDIAM: IF HUBDIAM = 0 THEN GOSUB HUBCHART
 WEND
 PRINT
 WHILE HUBWID < 1 OR HUBWID > 99
        INPUT "HUB WIDTH"; HUBWID:    IF HUBWID = 0 THEN GOSUB HUBCHART
 WEND

'************************************************************************

 WHILE NSPKS < 16 OR NSPKS > 44
        CLS
        LOCATE 19, 25: PRINT "RIM DIAMETER = "; RIMDIAM
        LOCATE 20, 25: PRINT "HUB DIAMETER = "; HUBDIAM
        LOCATE 21, 25: PRINT "HUB   WIDTH  = "; HUBWID
        LOCATE 3, 24: PRINT "Input number of spokes:"
        LOCATE 8, 6: INPUT NSPKS
 WEND

'************************************************************************

 WHILE NCROSS$ < "0" OR NCROSS > 9
        CLS
        LOCATE 19, 25: PRINT "RIM DIAMETER = "; RIMDIAM
        LOCATE 20, 25: PRINT "HUB DIAMETER = "; HUBDIAM
        LOCATE 21, 25: PRINT "HUB   WIDTH  = "; HUBWID
        LOCATE 22, 25: PRINT "NO.  SPOKES  = "; NSPKS
        LOCATE 2, 22: PRINT "Input cross pattern:"
        LOCATE 9, 6: INPUT ; NCROSS$: NCROSS = VAL(NCROSS$)
 WEND

'************************************************************************

                   Y = 720 * (NCROSS / NSPKS)
          A = (HUBDIAM / 2) * SIN(Y * (3.1415 / 180))
   B = (RIMDIAM / 2) - (HUBDIAM / 2) * COS(Y * (3.1415 / 180))
                         C = HUBWID / 2
            LENGTH% = SQR(A ^ 2 + B ^ 2 + C ^ 2) - .5

'************************************************************************

 CLS
 LOCATE 16, 25: PRINT "RIM DIAMETER = "; RIMDIAM
 LOCATE 17, 25: PRINT "HUB DIAMETER = "; HUBDIAM
 LOCATE 18, 25: PRINT "HUB   WIDTH  = "; HUBWID
 LOCATE 19, 25: PRINT "NO.  CROSS'  = "; NCROSS
 LOCATE 20, 25: PRINT "NO.  SPOKES  = "; NSPKS
 LOCATE 2, 23: PRINT
 PRINT TAB(27); "Spoke length is :"
 PRINT : PRINT
 PRINT TAB(33); LENGTH%
 PRINT : PRINT
 PRINT "    Add and subtract 1mm for each side of a dished 6/7 spd. rear wheel."
 PRINT
 PRINT TAB(13); "NOTE: For non-Wheelsmith (i.e., DT) spokes or spokes"
 PRINT TAB(18); "heavier than 1.8mm (15g):   Add 1 to 1.5 mm"
 PRINT TAB(19); "(depending on resaler measurement method)."
 PRINT : PRINT
 LOCATE 23, 20: PRINT "RUN AGAIN  ?  (enter N to quit)"
 Q$ = INPUT$(1)
 IF Q$ = "N" OR Q$ = "n" THEN SYSTEM ELSE GOTO BEGIN

'***************< end of program >****************************************
'****************************< begin menu and data tables >***************

RIMMENU:
 CLS : LOCATE 5, 1
 PRINT "          ENTER :": PRINT
 PRINT "                   1   for   700c   clincher   rims": PRINT
 PRINT "                   2   for   27in   clincher   rims": PRINT
 PRINT "                   3   for   26in   clincher   rims": PRINT
 PRINT "                   4   for   24/20in   rims": PRINT
 PRINT "             or    5   for   27/26in   sew-up   rims":
 RETURN

'***************************************************************************

RIMCHART1: CLS
 PRINT "                              700c   rims :"
 PRINT
 PRINT "  Ambrosio        Aero            605 |  Nisi            Mixer           612"
 PRINT "                  Elite           614 |  Rigida          1320            610"
 PRINT "  Araya           1W              605 |                  Score           612"
 PRINT "                  CT19            611 |                  HLC2000         606"
 PRINT "                  CTL730          609 |  Specialized     HC19            613"
 PRINT "  Campagnolo      V-profil        597 |                  HC20            614"
 PRINT "                  Std.            613 |  Sun/Mistral     M132            610"
 PRINT "  Galli           Aero            609 |                  M17             612"
 PRINT "  Matrix          Iso-C           597 |  Weinman         Concave         617"
 PRINT "  Mavic           E2 / G40        613 |  Wolber          58 / Gtlmn      613"
 PRINT "                  MA2 / MA40      611 |                  Alpine          612"
 PRINT "                  M3CD            613 |                  TX              602"
 PRINT "                  OPEN4CD         605 |"
 PRINT
 RETURN

'*****************************************************************************

RIMCHART2: CLS : LOCATE 3, 1
 PRINT "                           27in   Clinchers :"
 PRINT
 PRINT "                    Araya           1W              617"
 PRINT "                    Matrix          Iso-C           609"
 PRINT "                                    Titan           621"
 PRINT "                    Mavic           MA2 / MA2       618"
 PRINT "                                    E2 / G40        620"
 PRINT "                    Rigida          1320            617"
 PRINT "                                    steel 1-1/4     625"
 PRINT "                    Sun/Mistral     M17             619"
 PRINT "                    Ukai            16A(2)          624"
 PRINT "                    Weinmann        concave         624"
 PRINT "                    Wolber          58 / Gtlmn      620"
 PRINT
 RETURN

'***************************************************************************

RIMCHART3: CLS : LOCATE 3, 1
 PRINT "                           26in   Clinchers :"
 PRINT
 PRINT "                    Araya           RM20 / RM25     547"
 PRINT "                    Mavic           Oxygen          541"
 PRINT "                                    Bontrager MA40  546"
 PRINT "                    Rigida          steel 1-3/8     581"
 PRINT "                    Ritchey         Vantage         544"
 PRINT "                    Specialized     X22             554"
 PRINT "                                    X26             547"
 PRINT "                                    X28             543"
 PRINT "                                    X32             549"
 PRINT
 RETURN

'***************************************************************************

RIMCHART4: CLS
 PRINT "                             24in   Rims :": PRINT
 PRINT "                    SEW-UP:"
 PRINT "                    Ambrosio        aero            505"
 PRINT "                    Araya           ADX4            506"
 PRINT "                    Assos           16mm            505"
 PRINT "                    Fiamme          red             515"
 PRINT "                    Mavic           CX18            517"
 PRINT "                                    Mach2           503"
 PRINT "                    Nisi            Laser           506"
 PRINT
 PRINT "                             20in   Rims":
 PRINT
 PRINT "                    SEW-UP:"
 PRINT "                    Araya           aero            400"
 PRINT
 RETURN

'****************************************************************************

RIMCHART5: CLS
 PRINT "                           26/27in   Sew-up   Rims :"
 PRINT
 PRINT "      Ambrosio   Aero        604  |   Matrix     Iso         610"
 PRINT "                 20          617  |   Mavic      GP/GL/GEL   615"
 PRINT "                 Synthesis   617  |              Mach 2      602"
 PRINT "                 Crono       617  |   Mistral    M19A        602"
 PRINT "                 std.        616  |   Nisi       Laser       615"
 PRINT "      Araya      ADX-4       611  |   Saavedra   aero        608"
 PRINT "                 (26in)ADX4  558  |              (26in)aero  552"
 PRINT "      Assos      16mm        616  |   Sun        M17         612"
 PRINT "                 18mm        625  |              M19         603"
 PRINT "                 (26in)16mm  558  |   Wolber     Aspin       614"
 PRINT "      Campagnolo all         616  |              Profil-18   611"
 PRINT "      Fiamme     Red         614  |              Profil-20   600"
 PRINT : PRINT : PRINT
 RETURN
                                                                         
'*******************************************************************************

HUBCHART: CLS
 PRINT "                              Flange   DIAMETERS /  WIDTHS :"
 PRINT
 PRINT "     Campagnolo      LF      Rear            44       57"
 PRINT "                             Front           39       70"
 PRINT "                     HF      Rear            67       57"
 PRINT "                             Front           67       68"
 PRINT "            track    HF      Rear            67       75"
 PRINT "                             Front           67       64"
 PRINT "     Shimano         LF      Rear cassette   44       55"
 PRINT "                             Rear standard   44       56"
 PRINT "                             Front           38       71"
 PRINT "     Specialized     MF      Rear            46       51"
 PRINT "                             Front           43       66"
 PRINT "     Mavic           LF      Rear            44       56"
 PRINT "                             Front           40       56"
 PRINT "     Suntour         LF      Rear            44       55"
 PRINT "                             Front           38       66"
 PRINT "             track   HF      Rear            67       66"
 PRINT "                             Front           67       64"
 PRINT
 RETURN

'********************************************< end of program >***********

Return to  Roger Marquis' Cycling Page