Beispiel #1
0
def traverseAndRefactor( handler, root, validroot, transform ):
	
	valid = isValidVolume(root)
	if validroot == 0: valid = True
	#elif valid:
	#	valid = root.solid.fitsInside(validroot.solid)
	#	if not valid: handler.droppednofit += 1
	
	if valid:
		transform = AffineTransform()
		validroot = root
	
	daugh = root.daughters
	root.daughters = []
	
	for d in daugh:
		if d.logvol == 0:
			d.logvol = handler.logvols[ d.logvolref ]
			
		oldtform = AffineTransform.Create(d.rotation, d.position)
		newtform = transform.mult( oldtform )
		if traverseAndRefactor( handler, d.logvol, validroot, newtform ):
			d.rotation = newtform.rot
			d.position = newtform.trans
			validroot.daughters.append( d )
			handler.totalsolids += 1
		else: handler.droppedsolids += 1
		
	return valid
Beispiel #2
0
	def getTransform( self ):
		return AffineTransform( self.rotation, self.position )