BASIC DRAWING MODULE Block_1( ! ! This module makes a title block that will position itself at the ! bottom rightmost corner of the model, below the current boundary. ! This assures that the title block won't interfere with the model. ! ! Ruven Gottlieb ! 4 December, 2005 ! STRING TITLE*132; STRING AUTHOR*132; STRING DATE*132; INT SHEET; INT SCALE; INT MAG); STRING DRAWN_BY*132; STRING DATED*132; STRING OS_DATE*132; STRING SHEETNO*132; STRING SCALED*132; VECTOR MARGIN; VECTOR OFFSET; VECTOR MINPOS; VECTOR MAXPOS; FLOAT BLOCKWIDTH; FLOAT BLOCK_W_MIN; FLOAT BLOCK_H; FLOAT TITLE_W; FILE f; BEGINMODULE set(TSIZE=11); TITLE_W:= textl(TITLE); set(WIDTH=0.6); DRAWN_BY:="Drawn By: " + AUTHOR; os("date > date"); open(f, "r", "date"); DATE:=instr(f); close(f); delete_file("date"); DATED:="Date: " + DATE; SHEETNO:="Sheet: " + str(SHEET, 1, 0); msize_view(MINPOS, MAXPOS); SCALED:="Scale: 1/" + str(SCALE, 1, 0); MARGIN:=vec(4, 0); BLOCK_W_MIN:=150.0; BLOCK_H:=50.0; if TITLE_W <= BLOCK_W_MIN then BLOCKWIDTH:= BLOCK_W_MIN; else BLOCKWIDTH:= (TITLE_W - BLOCK_W_MIN) + BLOCK_W_MIN; endif; lin_free(#1, vec(MAXPOS.x - BLOCKWIDTH * MAG, MINPOS.y - BLOCK_H), vec(MAXPOS.x, MINPOS.y - BLOCK_H)); lin_perp(#2,startp(#1), #1, BLOCK_H*MAG); lin_perp(#3,endp(#1), #1, BLOCK_H*MAG); lin_free(#4,endp(#2), endp(#3)); lin_perp(#5,on(#4, 0.4), #4, -10*MAG); lin_offs(#6,#1, 20*MAG); lin_offs(#7,#6, 10*MAG); lin_offs(#8,#7, 10*MAG); text(#9,on(#2, 0.3) + MARGIN*MAG, 0.0, TITLE:TSIZE=10*MAG); text(#10,on(#2, 0.55) + MARGIN*MAG, 0.0, DRAWN_BY:TSIZE=4*MAG); text(#11,on(#2, 0.75) + MARGIN*MAG, 0.0, DATED:TSIZE=4*MAG); text(#13,on(#2, 0.95) + MARGIN*MAG, 0.0, SHEETNO:TSIZE=4*MAG); text(#14,on(#5, 0.25) + MARGIN*MAG, 0.0, SCALED:TSIZE=4*MAG); ! part(#15, CenterMark(MINPOS,1,0)); ! part(#16, CenterMark(MAXPOS,1,0)); ! part(#17, CenterMark(vec(MAXPOS.x,MINPOS.y),1,0)); ! part(#18, CenterMark(vec(MINPOS.x,MAXPOS.y),1,0)); ! ! msize_view(MINPOS, MAXPOS); ! part(#19, CenterMark(MINPOS,1,0)); ! part(#20, CenterMark(MAXPOS,1,0)); ! part(#21, CenterMark(vec(MAXPOS.x,MINPOS.y),1,0)); ! part(#22, CenterMark(vec(MINPOS.x,MAXPOS.y),1,0)); ENDMODULE