home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 2 / HACKER2.BIN / 652.GEOMPAR.BAS < prev    next >
BASIC Source File  |  1990-12-10  |  29KB  |  602 lines

  1. 10 REM GEOMPAR - July 10,1990 ... DO NOT RENUMBER
  2. 20 REM ***********************************************************
  3. 30 F1$=" ##### " : F2$="###.###" : F3$="    ##"
  4. 40 DATA "INPUT CRANK  2-N1 3-N2 4-N3  5-L    6-R(L)   7-S(N3)   8-B(N3) "
  5. 50 DATA "INPUT SLDR   2-N1 3-N2 4-N3  5-L  9-M   6-B(N2)  7-S(N3)   8-B(N3) "
  6. 60 DATA "INPUT CYLNDR 2-N1 3-N2 4-N3 9-N5  5-M  6-L1  7-L2 "
  7. 65 DATA "                8-R(L2)  10-S(N5)  11-B(N5)"
  8. 70 DATA " PNT ON BODY 2-N1 3-N2 4-N3  5-L    6-R(L)   7-S(N3)   8-B(N3)"
  9. 80 DATA " 2-LINK DYAD 2-N1 3-N2 4-N3  5-M 10-N4 11-N5 6-L1 7-L2"
  10. 85 DATA "                8-R(l1)   9-R(l2)  14-S(N4)  15-B(N4)  16-S(N5)  17-B(N5) "
  11. 90 DATA "    OSC SLDR 2-N1 3-N2 4-N3  5-M  9-N4 12-N5 6-L1 7-L2"
  12. 95 DATA "                8-E(L1)  10-S(N4)  11-B(N4)  13-S(N5)  14-B(N5)"
  13. 100 DATA"   ROT GUIDE 2-N1 3-N2 4-N3  5-M 10-N4 13-N5 6-L1 7-L2"
  14. 105 DATA"                8-R(L2)   9-B(N3)  11-S(N4)  12-B(N4)  14-S(N5)  15-B(N5)"
  15. 110 DATA"  SPUR GEARS 2-N1 3-N2 4-N3 5-N8 22-N9 13-N4 16-N5 6-L1 7-L2 11-L5"
  16. 113 DATA"                 8-RHO1    9-RHO2  12-S(N3)  10-B(N3)"
  17. 115 DATA"               14-S(N4)  15-B(N4)  17-S(N5)  18-B(N5)"
  18. 120 DATA"      SPRING 2-N1 3-N2 4-L1 5-L2      6-KS      7-L0"
  19. 130 DATA"      DAMPER 2-N1 3-N2 4-L1 5-L2      6-CD"
  20. 140 FOR I= 1 TO 16: READ HEAD$(I) : NEXT I
  21. 146 RESTORE : IF DF$="N" THEN 460
  22. 150 CLS
  23. 151 PRINT"Option 1 - BASIC 3.2 with (640x350) EGA graphics"
  24. 152 PRINT"       2 - BASIC 3.1 with (640x200) CGA graphics"
  25. 155 PRINT
  26. 156 PRINT"Enter number which describes your computer [Default=";SCR$;"] ?";
  27. 157 Q$= INKEY$ : IF LEN(Q$)= 0 THEN 157
  28. 158 IF VAL(Q$) < 1 OR VAL(Q$) > 2 THEN CTYPE= 1 ELSE CTYPE= VAL(Q$)
  29. 160 IF CTYPE=1 THEN SCREEN 9 ELSE SCREEN 2
  30. 165 RESTORE : IF DF$= "N" THEN 460
  31. 169 IF ONCE$="T" THEN 480
  32. 170 REM **********************************
  33. 180 REM DEFINE THE GEOMETRIC PARAMETERS"
  34. 190 REM **********************************
  35. 200 T7=1
  36. 205 IF SCR$="1" THEN SCREEN 9 ELSE SCREEN 2
  37. 210 II=0 : RET$="geompar"
  38. 220 II= II+1 : IF II > T5 THEN 450
  39. 230 ON K(II) GOTO 240,260,280,300,320,340,360,380,400,420
  40. 240 IRET%= 250 : CHAIN "mechdri",3000,ALL
  41. 250 GOSUB 2060 : T7=T7+1 : GOTO 440
  42. 260 IRET%= 270 : CHAIN "mechdri",4000,ALL
  43. 270 GOSUB 1370 : T7=T7+1 : GOTO 440
  44. 280 IRET%= 290 : CHAIN "mechdri",5000,ALL
  45. 290 GOSUB 1670 : T7=T7+2 : GOTO 440
  46. 300 IRET%= 310 : CHAIN "mechdri",6000,ALL
  47. 310 GOSUB 2030 : GOTO 440
  48. 320 IRET%= 330 : CHAIN "mechdri",7000,ALL
  49. 330 GOSUB 2470 : T7=T7+2 : GOTO 440
  50. 340 IRET%= 350 : CHAIN "mechdri",8000,ALL
  51. 350 GOSUB 2980 : T7=T7+2 : GOTO 440
  52. 360 IRET%= 370 : CHAIN "mechdri",9000,ALL
  53. 370 GOSUB 3350 : T7=T7+2 : GOTO 440
  54. 380 IRET%= 390 : CHAIN "mechdri",10000,ALL
  55. 390 GOSUB 4150 : T7=T7+1 : GOTO 440
  56. 400 IRET%= 410 : CHAIN "mechdri",11000,ALL
  57. 410 GOSUB 3890 : GOTO 440
  58. 420 IRET%= 430 : CHAIN "mechdri",12000,ALL
  59. 430 GOSUB 4030 : GOTO 440
  60. 440 GOTO 220
  61. 450 PRINT : PRINT"GEOMETRY DEFINITION COMPLETE" : PRINT
  62. 460 CLS : GOSUB 470 : GOSUB 1100 : GOSUB 1160 : GOTO 1220 : GOTO 1290
  63. 470 H1=1 : CLS
  64. 480 PRINT
  65. 500 PRINT"                   CURRENT GEOMETRY DATA"
  66. 505 PRINT"---------------------------------------------------------------"
  67. 510 PRINT"          Heading format is ITEM NUMBER-DESCRIPTOR"
  68. 511 PRINT"                    Example:          6-R(L)"
  69. 512 PRINT"---------------------------------------------------------------"
  70. 513 PRINT
  71. 514 PRINT"    Enter Q to QUIT and write current data to the DAT file"
  72. 530 F1$=" #######" : F2$=" #####.###" : F3$="   ##"
  73. 540 FOR I= 1 TO T5
  74. 542 R1=I
  75. 545 IF K(I)=8 THEN ROWGEAR=I
  76. 550 IF K(I)=0 THEN 900
  77. 555 PRINT : PRINT TAB(15)"***** SEQUENCE NUMBER "I" *****" : PRINT
  78. 560 GOSUB 1350 
  79. 570 ON K(I) GOTO 620,660,700,740,790,820,860,890,740,740
  80. 620 PRINT TAB(16); : IF D$="K" THEN G(I,4)=0 : G(I,7)=0 : G(I,8)=0
  81. 630 PRINT USING F3$;G(I,2);G(I,3);G(I,4);G(I,5);
  82. 640 PRINT USING F2$;G(I,6);G(I,7);G(I,8) : GOTO 900
  83. 660 PRINT TAB(16); : IF D$="K" THEN G(I,7)=0 : G(I,8)=0
  84. 670 PRINT USING F3$;G(I,2);G(I,3);G(I,4);G(I,5);G(I,9);
  85. 680 PRINT USING F2$;G(I,6);G(I,7);G(I,8) : GOTO 900
  86. 700 PRINT TAB(16);
  87. 710 PRINT USING F3$;G(I,2);G(I,3);G(I,4);G(I,9);G(I,5);G(I,6);G(I,7)
  88. 715 PRINT HEAD$(K+1)
  89. 720 PRINT TAB(14);:PRINT USING F2$;G(I,8);G(I,10);G(I,11) : GOTO 900
  90. 740 PRINT TAB(16);
  91. 750 PRINT USING F3$;G(I,2);G(I,3);G(I,4);G(I,5);
  92. 760 PRINT USING F2$;G(I,6); : IF K(I)=10 THEN PRINT : GOTO 900
  93. 770 PRINT USING F2$;G(I,7); : IF K(I)=9 THEN PRINT : GOTO 900
  94. 780 PRINT USING F2$;G(I,8); : PRINT : GOTO 900
  95. 790 PRINT TAB(16); : IF D$="K" THEN G(I,10)=0 : G(I,11)=0
  96. 795 IF D$="K" THEN G(I,14)=0:G(I,15)=0:G(I,16)=0:G(I,17)=0
  97. 800 PRINT USING F3$;G(I,2);G(I,3);G(I,4);G(I,5);G(I,10);G(I,11);G(I,6);G(I,7)
  98. 805 PRINT HEAD$(K+2);
  99. 810 PRINT TAB(14);:PRINT USING F2$;G(I,8);G(I,9);G(I,14);G(I,15);G(I,16);G(I,17)
  100. 815 GOTO 900
  101. 820 PRINT TAB(16); : IF D$="K" THEN G(I,9)=0:G(I,10)=0:G(I,11)=0:G(I,12)=0
  102. 825 IF D$="K" THEN G(I,13)=0 : G(I,14)=0
  103. 830 PRINT USING F3$;G(I,2);G(I,3);G(I,4);G(I,5);G(I,9);G(I,12);G(I,6);G(I,7)
  104. 835 PRINT HEAD$(K+3)
  105. 840 PRINT TAB(14);:PRINT USING F2$;G(I,8);G(I,10);G(I,11);G(I,13);G(I,14)
  106. 850 GOTO 900
  107. 860 PRINT TAB(16); : IF D$="K" THEN G(I,10)=0:G(I,11)=0:G(I,12)=0:G(I,13)=0
  108. 865 IF D$="K" THEN G(I,14)=0 : G(I,15)=0
  109. 870 PRINT USING F3$;G(I,2);G(I,3);G(I,4);G(I,5);G(I,10);G(I,13);G(I,6);G(I,7)
  110. 875 PRINT HEAD$(K+4)
  111. 880 PRINT TAB(14); : PRINT USING F2$;G(I,8);G(I,9);G(I,11);G(I,12);G(I,14);G(I,15) : GOTO 900
  112. 890 PRINT TAB(16);: IF D$="K" THEN G(I,13)=0 : G(I,16)=0
  113. 892 PRINT USING F3$;G(I,2);G(I,3);G(I,4);G(I,5);G(I,22);G(I,13);G(I,16);G(I,6);G(I,7);G(I,11)
  114. 895 PRINT HEAD$(K+5) : PRINT TAB(14); : PRINT USING F2$;G(I,8);G(I,9);G(I,12);G(I,10)
  115. 896 IF D$="K" THEN 900
  116. 897 PRINT HEAD$(K+6) : PRINT TAB(14); : PRINT USING F2$;G(I,14);G(I,15);G(I,17);G(I,18)
  117. 900 GOSUB 920
  118. 910 NEXT I
  119. 915 RETURN
  120. 916 REM Subroutine to Check DATA array - Individual Components
  121. 920 PRINT : PRINT "DATA OK ?  [Default= Y]  Y/N/Q ? ";
  122. 930 Q$= INKEY$ : IF LEN(Q$)=0 THEN 930
  123. 932 IF Q$="" OR Q$=" " THEN Q$="Q"
  124. 935 IF Q$="q" THEN Q$="Q"
  125. 936 IF Q$= "Q" THEN 1060
  126. 940 IF Q$="n" THEN Q$="N"
  127. 950 IF Q$<>"N" THEN Q$="Y"
  128. 960 PRINT Q$ 
  129. 970 IF Q$="N" THEN QN$="Y"
  130. 980 IF Q$="Y" THEN CLS : RETURN
  131. 1000 INPUT"ENTER data ITEM NUMBER ";C1
  132. 1010 PRINT"OLD DATA  ..... ";G(R1,C1) : INPUT"NEW DATA ..... ? ",G(R1,C1)
  133. 1020 QN$="Y"
  134. 1030 GOTO 540
  135. 1040 IF K(1) <=3 THEN 1070
  136. 1050 PRINT"No input component has been specified " : CHAIN "MECHAN",,ALL
  137. 1060 RET$="GEOMPAR" : IRET%=1065 : CHAIN "WGEOM",,ALL
  138. 1065 IF DF$="Y" THEN CHAIN "INPUT",,ALL
  139. 1070 IF D$="K" THEN 1290
  140. 1080 IF D$="D" THEN GOSUB 1100
  141. 1090 GOSUB 1160
  142. 1100 PRINT"             CURRENT MASS-INERTIA DATA" 
  143. 1110 PRINT"             -------------------------" : PRINT
  144. 1120 PRINT"      MEMBER   CENTROID      MASS    MOMENT OF INERTIA" : PRINT
  145. 1130 FOR I=2 TO T7:PRINT USING"##########";I;L(I); : PRINT "     ";
  146. 1140 PRINT USING"###.######";M(I);I(I) : NEXT I : RETURN
  147. 1150 PRINT"ROW NUMBER";I;"--->"; : RETURN
  148. 1160 PRINT : PRINT"DATA OK ?  [Default= Y]  Y/N ? ";
  149. 1170 Q$= INKEY$ : IF LEN(Q$)=0 THEN 1170
  150. 1180 IF Q$="n" THEN Q$="N"
  151. 1190 IF Q$<>"N" THEN Q$="Y"
  152. 1200 PRINT Q$ : IF Q$="Y" THEN QN$="N"
  153. 1210 IF Q$ = "Y" THEN 1290 ELSE RETURN
  154. 1220 PRINT : INPUT"Member number ? ",R1
  155. 1225 IF R1 = 0 THEN CLS  : GOSUB 1100 : GOSUB 1160
  156. 1230 PRINT"Do you wish to change (C)entroid, (M)ass, or (I)nertia ";
  157. 1231 PRINT"  C/M/I ? "; : QN$="Y"
  158. 1232 C$= INKEY$ : IF LEN(C$)=0 THEN 1232
  159. 1241 IF C$="c" THEN C$="C"
  160. 1242 IF C$="m" THEN C$="M"
  161. 1243 IF C$="i" THEN C$="I"
  162. 1245 PRINT C$ : PRINT
  163. 1250 IF C$="C" THEN INPUT"Change centroid to point number ? ",L(R1)
  164. 1260 IF C$="M" THEN INPUT"Change mass to ? ",M(R1)
  165. 1270 IF C$="I" THEN INPUT"Change moment of inertia to ? ",I(R1)
  166. 1275 CLS : GOSUB 1100 : GOSUB 1160
  167. 1280 IF Q$="Y" THEN 1290 ELSE 1220
  168. 1290 NFP%=T2 : NP%=T1 : NC%=T5 : NM%=T7
  169. 1295 CLOSE #2 : IF D$="Y" THEN CHAIN "DYNAN",540,ALL
  170. 1300 NFP%=T2 : NP%=T1 : NC%=T5 : NM%=T7 
  171. 1302 IF D$="K" THEN 1310
  172. 1305 RET$="GEOMPAR" : IRET%=1310 : CHAIN"WGEOM",,ALL
  173. 1310 CHAIN "INPUT",,ALL
  174. 1320 REM ************************************
  175. 1330 REM SUBROUTINE TO PRINT DATA HEADING
  176. 1340 REM ************************************
  177. 1350 K=K(I) : KK=K : IF K=4 THEN KK=5 : GOTO 1358
  178. 1351 IF K=5 THEN KK=6 : GOTO 1358
  179. 1352 IF K=6 THEN KK=8 : GOTO 1358
  180. 1353 IF K=7 THEN KK=10 : GOTO 1358
  181. 1354 IF K=8 THEN KK=12 : GOTO 1358
  182. 1355 IF K=9 THEN KK=15 : GOTO 1358
  183. 1356 IF K=10 THEN KK=16 : GOTO 1358
  184. 1358 PRINT "   ";HEAD$(KK) : RETURN
  185. 1360 REM *******************************************************
  186. 1365 REM *******************************************************
  187. 1370 I=II : G(I,1)=I
  188. 1380 PRINT:PRINT"ENTER DATA FOR AN INPUT SLIDER" : PRINT
  189. 1390 REM *******************************************************
  190. 1400 INPUT"Point number for fixed reference point ....... N1= ";G(I,2):N1=G(I,2)
  191. 1410 INPUT"Point number for moving slider pivot ......... N2= ";G(I,3):N2=G(I,3)
  192. 1420 INPUT"Member number for the input slider ...........  L= ";G(I,5):L=G(I,5)
  193. 1430 PRINT"Angle of slider motion relative to x-axis  B(";N2;")= ";
  194. 1440 INPUT G(I,6) : B(N2)=G(I,6)
  195. 1450 T1=T1+1
  196. 1460 PRINT
  197. 1470 INPUT"DATA OK ?  Y/N ? ",Q$ : IF Q$="n" THEN Q$="N"
  198. 1480 IF Q$ <> "N" THEN 1500
  199. 1490 T1= T1-1 : GOTO 1370
  200. 1500 IF D$="K" THEN G(I,4)=0 : RETURN
  201. 1510 L3=1
  202. 1520 PRINT"Mass of the input slider  ................ M(";L;")= ";
  203. 1530 INPUT G(I,9) : M(L)=G(I,9)
  204. 1540 PRINT"Point number for slider centroid ............. N3= ";
  205. 1550 INPUT G(I,4) : N3=G(I,4) : L(L)=N3
  206. 1560 PRINT"Length of the S-vector to centroid ......  S(";N3;")= ";
  207. 1570 INPUT G(I,7) : S(N3)=G(I,7)
  208. 1580 PRINT"Angle from slider direction to S-vector .. B(";N3;")= ";
  209. 1590 INPUT G(I,8) : B(N3)=G(I,8)
  210. 1600 PRINT"External member connected at moving pivot "N2"  L4= ";
  211. 1610 INPUT G(I,10) : L4= G(I,10)
  212. 1620 PRINT : INPUT"DATA OK ?  Y/N ? ",Q$ : IF Q$="n" THEN Q$="N"
  213. 1630 IF Q$ <> "N" THEN T1= T1+1 : GOTO 1650
  214. 1640 GOTO 1510
  215. 1650 RETURN
  216. 1660 REM *******************************************************
  217. 1670 I=II : G(I,1)= I
  218. 1680 PRINT:PRINT"ENTER DATA FOR AN INPUT CYLINDER" : PRINT
  219. 1690 REM *******************************************************
  220. 1700 INPUT"Point number for cylinder fixed pivot ........ N1= ";G(I,2) : N1=G(I,2)
  221. 1710 INPUT"Point number for driven-crank fixed pivot .... N2= ";G(I,3) : N2=G(I,3)
  222. 1720 INPUT"Point number for driven-crank moving pivot ... N3= ";G(I,4) : N3=G(I,4)
  223. 1740 INPUT"Mode of assembly for the input cylinder ......  M= ";G(I,5):M=G(I,5)
  224. 1750 INPUT"Member number for the input cylinder ......... L1= ";G(I,6):L1=G(I,6)
  225. 1760 INPUT"Member number for the driven crank ........... L2= ";G(I,7):L2=G(I,7)
  226. 1770 PRINT"Length of the driven crank ............... R(";L2;")= ";
  227. 1780 INPUT G(I,8) : R(L2)= G(I,8)
  228. 1790 PRINT
  229. 1800 INPUT"DATA OK ?  Y/N ? ";Q$ : IF Q$="n" THEN Q$="N"
  230. 1810 IF Q$ <> "N" THEN T1= T1+1 : GOTO 1830
  231. 1820 GOTO 1700
  232. 1830 IF D$="K" THEN G(I,9)=0 : G(I,10)=0 : GOTO 2010
  233. 1840 PRINT"Point number for centroid of member ";L2;
  234. 1850 INPUT" ...... N5= ";G(I,9) : N5= G(I,9) : L(L2)=G(I,9)
  235. 1860 PRINT"Length of the S-vector .................. S(";N5;")= ";
  236. 1870 INPUT S(N5) : G(I,10)=S(N5)
  237. 1880 PRINT"Angle from R-vector to S-vector ......... B(";N5;")= ";
  238. 1890 INPUT B(N5) : G(I,11)=B(N5)
  239. 1900 PRINT"Mass of member ";L2;" .................... M(";L2;")= ";
  240. 1910 INPUT M(L2) 
  241. 1920 PRINT"Moment of inertia of member ";L2;" ....... I(";L2;")= ";
  242. 1930 INPUT I(L2)
  243. 1940 PRINT"External member connected at joint N1=";N1;" ...... L3= ? ";
  244. 1950 INPUT L3 : G(I,12)=L3
  245. 1960 PRINT"External member connected at joint N2=";N2;" ...... L4= ? ";
  246. 1970 INPUT L4 : G(I,13)=L4
  247. 1980 PRINT
  248. 1990 INPUT"DATA OK ?  Y/N ? ",Q$ : IF Q$="n" THEN Q$="N"
  249. 2000 IF Q$ <> "N" THEN T1=T1+1 : GOTO 2010
  250. 2005 GOTO 1840
  251. 2010 RETURN
  252. 2020 REM ********************************************************************
  253. 2030 PRINT:PRINT"ENTER DATA FOR A POINT ON A RIGID BODY":PRINT:I=II: G(I,1)=I
  254. 2040 REM ********************************************************************
  255. 2050 GOTO 2080
  256. 2060 I=II : G(I,1)=I
  257. 2070 PRINT:PRINT"ENTER DATA FOR AN INPUT CRANK":PRINT
  258. 2080 INPUT"Member number .............................. L= ? ",L:G(I,5)=L
  259. 2090 INPUT"Point number for tail of the R-vector ..... N1= ? ",G(I,2):N1=G(I,2)
  260. 2100 INPUT"Point number for head of the R-vector ..... N2= ? ",G(I,3) : N2= G(I,3)
  261. 2110 IF K(II)=4 THEN INPUT"Point number for head of the S-vector ..... N3= ? ",G(I,4) : N3= G(I,4) : GOTO 2140
  262. 2120 IF D$="D" THEN PRINT"Point number for centroid of member ";L;" ... N3= ";
  263. 2130 IF D$="D" THEN INPUT G(I,4) : N3=G(I,4)
  264. 2140 PRINT"Length of the R-vector ................ R(";L;")= ";
  265. 2150 IF K(II)=4 THEN PRINT R(L)
  266. 2160 IF K(II)=1 THEN INPUT R(L)
  267. 2170 G(I,6)= R(L)
  268. 2180 IF K(II)=1 AND D$="K" THEN 2230
  269. 2190 IF K(II)= 1 THEN PRINT"Length of the S-vector to centroid .... S(";N3;")= ";
  270. 2195 IF K(II)= 4 THEN PRINT"Length of S-vector .. point ";N1;"to ";N3;".. S(";N3;")= ";
  271. 2200 INPUT G(I,7) : S(N3)= G(I,7)
  272. 2210 PRINT"Angle from the R-vector to S-vector ... B(";N3;")= ";
  273. 2220 INPUT G(I,8) : B(N3)= G(I,8)
  274. 2230 IF K(II)=1 AND D$="D" THEN T1=T1+2
  275. 2240 IF K(II)=1 AND D$="K" THEN T1=T1+1
  276. 2250 IF K(II)=4 THEN T1=T1+1
  277. 2260 PRINT : INPUT"DATA OK ?  Y/N ? ",Q$ : IF Q$="n" THEN Q$="N"
  278. 2270 IF Q$ <> "N" THEN 2310
  279. 2280 IF K(II)=1 THEN T1=T1-1
  280. 2290 IF K(II)=4 THEN T1=T1-1
  281. 2300 GOTO 2080
  282. 2310 IF K(II)=4 THEN RETURN
  283. 2320 IF D$="K" THEN G(I,4)=0 : RETURN
  284. 2330 PRINT "Centroid of member ";L;" is located at point";N3
  285. 2340 L(L)=N3
  286. 2350 PRINT"Mass of member ";L;" .................... M(";L;")= ";:INPUT M(L)
  287. 2360 PRINT"Moment of inertia of member ";L;" ....... I(";L;")= ";:INPUT I(L)
  288. 2370 PRINT : INPUT"DATA OK ?  Y/N ? ",Q$ : IF Q$="n" THEN Q$="N"
  289. 2380 IF Q$="N" THEN 2330
  290. 2390 PRINT"External member connected at joint N1=";N1;" ..... L3= ";
  291. 2400 INPUT G(I,9) : L3= G(I,9)
  292. 2410 PRINT"External member connected at joint N2=";N2;" ..... L4= ";
  293. 2420 INPUT G(I,10) : L4= G(I,10)
  294. 2430 PRINT : INPUT"DATA OK ?  Y/N ? ",Q$ : IF Q$= "n" THEN Q$="N"
  295. 2440 IF Q$="N" THEN 2390
  296. 2450 RETURN
  297. 2460 REM ***********************************************************
  298. 2470 PRINT:PRINT"ENTER DATA FOR A TWO-LINK DYAD":PRINT:I=II:G(I,1)=I
  299. 2480 REM ***********************************************************
  300. 2490 T1= T1+1
  301. 2500 INPUT"Point number for first reference point ..... N1= ? ",G(I,2):N1=G(I,2)
  302. 2510 INPUT"Point number for second reference point .... N2= ? ",G(I,3):N2=G(I,3)
  303. 2520 INPUT"Point number for common point of interest .. N3= ? ",G(I,4):N3=G(I,4)
  304. 2530 INPUT"Mode of assembly ...........................  M= ? ",G(I,5): M=G(I,5)
  305. 2540 PRINT"Member number containing joint N1=";N1;" ....... L1= ";
  306. 2550 INPUT G(I,6) : L1= G(I,6)
  307. 2560 PRINT"Member number containing joint N2=";N2;" ....... L2= ";
  308. 2570 INPUT G(I,7) : L2=G(I,7)
  309. 2580 PRINT"Length of the R-vector on link ";L1;" ...... R(";L1;")= ";
  310. 2590 INPUT G(I,8)
  311. 2600 PRINT"Length of the R-vector on link ";L2;" ...... R(";L2;")= ";
  312. 2610 INPUT G(I,9)
  313. 2620 R(L1)= G(I,8) : R(L2)= G(I,9)
  314. 2630 PRINT : INPUT"DATA OK ?  Y/N ? ",Q$ : IF Q$="n" THEN Q$="N"
  315. 2640 IF Q$<>"N" THEN 2660
  316. 2650 T1= T1-1 : GOTO 2490
  317. 2660 IF D$="K" THEN G(I,10)=0 : G(I,11)=0 : RETURN
  318. 2670 L1=G(I,6) : PRINT"Point number for centroid of member ";L1;"  ";
  319. 2680 INPUT N4 : G(I,10)= N4 : L(L1)= N4
  320. 2690 PRINT"Length of the S-vector ................. S(";N4;")= ";
  321. 2700 INPUT G(I,14) : S(N4)=G(I,14)
  322. 2710 PRINT"Angle from the R-vector to the S-vector  B(";N4;")= ";
  323. 2720 INPUT G(I,15) : B(N4)=G(I,15)
  324. 2730 PRINT"Mass of the member ";L1;" ................  M(";L1;")= ";
  325. 2740 INPUT M(L1)
  326. 2750 PRINT"Moment of inertia of member ";L1;" .......  I(";L1;")= ";
  327. 2760 INPUT I(L1)
  328. 2770 L2=G(I,7) : PRINT"Point number for centroid of member ";L2;"  ";
  329. 2780 INPUT N5 : G(I,11)= N5 : L(L2)= N5 
  330. 2790 PRINT"Length of the S-vector ................  S(";N5;")= ";
  331. 2800 INPUT G(I,16) : S(N5)= G(I,16)
  332. 2810 PRINT"Angle from the R-vector to the S-vector  B(";N5;")= ";
  333. 2820 INPUT G(I,17) : B(N5)= G(I,17)
  334. 2830 PRINT"Mass of the member ";L2;" ................  M(";L2;")= ";
  335. 2840 INPUT M(L2)
  336. 2850 PRINT"Moment of inertia of member ";L2;" .......  I(";L2;")= ";
  337. 2860 INPUT I(L2)
  338. 2870 T1=T1+2
  339. 2880 PRINT : INPUT "DATA OK ?  Y/N ? ",Q$ : IF Q$="n" THEN Q$="N"
  340. 2890 IF Q$="N" THEN T1=T1-2 : GOTO 2670
  341. 2900 PRINT"External member connected at joint N1=";N1;" ..... L3= ";:INPUT L3
  342. 2910 G(I,12)=L3
  343. 2920 PRINT"External member connected at joint N2=";N2;" ..... L4= ";:INPUT L4
  344. 2930 G(I,13)=L4
  345. 2940 PRINT : INPUT"DATA OK ?  Y/N ? ",Q$ : IF Q$="n" THEN Q$="N"
  346. 2950 IF Q$="N" THEN 2900
  347. 2960 RETURN
  348. 2970 REM ************************************************************
  349. 2980 PRINT : PRINT"ENTER DATA FOR AN OSCILLATING SLIDER" : PRINT :I=II: G(I,1)=I
  350. 2990 REM ************************************************************
  351. 3000 INPUT"Point number for ref point on the guide member .......... N1= ";N1
  352. 3010 INPUT"Point number for reference point on the slider .......... N2= ";N2
  353. 3020 INPUT"Point number for reference point on the guide path ...... N3= ";N3
  354. 3030 G(I,2)= N1 : G(I,3)= N2 : G(I,4)= N3 : T1= T1+1
  355. 3040 INPUT"Mode of assembly .....................................  M= ";M
  356. 3050 INPUT"Member number containing the guide path .............. L1= ";L1
  357. 3060 INPUT"Member number for the slider ......................... L2= ";L2
  358. 3070 PRINT"Offset of point ";N1;" from the guide path .......... E(";L1;")= ";
  359. 3080 INPUT G(I,8) : G(I,6)= L1 : G(I,7)= L2 : G(I,5)= M
  360. 3090 PRINT : INPUT"DATA OK ?  Y/N ? ",Q$ : IF Q$="n" THEN Q$="N"
  361. 3100 IF Q$="N" THEN T1=T1-1 : GOTO 3000
  362. 3110 IF D$="K" THEN G(I,9)=0 : G(I,12)=0 : RETURN
  363. 3120 L1=G(I,6) : PRINT"Point number for centroid of member ";L1;" ";
  364. 3130 INPUT N4 : G(I,9)=N4 : L(L1)=N4 : T1=T1+1
  365. 3140 PRINT"Length of the S-vector ...............  S(";N4;")= ";:INPUT G(I,10)
  366. 3150 PRINT"Angle from the R-vector to the S-vector B(";N4;")= ";:INPUT G(I,11)
  367. 3160 PRINT"Mass of member ";L1;" ................... M(";L1;")= ";:INPUT M(L1)
  368. 3170 PRINT"Moment of inertia of member ";L1;" ...... I(";L1;")= ";:INPUT I(L1)
  369. 3180 L2= G(I,7) : PRINT"Point number for centroid of member ";L2;" ";
  370. 3190 INPUT N5 : G(I,12)=N5 : L(L2)=N5 : T1=T1+1
  371. 3200 PRINT"Length of the S-vector ...............  S(";N5;")= ";:INPUT G(I,13)
  372. 3210 PRINT"Angle from the R-vector to the S-vector B(";N5;")= ";:INPUT G(I,14)
  373. 3220 PRINT"Mass of member ";L2;" ................... M(";L2;")= ";:INPUT M(L2)
  374. 3230 PRINT"Moment of inertia of member ";L2;" ...... I(";L2;")= ";:INPUT I(L2)
  375. 3240 INPUT"DATA OK ?  Y/N ? ";Q$ : IF Q$="n" THEN Q$="N"
  376. 3250 IF Q$ <> "N" THEN 3270
  377. 3260 IF Q$="N" THEN T1=T1-2 : GOTO 3110
  378. 3270 PRINT"External member connected at joint N1=";N1;" ..... L3=";:INPUT L3
  379. 3280 G(I,15)=L3
  380. 3290 PRINT"External member connected at joint N2=";N2;" ..... L4=";:INPUT L4
  381. 3300 G(I,16)=L4
  382. 3310 PRINT : INPUT"DATA OK ?  Y/N ? ";Q$ : IF Q$="n" THEN Q$="N"
  383. 3320 IF Q$="N" THEN 3270
  384. 3330 RETURN
  385. 3340 REM *******************************************************
  386. 3350 PRINT :PRINT"ENTER DATA FOR A ROTATING GUIDE" : PRINT :I=II: G(I,1)=I
  387. 3360 REM *******************************************************
  388. 3370 INPUT"Point number for ref point on the guide  ....  N1= ";G(I,2):N1=G(I,2)
  389. 3380 INPUT"Point number for ref point on 2-joint link ..  N2= ";G(I,3):N2=G(I,3)
  390. 3390 INPUT"Point number for slider pivot ...............  N3= ";G(I,4):N3=G(I,4)
  391. 3400 INPUT"Mode of assembly ............................   M= ";G(I,5):M=G(I,5)
  392. 3410 PRINT
  393. 3420 PRINT"Enter member number =1 if guide is fixed with W(1)=A(1)=0 "
  394. 3430 PRINT"      otherwise     = any member with known angular motion"
  395. 3440 PRINT
  396. 3450 INPUT"Member number with straight-line guide ....  L3= ";G(I,16):L3=G(I,16)
  397. 3460 IF L3<>1 THEN 3490
  398. 3470 INPUT"Angle for the fixed guide from the X-axis B(N3)= ";G(I,9)
  399. 3480 W(1)=0 : A(1)=0 : T(1)=0 : B(N3)= G(I,9)
  400. 3490 INPUT"Member number for the slider ..............  L1= ";G(I,6):L1=G(I,6)
  401. 3500 INPUT"Member number for the 2-joint link ........  L2= ";G(I,7):L2=G(I,7)
  402. 3510 PRINT"Length of R-vector on 2-joint link ..... R(";L2;")= ";
  403. 3520 INPUT "";G(I,8) : R(L2)=G(I,8)
  404. 3530 IF L3=1 THEN GOTO 3570
  405. 3540 PRINT"Angle from R-vector on moving guide member ";L3;
  406. 3550 PRINT" to guide path ... B(";N3;")= ";
  407. 3560 INPUT G(I,9) : B(N3)=G(I,9)
  408. 3570 IF D$="K" THEN G(I,10)=0 : G(I,13)=0 : GOTO 3680
  409. 3580 INPUT"Point number for centroid of the slider ...... N4= ";N4:G(I,10)=N4
  410. 3590 PRINT"Length of S-vector to centroid ";N4;" of slider ";
  411. 3600 INPUT G(I,11) : S(N4)=G(I,11)
  412. 3610 PRINT"Angle from guide path to slider centroid S-vector  B(";N4;")= ";
  413. 3620 INPUT G(I,12) : B(N4)=G(I,12)
  414. 3630 INPUT"Point number for centroid of 2-joint link..... N5= ";N5:G(I,13)=N5
  415. 3640 PRINT"Length of the S-vector to centroid ";N5;" on 2-joint link ";
  416. 3650 INPUT G(I,14) : S(N5)=G(I,14)
  417. 3660 PRINT"Angle R-vector to centroid S-vector on 2-joint link.. B(";N5;")= ";
  418. 3670 INPUT G(I,15) : B(N5)= G(I,15)
  419. 3680 T1=T1+1
  420. 3690 PRINT : INPUT "DATA OK ?  Y/N ? ";Q$ : IF Q$="n" THEN Q$="N"
  421. 3700 IF Q$<>"N" THEN 3720
  422. 3710 T1= T1-1 : GOTO 3370
  423. 3720 IF D$="K" THEN RETURN
  424. 3730 L(L1)=N4 : T1=T1+1
  425. 3740 PRINT"Mass of member ";L1;" ................... M(";L1;")= ";:INPUT M(L1)
  426. 3750 PRINT"Moment of inertia of member ";L1;" ...... I(";L1;")= ";:INPUT I(L1)
  427. 3760 L(L2)=N5 : T1=T1+1
  428. 3770 PRINT"Mass of member ";L2;" ................... M(";L2;")= ";:INPUT M(L2)
  429. 3780 PRINT"Moment of inertia of member ";L2;" ...... I(";L2;")= ";:INPUT I(L2)
  430. 3790 PRINT :INPUT"DATA OK ?  Y/N ? ";Q$ : IF Q$="n" THEN Q$="N"
  431. 3800 IF Q$="N" THEN T1=T1-2 : GOTO 3730
  432. 3810 REM MEMBER L3 CONTAINS JOINT N1 .. DEFINED EARLIER
  433. 3820 REM G(I,16)=L3
  434. 3830 PRINT"External member connected to joint ";N2;" ..... L4=";:INPUT L4
  435. 3840 G(I,17)=L4
  436. 3850 PRINT : INPUT"DATA OK ?  Y/N ? ";Q$ : IF Q$="n" THEN Q$="N"
  437. 3860 IF Q$="N" THEN T1=T1-2 : GOTO 3730
  438. 3870 RETURN
  439. 3880 REM **************************************************************
  440. 3890 PRINT:PRINT"ENTER DATA FOR A LINEAR SPRING" : PRINT :I=II: G(I,1)=I
  441. 3900 REM **************************************************************
  442. 3910 INPUT"Point number at one end of the spring ... N1= ";N1:G(I,2)=N1
  443. 3920 INPUT"Point number at other end of spring ... N2= ";N2:G(I,3)=N2
  444. 3930 PRINT"Member number which includes point ";N1;" ....... L1= ";
  445. 3940 INPUT L1 : G(I,4)=L1
  446. 3950 PRINT"Member number which includes point ";N2;" ....... L2= ";
  447. 3960 INPUT L2 : G(I,5)=L2
  448. 3970 INPUT"Spring constant ( lb/in or newtons/mm) ....... KS= ";KS:G(I,6)=KS
  449. 3980 INPUT"Initial length of the free spring ............ L0= ";L0:G(I,7)=L0
  450. 3990 PRINT : INPUT"DATA OK ?  Y/N ? ";Q$ : IF Q$="n" THEN Q$="N"
  451. 4000 IF Q$="N" THEN 3910
  452. 4010 RETURN
  453. 4020 REM **************************************************************
  454. 4030 PRINT:PRINT"ENTER DATA FOR A VISCOUS DAMPER" : PRINT :I=II: G(I,1)=I
  455. 4040 REM **************************************************************
  456. 4050 INPUT"Point number at one end of the damper ... N1= ";N1:G(I,2)=N1
  457. 4060 INPUT"Point number at other end of damper ... N2= ";N2:G(I,3)=N2
  458. 4070 PRINT"Member number which includes point ";N1;" ... L1= ";
  459. 4080 INPUT L1 : G(I,4)=L1
  460. 4090 PRINT"Member number which includes point ";N2;" ... L2= ";
  461. 4100 INPUT L2 : G(I,5)=L2
  462. 4110 INPUT"Viscous damping constant (check units) ...... CD= ";KD:G(I,6)=KD
  463. 4120 PRINT : INPUT"DATA OK ?  Y/N ? ";Q$ : IF Q$="n" THEN Q$="N"
  464. 4130 IF Q$="N" THEN 4050
  465. 4140 RETURN
  466. 4150 REM ***************************************************************
  467. 4160 PRINT"ENTER DATA FOR SPUR GEARS" : PRINT : I=II : G(I,1)= I
  468. 4170 REM ***************************************************************
  469. 4300 PRINT "Point number at center of first gear  .... N1= ";
  470. 4310 INPUT N1 : G(I,2)= N1
  471. 4320 PRINT "Point number at center of second gear .... N2= ";
  472. 4330 INPUT N2 : G(I,3)= N2
  473. 4340 PRINT"Point number on extension of second gear . N3= ";
  474. 4350 INPUT N3 : G(I,4)= N3
  475. 4351 PRINT"Is the first gear part of the FIXED member ? Y/N ? ";
  476. 4352 Q$= INKEY$ : IF LEN(Q$)=0 THEN 4352
  477. 4353 IF Q$="y" THEN Q$="Y"
  478. 4354 IF Q$<>"Y" THEN Q$="N"
  479. 4355 PRINT Q$
  480. 4356 IF Q$="N" THEN 4360
  481. 4357 L1=1 : MN(L1)= L1 : G(I,6)= L1 : W(L1)=0 : A(L1)=0 : GOTO 4450
  482. 4360 PRINT "Member number for the first gear ......... L1= ";
  483. 4370 INPUT L1 : G(I,6)= L1
  484. 4380 IF L1 > 1 THEN 4450
  485. 4390 GOSUB 4400 : GOTO 4360
  486. 4400 PRINT
  487. 4410 PRINT"Member number 1 is reserved for the FIXED reference member."
  488. 4420 PRINT
  489. 4430 PRINT"Enter a new member number "
  490. 4440 RETURN
  491. 4450 PRINT"Is the second gear part of the FIXED member? Y/N ? ";
  492. 4452 Q$= INKEY$ : IF LEN(Q$)=0 THEN 4452
  493. 4453 IF Q$="y" THEN Q$="Y"
  494. 4454 IF Q$ <> "Y" THEN Q$= "N"
  495. 4455 PRINT Q$
  496. 4456 IF Q$ <> "Y" THEN 4469
  497. 4457 IF L1=1 THEN PRINT"ERROR: The first gear is already FIXED" : GOTO 4469
  498. 4461 L2=1 : MN(L2)= L2 : G(I,7)=L2 : W(L2)=0 : A(L2)=0 : GOTO 4491
  499. 4469 PRINT "Member number for the second gear ........ L2= ";
  500. 4470 INPUT L2 : G(I,7)= L2
  501. 4480 IF L2 > 1 THEN 4491
  502. 4490 GOSUB 4400 : GOTO 4469
  503. 4491 PRINT"Is the arm part of the FIXED reference member 1 ? Y/N? ";
  504. 4492 Q$= INKEY$ : IF LEN(Q$)=0 THEN 4492
  505. 4493 IF Q$="y" THEN Q$="Y"
  506. 4494 IF Q$<>"Y" THEN Q$="N"
  507. 4495 PRINT Q$
  508. 4496 IF Q$="N" THEN 4500
  509. 4497 IF L1=1 OR L2=1 THEN PRINT"ERROR: One of the gears is already fixed." : GOTO 4500
  510. 4498 L5=1 : MN(L5)=L5 : G(I,11)= L5 : W(L5)=0 : A(L5)=0 : GOTO 4540
  511. 4500 PRINT "Member number for ARM connecting centers "N1" and "N2" ... L5= ";
  512. 4510 INPUT L5 : G(I,11)= L5
  513. 4520 IF L5 > 1 THEN T7= T7-1 : GOTO 4540
  514. 4530 GOSUB 4400 : GOTO 4500
  515. 4540 PRINT"Point number on gear "L1" at contact point ....  N8= ";
  516. 4541 INPUT N8 : G(I,5)= N8
  517. 4542 PRINT"Point number on gear "L2" at contact point ....  N9= ";
  518. 4543 INPUT N9 : G(I,22)= N9
  519. 4551 PRINT : PRINT"Data OK ?  [Default=Y]  Y/N ? ";
  520. 4552 Q$= INKEY$ : IF LEN(Q$)=0 THEN 4552
  521. 4553 IF Q$="n" THEN Q$="N"
  522. 4554 IF Q$<>"N" THEN Q$="Y" : T1= T1+3
  523. 4555 PRINT Q$
  524. 4556 IF Q$= "N" GOTO 4300
  525. 4560 PRINT
  526. 4570 PRINT "Enter a NEGATIVE value for RHO for INTERNAL GEARS"
  527. 4580 PRINT
  528. 4590 PRINT "Radius of the first gear "L1" ........... RHO1= ";
  529. 4600 INPUT RHO1 : G(I,8)= RHO1
  530. 4610 PRINT "Radius of the second gear "L2" .......... RHO2= ";
  531. 4620 INPUT RHO2 : G(I,9)= RHO2
  532. 4630 PRINT : M= +1
  533. 4640 IF RHO1 < 0 OR RHO2 < 0 THEN M= -1
  534. 4650 IF RHO1 < 0 AND RHO2 < 0 THEN PRINT "Impossible !" : GOTO 4560
  535. 4660 IF RHO1 < 0 AND ABS(RHO1) < RHO2 THEN PRINT"RHO1 < RHO2 ?": GOTO 4560
  536. 4670 IF RHO2 < 0 AND ABS(RHO2) < RHO1 THEN PRINT"RHO2 < RHO1 ?": GOTO 4560
  537. 4680 IF M < 0 AND RHO1 < 0 THEN PRINT"Contact is CONCAVE : CONVEX"
  538. 4690 IF M > 0 THEN PRINT"Contact is CONVEX : CONVEX"
  539. 4700 PRINT:PRINT"The R-vectors for both gears are initially in the same"
  540. 4710 PRINT"direction as the ARM R-vector from point "N1" to point "N2
  541. 4720 PRINT
  542. 4730 PRINT"Length of S-vector to point "N3" on gear "L2" ... S("N3")= ";
  543. 4740 INPUT S(N3) : G(I,12)= S(N3)
  544. 4750 PRINT"Angle from R("L2") to S("N3") ................... B("N3")= ";
  545. 4760 INPUT B(N3) : G(I,10)= B(N3)
  546. 4761 PRINT : PRINT"Data OK ?  [Default=Y]  Y/N ?";
  547. 4762 Q$= INKEY$ : IF LEN(Q$)= 0 THEN 4762
  548. 4763 IF Q$="n" THEN Q$="N"
  549. 4764 IF Q$<>"N" THEN Q$="Y" : T1= T1 + 4
  550. 4765 PRINT Q$
  551. 4766 IF Q$="N" THEN 4560 
  552. 4770 IF D$ <> "K" THEN 4780
  553. 4778 RETURN
  554. 4780 PRINT
  555. 4790 PRINT"Mass of gear "L1" ................. M("L1")= ";
  556. 4800 INPUT M(L1)
  557. 4810 PRINT"Momemt of Inertia for gear "L1" ... I("L1")= ";
  558. 4820 INPUT I(L1) : PRINT
  559. 4830 PRINT"Mass of gear "L2" ................. M("L2")= ";
  560. 4840 INPUT M(L2)
  561. 4850 PRINT"Moment of inertia for gear "L2" ... I("L2")= ";
  562. 4860 INPUT I(L2) : PRINT
  563. 4870 PRINT"Is the centroid of gear "L1" at the gear center ? ";
  564. 4880 Q$= INKEY$ : IF LEN(Q$)=0 THEN 4880
  565. 4881 IF Q$="y" THEN Q$="Y"
  566. 4882 IF Q$ <> "Y" THEN Q$="N"
  567. 4883 PRINT Q$
  568. 4890 IF Q$= "Y" THEN L(L1)= N1 : N4=N1 : S(N4)=0 : B(N4)=0 : GOTO 4960
  569. 4900 PRINT : PRINT"Point number for centroid of gear "L1;
  570. 4910 INPUT L(L1) : N4= L(L1)
  571. 4920 PRINT"S-vector to centroid of gear "L1;
  572. 4930 INPUT S(N4)
  573. 4940 PRINT"Angle from ARM R-vector to S-vector  B("N4")";
  574. 4950 INPUT B(N4) : PRINT
  575. 4960 N4= L(L1) : G(I,13)= N4 : G(I,14)= S(N4) : G(I,15)= B(N4)
  576. 4970 PRINT"Is the centroid of gear "L2" at the gear center ? ";
  577. 4980 Q$= INKEY$ : IF LEN(Q$)=0 THEN 4980
  578. 4981 IF Q$="y" THEN Q$="Y"
  579. 4982 IF Q$ <> "Y" THEN Q$="N"
  580. 4983 PRINT Q$
  581. 4990 IF Q$= "Y" THEN L(L2)=N2 : N5= N2 : S(N5)=0 : B(N5)=0 : GOTO 5060
  582. 5000 PRINT : PRINT"Point number for centroid of gear "L2;
  583. 5010 INPUT L(L2) : N5= L(L2)
  584. 5020 PRINT"S-vector to centroid of gear "L2;
  585. 5030 INPUT S(N5)
  586. 5040 PRINT"Angle from ARM R-vector to S-vector B("N5")";
  587. 5050 INPUT B(N5)
  588. 5060 N5= L(L2) : G(I,16)= N5 : G(I,17)= S(N5) : G(I,18)= B(N5)
  589. 5070 PRINT : PRINT"External member connected at point "N1" ... L3= ";
  590. 5080 INPUT L3 : G(I,19)= L3
  591. 5090 PRINT"External member connected at point "N3" ... L4= ";
  592. 5100 INPUT L4 : G(I,20)= L4
  593. 5105 PRINT"External member connected at point "N2" ... L6= ";
  594. 5106 INPUT L6 : G(I,21)= L6
  595. 5120 PRINT "Data OK ?  [Default= Y]  Y/N ?";
  596. 5130 Q$= INKEY$ : IF LEN(Q$)=0 THEN 5130
  597. 5140 IF Q$="n" THEN Q$="N"
  598. 5142 IF Q$ <> "N" THEN Q$= "Y" : T1= T1 + 4
  599. 5144 PRINT Q$
  600. 5150 RETURN
  601. 5160 PRINT : GOTO 4780
  602.