Changeset 4614
- Timestamp:
- Oct 21, 2020 5:16:55 PM (2 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIImath.py
r4598 r4614 995 995 a,v = Q2AV(oriQ) 996 996 symaxis = np.array(symAxis) 997 xformAng = np.arccos(np.dot(v,symaxis)) 997 vdotsym = min(1.0,max(-1.0,np.vdot(v,symaxis))) 998 xformAng = np.arccos(vdotsym) 998 999 xformVec = np.cross(symaxis,v) 999 1000 Q = prodQQ(oriQ,AV2Q(xformAng,xformVec)) … … 1035 1036 a,v = Q2AV(RBObj['Orient'][0]) 1036 1037 symaxis = np.array(RBObj.get('symAxis')) 1037 xformAng = np.arccos(np.dot(v,symaxis)) 1038 vdotsym = min(1.0,max(-1.0,np.vdot(v,symaxis))) 1039 xformAng = np.arccos(vdotsym) 1038 1040 xformVec = np.cross(symaxis,v) 1039 1041 Q = prodQQ(RBObj['Orient'][0],AV2Q(xformAng,xformVec)) -
trunk/GSASIIphsGUI.py
r4613 r4614 10356 10356 return 10357 10357 dlg.Destroy() 10358 Mult = G2spc.SytSym(rbObj['Orig'][0],data['General']['SGData'])[1] 10358 10359 Ids = [] 10359 10360 updateNeeded = False … … 10365 10366 x,y,z = line[2:5] 10366 10367 AtomAdd(x,y,z,El=elem,Name=lbl,update=False) 10368 atomData[nextNum][6] = Mult/atomData[nextNum][8] 10367 10369 Ids.append(atomData[nextNum][-1]) 10368 10370 updateNeeded = True 10369 10371 else: 10370 10372 atomData[line[5]][cx:cx+3] = line[2:5] 10373 atomData[line[5]][6] = Mult/atomData[line[5]][8] 10371 10374 Ids.append(line[11]) 10372 10375 if updateNeeded: … … 10480 10483 G2plt.PlotStructure(G2frame,data,False,UpdateTable) 10481 10484 UpdateTable() 10485 10486 def UpdateSytSym(*args,**kwargs): 10487 10488 Sytsym,Mult = G2spc.SytSym(rbObj['Orig'][0],data['General']['SGData'])[:2] 10489 sytsymtxt.SetLabel('Origin site symmetry: %s, multiplicity: %d '%(Sytsym,Mult)) 10490 UpdateTablePlot(args,kwargs) 10482 10491 10483 10492 def getSelectedAtoms(): … … 10599 10608 G2plt.PlotStructure(G2frame,data,False,UpdateTable) 10600 10609 RigidBodies.SetFocus() # make sure tab presses go to panel 10610 10601 10611 def Sticks(event): 10602 10612 '''Set all draw atoms in crystal structure to stick … … 10605 10615 FindBondsDraw(data) 10606 10616 G2plt.PlotStructure(G2frame,data,False,UpdateTable) 10607 RigidBodies.SetFocus() # make sure tab presses go to panel 10617 RigidBodies.SetFocus() # make sure tab presses go to panel 10618 10608 10619 def OnRowSelect(event): 10609 10620 '''Respond to the selection of a rigid body atom. … … 10620 10631 G2plt.PlotStructure(G2frame,data,False,UpdateTable) 10621 10632 misc['showSelect'].SetLabelText(cryatom) 10633 10622 10634 def OnSymRadioSet(event): 10623 10635 '''Set the symmetry axis for the body as … … 10665 10677 atNames = data['testRBObj']['atNames'] 10666 10678 topSizer = wx.BoxSizer(wx.HORIZONTAL) 10667 topSizer.Add(wx.StaticText(RigidBodies,wx.ID_ANY, 10668 'Locating rigid body : '+rbName), 0, WACV) 10679 topSizer.Add(wx.StaticText(RigidBodies,label='Locating rigid body : '+rbName), 0, WACV) 10669 10680 topSizer.Add((10,-1),0) 10670 topSizer.Add(wx.StaticText(RigidBodies,wx.ID_ANY, 10671 'Display crystal structure as:'), 0, WACV) 10672 btn = wx.Button(RigidBodies,wx.ID_ANY,"Ball && Sticks") 10681 topSizer.Add(wx.StaticText(RigidBodies,label='Display crystal structure as:'), 0, WACV) 10682 btn = wx.Button(RigidBodies,label="Ball && Sticks") 10673 10683 btn.Bind(wx.EVT_BUTTON, BallnSticks) 10674 10684 topSizer.Add(btn) 10675 btn = wx.Button(RigidBodies, wx.ID_ANY,"Sticks")10685 btn = wx.Button(RigidBodies,label="Sticks") 10676 10686 btn.Bind(wx.EVT_BUTTON, Sticks) 10677 10687 topSizer.Add(btn) … … 10679 10689 mainSizer.Add((-1,5),0) 10680 10690 OriSizer = wx.BoxSizer(wx.HORIZONTAL) 10681 OriSizer.Add(wx.StaticText(RigidBodies, wx.ID_ANY,'Origin: '),0,WACV)10691 OriSizer.Add(wx.StaticText(RigidBodies,label='Origin: '),0,WACV) 10682 10692 Xsizers = [] 10683 10693 for ix in range(3): 10684 OriSizer.Add(wx.StaticText(RigidBodies,wx.ID_ANY,RBdirlbl[ix]), 10685 0,WACV,4) 10694 OriSizer.Add(wx.StaticText(RigidBodies,label=RBdirlbl[ix]),0,WACV,4) 10686 10695 origX = G2G.ValidatedTxtCtrl(RigidBodies,rbObj['Orig'][0],ix,nDig=(10,5), 10687 xmin=-1.5,xmax=1.5,typeHint=float,OnLeave=Update TablePlot)10696 xmin=-1.5,xmax=1.5,typeHint=float,OnLeave=UpdateSytSym) 10688 10697 OriSizer.Add(origX,0,WACV) 10689 10698 Xsizers.append(origX) … … 10694 10703 fixOrig = G2G.G2CheckBox(RigidBodies,'Lock',rbObj,'fixOrig') 10695 10704 OriSizer.Add(fixOrig,0,WACV,10) 10696 10697 10705 mainSizer.Add(OriSizer) 10698 OriSizer.Add((5,0),) 10699 OriSizer = wx.FlexGridSizer(0,5,5,5) 10706 Sytsym,Mult = G2spc.SytSym(rbObj['Orig'][0],data['General']['SGData'])[:2] 10707 sytsymtxt = wx.StaticText(RigidBodies,label='Origin site symmetry: %s, multiplicity: %d '%(Sytsym,Mult)) 10708 mainSizer.Add(sytsymtxt,0,WACV) 10709 OriSizer1 = wx.FlexGridSizer(0,5,5,5) 10700 10710 if len(atomData): 10701 10711 choice = list(atNames[0].keys()) 10702 10712 choice.sort() 10703 10713 G2frame.testRBObjSizers.update({'Xsizers':Xsizers}) 10704 mainSizer.Add(OriSizer )10714 mainSizer.Add(OriSizer1) 10705 10715 mainSizer.Add((5,5),0) 10706 OriSizer = wx.BoxSizer(wx.HORIZONTAL)10716 OriSizer2 = wx.BoxSizer(wx.HORIZONTAL) 10707 10717 if 'OrientVec' not in rbObj: rbObj['OrientVec'] = [0.,0.,0.,0.] 10708 10718 rbObj['OrientVec'][0],V = G2mth.Q2AVdeg(rbObj['Orient'][0]) 10709 10719 rbObj['OrientVec'][1:] = np.inner(Bmat,V) 10710 OriSizer .Add(wx.StaticText(RigidBodies,wx.ID_ANY,'Orientation azimuth: '),0,WACV)10720 OriSizer2.Add(wx.StaticText(RigidBodies,label='Orientation azimuth: '),0,WACV) 10711 10721 OrientVecSiz = [] 10712 10722 OrientVecSiz.append(G2G.ValidatedTxtCtrl(RigidBodies,rbObj['OrientVec'],0,nDig=(10,2), 10713 10723 xmin=0.,xmax=360.,typeHint=float,OnLeave=UpdateOrientation)) 10714 OriSizer .Add(OrientVecSiz[-1],0,WACV)10724 OriSizer2.Add(OrientVecSiz[-1],0,WACV) 10715 10725 azSlide = wx.Slider(RigidBodies,style=wx.SL_HORIZONTAL,value=int(rbObj['OrientVec'][0]*10.),size=(200,25)) 10716 10726 azSlide.SetRange(0,3600) 10717 10727 azSlide.Bind(wx.EVT_SLIDER, OnAzSlide) 10718 OriSizer .Add(azSlide,0,WACV)10719 mainSizer.Add(OriSizer )10720 OriSizer = wx.BoxSizer(wx.HORIZONTAL)10721 OriSizer .Add(wx.StaticText(RigidBodies,wx.ID_ANY,'Orientation vector'),0,WACV)10728 OriSizer2.Add(azSlide,0,WACV) 10729 mainSizer.Add(OriSizer2) 10730 OriSizer3 = wx.BoxSizer(wx.HORIZONTAL) 10731 OriSizer3.Add(wx.StaticText(RigidBodies,label='Orientation vector'),0,WACV) 10722 10732 for ix,lbl in enumerate('xyz'): 10723 OriSizer .Add(wx.StaticText(RigidBodies,wx.ID_ANY,' '+lbl+': '),0,WACV)10733 OriSizer3.Add(wx.StaticText(RigidBodies,label=' '+lbl+': '),0,WACV) 10724 10734 OrientVecSiz.append(G2G.ValidatedTxtCtrl(RigidBodies,rbObj['OrientVec'],ix+1,nDig=(10,4), 10725 10735 xmin=-1.,xmax=1.,typeHint=float,OnLeave=UpdateOrientation)) 10726 OriSizer .Add(OrientVecSiz[-1],0,WACV)10736 OriSizer3.Add(OrientVecSiz[-1],0,WACV) 10727 10737 OrientVecSiz.append(azSlide) 10728 OriSizer .Add(wx.StaticText(RigidBodies,wx.ID_ANY,' (frac coords)'),0,WACV)10738 OriSizer3.Add(wx.StaticText(RigidBodies,label=' (frac coords)'),0,WACV) 10729 10739 G2frame.testRBObjSizers.update({'OrientVecSiz':OrientVecSiz}) 10730 mainSizer.Add(OriSizer )10740 mainSizer.Add(OriSizer3) 10731 10741 mainSizer.Add((5,5),0) 10732 OriSizer = wx.BoxSizer(wx.HORIZONTAL) 10733 OriSizer.Add(wx.StaticText(RigidBodies,wx.ID_ANY, 10734 'Rigid body symmetry axis: '),0, WACV) 10742 OriSizer4 = wx.BoxSizer(wx.HORIZONTAL) 10743 OriSizer4.Add(wx.StaticText(RigidBodies,label='Rigid body symmetry axis: '),0, WACV) 10735 10744 choices = ['None']+RBdirlbl 10736 symRadioSet = wx.RadioBox(RigidBodies, wx.ID_ANY,choices=choices)10745 symRadioSet = wx.RadioBox(RigidBodies,choices=choices) 10737 10746 symRadioSet.Bind(wx.EVT_RADIOBOX, OnSymRadioSet) 10738 OriSizer .Add(symRadioSet)10739 mainSizer.Add(OriSizer )10747 OriSizer4.Add(symRadioSet) 10748 mainSizer.Add(OriSizer4) 10740 10749 mainSizer.Add((5,5),0) 10741 10750 RefSizer = wx.FlexGridSizer(0,7,5,5) … … 10753 10762 else: 10754 10763 torName += data['testRBObj']['rbAtTypes'][item]+str(item)+' ' 10755 TorSizer.Add(wx.StaticText(RigidBodies, wx.ID_ANY,'Side chain torsion for rb seq: '+torName),0,WACV)10764 TorSizer.Add(wx.StaticText(RigidBodies,label='Side chain torsion for rb seq: '+torName),0,WACV) 10756 10765 torSlide = wx.Slider(RigidBodies,style=wx.SL_HORIZONTAL) 10757 10766 torSlide.SetRange(0,3600) … … 10759 10768 torSlide.Bind(wx.EVT_SLIDER, OnTorSlide) 10760 10769 TorSizer.Add(torSlide,1,wx.EXPAND|wx.RIGHT) 10761 TorSizer.Add(wx.StaticText(RigidBodies, wx.ID_ANY,' Angle: '),0,WACV)10770 TorSizer.Add(wx.StaticText(RigidBodies,label=' Angle: '),0,WACV) 10762 10771 ang = G2G.ValidatedTxtCtrl(RigidBodies,torsion,0,nDig=(8,3),typeHint=float,OnLeave=OnTorAngle) 10763 10772 Indx[torSlide.GetId()] = [t,ang] … … 10766 10775 mainSizer.Add(TorSizer,0,wx.EXPAND|wx.RIGHT) 10767 10776 else: 10768 mainSizer.Add(wx.StaticText(RigidBodies, wx.ID_ANY,'No side chain torsions'),0)10769 OkBtn = wx.Button(RigidBodies, wx.ID_ANY,"Add")10777 mainSizer.Add(wx.StaticText(RigidBodies,label='No side chain torsions'),0) 10778 OkBtn = wx.Button(RigidBodies,label="Add") 10770 10779 OkBtn.Bind(wx.EVT_BUTTON, OnAddRB) 10771 CancelBtn = wx.Button(RigidBodies, wx.ID_ANY,'Cancel')10780 CancelBtn = wx.Button(RigidBodies,label='Cancel') 10772 10781 CancelBtn.Bind(wx.EVT_BUTTON, OnCancel) 10773 10782 btnSizer = wx.BoxSizer(wx.HORIZONTAL) … … 10784 10793 data['testRBObj']['availAtoms'] = [' '] + assignable 10785 10794 if len(assignable) == 0: 10786 mainSizer.Add(wx.StaticText(RigidBodies, wx.ID_ANY,10795 mainSizer.Add(wx.StaticText(RigidBodies,label= 10787 10796 'No matching atoms between rigid body and crystal.'+ 10788 10797 ' All rigid body atoms will be added to structure.'),0) … … 10795 10804 G2plt.PlotStructure(G2frame,data,True,UpdateTable) 10796 10805 10797 mainSizer.Add(wx.StaticText(RigidBodies, wx.ID_ANY,10806 mainSizer.Add(wx.StaticText(RigidBodies,label= 10798 10807 'Match between atoms in rigid body and crystal.'+ 10799 10808 ' Use assignments to align bodies.'),0) … … 10843 10852 btnSizer = wx.BoxSizer(wx.VERTICAL) 10844 10853 hSizer = wx.BoxSizer(wx.HORIZONTAL) 10845 hSizer.Add(wx.StaticText(RigidBodies, wx.ID_ANY,'Crystal Highlight: '))10854 hSizer.Add(wx.StaticText(RigidBodies,label='Crystal Highlight: ')) 10846 10855 misc['showSelect'] = G2G.G2ChoiceButton(RigidBodies, 10847 10856 data['testRBObj']['availAtoms'],None,None,showAtom,0,showCryAtom,size=(75,-1)) … … 10849 10858 btnSizer.Add(hSizer) 10850 10859 btnSizer.Add((-1,20)) 10851 btnSizer.Add(wx.StaticText(RigidBodies, wx.ID_ANY,'Actions with assigned\natom(s)...'),0,wx.ALL)10860 btnSizer.Add(wx.StaticText(RigidBodies,label='Actions with assigned\natom(s)...'),0,wx.ALL) 10852 10861 btnSizer.Add((-1,10)) 10853 btn = wx.Button(RigidBodies, wx.ID_ANY,'Update Assignments')10862 btn = wx.Button(RigidBodies,label='Update Assignments') 10854 10863 btn.Bind(wx.EVT_BUTTON,UpdateTable) 10855 10864 btnSizer.Add(btn,0,wx.ALIGN_CENTER) 10856 10865 btnSizer.Add((-1,10)) 10857 10866 10858 btn = wx.Button(RigidBodies, wx.ID_ANY,'Set Origin')10867 btn = wx.Button(RigidBodies,label='Set Origin') 10859 10868 btn.Bind(wx.EVT_BUTTON,onSetOrigin) 10860 10869 btnSizer.Add(btn,0,wx.ALIGN_CENTER) 10861 10870 btnSizer.Add((-1,5)) 10862 btn = wx.Button(RigidBodies, wx.ID_ANY,'Set Orientation')10871 btn = wx.Button(RigidBodies,label='Set Orientation') 10863 10872 btn.Bind(wx.EVT_BUTTON,onFitOrientation) 10864 10873 btnSizer.Add(btn,0,wx.ALIGN_CENTER) 10865 10874 btnSizer.Add((-1,5)) 10866 btn = wx.Button(RigidBodies, wx.ID_ANY,'Set both')10875 btn = wx.Button(RigidBodies,label='Set both') 10867 10876 btn.Bind(wx.EVT_BUTTON,onFitBoth) 10868 10877 btnSizer.Add(btn,0,wx.ALIGN_CENTER) … … 11806 11815 generalData = data['General'] 11807 11816 startDmin = generalData['Pawley dmin'] 11808 genDlg = wx.Dialog(G2frame, wx.ID_ANY,'Set Pawley Parameters',11817 genDlg = wx.Dialog(G2frame,label='Set Pawley Parameters', 11809 11818 style=wx.DEFAULT_DIALOG_STYLE) 11810 11819 mainSizer = wx.BoxSizer(wx.VERTICAL)
Note: See TracChangeset
for help on using the changeset viewer.