Changeset 2476 for trunk/GSASIIphsGUI.py


Ignore:
Timestamp:
Sep 22, 2016 11:42:28 AM (7 years ago)
Author:
vondreele
Message:

Add new feature to structure plots - display an hkl plane or stack of planes with a phase offset.
fix lighting issues for planes/polygons

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r2475 r2476  
    38123812            'vdwScale':0.67,'ellipseProb':50,'sizeH':0.50,'unitCellBox':True,
    38133813            'showABC':True,'selectedAtoms':[],'Atoms':[],'oldxy':[],
    3814             'bondList':{},'viewDir':[1,0,0]}
     3814            'bondList':{},'viewDir':[1,0,0],'Plane':[[0,0,1],False,False,0.0,[255,255,0]]}
    38153815        V0 = np.array([0,0,1])
    38163816        V = np.inner(Amat,V0)
     
    38353835        if 'showRigidBodies' not in drawingData:
    38363836            drawingData['showRigidBodies'] = True
     3837        if 'Plane' not in drawingData:
     3838            drawingData['Plane'] = [[0,0,1],False,False,0.0,[255,255,0]]
    38373839        cx,ct,cs,ci = [0,0,0,0]
    38383840        if generalData['Type'] in ['nuclear','faulted',]:
     
    38473849                DrawAtomAdd(drawingData,atom)
    38483850            data['Drawing'] = drawingData
     3851        if len(drawingData['Plane']) < 5:
     3852            drawingData['Plane'].append([255,255,0])
    38493853           
    38503854    def DrawAtomAdd(drawingData,atom):
     
    49824986            radSizer.Add(radFactor,0,WACV)
    49834987            return radSizer
     4988           
     4989        def PlaneSizer():
     4990           
     4991            def OnPlane(event):
     4992                event.Skip()
     4993                vals = plane.GetValue().split()
     4994                try:
     4995                    hkl = [int(vals[i]) for i in range(3)]
     4996                    if not np.any(np.array(hkl)):       #can't be all zeros!
     4997                        raise ValueError
     4998                except (ValueError,IndexError):
     4999                    hkl = drawingData['Plane'][0]
     5000                drawingData['Plane'][0] = hkl
     5001                plane.SetValue('%3d %3d %3d'%(hkl[0],hkl[1],hkl[2]))
     5002                G2plt.PlotStructure(G2frame,data)
     5003               
     5004            def OnShowPlane(event):
     5005                drawingData['Plane'][1] = showPlane.GetValue()
     5006                G2plt.PlotStructure(G2frame,data)
     5007               
     5008            def OnShowStack(event):
     5009                drawingData['Plane'][2] = showStack.GetValue()
     5010                G2plt.PlotStructure(G2frame,data)
     5011               
     5012            def OnPhase(event):
     5013                event.Skip()
     5014                try:
     5015                    val = float(phase.GetValue())
     5016                except ValueError:
     5017                    val = drawingData['Plane'][3]
     5018                drawingData['Plane'][3] = val
     5019                phase.SetValue('%.2f'%(val))
     5020                G2plt.PlotStructure(G2frame,data)
     5021           
     5022            def OnPlaneColor(event):
     5023                drawingData['Plane'][4] = event.GetValue()
     5024                G2plt.PlotStructure(G2frame,data)
     5025
     5026            planeSizer = wx.BoxSizer(wx.VERTICAL)
     5027            planeSizer1 = wx.BoxSizer(wx.HORIZONTAL)
     5028            planeSizer1.Add(wx.StaticText(drawOptions,label=' Plane: '),0,WACV)
     5029            H = drawingData['Plane'][0]
     5030            plane = wx.TextCtrl(drawOptions,value='%3d %3d %3d'%(H[0],H[1],H[2]),
     5031                style=wx.TE_PROCESS_ENTER)
     5032            plane.Bind(wx.EVT_TEXT_ENTER,OnPlane)
     5033            plane.Bind(wx.EVT_KILL_FOCUS,OnPlane)
     5034            planeSizer1.Add(plane,0,WACV)
     5035            showPlane = wx.CheckBox(drawOptions,label=' Show plane?')
     5036            showPlane.SetValue(drawingData['Plane'][1])
     5037            showPlane.Bind(wx.EVT_CHECKBOX, OnShowPlane)
     5038            planeSizer1.Add(showPlane,0,WACV)
     5039            showStack = wx.CheckBox(drawOptions,label=' As a stack?')
     5040            showStack.SetValue(drawingData['Plane'][2])
     5041            showStack.Bind(wx.EVT_CHECKBOX, OnShowStack)
     5042            planeSizer1.Add(showStack,0,WACV)
     5043            planeSizer2 = wx.BoxSizer(wx.HORIZONTAL)
     5044            planeSizer2.Add(wx.StaticText(drawOptions,label=' Phase shift (deg): '),0,WACV)
     5045            phase = wx.TextCtrl(drawOptions,value='%.2f'%(drawingData['Plane'][3]),
     5046                style=wx.TE_PROCESS_ENTER)
     5047            phase.Bind(wx.EVT_TEXT_ENTER,OnPhase)
     5048            phase.Bind(wx.EVT_KILL_FOCUS,OnPhase)
     5049            planeSizer2.Add(phase,0,WACV)
     5050            planeSizer2.Add(wx.StaticText(drawOptions,-1,' Plane color: '),0,WACV)
     5051            planeColor = wcs.ColourSelect(drawOptions, -1,colour=drawingData['Plane'][4],size=wx.Size(25,25))
     5052            planeColor.Bind(wcs.EVT_COLOURSELECT, OnPlaneColor)
     5053            planeSizer2.Add(planeColor,0,WACV)
     5054            planeSizer.Add(planeSizer1)
     5055            planeSizer.Add(planeSizer2)
     5056            return planeSizer
     5057           
    49845058
    49855059        # UpdateDrawOptions exectable code starts here
     
    50055079        mainSizer.Add((5,5),0)
    50065080        mainSizer.Add(RadSizer(),0,)
     5081        mainSizer.Add((5,5),0)
     5082        mainSizer.Add(PlaneSizer(),0,)
    50075083        SetPhaseWindow(G2frame.dataFrame,drawOptions,mainSizer)
    50085084
Note: See TracChangeset for help on using the changeset viewer.