Exemplo n.º 1
0
	def getGroup(self, name=None):
		e = self.getPlotTargets()
		g={}
		for x in e:
			gns=cve.getDisplayGroup(x,False)
			for gn in gns:
				if not g.has_key(gn):
					g[gn]=[]
				g[gn].append(x)
		if name:
			return g.get(name)
		if not g:
			self.report("No Groups")
			gn=None
		elif len(g)==1:
			gn=g.keys()[0]
		else:
			l = self.askParam([{"Name":"Which Group",
							"Type":"List",
							"Value":g.keys()}])
			if l:
				gn=l[0]
			else:
				gn=None
		return gn
Exemplo n.º 2
0
def highlightEachGroup(self):
	for pn in self.graph.plots.keys():
		c=self.graph.plots[pn]['color']
		d=self.graph.plots[pn]['data'][:,3].copy()
		self.graph.plots[pn]['color']=[1.0,1.0,1.0]
		self.graph.plots[pn]['data'][:,3]=maximum(4, d*3)
		self.graph.recalc(pn)
		self.graph.OnDraw(pn)
		o=self.graph.modelRefs[pn]['mien.nmpml']
		ssn= getDisplayGroup(o) or o.name()
		self.graph.screenShot(ssn+'highlight.bmp')
		self.graph.plots[pn]['color']=c
		self.graph.plots[pn]['data'][:,3]=d
		self.graph.recalc(pn)
Exemplo n.º 3
0
	def colorGroup(self, gn, col, hide=False, draw=True):
		#print gn, col, hide
		col=convertColor(col, 'gl')
		cn=convertColor(col, 'py')
		for name in self.plots.keys():
			try:
				mr=self.modelRefs[name].get('mien.nmpml')
			except:
				continue
			if gn in cve.getDisplayGroup(mr, False):
				self.plots[name]['color']=col
				mr.setAttrib('color', cn, True)
				self.recalc(name)
				self.plots[name]["hide"]=hide
		if draw:	
			self.OnDraw()	
Exemplo n.º 4
0
	def onNewDoc(self):
		e = self.getPlotTargets(False)
		gcol={}
		for el in e:
			dg=cve.getDisplayGroup(el)
			if dg and not el.attrib('color', True):
				if not gcol.has_key(dg):
					gcol[dg]=self.graph.getNewColor(used=gcol.values())
				col=convertColor(gcol[dg], 'py')
				grp = self.document.getElements("Group", dg)
				if grp:
					grp[0].setAttrib('color', col)
				else:
					el.setAttrib('color', col)
		self.addAll()
		self.graph.stdView()	
		showDefault(self)
Exemplo n.º 5
0
	def selectNearest(self, event=None):
		#fids=[e for e in self.getVisible() if e.__tag__=='Fiducial']
		fids=[e for e in self.getVisible()]
		closest=None
		pt=self.graph.findMouse(event.GetX(), event.GetY())
		for fid in fids:
			pts=fid.getPoints()
			diams=pts[:,3]
			pts=pts[:,:3]-pt
			depths=dot(pts, self.graph.forward)
			inrange=nonzero1d(logical_and(depths>0, depths<self.graph.depthoffield))
			if inrange.shape[0]==0:
				continue
			depths=take(depths, inrange, 0)
			dists=eucd(take(pts, inrange, 0), array([0,0,0.0]))-depths
			top=argmin(dists)
			dmin=dists[top]
			top=inrange[top]
			if not closest:
				closest=[fid, top, dmin]
			elif dmin<closest[2]:
				closest=[fid, top, dmin]
		name=closest[0].name()
		pt=closest[0].getPoints()[closest[1]]
		try:
			dia=pt[3]
		except:
			dia=.5
		s = " %.3f, %.3f, %.3f, [%.3f] (%s[%i]) " % (pt[0], pt[1], pt[2],2*dia,name, closest[1])
		dg=cve.getDisplayGroup(closest[0], False)
		if dg:
			s+= "(group - %s)" % ("/".join(dg),)
		self.report(s)
		self.graph.highlightPoint(pt[:3]-1.1*dia*self.graph.forward)
		
		self._foundLastPoint.insert(0, (closest[0], closest[1]))
		self._foundLastPoint=self._foundSpatialPoint[:2]
		self._foundSpatialPoint.insert(0, pt[:3])
		self._foundSpatialPoint=self._foundSpatialPoint[:2]
		if len(self._foundSpatialPoint)>1:
			lp=self._foundSpatialPoint[1]
			pt=self._foundSpatialPoint[0]
			dist=eucd(lp, pt)
			self.report("Distance from last point: %.4f" % dist)
Exemplo n.º 6
0
	def getElements(self, multi=True):
		if not multi:
			self.getOneElement()			
		targets = self.getPlotTargets()
		dgroups = {}
		for el in targets:
			dgs = cve.getDisplayGroup(el, False)
			for dg in dgs:
				if not dg in dgroups:
					dgroups[dg]=[]
				dgroups[dg].append(el)
		dgn = {}
		for k in dgroups:
			n = len(dgroups[k])
			if n > 1:
				gn = "%s (%i)" % (k, n)
				dgn[gn] = k
		if len(targets)>45 and not dgn:
			self.report("Too many unclassified elements for interactive selection")
			return targets
		els=nameHash(targets)
		keys =  sorted(dgn)+sorted(els)
		l = self.askParam([{"Name":"Which Objects",
							"Type":"Select",
							"Value":keys}])
		if not l:
			return []
		select = []
		for name in l[0]:
			if name in dgn:
				select.extend(dgroups[dgn[name]])
			else:
				el = els[name]
				select.append(el)
		select = list(set(select))
		return select