This commit is contained in:
2022-11-08 08:29:12 +01:00
parent 93a1501a7b
commit 9781ebc294

View File

@@ -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}')