**TI92P*mainT:εηψδ6&‡&―b.·Tη:ε:εη―εV%‡ΰ)RSetup_IAΜ-₯Z-r() Prgm ©Setup the environment and the libraries © required for the execution of the © applications for Ing&Arch ©Versione: 0.0.6 ©Data: 02/07/2005 Local OldDir © Build the environment getFold()OldDir Try NewFold Ing_Arch Else ClrErr EndTry Try NewFold zLib Else ClrErr SetFold(zLib) EndTry © Copy the libraries Try:UnArchiv About:Else:EndTry Try:Unarchiv Arrow:Else:EndTry Try:Unarchiv Box:Else:EndTry Try:Unarchiv Check:Else:EndTry Try:Unarchiv Circ:Else:EndTry Try:Unarchiv Cross:Else:EndTry Try:Unarchiv Ext:Else:EndTry try:Unarchiv IsNum:Else:EndTry Try:Unarchiv OutputEx:Else:EndTry Try:Unarchiv SetScr:Else:EndTry Try:Unarchiv Splash:Else:EndTry Try:Unarchiv Triangle:Else:EndTry Try:Unarchiv HEA:Else:EndTry Try:Unarchiv IPE:Else:EndTry ClrErr Define About(V,D)=Prgm Dialog Title "About..." Text "Versione: " & V Text "Data: " & D Text "Author: Ing. Paolo Benetti" Text "e-mail: paolo.benetti@gmail.com" Text "Coord.: Prof. Attilio Carotti" EndDlog EndPrgm Define Arrow(x1_,y1_,x2_,y2_,Delta,Scl)= Prgm ©Traccia una freccia rettilinea o semiellittica ©x1_,y1_;x2_,y2_ inizio e fine ©Delta:2o asse. +(antiorario) Local Dist,Ext ¨((x2_-x1_)^2+(y2_-y1_)^2)Dist 4*SclExt If Delta=0 Then Line x1_,y1_,x2_,y2_ If x2_=x1_ Then If y2_>y1_ Then Line x2_,y2_,(x2_-Ext),(y2_-Ext) Line x2_,y2_,(x2_+Ext),(y2_-Ext) Else Line x2_,y2_,(x2_-Ext),(y2_+Ext) Line x2_,y2_,(x2_+Ext),(y2_+Ext) EndIf ElseIf x2_>x1_ Then Line x2_,y2_,(x2_-Ext),(y2_+Ext) Line x2_,y2_,(x2_-Ext),(y2_-Ext) Else Line x2_,y2_,(x2_+Ext),(y2_+Ext) Line x2_,y2_,(x2_+Ext),(y2_-Ext) EndIf Else Line x1_,y1_,(x1_-Abs(Delta)), (y1_+Dist/3) Line x1_-Abs(Delta),y1_+Dist/3, x1_-Abs(Delta),y1_+2*Dist/3 Line (x1_-Abs(Delta)),(y1_+2*Dist/3),x2_, y2_ If Delta>0 Then Line x2_,y2_,(x2_-Ext),y2_ Line x2_,y2_,x2_,(y2_-Ext) Else Line x1_,y1_,(x1_-Ext),y1_ Line x1_,y1_,x1_,(y1_+Ext) EndIf EndIf EndPrgm Define Box (xd1,yd1,xd2,yd2,Fil)=Prgm Local i,Scl,XY {xd1-xmin,ymax-yd1,xd2-xmin,ymax-yd2}XY (xmax-xmin)/159Scl XY/SclXY Round(XY,0)XY PxlLine XY[2],XY[1],XY[2],XY[3] PxlLine XY[2],XY[3],XY[4],XY[3] PxlLine XY[4],XY[3],XY[4],XY[1] PxlLine XY[4],XY[1],XY[2],XY[1] If Fil=0 OR Fil=1 Then For i,XY[1]+1,XY[3]-1 PxlLine XY[2]-1,i,XY[4]+1,i,Fil EndFor EndIf EndPrgm Define Check(F1,FAmm)=Func Local Resp If (F1œFAmm)AND(F1undef) Then "Verifica soddisfatta"Resp Else "Verifica NON soddisfatta"Resp EndIf Return Resp EndFunc Define ChngFold(FoldName)=Prgm Try NewFold #FoldName Else ClrErr SetFold(#FoldName) EndTry EndPrgm Define ChngMode()=Prgm ©Cambia modo grafico. Var.gl.: OldMode GetMode("ALL")OldMode SetMode("angle","radian") SetMode("Exponential Format","Normal") SetMode("Graph","Function") SetMode("Exact/Approx","Approximate") setGraph("Axes","Off") setGraph("Coordinates","Rect") EndPrgm Define Circ(xp,yp,R,Hole)=Prgm Local XY,Sc,i {xp-xmin,ymax-yp,R}XY (xMax-xMin)/159Sc XY/ScXY Round(XY,0)XY PxlCrcl XY[2],XY[1],XY[3] If (Hole=0 OR Hole=1) OR Hole=­1 Then For i,1,XY[3]-1 PxlCrcl XY[2],XY[1],i,Hole EndFor EndIf EndPrgm Define Cross(xp,yp,len)=Prgm Local Scl (xMax-xMin)/159Scl len*Scllen Line xp-len,yp,xp+len,yp,­1 Line xp,yp-len,xp,yp+len,­1 EndPrgm Define Ext(xs,ys)=Prgm If xs>minmax[2,1] Then xsminmax[2,1] ElseIf xsminmax[2,2] Then ysminmax[2,2] ElseIf ysXY[i+1,1] Then XY[i]Temp XY[i+1]XY[i] TempXY[i+1] EndIf EndFor Round(XY,0)XY PxlLine XY[1,2],XY[1,1],XY[2,2],XY[2,1] PxlLine XY[2,2],XY[2,1],XY[3,2],XY[3,1] PxlLine XY[3,2],XY[3,1],XY[1,2],XY[1,1] If Fil=0 OR Fil=1 Then For i,XY[1,1]+1,XY[2,1]-1 XY[1,2]+(i-XY[1,1])*(XY[2,2]-XY[1,2])/ (XY[2,1]-XY[1,1])ys1 XY[1,2]+(i-XY[1,1])*(XY[3,2]-XY[1,2])/ (XY[3,1]-XY[1,1])ys2 If ys1>ys2 Then ys1-1ys1 ys2+1ys2 ElseIf ys1ys2 Then ys1-1ys1 ys2+1ys2 ElseIf ys1