home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 13 / 13.iso / p / p115 / 10.ddi / GCD4 / UPL / TBLOCK.UPL < prev    next >
Encoding:
Text File  |  1986-11-25  |  4.6 KB  |  171 lines

  1. -- PROGRAM TBLOCK.UPL
  2.  
  3. -- This program inserts a border (A,B,C OR D SIZE) and a title block
  4. -- for a drawing.  The block contains the drawing name, drawing number,
  5. -- author's name or initials and date of the drawing.
  6.  
  7. GROUP
  8.     CONST INTEGER SMAX = 13
  9.     STRING MESS(5):30, S(5):SMAX, NEW_S:SMAX
  10. END GROUP
  11.  
  12. PROC CHANGE_TEXT(INOUT INTEGER S_SIZE(5))
  13.     
  14.     INTEGER J
  15.     STRING ANS:1
  16.  
  17.     --display menu to allow title block strings to be changed
  18.  
  19.     LOOP
  20.         CLEAR 1
  21.         PRINT "          --Change Menu--"
  22.         PRINT
  23.         
  24.         --display title block names and current values
  25.  
  26.         LOOP J = 1 TO 5
  27.             PRINT J, ") ", MESS(J):-30, S(J):-(S_MAX+4), \
  28.                  "(Max ", S_SIZE(J), " characters)"
  29.         END_LOOP
  30.         
  31.         PRINT
  32.  
  33.         --get which item is to be changed
  34.  
  35.         ACCEPT ANS IN("12345E") LAST("#13#") \
  36.                    PROMPT("select item to change or E to exit: ")
  37.  
  38.         EXIT WHEN ANS = 'E'
  39.  
  40.         PRINT; PRINT
  41.  
  42.         --get new value for selected item
  43.  
  44.         J = INTEGER(ANS)
  45.         ACCEPT NEW_S SIZE(S_SIZE(J)) LAST("#13#") NEWLINE \
  46.                     PROMPT("New value for " + MESS(J) + ": ")
  47.         S(J) = NEW_S
  48.     END_LOOP
  49.     
  50. END PROC -- CHANGE_TEXT
  51.  
  52. -------------------------------------------------
  53. PROC MAIN
  54. -------------------------------------------------
  55.     
  56.     STRING ANS:1, FNAME(4):8
  57.     INTEGER J, S_SIZE(5), BNUM
  58.     REAL TH(5),TW(5)
  59.     COORD TEXT_ORG(5), BO(4)
  60.     
  61.     BREAK_CHAR = 3
  62.     
  63.     --initialize border drawing names
  64.  
  65.     FNAME(1) = "BORDA"; FNAME(2) = "BORDB";
  66.     FNAME(3) = "BORDC"; FNAME(4) = "BORDD"
  67.     
  68.     ECHO OFF; SEND; SEND "SEL MENU OFF"; SEND "SET SCROLL 9"; ECHO ON
  69.     
  70.     --initialize text heights and widths
  71.  
  72.     LOOP J = 1 TO 4; TH(J) = 0.25; TW(J) = 0.25; END_LOOP
  73.     TH(5) = 0.2; TW(5) = 0.2
  74.         
  75.     --initialize names of items in title block 
  76.  
  77.     MESS(1) = "Title line 1";            S_SIZE(1) = SMAX
  78.     MESS(2) = "Title line 2";            S_SIZE(2) = SMAX
  79.     MESS(3) = "Drawing number";          S_SIZE(3) = SMAX
  80.     MESS(4) = "Name or initials";        S_SIZE(4) = 7
  81.     MESS(5) = "Drawing date (DD/MM/YY)"; S_SIZE(5) = 8
  82.         
  83.     --initialize border origins for each border sizes
  84.  
  85.     BO(1) = [5.25,-4.0];   BO(2) = [8.25,-5.25];
  86.     BO(3) = [10.75,-8.25]; BO(4) = [16.75,-10.75]
  87.         
  88.     --initialize relative text origins for each item in the title block
  89.  
  90.     TEXT_ORG(1) = [1.633,-1.145]; TEXT_ORG(2) = [1.633,-0.76]
  91.     TEXT_ORG(3) = [1.633,-0.158]; TEXT_ORG(4) = [4.221,-1.016]
  92.     TEXT_ORG(5) = [4.221,-0.158]
  93.         
  94.     CLEAR 1
  95.     DISPLAY
  96. This program inserts a title block in the lower-right corner of your
  97. drawing and inserts a double border around your drawing.  You may select
  98. the border size, two title lines, drawing number, name and date of drawing
  99.  
  100. $
  101.  
  102.     --get size of border to be installed
  103.  
  104.     ACCEPT ANS PROMPT("Select border size (A,B,C, or D) ?") IN("ABCD") NEWLINE
  105.     BNUM = ASCII(ANS)-ASCII("A")+1
  106.         
  107.     --adjust text orgins for selected border size
  108.  
  109.     LOOP J = 1 TO 5
  110.        TEXT_ORG(J) = BO(BNUM)-TEXT_ORG(J)
  111.     END_LOOP
  112.         
  113.     --get values for each item in the title block
  114.  
  115.     LOOP J = 1 TO 5
  116.         ACCEPT NEW_S SIZE(S_SIZE(J)) LAST("#13") NEWLINE \
  117.           PROMPT("Enter "+MESS(J)+" (Max "+STRING(S_SIZE(J))+" characters): ") 
  118.         S(J) = NEW_S
  119.     END_LOOP
  120.         
  121.     LOOP
  122.  
  123.         --display current title block data
  124.  
  125.         CLEAR 1
  126.         PRINT "Current block data:"
  127.         LOOP J = 1 TO 5
  128.             PRINT MESS(J)+":":-30,S(J)
  129.         END_LOOP
  130.  
  131.         PRINT
  132.         ACCEPT ANS IN('ACE') NEWLINE \
  133.                PROMPT("Do you want this data (A)dded, (C)hanged or (E)xit? ")
  134.             
  135.         IF ANS = "A" THEN
  136.  
  137.             --insert border drawing as a figure
  138.  
  139.             ECHO OFF
  140.             SEND "INS FIG ",FNAME(BNUM)," :X0 Y0 Z0"
  141.             SEND
  142.             SEND "INS FIG TBLOCK :X ", \
  143.                   BO(BNUM).X,"Y ",BO(BNUM).Y,"Z ",BO(BNUM).Z
  144.             SEND
  145.             ECHO ON
  146.  
  147.             --insert title block text
  148.  
  149.             LOOP J = 1 TO 5
  150.                 INSERT TEXT JUST(3) ORG(TEXT_ORG(J)) HGT(TH(J)) WDT(TW(J)) \
  151.                             TXT(S(J)) RPNT(TRUE)
  152.             END_LOOP
  153.                 
  154.         ELSE IF ANS = "C" THEN
  155.  
  156.             --allow user to change title block information
  157.  
  158.             CHANGE_TEXT(S_SIZE())
  159.         ENDIF
  160.  
  161.         EXIT WHEN ANS = "E" OR ANS = "A"    --all done?
  162.             
  163.     END_LOOP
  164.         
  165.     CLEAR 1
  166.     ECHO OFF; SEND "SET SCR 3"; ECHO ON
  167.         
  168.     PRINT "program completed"
  169.         
  170. END PROC
  171.