rocbo menu

 
 
1 '---------- Carreaux de Bézier ---------
2 '
3 '     par Rocanin-Borraz Jean-Max
4 '         calculs par itérations
5 '         gwbasic Mai 1989
6 '
7 ON ERROR GOTO 60000
10   GOSUB 10000              ' init
15   GOSUB 11000              ' init variables & sigle
20   WHILE FIN=0
25     CLS 2
30     LOCATE 22,2  :PRINT "[Appeler Créer Sauver Modifier Graph Iso Dos Fin]:";
35     INPUT R$
40     IF R$="a" OR R$="A" THEN GOSUB 150 :R$=""
45     IF R$="c" OR R$="C" THEN GOSUB 100 :R$=""
50     IF R$="s" OR R$="S" THEN GOSUB 200 :R$=""
55     IF R$="m" OR R$="M" THEN GOSUB 300 :R$=""
60     IF R$="i" OR R$="I" THEN GOSUB 500 :R$=""
65     IF R$="d" OR R$="D" THEN GOSUB 650 :R$=""
70     IF R$="g" OR R$="G" THEN GOSUB 900 :R$=""
75     IF R$="f" OR R$="F" THEN GOSUB 750 :FIN=1
90   WEND
95   VIEW PRINT :CLS :SYSTEM
98 END '---------------------------------
99 '
100 'Saisie des Polygones Directeurs
102  GOSUB 750 :CLS 2
104  LOCATE 22,1  :PRINT "CREER un carreau"
106  INPUT "nombre de pìles du polygone générateur:";POLESG
108  INPUT "nombre de segments Générateurs:";SEGMG
110  INPUT "nombre de pìles des Polygones Directeurs:";POLESD
112  INPUT "nombre de passes sur l'axe directeur:";SEGMD
114  GOSUB 9000
116  FOR I=0 TO POLESG-1
118    FOR J=0 TO POLESD-1
120      GOSUB 700 'saisie
122    NEXT J
124  NEXT I
128  GOSUB 725 :GOSUB 800 :SAUVEGARDE=0 'cadrage
148 RETURN
149 '
150 'charger
152  GOSUB 750 :CLS 2
154  LOCATE 22,1  :PRINT "APPELER un Carreau"
156  INPUT "nom du fichier:";R$ :R$=CHM$+LEFT$(R$,8)+".BZR"
158  OPEN"i",#1,R$
160  INPUT #1,POLESG,POLESD,R$ 'lecture des poles
162  INPUT #1,SEGMG,SEGMD,R$ :GOSUB 9000 'init des tableaux
164  FOR I=0 TO POLESG-1
166    FOR J=0 TO POLESD-1
168      INPUT #1,POLD(I,J,1),POLD(I,J,2),POLD(I,J,3)
170      PRINT POLD(I,J,1),POLD(I,J,2),POLD(I,J,3)
172    NEXT J
176  NEXT
178  CLOSE #1
180  GOSUB 725 :GOSUB 975 :GOSUB 800 'cadrage
198 RETURN
199 '
200 'sauver
202  IF CRBE=0 THEN RETURN ELSE CLS 2
204  LOCATE 22,1  :PRINT "SAUVER un Carreau"
206  INPUT "nom du fichier:";R$ :R$=CHM$+LEFT$(R$,8)+".BZR"
208  OPEN"o",#1,R$
210  PRINT #1,POLESG,POLESD,"(polesG-polesD)"
212  PRINT #1,SEGMG,SEGMD,"(segmG-segmD)"
214  FOR I=0 TO POLESG-1
216    FOR J=0 TO POLESD-1
218      PRINT #1,POLD(I,J,1),POLD(I,J,2),POLD(I,J,3)
220      PRINT POLD(I,J,1),POLD(I,J,2),POLD(I,J,3)
222    NEXT J
224  NEXT I
226  CLOSE #1 :SAUVEGARDE=1
248 RETURN
249 '
300 'modifier
302  IF CRBE=0 THEN RETURN ELSE CLS 2
304  R$="toto" :REP=1
306  WHILE R$<>""
308    CLS 2 :LOCATE 22,2
310    PRINT"[Directrice Homotétie Translation rOtation Miroir Retour]:";
312    INPUT R$
314    IF R$="D" OR R$="d" THEN GOSUB 350 :R$=""
316    IF R$="H" OR R$="h" THEN GOSUB 400 :R$=""
318    IF R$="T" OR R$="t" THEN GOSUB 430 :R$=""
320    IF R$="M" OR R$="m" THEN GOSUB 460 :R$=""
321    IF R$="O" OR R$="o" THEN GOSUB 370 :R$=""
322    IF R$="R" OR R$="R" THEN R$="" :REP=0
324  WEND
326  IF REP THEN GOSUB 725 :GOSUB 800 :SAUVEGARDE=0 ' cadrage
348 RETURN
349 '
350 'Directrice à modifier
351  I=-1
352  WHILE I<0 OR I>POLESG-1
353    INPUT "n° de la directrice à modifier:";I :I=INT(I)
354  WEND
355  J=-1
356  WHILE J<0 OR I>POLESD-1
357    INPUT "n° du pole à modifier:";J :J=INT(J)
358  WEND
360  GOSUB 700 'saisie
368 RETURN
369 '
370 'Rotation
371  CLS 2
372  LOCATE 22,1  :PRINT "Rotation"
373  INPUT "Axe de rotation <X Y Z>:";R$   :GOOD=0
374  IF R$="X" OR R$="x" THEN AX1=2 :AX2=3 :GOOD=1
375  IF R$="Y" OR R$="y" THEN AX1=1 :AX2=3 :GOOD=1
376  IF R$="Z" OR R$="z" THEN AX1=1 :AX2=2 :GOOD=1
377  IF GOOD=0 THEN RETURN
378  INPUT "valeur Rotation sur l'axe:";ANGLE :ANGLE=ANGLE*DEG
380  FOR I=0 TO POLESG-1
381    FOR J=0 TO POLESD-1
382      COORD1=POLD(I,J,AX1) :COORD2=POLD(I,J,AX2)
384      POLD(I,J,AX1)=COORD1*COS(ANGLE)-COORD2*SIN(ANGLE)
386      POLD(I,J,AX2)=COORD1*SIN(ANGLE)+COORD2*COS(ANGLE)
396    NEXT J
397  NEXT I
398 RETURN
399 '
400 'Homotétie
402  CLS 2
404  LOCATE 22,1  :PRINT "Homotétie"
406  INPUT "coefficient d'homotétie:";COEFFH
408  FOR I=0 TO POLESG-1
410    FOR J=0 TO POLESD-1
412      POLD(I,J,1)=POLD(I,J,1)*COEFFH
414      POLD(I,J,2)=POLD(I,J,2)*COEFFH
416      POLD(I,J,3)=POLD(I,J,3)*COEFFH
418    NEXT J
420  NEXT I
428 RETURN
429 '
430 'Translation
432  CLS 2
434  LOCATE 22,1  :PRINT "Translation"
435  INPUT "valeur translation X:";X
436  INPUT "valeur translation Y:";Y
437  INPUT "valeur translation Z:";Z
438  FOR I=0 TO POLESG-1
440    FOR J=0 TO POLESD-1
442      POLD(I,J,1)=POLD(I,J,1)+X
444      POLD(I,J,2)=POLD(I,J,2)+Y
446      POLD(I,J,3)=POLD(I,J,3)+Z
448    NEXT J
450  NEXT I
458 RETURN
459 '
460 'Miroir
462  CLS 2
464  LOCATE 22,1  :PRINT "Miroir"
466  INPUT "Miroir sur l'axe [X Y Z]:";R$ :AXX=1 :AXY=1 :AXZ=1
468  IF R$="X" OR R$="x" THEN AXX=-1
470  IF R$="Y" OR R$="y" THEN AXY=-1
472  IF R$="Z" OR R$="z" THEN AXZ=-1
474  FOR I=0 TO POLESG-1
476    FOR J=0 TO POLESD-1
478      POLD(I,J,1)=POLD(I,J,1)*AXX
480      POLD(I,J,2)=POLD(I,J,2)*AXY
482      POLD(I,J,3)=POLD(I,J,3)*AXZ
484    NEXT J
486  NEXT I
498 RETURN
499 '
500 'générer de l'ISO
502   IF CRBE=0 THEN RETURN ELSE CLS 2
504   LOCATE 22,1  :PRINT "GENERER du code CN"
505   INPUT "nom du fichier (Dos):";R$ :R$=LEFT$(R$,8)+".srf"
506   INPUT "nom du fichier (ISO> %...):";R2$
508   INPUT "Rayon de la Fraise:";RF
510   INPUT "n° de ligne de départ [valeur]:",LIGNE
512   OPEN"o",#1,R$
514   PRINT#1,R2$+" ( "+R$+" )":PRINT R2$+" ( "+R$+" )"
516   RESTORE 62005
518   FOR I=0 TO 9
520     READ LIGNE$ :PRINT #1,LIGNE$ :PRINT LIGNE$
522   NEXT I
524   I=0 :J=0 :PREC=0 :TEST=1 :GOSUB 609 :TEST=0
526   IF Z3<0 THEN SIGNORM=-1 ELSE SIGNORM=1
528   FOR I=0 TO SEGMD
530     IF I=SEGMD THEN PREC=1 ELSE PREC=0 'Tangence aux bords
532     J=0 :TEST=1 :GOSUB 609 :TEST=0
534     PRINT #1,TAB(7) "(Isoparametrique:"+STR$(I)+")"
536     X$=STR$(INT(NORM(0,1)*1000)) :X$=STR$(VAL(X$)/1000)
538     IF INSTR(X$," ") THEN X$=MID$(X$,2)
540     Y$=STR$(INT(NORM(0,2)*1000)) :Y$=STR$(VAL(Y$)/1000)
542     IF INSTR(Y$," ") THEN Y$=MID$(Y$,2)
543     NUM=LIGNE :NUM$="N"+MID$(STR$(NUM),2)
544     PRINT NUM$ TAB(7) "G00 X"+X$ TAB(22) "Y"+Y$
546     PRINT #1,NUM$ TAB(7) "G00 X"+X$ TAB(22) "Y"+Y$
548     GOSUB 600
550     FOR J=0 TO SEGMG
552       CF=NORM(J,2)*.7
554       PSET(NORM(J,1)+CF,NORM(J,3)+CF)
556       NUM=LIGNE+J+1 :NUM$="N"+MID$(STR$(NUM),2)
558       X$=STR$(INT(NORM(J,1)*1000)) :X$=STR$(VAL(X$)/1000)
560       IF INSTR(X$," ") THEN X$=MID$(X$,2)
562       Y$=STR$(INT(NORM(J,2)*1000)) :Y$=STR$(VAL(Y$)/1000)
564       IF INSTR(Y$," ") THEN Y$=MID$(Y$,2)
566       Z$=STR$(INT(NORM(J,3)*1000)) :Z$=STR$(VAL(Z$)/1000)
568       IF INSTR(Z$," ") THEN Z$=MID$(Z$,2)
570       PRINT NUM$ TAB(7) "G01 X"+X$ TAB(22) "Y"+Y$ TAB(33) "Z"+Z$
572       PRINT #1,NUM$ TAB(7) "G01 X"+X$ TAB(22) "Y"+Y$ TAB(33) "Z"+Z$
574     NEXT J
576     LIGNE=LIGNE+SEGMG+2
578     PRINT#1,TAB(7) "G00 ZL1 ( Degagement )"
580   NEXT I
582   PRINT#1,TAB(7) "G77 N1 N3"
584   PRINT#1,TAB(7) "M02 (................ fin surf )"
586   DEGAG=DEGAG+1
588   D$=STR$(INT(DEGAG*1000)) :D$=STR$(VAL(D$)/1000)
590   IF INSTR(D$," ") THEN D$=MID$(D$,2)
592   PRINT#1,"N9000 (affectation des variables)
594   PRINT#1,TAB(7) "L1="+D$ :PRINT TAB(7) "L1="+D$
596   PRINT#1,"N9999 (fin affectation)
597   CLOSE #1
598 RETURN
599 '
600 'Normale
604  FOR J=0 TO SEGMG
606    IF J=SEGMG THEN CALCUL=0 ELSE CALCUL=1
608    WHILE CALCUL
609     '2 vecteurs au point considéré
610      X1=SURF(I-PREC,J+1,1)-SURF(I-PREC,J,1)
612      Y1=SURF(I-PREC,J+1,2)-SURF(I-PREC,J,2)
614      Z1=SURF(I-PREC,J+1,3)-SURF(I-PREC,J,3)
616      X2=SURF(I-PREC+1,J,1)-SURF(I-PREC,J,1)
618      Y2=SURF(I-PREC+1,J,2)-SURF(I-PREC,J,2)
620      Z2=SURF(I-PREC+1,J,3)-SURF(I-PREC,J,3)
622     'Produit Vectoriel
624      X3=Y1*Z2-Z1*Y2 :Y3=-(X1*Z2-Z1*X2) :Z3=X1*Y2-X2*Y1
626      MODULE=SQR(X3^2+Y3^2+Z3^2)
628      CALCUL=0 :IF TEST THEN RETURN
630    WEND
632    NORM(J,1)=SURF(I,J,1)+((X3/MODULE)*RF)*SIGNORM
634    NORM(J,2)=SURF(I,J,2)+((Y3/MODULE)*RF)*SIGNORM
636    NORM(J,3)=SURF(I,J,3)+((Z3/MODULE)*RF)*SIGNORM
637    IF NORM(J,3)>DEGAG THEN DEGAG=NORM(J,3)
638  NEXT J
648 RETURN
649 '
650 'Ms-Dos
652  WHILE FAN=0
654    CLS 2 :CMD$="":R=0 :DOS=0 :FIC$="" :EXT$=""
656    LOCATE 22,1  :PRINT "[Chemin Lire>Iso Lire>Courbe Dos Retour]:";
658    INPUT R$
660    IF R$="c"  OR R$="C"  THEN INPUT"Chemin:";CHM$
662    IF R$="li" OR R$="LI" THEN CMD$="EDIT/R " :EXT$=".srf" :R=1
664    IF R$="lc" OR R$="LC" THEN CMD$="EDIT/R " :EXT$=".bzr" :R=1
666    IF R$="d"  OR R$="D"  THEN DOS=1 :R=1
668    IF R$="r"  OR R$="R"  THEN FAN=1
670    WHILE R
672      IF DOS=0 THEN INPUT"nom du fichier:";FIC$
674      CMD$=CMD$+CHM$+FIC$+EXT$ :R=0
676      IF DOS THEN INPUT"commande:";CMD$
678      CLS 0 :VIEW PRINT
680      SHELL "dos "+CMD$
682      GOSUB 10000 :GOSUB 950 'init écran
684      IF CRBE   THEN FOR I=0 TO POLESG-1 :GOSUB 975 :NEXT I 'dessin
686      IF CRBE=0 THEN GOSUB 11000 'sigle
688      GOSUB 950 :VIEW PRINT 21 TO 24
690    WEND
692  WEND
694  FAN=0
698 RETURN
699 '
700 'saisie d'un pole
702  CLS 2
705  PRINT "SAISIE D'UN POLE DU POLYGONE: ";"Directrice ";I;"  pìle ";J
710  INPUT"X=";X :POLD(I,J,1)=X
712  INPUT"Y=";Y :POLD(I,J,2)=Y
715  INPUT"Z=";Z :POLD(I,J,3)=Z
718 RETURN
719 '
725 'cadrage
726  GOSUB 11075 'init variables
727  FOR I=0 TO POLESG-1
728    FOR J=0 TO POLESD-1
729      X=POLD(I,J,1)+POLD(I,J,2)*.8 :IF X>XMAX THEN XMAX=X
730                                    IF X<XMIN THEN XMIN=X
731      Z=POLD(I,J,3)+POLD(I,J,2)*.8 :IF Z>ZMAX THEN ZMAX=Z
732                                    IF Z<ZMIN THEN ZMIN=Z
735    NEXT J
736  NEXT I
740  LGX=XMAX-XMIN :LGZ=ZMAX-ZMIN
742  IF LGX/LGZ>RAPP THEN Q=200/LGX ELSE Q=150/LGZ
744  DECX=(XMIN+XMAX)/2 :DECY=(ZMIN+ZMAX)/2
746  GOSUB 950
748 RETURN
749 '
750 'écraser?
752  WHILE CRB AND SAUVEGARDE=0
755    PRINT "Sauver la Courbe précédente <O/N>:";
757    INPUT R$
760    IF R$="o" OR R$="O" THEN GOSUB 200
762    IF R$="n" OR R$="N" THEN SAUVEGARDE=1
767  WEND
768 RETURN
769 '
800 'calculs des points des directrices
802  CLS 1 :CLS 2 :LOCATE 23,20 :PRINT "CALCUL DES COURBES DIRECTRICES"
804  FOR I=0 TO POLESG-1
806    FOR J=0 TO SEGMD
808      FOR K=0 TO POLESD-1
810        VECT(K,1)=POLD(I,K,1) :VECT(K,2)=POLD(I,K,2) :VECT(K,3)=POLD(I,K,3)
812      NEXT K
814      U=J/SEGMD : NBVECT=POLESD-1
816      WHILE NBVECT
818        FOR K=0 TO NBVECT-1
820          AX=VECT(K,1)      :AY=VECT(K,2)      :AZ=VECT(K,3)
822          BX=VECT(K+1,1)    :BY=VECT(K+1,2)    :BZ=VECT(K+1,3)
824          CX=AX+((BX-AX)*U) :CY=AY+((BY-AY)*U) :CZ=AZ+((BZ-AZ)*U)
826          VECT(K,1)=CX      :VECT(K,2)=CY      :VECT(K,3)=CZ
828        NEXT K
830        NBVECT=NBVECT-1
832      WEND
834      CRBD(I,J,1)=CX :CRBD(I,J,2)=CY  :CRBD(I,J,3)=CZ
836    NEXT J
838    GOSUB 975
840  NEXT I
849 '
850 'calculs des points des génératrices
852  CLS 2 :LOCATE 23,20 :PRINT "CALCUL DES COURBES GENERATRICES"
853  DEGAG=-9999
854  FOR I=0 TO SEGMD
857    FOR J=0 TO SEGMG
858      FOR K=0 TO POLESG-1
860        VECT(K,1)=CRBD(K,I,1) :VECT(K,2)=CRBD(K,I,2) :VECT(K,3)=CRBD(K,I,3)
862      NEXT K
864      U=J/SEGMG : NBVECT=POLESG-1
866      WHILE NBVECT
868        FOR K=0 TO NBVECT-1
870          AX=VECT(K,1)      :AY=VECT(K,2)      :AZ=VECT(K,3)
872          BX=VECT(K+1,1)    :BY=VECT(K+1,2)    :BZ=VECT(K+1,3)
874          CX=AX+((BX-AX)*U) :CY=AY+((BY-AY)*U) :CZ=AZ+((BZ-AZ)*U)
876          VECT(K,1)=CX      :VECT(K,2)=CY      :VECT(K,3)=CZ
878        NEXT K
879        NBVECT=NBVECT-1
880      WEND
882      SURF(I,J,1)=CX :SURF(I,J,2)=CY  :SURF(I,J,3)=CZ :RF=1
888    NEXT J
889    GOSUB 990
890  NEXT I
899 '
900 'Gestion graphique
902  IF CRBE=0 THEN RETURN ELSE DRAP=1
904  WHILE DRAP
905    FLG=1
907    WHILE FLG
910      CLS 2
912      LOCATE 22,65 :PRINT"Ech:"Q
915      LOCATE 22,2 :PRINT "[Droite Gauche Haut Bas Centre Retour] zoom:";
917      INPUT R$
920      IF VAL(R$)<>0 THEN Q=VAL(R$)      :FLG=0
921      IF R$="a" OR R$="A" THEN AXE=1    :FLG=0
922      IF R$="d" OR R$="D" THEN D=D+49   :FLG=0
925      IF R$="g" OR R$="G" THEN D=D-49   :FLG=0
927      IF R$="h" OR R$="H" THEN H=H+38   :FLG=0
930      IF R$="b" OR R$="B" THEN H=H-38   :FLG=0
932      IF R$="c" OR R$="C" THEN H=0 :D=0 :FLG=0
935      IF R$="r" OR R$="R" THEN DRAP=0   :FLG=0
937    WEND
938    IF DRAP THEN GOSUB 950 :CLS 1 :FOR I=0 TO POLESG-1 :GOSUB 975 :NEXT I
940    IF DRAP THEN FOR I=0 TO SEGMD :GOSUB 990 :NEXT I
942  WEND
945 RETURN
949 '
950 'window
955  WINDOW((WX1+D)/Q+DECX,(WY1+H)/Q+DECY)-((WX2+D)/Q+DECX,(WY2+H)/Q+DECY)
957 'WINDOW((WX1+DECX+D)/Q,(WY1+DECY+H)/Q)-((WX2+DECX+D)/Q,(WY2+DECY+H)/Q)
960 RETURN
969 '
975 'dessin courbes Directrices
977  FOR K=0 TO POLESD-1
978    CF=POLD(I,K,2)*.7
980    IF K   THEN LINE-(POLD(I,K,1)+CF,POLD(I,K,3)+CF),1
981    IF K=0 THEN PSET(POLD(I,K,1)+CF,POLD(I,K,3)+CF),1
982  NEXT
983  FOR K=0 TO SEGMD
984    CF=CRBD(I,K,2)*.7
985    IF K   THEN LINE-(CRBD(I,K,1)+CF,CRBD(I,K,3)+CF),3
986    IF K=0 THEN PSET(CRBD(I,K,1)+CF,CRBD(I,K,3)+CF),3
987  NEXT
988 RETURN
989 '
990 'dessin courbes Génératrices
991  FOR K=0 TO SEGMG
992    CF=SURF(I,K,2)*.7
993    IF K   THEN LINE-(SURF(I,K,1)+CF,SURF(I,K,3)+CF),6
994    IF K=0 THEN PSET(SURF(I,K,1)+CF,SURF(I,K,3)+CF),6
995  NEXT K
998 RETURN
999 '
9000 'def des tableaux
9010  IF CRBE THEN ERASE POLD,CRBD,SURF,VECT,NORM
9020  DIM POLD(POLESG,POLESD,3) 'PolesDirecteurs(nbDir,nbPoles,XYZ)
9030  DIM CRBD(POLESG,SEGMD,3)  'CourbesDir(nombre,n°segm,XYZ)
9040  DIM SURF(SEGMD,SEGMG,3)   'CourbesGén(nombre,n°segm,XYZ)
9045  IF POLESG<POLESD THEN MAXPOLES=POLESD ELSE MAXPOLES=POLESG
9050  DIM VECT(MAXPOLES,3)      'Tableau des vecteurs temporaires
9060  DIM NORM(SEGMG,3)         'Tableau des vecteurs normaux à 1 Génératrice
9080  CRBE=1
9090 RETURN
9099 '
10000 'init écran
10010  SCREEN 9 :CLS 0 :WINDOW
10030  LINE(510,10)-(630,44),2,B
10035  LINE(510,50)-(630,270),2,B
10040  VIEW SCREEN(10,10)-(500,270),,1
10045  LOCATE 2,68 :PRINT" SURFACES"
10050  LOCATE 3,68 :PRINT"DE  BEZIER"
10090 RETURN
10099 '
11000 'sigle
11010  LOCATE  3,7 :PRINT"                                              "
11012  LOCATE  4,7 :PRINT"OO                                            "
11016  LOCATE  5,7 :PRINT"OOOO   OOOOOOOOOOOOOO                         "
11018  LOCATE  6,7 :PRINT"OOOO OOOOO                                    "
11020  LOCATE  7,7 :PRINT"OOOO OOOO                                     "
11022  LOCATE  8,7 :PRINT"OOOO OOOO                                     "
11024  LOCATE  9,7 :PRINT"OOOO  OOO        OOO   OOOOOOOOOO             "
11026  LOCATE 10,7 :PRINT"OOOO    OOOOOOOOOOOOOO         OOOO           "
11030  LOCATE 11,7 :PRINT"OOOO                          OOOOOO          "
11032  LOCATE 12,7 :PRINT"OOOO                         OOOOOO           "
11040  LOCATE 13,7 :PRINT"  OOOOOOOOOOOOOOO  OOOOOOOOOOOOOO             "
11044  LOCATE 14,7 :PRINT"                   OOOO                       "
11046  LOCATE 15,7 :PRINT"                   OOOO Moules métalliques    "
11048  LOCATE 16,7 :PRINT"                   OOOO Structures métalliques"
11050  LOCATE 17,7 :PRINT"                    OOO Productique           "
11052  LOCATE 18,7 :PRINT"                      O DAO                   "
11054  VIEW PRINT 21 TO 24
11075 'init variables
11080  WX1=-105 :WX2=155 :WY1=75 :WY2=-125 :PI=3.1415927# :DEG=PI/180
11085  Q=1 :DECX=0 :DECY=0 :RAPP=200/150 :D=0 :H=0
11090  XMAX=-9999 :XMIN=9999 :ZMAX=-9999
11095  YMAW=-9999 :YMIN=9999 :ZMIN=9999
11098 RETURN
60000 'traitement des erreurs
60010 VIEW PRINT:ON ERROR GOTO 0
60020 RETURN
62000 'data
62005 DATA "   ( Carreau de Bezier )",""
62010 DATA "N1 G90 G80 G51X+Y+ G40 M5 M9 (securite)"
62020 DATA "N2 G52 G00 Z00"
62030 DATA "N3 G52 G00 X00 Y00",""
62035 DATA "N5 G77 N9000 N9999 (init des variables)",""
62040 DATA "N10 T01 D01 M06"
62050 DATA "N20 F100 S800 M40"