#SingleInstance Force #Persistent CoordMode, Mouse, Screen SetBatchLines -1 Process,Priority,,R ; Make Gui's Gui,1:Add,Button,gCircle w130 h50,Circle Gui,1:Add,Button,gPolygon w130 h50,Polygon Gui,1:Add,Button,gSpiral w130 h50,Spiral Gui,2:Add,Text,,Radius: Gui,2:Add,Edit,vlen Limit4, Gui,2:Add,Button,gCircleOK,Draw! Gui,3:Add,Text,,Layer count: Gui,3:Add,Edit,vLcnt Limit5, Gui,3:Add,Text,ym,Narrowness (1 - 100): Gui,3:Add,Edit,vNarrow Limit3, Gui,3:Add,Button,gSpiralOk,Draw! Gui,4:Add,Text,,Outward radius: Gui,4:Add,Edit,vOrad Limit4, Gui,4:Add,Text,,`nInward radius: Gui,4:Add,Edit,vIrad Limit4, Gui,4:Add,Text,ym,Outward vectors (count): Gui,4:Add,Edit,vOvec Limit3, Gui,4:Add,Text,,`nInward vectors (count): Gui,4:Add,Edit,vIvec Limit3, Gui,4:Add,Text,ym,Angle: Gui,4:Add,Edit,vPang Limit4, Gui,4:Add,Button,gPolygonOk,Draw! ; main gui +1:: Gui,1:Show,,Draw return Circle: ; circle gui Gui,1:Submit Gui,2:Show,,Draw Circle return CircleOK: ; draw circle Gui,2:Submit BlockInput MouseMove Loop 361 { GetPosFromAngle(mx,my,A_ScreenWidth/2,A_ScreenHeight/2,len,A_Index) MouseMove,% mx,% my,0 if(A_Index=1) Send {LButton down} } Send {LButton up} BlockInput MouseMoveOff return Spiral: ; spiral gui Gui,1:Submit Gui,3:Show,,Draw Spiral return SpiralOK: ; draw spiral Gui,3:Submit ind:=0 BlockInput MouseMove MouseMove,% A_ScreenWidth/2,% A_ScreenHeight/2,0 Send {LButton down} Loop %Lcnt% { Loop 360 { ind++ GetPosFromAngle(mx,my,A_ScreenWidth/2,A_ScreenHeight/2,ind*(Narrow*0.01),A_Index) MouseMove,% mx,% my,0 } } Send {LButton up} BlockInput MouseMoveOff return Polygon: ; polygon gui Gui,1:Submit Gui,4:Show,,Draw Polygon return PolygonOk: ; draw polygon Gui,4:Submit if(Ovec+Ivec > 360){ msgbox,,Error,Can not have more than 360 vectors. return } ind:=0 BlockInput MouseMove GetPosFromAngle(mx,my,A_ScreenWidth/2,A_ScreenHeight/2,Orad,Pang) MouseMove,% mx,% my,0 Send {LButton down} Lpc:= Ovec + Ivec Ovec-- iys:=1 Loop % Lpc { ind+=360/Lpc GetPosFromAngle(mx,my,A_ScreenWidth/2,A_ScreenHeight/2,iys?Irad:Orad,ind+Pang) MouseMove,% mx,% my,0 Ivec-=iys ? 1 : 0 Ovec-=!iys ? 1 : 0 iys:=Ivec < 1 ? 0 : !iys Sleep 15 ; seems to be inconsistent during multiple runs without delay } Send {LButton up} BlockInput MouseMoveOff return +2:: ; stop drawing if(GetKeyState("LButton")) Send {LButton up} reload +3:: ; kill if(GetKeyState("LButton")) Send {LButton up} ExitApp ; ***function(s)*** GetPosFromAngle(ByRef x2,ByRef y2,x1,y1,len,ang){ ang := (ang-90) * 0.0174532925 x2 := x1 + len * cos(ang) y2 := y1 + len * sin(ang) }