now sphinxdoc works
This commit is contained in:
		
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -1,2 +1,2 @@
 | 
			
		||||
*.pyc
 | 
			
		||||
sphinxdoc/_build/*
 | 
			
		||||
doc/_build/*
 | 
			
		||||
 | 
			
		||||
@ -1,21 +1,3 @@
 | 
			
		||||
"""
 | 
			
		||||
	Copyright (C) 2011-2013  Parametric Products Intellectual Holdings, LLC
 | 
			
		||||
 | 
			
		||||
	This file is part of CadQuery.
 | 
			
		||||
	
 | 
			
		||||
	CadQuery is free software; you can redistribute it and/or
 | 
			
		||||
	modify it under the terms of the GNU Lesser General Public
 | 
			
		||||
	License as published by the Free Software Foundation; either
 | 
			
		||||
	version 2.1 of the License, or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
	CadQuery is distributed in the hope that it will be useful,
 | 
			
		||||
	but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
	Lesser General Public License for more details.
 | 
			
		||||
 | 
			
		||||
	You should have received a copy of the GNU Lesser General Public
 | 
			
		||||
	License along with this library; If not, see <http://www.gnu.org/licenses/>
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#these items point to the freecad implementation
 | 
			
		||||
@ -26,14 +8,13 @@ from .freecad_impl import exporters
 | 
			
		||||
#these items are the common implementation
 | 
			
		||||
 | 
			
		||||
#the order of these matter
 | 
			
		||||
from . import selectors
 | 
			
		||||
from .selectors import NearestToPointSelector,ParallelDirSelector,DirectionSelector,PerpendicularDirSelector,TypeSelector,DirectionMinMaxSelector,StringSyntaxSelector,Selector
 | 
			
		||||
from .CQ import CQ,CQContext,Workplane
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
__all__ = [
 | 
			
		||||
	'CQ','Workplane','plugins','selectors','Plane','BoundBox','Matrix','Vector','sortWiresByBuildOrder',
 | 
			
		||||
	'Shape','Vertex','Edge','Wire','Solid','Shell','Compound','exporters',
 | 
			
		||||
	'plugins'
 | 
			
		||||
	'Shape','Vertex','Edge','Wire','Solid','Shell','Compound','exporters',	'NearestToPointSelector','ParallelDirSelector','DirectionSelector','PerpendicularDirSelector','TypeSelector','DirectionMinMaxSelector','StringSyntaxSelector','Selector','plugins'
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
__version__ = 0.9
 | 
			
		||||
							
								
								
									
										85
									
								
								cadquery/cq_directive.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								cadquery/cq_directive.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,85 @@
 | 
			
		||||
"""
 | 
			
		||||
A special directive for including a cq object.
 | 
			
		||||
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
import sys, os, shutil, imp, warnings, cStringIO, re,traceback
 | 
			
		||||
 | 
			
		||||
from cadquery import *
 | 
			
		||||
import StringIO
 | 
			
		||||
from docutils.parsers.rst import directives
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
template = """
 | 
			
		||||
 | 
			
		||||
.. raw:: html
 | 
			
		||||
 | 
			
		||||
    <div class="cq" style="text-align:%(txtAlign)s;float:left;">
 | 
			
		||||
        %(outSVG)s
 | 
			
		||||
    </div>
 | 
			
		||||
    <div style="clear:both;">
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
"""
 | 
			
		||||
template_content_indent = '      '
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def cq_directive(name, arguments, options, content, lineno,
 | 
			
		||||
                   content_offset, block_text, state, state_machine):
 | 
			
		||||
 | 
			
		||||
    #only consider inline snippets
 | 
			
		||||
    plot_code = '\n'.join(content)
 | 
			
		||||
 | 
			
		||||
    # Since we don't have a filename, use a hash based on the content
 | 
			
		||||
    #the script must define a variable called 'out', which is expected to
 | 
			
		||||
    #be a CQ object
 | 
			
		||||
    outSVG = "Your Script Did not assign the 'result' variable!"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        _s = StringIO.StringIO()
 | 
			
		||||
        exec(plot_code)
 | 
			
		||||
        
 | 
			
		||||
        exporters.exportShape(result,"SVG",_s)
 | 
			
		||||
        outSVG = _s.getvalue()
 | 
			
		||||
    except:
 | 
			
		||||
        traceback.print_exc()
 | 
			
		||||
        outSVG = traceback.format_exc()
 | 
			
		||||
 | 
			
		||||
    #now out
 | 
			
		||||
    # Now start generating the lines of output
 | 
			
		||||
    lines = []
 | 
			
		||||
 | 
			
		||||
    #get rid of new lines
 | 
			
		||||
    outSVG = outSVG.replace('\n','')
 | 
			
		||||
 | 
			
		||||
    txtAlign = "left"
 | 
			
		||||
    if options.has_key("align"):
 | 
			
		||||
        txtAlign = options['align']
 | 
			
		||||
 | 
			
		||||
    lines.extend((template % locals()).split('\n'))
 | 
			
		||||
 | 
			
		||||
    lines.extend(['::', ''])
 | 
			
		||||
    lines.extend(['    %s' % row.rstrip()
 | 
			
		||||
                  for row in plot_code.split('\n')])
 | 
			
		||||
    lines.append('')
 | 
			
		||||
 | 
			
		||||
    if len(lines):
 | 
			
		||||
        state_machine.insert_input(
 | 
			
		||||
            lines, state_machine.input_lines.source(0))
 | 
			
		||||
 | 
			
		||||
    return []
 | 
			
		||||
 | 
			
		||||
def setup(app):
 | 
			
		||||
    setup.app = app
 | 
			
		||||
    setup.config = app.config
 | 
			
		||||
    setup.confdir = app.confdir
 | 
			
		||||
 | 
			
		||||
    options = {'height': directives.length_or_unitless,
 | 
			
		||||
               'width': directives.length_or_percentage_or_unitless,
 | 
			
		||||
               'align': directives.unchanged
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    app.add_directive('cq_plot', cq_directive, True, (0, 2, 0), **options)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -52,6 +52,7 @@ def exportShape(shape,exportType,fileLike,tolerance=0.1):
 | 
			
		||||
        for closing the object 
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    if isinstance(shape,cadquery.CQ):
 | 
			
		||||
        shape = shape.val()
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
@ -4,12 +4,11 @@
 | 
			
		||||
CadQuery API Reference
 | 
			
		||||
***********************
 | 
			
		||||
 | 
			
		||||
.. automodule:: cadfile.cadutils.cadquery
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.. seealso::
 | 
			
		||||
  This page lists api methods grouped by functional area.
 | 
			
		||||
  Use :ref:`classreference` to see methods alphabetically by class.
 | 
			
		||||
  Don't see a method you want? see :ref:`extending`
 | 
			
		||||
 | 
			
		||||
Primary Objects
 | 
			
		||||
----------------
 | 
			
		||||
@ -25,6 +24,8 @@ The sections below list methods of these objects grouped by **functional area**
 | 
			
		||||
Initialization
 | 
			
		||||
----------------
 | 
			
		||||
 | 
			
		||||
.. automodule:: cadquery
 | 
			
		||||
 | 
			
		||||
Creating new workplanes and object chains
 | 
			
		||||
 | 
			
		||||
.. autosummary::
 | 
			
		||||
@ -69,7 +70,6 @@ Creating 2-d constructs that can be used to create 3 d features
 | 
			
		||||
Methods that create 3d features
 | 
			
		||||
 | 
			
		||||
.. autosummary::
 | 
			
		||||
 | 
			
		||||
	Workplane.cboreHole
 | 
			
		||||
	Workplane.cskHole
 | 
			
		||||
	Workplane.hole
 | 
			
		||||
@ -129,6 +129,7 @@ Selectors
 | 
			
		||||
 | 
			
		||||
Objects that filter and select CAD objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.. autosummary::
 | 
			
		||||
	NearestToPointSelector
 | 
			
		||||
	ParallelDirSelector
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
.. _cadquerybasics:
 | 
			
		||||
 | 
			
		||||
.. automodule:: cadfile.cadutils.cadquery
 | 
			
		||||
.. automodule:: cadquery
 | 
			
		||||
 | 
			
		||||
*************************
 | 
			
		||||
Introduction to CadQuery
 | 
			
		||||
@ -21,7 +21,7 @@ CadQuery strives to allow scripts to read roughly as a human would describe an o
 | 
			
		||||
 | 
			
		||||
For example, consider this object:
 | 
			
		||||
 | 
			
		||||
..  image:: quickstart.png
 | 
			
		||||
..  image:: _static/quickstart.png
 | 
			
		||||
 | 
			
		||||
A human would describe this as:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ This page documents all of the methods and functions of the CadQuery classes, or
 | 
			
		||||
 | 
			
		||||
    For a listing organized by functional area, see the :ref:`apireference`
 | 
			
		||||
 | 
			
		||||
.. automodule:: cadfile.cadutils.cadquery
 | 
			
		||||
.. automodule:: cadquery
 | 
			
		||||
 | 
			
		||||
Core Classes
 | 
			
		||||
---------------------
 | 
			
		||||
@ -20,6 +20,20 @@ Core Classes
 | 
			
		||||
    Plane
 | 
			
		||||
    Workplane
 | 
			
		||||
 | 
			
		||||
Primitives
 | 
			
		||||
-----------------
 | 
			
		||||
 | 
			
		||||
.. autosummary::
 | 
			
		||||
 | 
			
		||||
    Plane
 | 
			
		||||
    Vector
 | 
			
		||||
    Solid
 | 
			
		||||
    Shell
 | 
			
		||||
    Wire
 | 
			
		||||
    Edge
 | 
			
		||||
    Vertex
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Selectors
 | 
			
		||||
---------------------
 | 
			
		||||
@ -33,7 +47,47 @@ Selectors
 | 
			
		||||
	DirectionMinMaxSelector
 | 
			
		||||
	StringSyntaxSelector
 | 
			
		||||
 | 
			
		||||
Classes
 | 
			
		||||
Geometry Classes
 | 
			
		||||
------------------
 | 
			
		||||
 | 
			
		||||
.. autoclass:: Vector
 | 
			
		||||
    :members:
 | 
			
		||||
 | 
			
		||||
.. autoclass:: Plane
 | 
			
		||||
    :members:
 | 
			
		||||
 | 
			
		||||
Shape Base Class
 | 
			
		||||
-------------------
 | 
			
		||||
 | 
			
		||||
All objects inherit from Shape, which as basic manipulation methods:
 | 
			
		||||
 | 
			
		||||
.. autoclass:: Shape
 | 
			
		||||
    :members:
 | 
			
		||||
 | 
			
		||||
Primitive Classes
 | 
			
		||||
--------------------
 | 
			
		||||
 | 
			
		||||
.. autoclass:: Solid
 | 
			
		||||
    :members:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.. autoclass:: Shell
 | 
			
		||||
    :members:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.. autoclass:: Wire
 | 
			
		||||
   :members:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.. autoclass:: Edge
 | 
			
		||||
    :members:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.. autoclass:: Vertex
 | 
			
		||||
    :members:	
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
Core Classes
 | 
			
		||||
------------------------
 | 
			
		||||
 | 
			
		||||
.. autoclass:: CQ
 | 
			
		||||
@ -46,6 +100,10 @@ Classes
 | 
			
		||||
   :members:
 | 
			
		||||
   :inherited-members:
 | 
			
		||||
 | 
			
		||||
   
 | 
			
		||||
Selector Classes
 | 
			
		||||
------------------------
 | 
			
		||||
   
 | 
			
		||||
.. autoclass:: Selector
 | 
			
		||||
   :members:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -12,9 +12,12 @@
 | 
			
		||||
# serve to show the default.
 | 
			
		||||
 | 
			
		||||
import sys, os
 | 
			
		||||
import os.path
 | 
			
		||||
print "working path is %s" % os.getcwd()
 | 
			
		||||
sys.path.append("..")
 | 
			
		||||
import cadquery
 | 
			
		||||
 | 
			
		||||
settings._target = None
 | 
			
		||||
#settings._target = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# If extensions (or modules to document with autodoc) are in another directory,
 | 
			
		||||
@ -29,7 +32,7 @@ settings._target = None
 | 
			
		||||
 | 
			
		||||
# Add any Sphinx extension module names here, as strings. They can be extensions
 | 
			
		||||
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
 | 
			
		||||
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode', 'sphinx.ext.autosummary','cadfile.cadutils.cq_directive']
 | 
			
		||||
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode', 'sphinx.ext.autosummary','cadquery.cq_directive']
 | 
			
		||||
 | 
			
		||||
# Add any paths that contain templates here, relative to this directory.
 | 
			
		||||
templates_path = ['_templates']
 | 
			
		||||
 | 
			
		||||
@ -4,8 +4,8 @@
 | 
			
		||||
CadQuery Examples
 | 
			
		||||
*********************************
 | 
			
		||||
 | 
			
		||||
.. automodule:: cadfile.cadutils.cadquery
 | 
			
		||||
.. automodule:: cadfile.cadutils.cad
 | 
			
		||||
.. automodule:: cadquery
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
The examples on this page can help you learn how to build objects with CadQuery.
 | 
			
		||||
 | 
			
		||||
@ -387,7 +387,7 @@ You can create a rotated work plane by specifying angles of rotation relative to
 | 
			
		||||
.. cq_plot::
 | 
			
		||||
 | 
			
		||||
    result = Workplane("front").box(4.0,4.0,0.25).faces(">Z").workplane()  \
 | 
			
		||||
         .transformed(offset=cad.Vector(0,-1.5,1.0),rotate=cad.Vector(60,0,0)) \
 | 
			
		||||
         .transformed(offset=Vector(0,-1.5,1.0),rotate=Vector(60,0,0)) \
 | 
			
		||||
         .rect(1.5,1.5,forConstruction=True).vertices().hole(0.25)
 | 
			
		||||
 | 
			
		||||
.. topic:: Api References
 | 
			
		||||
 | 
			
		||||
@ -3,15 +3,10 @@
 | 
			
		||||
   You can adapt this file completely to your liking, but it should at least
 | 
			
		||||
   contain the root `toctree` directive.
 | 
			
		||||
 | 
			
		||||
Parametric Parts Documentation Home
 | 
			
		||||
CadQuery Documentation Home
 | 
			
		||||
===================================
 | 
			
		||||
 | 
			
		||||
Parametric Parts is a technology platform that offers:
 | 
			
		||||
 | 
			
		||||
   * **For Users**: Customize, download, and print models easily using only a web browser. Every model is parametric.
 | 
			
		||||
   * **For Designers**: Create models with an easy to use, fluent API called CadQuery. ( See :ref:`examples` )
 | 
			
		||||
   * **For Developers**: :ref:`buildservice` allows other technology platforms to build models while controlling the user
 | 
			
		||||
     experience
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Contents
 | 
			
		||||
@ -22,17 +17,12 @@ Contents
 | 
			
		||||
 | 
			
		||||
    intro.rst
 | 
			
		||||
    quickstart.rst
 | 
			
		||||
    fileformat.rst
 | 
			
		||||
    cadquerybasics.rst
 | 
			
		||||
    examples.rst
 | 
			
		||||
    apireference.rst
 | 
			
		||||
    primitiveref.rst
 | 
			
		||||
    selectors.rst
 | 
			
		||||
    classreference.rst
 | 
			
		||||
 | 
			
		||||
    restservice.rst
 | 
			
		||||
 | 
			
		||||
    roadmap.rst
 | 
			
		||||
 | 
			
		||||
Indices and tables
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
@ -4,15 +4,9 @@
 | 
			
		||||
Introduction
 | 
			
		||||
*********************
 | 
			
		||||
 | 
			
		||||
What is a ParametricParts Model Script?
 | 
			
		||||
What is CadQuery
 | 
			
		||||
========================================
 | 
			
		||||
 | 
			
		||||
A Model Script is a python script that builds a 3d model in response to user inputs.
 | 
			
		||||
 | 
			
		||||
Model Scripts are written in python. They can use two different APIs:
 | 
			
		||||
     1. FreeCAD Scripts, or
 | 
			
		||||
     2. a new, fluent-api called CadQuery.
 | 
			
		||||
 | 
			
		||||
CadQuery is an intuitive, easy-to-use language for building parametric 3D CAD models.  It has several goals:
 | 
			
		||||
 | 
			
		||||
    * Build models with scripts that are as close as possible to how you'd describe the object to a human.
 | 
			
		||||
@ -28,7 +22,7 @@ CadQuery is a Python module that provides a high-level wrapper around the
 | 
			
		||||
(`FreeCAD <http://sourceforge.net/apps/mediawiki/free-cad/index.php?title=Main_Page>`_) python libraries.
 | 
			
		||||
 | 
			
		||||
Where does the name CadQuery come from?
 | 
			
		||||
===============================
 | 
			
		||||
========================================
 | 
			
		||||
 | 
			
		||||
CadQuery is inspired by ( `jQuery <http://www.jquery.com>`_ ), a popular framework that
 | 
			
		||||
revolutionized web development involving javascript.
 | 
			
		||||
@ -44,7 +38,7 @@ If you are familiar with how jQuery, you will probably recognize several jQuery
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Why ParametricParts instead of OpenSCAD?
 | 
			
		||||
==================================
 | 
			
		||||
============================================
 | 
			
		||||
 | 
			
		||||
CadQuery is based on FreeCAD,which is in turn based on the OpenCascade modelling kernel. CadQuery/FreeCAD scripts
 | 
			
		||||
share many features with OpenSCAD, another open source, script based, parametric model generator.
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
 | 
			
		||||
.. module:: cadfile.cadutils.cadquery
 | 
			
		||||
.. module:: cadquery
 | 
			
		||||
 | 
			
		||||
.. _quickstart:
 | 
			
		||||
 | 
			
		||||
***********************
 | 
			
		||||
ModelScript QuickStart
 | 
			
		||||
CadQuery QuickStart
 | 
			
		||||
***********************
 | 
			
		||||
 | 
			
		||||
Want a quick glimpse of Parametric Parts ModelScripts?  You're at the right place!
 | 
			
		||||
@ -51,7 +51,7 @@ CadQuery comes with an online, interactive default model as a starting point.
 | 
			
		||||
 | 
			
		||||
You should see the dynamic model creator page, which will display a sample model:
 | 
			
		||||
 | 
			
		||||
        ..  image:: quickstart-1.png
 | 
			
		||||
        ..  image:: _static/quickstart-1.png
 | 
			
		||||
 | 
			
		||||
Take a minute to play with this model. Here are a few things to try:
 | 
			
		||||
 | 
			
		||||
@ -111,7 +111,7 @@ Now, modify the build script to use your width value to make the block  by chang
 | 
			
		||||
The value property always returns the ``user-adjusted`` value of the parameter.  That's good enough for now.
 | 
			
		||||
Click "Save Changes" and you should see your 80x60x10mm base plate, like this:
 | 
			
		||||
 | 
			
		||||
        ..  image:: quickstart-2.png
 | 
			
		||||
        ..  image:: _static/quickstart-2.png
 | 
			
		||||
 | 
			
		||||
If you'd like to come back to this model later, the url bar links to the newly created part.
 | 
			
		||||
 | 
			
		||||
@ -135,7 +135,7 @@ This modification will do the trick:
 | 
			
		||||
 | 
			
		||||
Rebuild your model by clicking "Save Model" at the bottom. Your block should look like this:
 | 
			
		||||
 | 
			
		||||
        ..  image:: quickstart-3.png
 | 
			
		||||
        ..  image:: _static/quickstart-3.png
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
The code is pretty compact, and works like this:
 | 
			
		||||
@ -179,7 +179,7 @@ Good news!-- we can get the job done with just two lines of code. Here's the cod
 | 
			
		||||
 | 
			
		||||
You should see something like this:
 | 
			
		||||
 | 
			
		||||
        ..  image:: quickstart-4.png
 | 
			
		||||
        ..  image:: _static/quickstart-4.png
 | 
			
		||||
 | 
			
		||||
Lets Break that down a bit
 | 
			
		||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
			
		||||
@ -267,7 +267,7 @@ We can do that using the preset dictionaries in the parameter definition:
 | 
			
		||||
Now save the model and have a look at the preset DDLB-- you'll see that you can easily switch between these
 | 
			
		||||
configurations:
 | 
			
		||||
 | 
			
		||||
        ..  image:: quickstart-5.png
 | 
			
		||||
        ..  image:: _static/quickstart-5.png
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Done!
 | 
			
		||||
@ -300,6 +300,5 @@ Want to learn more?
 | 
			
		||||
====================
 | 
			
		||||
 | 
			
		||||
   * The :ref:`examples` contains lots of examples demonstrating cadquery features
 | 
			
		||||
   * The :ref:`cadquery_reference` describes the file format in detail
 | 
			
		||||
   * The :ref:`apireference` is a good overview of language features grouped by function
 | 
			
		||||
   * The :ref:`classreference` is the hard-core listing of all functions available.
 | 
			
		||||
@ -4,7 +4,7 @@
 | 
			
		||||
CadQuery String Selectors
 | 
			
		||||
*************************
 | 
			
		||||
 | 
			
		||||
.. automodule:: cadfile.cadutils.cadquery
 | 
			
		||||
.. automodule:: cadquery
 | 
			
		||||
 | 
			
		||||
CadQuery selector strings allow filtering various types of object lists. Most commonly, Edges, Faces, and Vertices are
 | 
			
		||||
used, but all objects types can be filtered.
 | 
			
		||||
@ -69,6 +69,8 @@ Some filter types are not supported for edges.  The selector usually refers to t
 | 
			
		||||
 | 
			
		||||
The axis used in the listing below are for illustration: any axis would work similarly in each case.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
=========   ====================================        =====================================   ==========================
 | 
			
		||||
Selector    Selector Class                              Selects                                 # objects returned
 | 
			
		||||
=========   ====================================        =====================================   ==========================
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user