-- Zigzag... -- 1 Oct 96, vs/rs -- Mit diesem Skript wird eine Linien in eine Zickzacklinie -- transformiert, wobei Linienstärke und Farbe erhalten bleiben. getselectlist >> nObj,z,cType,... if not(nObj,cType = 1,3) // One Line Selected message "Wählen Sie nur eine Linie." return endif nZZ,aZZ="","" repeat goodData=1 getplatform >> platform if platform=MACINTOSH dialogbegin -125,-100,125,105,"Zickzacklinie" pushbutton 30,162,95,188,"OK" pushbutton 155,160,220,190,"Abbrechen" static 12,12,105,55,"Kantenanzahl" edit 110,12,150,30,nZZ static 12,60,105,100,"Winkel" edit 110,72,150,90,aZZ static 170,72,240,90,"Grad" checkbox 15,105,200,125,"Geschlossenes Polygon.",0 checkbox 15,130,200,150,"Ankerlinie löschen.",1 dialogend >> buttonHit,...,...,...,nZZ,..,aZZ,...,closePoly,delLine if (buttonHit="Abbrechen")+empty(buttonHit) return endif else dialogbegin -60,-60,60,40,"Zickzacklinie" pushbutton 10,80,55,95,"OK" pushbutton 60,80,110,95,"Abbrechen" static 5,5,50,25,"Kantenanzahl" edit 55,5,75,15,nZZ static 5,30,72,50,"Winkel" edit 55,30,75,40,aZZ static 76,30,100,50,"Grad" checkbox 15,51,110,61,"Geschlossenes Polygon.",0 checkbox 15,62,100,72,"Ankerlinie löschen.",1 dialogend >> buttonHit,...,...,...,nZZ,..,aZZ,...,closePoly,delLine if (buttonHit="Abbrechen")+empty(buttonHit) return endif endif if not ( IsNumber(Val(nZZ))*IsNumber(Val(aZZ))*not(aZZ="")*not(nZZ="") ) message "Sie müssen Zahlen eingeben." message " Prüfen Sie die Eingabe. " goodData=0 endif if IsNumber(Val(nZZ))*IsNumber(Val(aZZ))*not(aZZ="")*not(nZZ="") azz = Val(aZZ) if abs(azz)>75 message "Winkel darf 75 Grad nicht überschreiten" goodData=0 elseif abs(azz)<5 message "Winkel darf 5 Grad nicht unterschreiten." goodData=0 endif endif until goodData nZZ,aZZ=Val(nZZ),Val(aZZ) nZZ=trunc(nZZ) getobjectloc 5 >> Begin.X , Begin.Y getobjectloc 8 >> End.X , End.Y X , Y = End.X - Begin.X , End.Y - Begin.Y L = sqrt( X*X + Y*Y ) Normal.X , Normal.Y = Y*sin(aZZ)/cos(aZZ) , -X*sin(aZZ)/cos(aZZ) Normal.X , Normal.Y = Normal.X*0.5/nZZ , Normal.Y*0.5/nZZ getlinestyle >> linestyle getcolor >> linecolor getfillandline >> lineFAL deselect getfillandline >> defFAL // initiating first 3 vertices X1 = Begin.X+X*0.5/nZZ+Normal.X Y1 = Begin.Y+Y*0.5/nZZ+Normal.Y X2 = Begin.X+X*1.5/nZZ-Normal.X Y2 = Begin.Y+Y*1.5/nZZ-Normal.Y createpolygon 3,Begin.X,Begin.Y,X1,Y1,X2,Y2 // extrapolating polygon loop n=3,nZZ e = 2*(n%2)-1 appendvertices 1,Begin.X+X*(n-0.5)/nZZ+e*Normal.X,Begin.Y+Y*(n-0.5)/nZZ+e*Normal.Y endloop if closePoly appendvertices 2,End.X,End.Y,Begin.X,Begin.Y else appendvertices 1,End.X,End.Y endif // opened issue: replace defFAL(1) with 0 ? fillandline defFAL(1),defFAL(2),lineFAL(3),lineFAL(4),lineFAL(5),lineFAL(6),lineFAL(7),lineFAL(8),lineFAL(9),lineFAL(10),defFAL(11) if delLine select z clear endif select last,left,last,top return