diff --git a/pyqtUsrObj.py b/pyqtUsrObj.py index 3c17aa0..0b53001 100644 --- a/pyqtUsrObj.py +++ b/pyqtUsrObj.py @@ -518,21 +518,13 @@ class FixTargetFrame(UsrROI): def get_scan_param(self): 'returns scan parameters for scanning with deltatau. the format is as used for shapepath' - scan=1 # snake motion Y fast, X slow (default) grid=self._dscr['grid'] - self._dscr['size'] - cnt =np.array(grid['count'],np.int32) - xx, yy=np.meshgrid(range(cnt[0]), range(cnt[1])) - if scan==0: # snake motion X fast, Y slow - for i in range(1,cnt[1],2): - xx[i]=xx[i][::-1] - else: # scan==1 # snake motion Y fast, X slow (default) - xx=xx.T - yy=yy.T - for i in range(1, cnt[0], 2): - yy[i]=yy[i][::-1] - - pts=np.array([xx.reshape(-1), yy.reshape(-1)], dtype=np.float64).transpose() #*pitch + use_trf=self._param.get('use_trf', True) # do not use coordinate transformation + mode=self._param.get('mode',1) + cnt=np.array(grid['count'], np.int32) + num_pts=cnt.prod() + param={'num_pts':num_pts} + param.update(self._param) # TODO: simplify !!! t=self.transform() #obj_info(t) @@ -549,9 +541,32 @@ class FixTargetFrame(UsrROI): trf2*=np.asmatrix(((1000, 0, 0), (0, 1000, 0), (0, 0, 1))) trf3=np.asmatrix(((pitch[0], 0, 0), (0, pitch[1], 0), (pos[0], pos[1], 1))) trf=(trf3*trf2)[:, :2] - param={'grid':grid, 'points':pts, 'trf':trf} - param.update(self._param) + if mode in (1,3): # needs all points, not grid + scan=1 # snake motion Y fast, X slow (default) + xx, yy=np.meshgrid(range(cnt[0]), range(cnt[1])) + if scan==0: # snake motion X fast, Y slow + for i in range(1,cnt[1],2): + xx[i]=xx[i][::-1] + else: # scan==1 # snake motion Y fast, X slow (default) + xx=xx.T + yy=yy.T + for i in range(1, cnt[0], 2): + yy[i]=yy[i][::-1] + + pts=np.array([xx.reshape(-1), yy.reshape(-1)], dtype=np.float64).transpose() #*pitch + + if not use_trf: + pts=(np.hstack((pts, np.ones((pts.shape[0], 1))))*trf).A + param['trf']=trf + param['points']=pts + else: + if use_trf: + param.update({'grid':grid, 'trf':trf}) + else: + g=grid.copy() #has not be tested ! + g['pos']=tuple((np.array((0,0,1))*trf).A.reshape(-1).tolist()) + param.update({'grid':p, 'trf':trf}) return param diff --git a/swissmx.py b/swissmx.py index 3a6c690..b9b8db8 100755 --- a/swissmx.py +++ b/swissmx.py @@ -1535,11 +1535,6 @@ class WndSwissMx(QMainWindow, Ui_MainWindow): except AttributeError as e: _log.warning(f'no scan parameters for object->skipped:{go}') continue - trf=np.asmatrix(param['trf']) - p=param['points'] - p=(np.hstack((p,np.ones((p.shape[0],1))))*trf).A - param['pts_trf']=p # transformed points in um motor coordinates - param['num_pts']=p.shape[0] vb=self.vb grp=self._goTracked mft=self._moduleFixTarget @@ -2357,10 +2352,6 @@ object settings: use_trf=kwargs.get('use_trf', True) # do not use coordinate transformation if not 'mode' in kwargs: kwargs['mode']=1 - if not use_trf: - trf=kwargs.pop('trf') - points=kwargs['points'] - kwargs['points']=kwargs.pop('pts_trf') sp.setup_sync(verbose=sp.verbose&0x40, timeOfs=dt_misc['time_ofs'], timeCor=dt_misc['time_cor']) dlg.setLabelText("Download motion program");dlg+=5