Added project_to_viewport to exporters docs

This commit is contained in:
gumyr 2023-08-17 12:11:47 -04:00
parent bdaf863e71
commit a7d2aeb84b

View file

@ -108,6 +108,39 @@ specific properties followed by the addition of layers and shapes to the documen
Once all of the layers and shapes have been added, the document can be written
to a file.
3D to 2D Projection
-------------------
There are a couple ways to generate a 2D drawing of a 3D part:
* Generate a section: The :func:`~operations_part.section` operation can be used to
create a 2D cross section of a 3D part at a given plane.
* Generate a projection: The :meth:`~topology.Shape.project_to_viewport` method can be
used to create a 2D projection of a 3D scene. Similar to a camera, the ``viewport_origin``
defines the location of camera, the ``viewport_up`` defines the orientation of the camera,
and the ``look_at`` parameter defined where the camera is pointed. By default,
``viewport_up`` is the positive z axis and ``look_up`` is the center of the shape. The
return value is a tuple of lists of edges, the first the visible edges and the second
the hidden edges.
Each of these Edges and Faces can be assigned different line color/types and fill colors
as described below (as ``project_to_viewport`` only generates Edges, fill doesn't apply).
The shapes generated from the above steps are to be added as shapes
in one of the exporters described below and written as either a DXF or SVG file as shown
in this example:
.. code-block:: python
view_port_origin=(-100, -50, 30)
visible, hidden = part.project_to_viewport(view_port_origin)
max_dimension = max(*Compound(children=visible + hidden).bounding_box().size)
exporter = ExportSVG(scale=100 / max_dimension)
exporter.add_layer("Visible")
exporter.add_layer("Hidden", line_color=(99, 99, 99), line_type=LineType.ISO_DOT)
exporter.add_shape(visible, layer="Visible")
exporter.add_shape(hidden, layer="Hidden")
exporter.write("part_projection.svg")
LineType
--------