So, I realized a good compromise. I started with git code as described here:
http://www.shocksolution.com/microfluidics-and-biotechnology/visualization/python-vtk-paraview/
This is just one python file. The bottom line is code that allows you to specify the x, y, z positions and radius for points and output an XML file that is in VTK format. Therefore, to make particles, I just pass them the positions x, y, z, and then the radius constant for all particles. Then I just do a spherical glyph on the datasets.
For boxes I use the same code. For each box, x, y, z coordinates are still displayed, where x, y, z are the coordinates of the center of the field. Then, for the radius parameter, I use the length of the cube edge. This works because again in paraview I just glyph the dates for the boxes. I use a window glyph and scale the scalar where the scalar is the radius. If you do not orient the glyphs and set the scalar coefficient equal to 1, you will get the desired result. Here is a simple example with everything uniform:

So, I just output the coordinates in my C-datastructure to CSV files, and then in python I inserted the files and used the code by reference and opened the result using paraview. This is how I used the code from the link:
from vtktools import VTK_XML_Serial_Unstructured import sys if len(sys.argv) > 2: treeFile = sys.argv[1] bodyFile = sys.argv[2] else: print 'No input files' exit(4) x = [] y = [] z = [] r = [] f = open(treeFile, 'r') for line in f: v = line.split(',') x.append(float(v[0].strip())) y.append(float(v[1].strip())) z.append(float(v[2].strip())) r.append(float(v[3].strip())) f.close() temp = treeFile.split('/') if (len(temp) == 1): temp = temp[0] else: temp = temp[-1] tree_writer = VTK_XML_Serial_Unstructured() tree_writer.snapshot(temp.split('.',1)[0] + '.vtu', x, y, z, [], [], [], [], [], [], r) tree_writer.writePVD("octree.pvd") x = [] y = [] z = [] r = [] f = open(bodyFile, 'r') for line in f: v = line.split(',') x.append(float(v[0].strip())) y.append(float(v[1].strip())) z.append(float(v[2].strip())) r.append(float(v[3].strip())) f.close() temp = bodyFile.split('/') if (len(temp) == 1): temp = temp[0] else: temp = temp[-1] body_writer = VTK_XML_Serial_Unstructured() body_writer.snapshot(temp.split('.',1)[0] + '.vtu', x, y, z, [], [], [], [], [], [], r) body_writer.writePVD("distribution.pvd")