From 411ec36e65e6f6538d7c3aa8a4ca44bbc0057b15 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Sun, 23 Jul 2023 23:41:33 +1000 Subject: [PATCH] Add documentation specifically about swept disk solid geometry for rebar --- .../ifcopenshell-python/geometry_creation.rst | 22 ++++++++++++++++++ .../images/swept-disk-representation.png | Bin 0 -> 9493 bytes 2 files changed, 22 insertions(+) create mode 100644 src/ifcopenshell-python/docs/ifcopenshell-python/images/swept-disk-representation.png diff --git a/src/ifcopenshell-python/docs/ifcopenshell-python/geometry_creation.rst b/src/ifcopenshell-python/docs/ifcopenshell-python/geometry_creation.rst index 20f25deeb1..05bf981cc8 100644 --- a/src/ifcopenshell-python/docs/ifcopenshell-python/geometry_creation.rst +++ b/src/ifcopenshell-python/docs/ifcopenshell-python/geometry_creation.rst @@ -529,6 +529,28 @@ Here is an example which generates a parametric table. .. image:: images/custom-representation.png +Another really common case for using the shape builder is when creating +**Representations** of reinforcement bars, cables, or circular railings. IFC +has a special type of extrusion specifically for extruding a disk (i.e. circle) +along a path. This should almost always be used for usecases like reinforcement +bar. + +.. code-block:: python + + builder = ifcopenshell.util.shape_builder.ShapeBuilder(model) + + # Sweep a 10mm radius disk along a polyline with a couple of straight segments and an arc. + curve = builder.polyline( + [(0., 0., 0.), (100., 0., 0.), (171., 29., 0.), (200., 100., 0.), (200., 200., 0.)], + arc_points=[2]) + swept_curve = builder.create_swept_disk_solid(curve, 10) + + # Create a body representation + body = ifcopenshell.util.representation.get_context(model, "Model", "Body", "MODEL_VIEW") + representation = builder.get_representation(body, swept_curve) + +.. image:: images/swept-disk-representation.png + For more information, consult the :doc:`shape builder documentation `. diff --git a/src/ifcopenshell-python/docs/ifcopenshell-python/images/swept-disk-representation.png b/src/ifcopenshell-python/docs/ifcopenshell-python/images/swept-disk-representation.png new file mode 100644 index 0000000000000000000000000000000000000000..3bd2dfdfed099ccce9a65bf6e4b757558a32dd06 GIT binary patch literal 9493 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 l?FUdfcyJEqQ`|