diff --git a/python/shapepath.py b/python/shapepath.py index 73debc1..18928eb 100755 --- a/python/shapepath.py +++ b/python/shapepath.py @@ -1031,6 +1031,93 @@ enable plc 2 vsy=py/(pt2pt_time)*scale*CoordFeedTime # scaling for Deltatau #variables r,x0,y0,n,dx,dy,x1,y1,t,vx,vy=map(lambda x: f'L{x}',range(11)) + + +# replace: [^{](x|y|x0|y0|cx|cy|x0|y0|n|dx|dy|vsx|vsy|vx|vy) -> {\1} + prg+=f'''\ + g=kwargs['grid'] + ox,oy=g['pos'] #origin position in um (or counts if scaled) + px,py=g['pitch'] #pitch to next position in um (or 1 if scaled) + nx,ny=g['count'] #total count of wells + sx,sy=kwargs['ssz'] #section size (in wells) + tx,ty=nx//sx,ny//sy #total sections + + k=-1 # key position + cx,cy=0,0 # section counter + x0,y0,n=0,0,0 # counter well in region + dx,dy=0,1 # motion pitch + vsx=vsy=1 # scaled velocity + vx,vy=0,vsy # scaled velocity + mv=list() + while(True): + if cy%2==0: # even rows + x=sx*cx+x0;y=sy*cy+y0 + else: # odd rows + x=(tx-cx)*sx-x0-1;y=sy*cy+y0 + vx=-vx + x0+=dx;y0+=dy + print(f'X{x}:{vx} Y{y}:{vy} ({k}|{dx}|{dy}|{n})') + mv.append((x+.1*n,y+.1*n,n)) + self.updatePlt(mv,vx,vy) + if k>=0: #if keypoint not directly followed by an other keypoint, define future velocity + if k in (0,4): + vx,vy=0,vsy + elif k==2: + vx,vy=0,-vsy + elif k==5: + vx,vy=-vsx,0 + elif k==6: + n+=1 + elif k==7: + print('next h section') + cx+=1 + x0,y0,n,dx,dy=0,0,0,0,0 + elif k==8: + print('next v section') + cx=0;cy+=1 + x0,y0,n,dx,dy=0,0,0,0,0 + if cy>=ty: + print('finished whole grid') + break # + else: + raise ValueError('should never happened') + print(f'vx|vy after keypoint {k}: ({vx}|{vy})') + k=-1 + if y0==sy-1: + if dy==1: #(1) + dx,dy=1,0 + vx,vy=vsx/2,vsy/2 + else: + k,dx,dy=2,0,-1#(2) + vx,vy=vsx/2,-vsy/2 + elif y0==1 and x0>0 and x0