wip
This commit is contained in:
@@ -135,7 +135,6 @@ class RIXSgrating(QWidget):
|
||||
'r2':447,#distance grating detector
|
||||
'aa':22, #grating angle
|
||||
'cc':58, #detector angle
|
||||
#'geo':(8,8,5,5,1), # scaling: r1,r2,aa,bb,cc
|
||||
'szG':(200,5), #size VLS grating
|
||||
'szD':(150,5), #size detector
|
||||
'energy':300, # input energy in eV
|
||||
@@ -146,7 +145,7 @@ class RIXSgrating(QWidget):
|
||||
#p=self.palette()
|
||||
#p.setColor(self.backgroundRole(), QtCore.Qt.black)
|
||||
#self.setPalette(p)
|
||||
self.setGeometry(300, 300, 850, 800)
|
||||
self.setGeometry(300, 300, 1050, 800)
|
||||
self.setWindowTitle('RIXS grating')
|
||||
|
||||
#w.move(400,100)
|
||||
@@ -214,6 +213,7 @@ class RIXSgrating(QWidget):
|
||||
|
||||
def sldChanged(self,key,val,*args,**kwargs):
|
||||
print(key,val)
|
||||
p=self._param
|
||||
if key=='energy':
|
||||
app=QApplication.instance()
|
||||
wEnergy=self._wdGrpEnergy.findChild(QtGui.QLineEdit,'Energy')
|
||||
@@ -226,24 +226,22 @@ class RIXSgrating(QWidget):
|
||||
|
||||
wEnergy.setText(f'{val:.4g}')
|
||||
vlsg=app._vlsg
|
||||
(r1,r2,aa,bb,cc)=vlsg.energy2geometry(val)
|
||||
wR1.setText(f'{r1:.4g}')
|
||||
wR2.setText(f'{r2:.4g}')
|
||||
wAA.setText(f'{aa:.4g}')
|
||||
wBB.setText(f'{bb:.4g}')
|
||||
wCC.setText(f'{cc:.4g}')
|
||||
p=self._param
|
||||
(r1,r2,aa,bb,cc)=p['geo']=vlsg.energy2geometry(val)
|
||||
wR1.setText(f'{r1:.6g}')
|
||||
wR2.setText(f'{r2:.6g}')
|
||||
wAA.setText(f'{aa:.6g}')
|
||||
wBB.setText(f'{bb:.6g}')
|
||||
wCC.setText(f'{cc:.6g}')
|
||||
|
||||
p['r1']=r1
|
||||
p['r2']=r2
|
||||
p['aa']=(90-aa)
|
||||
p['bb']=(90-bb)
|
||||
p['r1']=r1/8
|
||||
p['r2']=r2/8
|
||||
p['aa']=(90-aa)*5
|
||||
p['bb']=(90-bb)*5
|
||||
p['cc']=(90-cc)
|
||||
else:
|
||||
self._param[key]=val
|
||||
|
||||
#print(v)
|
||||
|
||||
p[key]=val
|
||||
if 'geo' in p:
|
||||
del p['geo']
|
||||
self.update()
|
||||
|
||||
def paintEvent(self, e):
|
||||
@@ -291,7 +289,7 @@ class RIXSgrating(QWidget):
|
||||
qp.drawRect(int(-szG[0]/2), 0, szG[0], szG[1]) # grating
|
||||
qp.rotate(-bb)
|
||||
tf2=qp.transform()
|
||||
qp.drawLine(0,0,r2,0) #beam
|
||||
qp.drawLine(0,0,int(r2+szD[0]/2),0) #beam
|
||||
qp.translate(r2,0)
|
||||
qp.rotate(-cc)
|
||||
tf3=qp.transform()
|
||||
@@ -345,37 +343,51 @@ class RIXSgrating(QWidget):
|
||||
qp.setBrush(col)
|
||||
qp.drawPolygon(p0, p1, p2, p3)
|
||||
|
||||
#draw dimensions
|
||||
try:
|
||||
(vr1, vr2, vaa, vbb, vcc)=p['geo']
|
||||
vaa=90-vaa
|
||||
vbb=90-vbb
|
||||
except KeyError:
|
||||
vr1=r1; vr2=r2; vaa=aa; vbb=bb; vcc=cc
|
||||
|
||||
qp.setCompositionMode(QtGui.QPainter.CompositionMode_SourceOver)
|
||||
pen=QtGui.QPen(QtCore.Qt.red, 3, QtCore.Qt.SolidLine)
|
||||
pen=QtGui.QPen(QtCore.Qt.red, 1, QtCore.Qt.SolidLine)
|
||||
penTxt=QtGui.QPen(QtCore.Qt.yellow, 1, QtCore.Qt.SolidLine)
|
||||
qp.setPen(pen)
|
||||
p0=QtCore.QPointF(*tf0.map(-r1-10, +10))
|
||||
p1=QtCore.QPointF(*tf0.map(-r1-10, 50+w))
|
||||
p1=QtCore.QPointF(*tf0.map(-r1-10, 0+w))
|
||||
qp.drawLine(p0,p1)
|
||||
p2=QtCore.QPointF(*tf0.map(0, 0))
|
||||
p3=QtCore.QPointF(*tf0.map(0, 50+w))
|
||||
p3=QtCore.QPointF(*tf0.map(0, 0+w))
|
||||
qp.drawLine(p2,p3)
|
||||
p4=(p1+p3)/2
|
||||
qp.drawText(p4,f'R1={r1:.5g}mm')
|
||||
p5=QtCore.QPointF(*tf2.map(0, 50+w))
|
||||
p4=(p1+p3)/2 #text pos
|
||||
p5=QtCore.QPointF(*tf2.map(0, 0+w))
|
||||
qp.drawLine(p2,p5)
|
||||
p6=QtCore.QPointF(*tf2.map(r2, 0))
|
||||
p7=QtCore.QPointF(*tf2.map(r2, 50+w))
|
||||
p7=QtCore.QPointF(*tf2.map(r2, 0+w))
|
||||
qp.drawLine(p6,p7)
|
||||
p8=(p5+p7)/2
|
||||
qp.drawText(p8,f'R2={r2:.5g}mm')
|
||||
p8=(p5+p7)/2 #text pos
|
||||
|
||||
p9=QtCore.QPointF(*tf1.map(0, -w))
|
||||
qp.drawLine(p2,p9)
|
||||
s=50
|
||||
qp.drawArc(int(p2.x())-s, int(p2.y())-s, 2*s, 2*s, 180*16, int(aa*16))
|
||||
s1=s*np.cos(aa*np.pi/180); s2=s*np.sin(aa*np.pi/180)
|
||||
qp.drawText(p2+QtCore.QPointF(-s1,s2+20),f'aa={aa:.5g}°')
|
||||
qp.drawArc(int(p2.x())-s, int(p2.y())-s, 2*s, 2*s, int(aa*16), int(bb*16))
|
||||
qp.drawText(p2+QtCore.QPointF(s1,-s2+20),f'bb={bb:.5g}°')
|
||||
|
||||
qp.drawArc(int(p6.x())-s, int(p6.y())-s, 2*s, 2*s, int(180+aa+bb*16), int(cc*16))
|
||||
p10=QtCore.QPointF(*tf2.map(r2+20, 0))
|
||||
qp.drawText(p10,f'cc={cc:.5g}°')
|
||||
p10=QtCore.QPointF(*tf2.map(r2+20, 0)) #text pos
|
||||
|
||||
qp.setPen(penTxt)
|
||||
qp.drawText(p4+QtCore.QPointF(-40,-10),f'R1={vr1:.5g}mm')
|
||||
#qp.setTransform(QtGui.QTransform())
|
||||
qp.translate(p8); qp.rotate(-aa-bb)
|
||||
qp.drawText(-40,-10,f'R2={vr2:.5g}mm')
|
||||
qp.setTransform(QtGui.QTransform())
|
||||
qp.drawText(p2+QtCore.QPointF(-s1,s2+20),f'aa={vaa:.5g}°')
|
||||
qp.drawText(p2+QtCore.QPointF(s1,-s2+20),f'bb={vbb:.5g}°')
|
||||
qp.drawText(p10,f'cc={vcc:.5g}°')
|
||||
|
||||
#for i,p in enumerate((p0,p1,p2,p3,p4,p5,p6,p7,p8,p9)):
|
||||
# qp.drawText(p,f'P{i}')
|
||||
|
||||
Reference in New Issue
Block a user