Repository: ansys/pyansys-geometry
Pull request #1893: docs: adding command for single example build
Author: login: RobPasMue
Labels: name: documentation
description: Improvements or additions to documentation
name: enhancement
description: New features or code improvements
Created: 2025-04-08T10:12:37Z | Merged: 2025-04-09T07:28:20Z

## Description
Adding make command to test the generation of a single example.
Adding template for example as well

Closes #1892 


Linked issue #1892: Addition of an example template
### 📝 Description of the feature

An example teamplate would be helpful to be launchpad for users who are looking forward in contributing to the repo. 

A similar template can be found in pyprimemesh module 
https://prime.docs.pyansys.com/version/stable/examples/gallery_examples/misc/example_template.html#sphx-glr-examples-gallery-examples-misc-example-template-py

### 💡 Steps for implementing the feature

_No response_

### 🔗 Useful links and references

https://prime.docs.pyansys.com/version/stable/examples/gallery_examples/misc/example_template.html#sphx-glr-examples-gallery-examples-misc-example-template-py

Diff:
diff --git a/doc/Makefile b/doc/Makefile
index e20412a478..5c49f58c30 100755
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -37,3 +37,13 @@ html:
 # Linkcheck
 linkcheck:
 	@$(SPHINXBUILD) -M linkcheck "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+# Single example target
+single-example:
+	@if [ -z "$(example)" ]; then \
+		echo "No example specified."; \
+		echo "Usage --> make single-example example=examples/01_getting_started/01_math.mystnb"; \
+		exit 1; \
+	fi
+	@echo "Building single example --> $(example)"
+	@BUILD_API=False SKIP_BUILD_CHEAT_SHEET=True $(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" -j 1 $(O) -D "include_patterns=index.rst,examples.rst,$(example)"
diff --git a/doc/changelog.d/1893.documentation.md b/doc/changelog.d/1893.documentation.md
new file mode 100644
index 0000000000..f568b33e75
--- /dev/null
+++ b/doc/changelog.d/1893.documentation.md
@@ -0,0 +1 @@
+adding command for single example build
\ No newline at end of file
diff --git a/doc/make.bat b/doc/make.bat
index e02fc64ee2..1972b852d7 100644
--- a/doc/make.bat
+++ b/doc/make.bat
@@ -20,6 +20,7 @@ if "%1" == "clean" goto clean
 if "%1" == "pdf" goto pdf
 if "%1" == "html" goto html
 if "%1" == "linkcheck" goto linkcheck
+if "%1" == "single-example" goto single-example
 
 %SPHINXBUILD% >NUL 2>NUL
 if errorlevel 9009 (
@@ -61,6 +62,19 @@ rmdir /s /q %BUILDDIR% > /NUL 2>&1
 rmdir /s /q %APIDIR% > /NUL 2>&1
 goto end
 
+:single-example
+if "%2" == "" (
+	echo. No example specified.
+	echo. Example: ./make.bat single-example examples/01_getting_started/01_math.mystnb
+	exit /b 1
+)
+echo Building single example: %2
+set BUILD_API=false
+set SKIP_BUILD_CHEAT_SHEET=true
+set SPHINXOPTS=-j auto
+%SPHINXBUILD% -M html %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% -D "include_patterns=index.rst,examples.rst,%2"
+goto end
+
 :help
 %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
 goto end
diff --git a/doc/source/conf.py b/doc/source/conf.py
index 2bf087b3aa..f62fbdbe9d 100755
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -314,6 +314,7 @@ def intersphinx_pyansys_geometry(switcher_version: str):
     "examples/04_applied/01_naca_airfoils": "_static/thumbnails/naca_airfoils.png",
     "examples/04_applied/02_naca_fluent": "_static/thumbnails/naca_fluent.png",
     "examples/04_applied/03_ahmed_body_fluent": "_static/thumbnails/ahmed_body.png",
+    "examples/99_misc/template": "_static/thumbnails/101_getting_started.png",
 }
 nbsphinx_epilog = """
 ----
@@ -380,7 +381,9 @@ def intersphinx_pyansys_geometry(switcher_version: str):
 exclude_patterns = []
 BUILD_API = True if os.environ.get("BUILD_API", "true") == "true" else False
 if not BUILD_API:
-    exclude_patterns.append("autoapi")
+    exclude_patterns.append("api")
+    html_theme_options.pop("ansys_sphinx_theme_autoapi")
+    extensions.remove("ansys_sphinx_theme.extension.autoapi")
 
 BUILD_EXAMPLES = True if os.environ.get("BUILD_EXAMPLES", "true") == "true" else False
 if not BUILD_EXAMPLES:
diff --git a/doc/source/contributing.rst b/doc/source/contributing.rst
index d00a3ce57c..325421fc4e 100644
--- a/doc/source/contributing.rst
+++ b/doc/source/contributing.rst
@@ -138,10 +138,12 @@ To add a new example, follow these steps:
 
 1. Create a new notebook in the ``doc/source/examples`` directory, under the appropriate
    folder for your example.
-2. Take as reference an existing example to see how the notebook should be structured.
+2. Use the ``doc\source\examples\99_misc\template.mystnb`` file as a reference for creating
+   your example notebook. It contains the necessary metadata and structure for a
+   PyAnsys Geometry example.
 3. Add the new notebook to the ``doc/source/examples.rst`` file.
 4. Store a thumbnail image of the example in the ``doc/source/_static/thumbnails`` directory.
-5. Link the thumbnail image to your example file in ``doc/source/conf.py`` as shown in the reference commit.
+5. Link the thumbnail image to your example file in the ``doc/source/conf.py`` file as shown in the reference commit.
 
 You can also test the correct build process of a new example by performing the following steps:
 
@@ -149,24 +151,21 @@ You can also test the correct build process of a new example by performing the f
 
     pip install -e .[doc]
 
-2. Install ``myst-nb`` by running this command::
+2. Navigate to the ``doc`` directory and run the following command::
 
-    pip install myst-nb
+    # On Linux or macOS
+    make single-example examples/01_getting_started/01_math.mystnb
 
-3. Run the following command to build a single example (that is, substitute
-   ``<PATH_TO_MY_EXAMPLE_FILE>`` with the path to your example file)::
+    # On Windows
+    ./make.bat single-example examples/01_getting_started/01_math.mystnb
 
-    mystnb-docutils-html --nb-read-as-md=1 <PATH_TO_MY_EXAMPLE_FILE> output.html
+  .. note::
 
-4. Check the output file ``output.html`` to ensure that the example is correctly built.
-   Rendered output does not have documentation styling but users should have the
-   ability to see its proper execution.
+    The example name must be the same as the notebook name, with its path
+    starting at the ``examples`` directory.
 
-.. note::
-
-  Plots are not be rendered in the output file, but the code and markdown cells should
-  be correctly rendered. In case of failure during execution users can also see the error
-  message in the output file.
+3. Check the ``doc/source/_build/html`` directory for the generated documentation
+   and open the ``index.html`` file in your browser.
 
 Run tests
 ---------
diff --git a/doc/source/examples.rst b/doc/source/examples.rst
index 316972b7dc..6aa3d0ca9b 100644
--- a/doc/source/examples.rst
+++ b/doc/source/examples.rst
@@ -63,4 +63,12 @@ applications.
 
     examples/04_applied/01_naca_airfoils.mystnb
     examples/04_applied/02_naca_fluent.mystnb
-    examples/04_applied/03_ahmed_body_fluent.mystnb
\ No newline at end of file
+    examples/04_applied/03_ahmed_body_fluent.mystnb
+
+Miscellaneous examples
+----------------------
+
+.. nbgallery::
+    :caption: Miscellaneous examples
+
+    examples/99_misc/template.mystnb
diff --git a/doc/source/examples/99_misc/template.mystnb b/doc/source/examples/99_misc/template.mystnb
new file mode 100644
index 0000000000..95478a31cf
--- /dev/null
+++ b/doc/source/examples/99_misc/template.mystnb
@@ -0,0 +1,91 @@
+---
+jupytext:
+  text_representation:
+    extension: .mystnb
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.1
+kernelspec:
+  display_name: Python 3 (ipykernel)
+  language: python
+  name: python3
+---
+
+# Miscellaneous: Example template
+
+This example serves as a template for creating new examples in the documentation.
+It shows developers how to structure their code and comments for clarity and consistency.
+It also provides a basic outline for importing necessary modules, initializing the modeler,
+performing operations, and closing the modeler.
+
+It is important to follow the conventions and formatting used in this example to ensure that
+the documentation is easy to read and understandable.
+
+## Example imports
+
+Perform the required imports for this example.
+This section should include all necessary imports for the example to run correctly.
+
+```{code-cell} ipython3
+# Imports
+from ansys.geometry.core import launch_modeler
+from ansys.geometry.core.math import Point2D
+from ansys.geometry.core.sketch import Sketch
+```
+
+## Initialize the modeler
+
+```{code-cell} ipython3
+# Initialize the modeler for this example notebook
+m = launch_modeler()
+print(m)
+```
+
+## Body of your example
+
+Developers can add their code here to perform the desired operations.
+This section should include comments and explanations to explain what the code is doing.
+
+### Example section: Initialize a design
+
+Create a design named ``example-design``.
+
+```{code-cell} ipython3
+# Initialize the example design
+design = m.create_design("example-design")
+```
+
+### Example section: Include images
+
+This section demonstrates how to include static images in the documentation.
+You should place these images in the ``doc/source/_static/`` directory.
+
+You can then reference images in the documentation using the following syntax:
+
+![image](../../_static/thumbnails/101_getting_started.png){align=center}
+
+
+### Example section: Create a sketch and plot it
+
+This section demonstrates how to create a sketch and plot it.
+
+```{code-cell} ipython3
+sketch = Sketch()
+sketch.box(Point2D([0, 0]), 10, 10)
+sketch.plot()
+```
+
+### Example section: Extrude the sketch and create a body
+This section demonstrates how to extrude the sketch and create a body.
+
+```{code-cell} ipython3
+design.extrude_sketch(f"BoxBody", sketch, distance=10)
+design.plot()
+```
+
+## Close the modeler
+
+```{code-cell} ipython3
+# Close the modeler
+m.close()
+```


Reviews:
user: login: MaxJPRey
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-08T12:53:05Z
user: login: MaxJPRey
body: LGTM.
state: DISMISSED
author_association: CONTRIBUTOR
submitted_at: 2025-04-08T12:54:24Z
user: login: PipKat
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-08T17:10:34Z
user: login: PipKat
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-08T17:11:25Z
user: login: PipKat
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-08T17:12:03Z
user: login: PipKat
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-08T17:12:36Z
user: login: PipKat
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-08T17:12:47Z
user: login: PipKat
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-08T17:14:46Z
user: login: PipKat
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-08T17:15:35Z
user: login: PipKat
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-08T17:15:54Z
user: login: PipKat
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-08T17:17:44Z
user: login: PipKat
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-08T17:18:21Z
user: login: PipKat
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-08T17:18:43Z
user: login: PipKat
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-08T17:19:00Z
user: login: PipKat
state: DISMISSED
author_association: MEMBER
submitted_at: 2025-04-08T17:20:29Z

Review comments:
diff_hunk: @@ -0,0 +1,91 @@
+---
+jupytext:
+  text_representation:
+    extension: .mystnb
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.1
+kernelspec:
+  display_name: Python 3 (ipykernel)
+  language: python
+  name: python3
+---
+
+# Miscellaneous: Example template
+
+This example serves as a template for creating new examples in the documentation.
+It shows developers how to structure their code and comments for clarity and consistency.
+It also provides a basic outline for importing necessary modules, initializing the modeler,
+performing operations, and closing the modeler.
+
+It is important to follow the conventions and formatting used in this example to ensure that
+the documentation is easy to read and understand.
path: doc/source/examples/99_misc/template.mystnb
user: login: MaxJPRey
body: ```suggestion
the documentation is easy to read and understandable.
```
created_at: 2025-04-08T12:53:05Z
author_association: CONTRIBUTOR
diff_hunk: @@ -138,7 +138,8 @@ To add a new example, follow these steps:
 
 1. Create a new notebook in the ``doc/source/examples`` directory, under the appropriate
    folder for your example.
-2. Take as reference an existing example to see how the notebook should be structured.
+2. Take as reference ``doc\source\examples\99_misc\template.mystnb`` to create your
+   example notebook. This template contains the necessary metadata and structure for it.
path: doc/source/contributing.rst
user: login: PipKat
body: ```suggestion
2. Use the ``doc\source\examples\99_misc\template.mystnb`` file as a reference for creating
   your example notebook. It contains the necessary metadata and structure for a
   PyAnsys Geometry example.
```
created_at: 2025-04-08T17:10:33Z
author_association: MEMBER
diff_hunk: @@ -138,7 +138,8 @@ To add a new example, follow these steps:
 
 1. Create a new notebook in the ``doc/source/examples`` directory, under the appropriate
    folder for your example.
-2. Take as reference an existing example to see how the notebook should be structured.
+2. Take as reference ``doc\source\examples\99_misc\template.mystnb`` to create your
+   example notebook. This template contains the necessary metadata and structure for it.
 3. Add the new notebook to the ``doc/source/examples.rst`` file.
 4. Store a thumbnail image of the example in the ``doc/source/_static/thumbnails`` directory.
 5. Link the thumbnail image to your example file in ``doc/source/conf.py`` as shown in the reference commit.
path: doc/source/contributing.rst
user: login: PipKat
body: ```suggestion
5. Link the thumbnail image to your example file in the ``doc/source/conf.py`` file as shown in the reference commit.
```
created_at: 2025-04-08T17:11:25Z
author_association: MEMBER
diff_hunk: @@ -149,24 +150,21 @@ You can also test the correct build process of a new example by performing the f
 
     pip install -e .[doc]
 
-2. Install ``myst-nb`` by running this command::
+2. Navigate to the ``doc`` folder and run the following command::
path: doc/source/contributing.rst
user: login: PipKat
body: ```suggestion
2. Navigate to the ``doc`` directory and run the following command::
```
created_at: 2025-04-08T17:12:03Z
author_association: MEMBER
diff_hunk: @@ -149,24 +150,21 @@ You can also test the correct build process of a new example by performing the f
 
     pip install -e .[doc]
 
-2. Install ``myst-nb`` by running this command::
+2. Navigate to the ``doc`` folder and run the following command::
 
-    pip install myst-nb
+    # On Linux or macOS
+    make single-example examples/01_getting_started/01_math.mystnb
 
-3. Run the following command to build a single example (that is, substitute
-   ``<PATH_TO_MY_EXAMPLE_FILE>`` with the path to your example file)::
+    # On Windows
+    ./make.bat single-example examples/01_getting_started/01_math.mystnb
 
-    mystnb-docutils-html --nb-read-as-md=1 <PATH_TO_MY_EXAMPLE_FILE> output.html
+  .. note::
 
-4. Check the output file ``output.html`` to ensure that the example is correctly built.
-   Rendered output does not have documentation styling but users should have the
-   ability to see its proper execution.
+    The example name must be the same as the notebook name, with its path
+    starting at the ``examples`` folder.
path: doc/source/contributing.rst
user: login: PipKat
body: ```suggestion
    starting at the ``examples`` directory.
```
created_at: 2025-04-08T17:12:35Z
author_association: MEMBER
diff_hunk: @@ -149,24 +150,21 @@ You can also test the correct build process of a new example by performing the f
 
     pip install -e .[doc]
 
-2. Install ``myst-nb`` by running this command::
+2. Navigate to the ``doc`` folder and run the following command::
 
-    pip install myst-nb
+    # On Linux or macOS
+    make single-example examples/01_getting_started/01_math.mystnb
 
-3. Run the following command to build a single example (that is, substitute
-   ``<PATH_TO_MY_EXAMPLE_FILE>`` with the path to your example file)::
+    # On Windows
+    ./make.bat single-example examples/01_getting_started/01_math.mystnb
 
-    mystnb-docutils-html --nb-read-as-md=1 <PATH_TO_MY_EXAMPLE_FILE> output.html
+  .. note::
 
-4. Check the output file ``output.html`` to ensure that the example is correctly built.
-   Rendered output does not have documentation styling but users should have the
-   ability to see its proper execution.
+    The example name must be the same as the notebook name, with its path
+    starting at the ``examples`` folder.
 
-.. note::
-
-  Plots are not be rendered in the output file, but the code and markdown cells should
-  be correctly rendered. In case of failure during execution users can also see the error
-  message in the output file.
+3. Check the ``doc/source/_build/html`` folder for the generated documentation
path: doc/source/contributing.rst
user: login: PipKat
body: ```suggestion
3. Check the ``doc/source/_build/html`` directory for the generated documentation
```
created_at: 2025-04-08T17:12:46Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,91 @@
+---
+jupytext:
+  text_representation:
+    extension: .mystnb
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.1
+kernelspec:
+  display_name: Python 3 (ipykernel)
+  language: python
+  name: python3
+---
+
+# Miscellaneous: Example template
+
+This example serves as a template for creating new examples in the documentation.
+It shows developers how to structure their code and comments for clarity and consistency.
+It also provides a basic outline for importing necessary modules, initializing the modeler,
+performing operations, and closing the modeler.
+
+It is important to follow the conventions and formatting used in this example to ensure that
+the documentation is easy to read and understand.
+
+## Example imports
+
+Perform the required imports for this example.
+This section should include all necessary imports for the example to run correctly.
+
+```{code-cell} ipython3
+# Imports
+from ansys.geometry.core import launch_modeler
+from ansys.geometry.core.math import Point2D
+from ansys.geometry.core.sketch import Sketch
+```
+
+## Initialize the modeler
+
+```{code-cell} ipython3
+# Initialize the modeler for this example notebook
+m = launch_modeler()
+print(m)
+```
+
+## Body of your example
+
+Developers can add their code here to perform the desired operations.
+This section should include comments and explanations to help users understand what the code is doing.
path: doc/source/examples/99_misc/template.mystnb
user: login: PipKat
body: ```suggestion
This section should include comments and explanations to explain what the code is doing.
```
created_at: 2025-04-08T17:14:46Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,91 @@
+---
+jupytext:
+  text_representation:
+    extension: .mystnb
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.1
+kernelspec:
+  display_name: Python 3 (ipykernel)
+  language: python
+  name: python3
+---
+
+# Miscellaneous: Example template
+
+This example serves as a template for creating new examples in the documentation.
+It shows developers how to structure their code and comments for clarity and consistency.
+It also provides a basic outline for importing necessary modules, initializing the modeler,
+performing operations, and closing the modeler.
+
+It is important to follow the conventions and formatting used in this example to ensure that
+the documentation is easy to read and understand.
+
+## Example imports
+
+Perform the required imports for this example.
+This section should include all necessary imports for the example to run correctly.
+
+```{code-cell} ipython3
+# Imports
+from ansys.geometry.core import launch_modeler
+from ansys.geometry.core.math import Point2D
+from ansys.geometry.core.sketch import Sketch
+```
+
+## Initialize the modeler
+
+```{code-cell} ipython3
+# Initialize the modeler for this example notebook
+m = launch_modeler()
+print(m)
+```
+
+## Body of your example
+
+Developers can add their code here to perform the desired operations.
+This section should include comments and explanations to help users understand what the code is doing.
+
+### Example section: initializing a design
+
+Create a design named ``example-design``.
+
+```{code-cell} ipython3
+# Initialize the example design
+design = m.create_design("example-design")
+```
+
+### Example section: including images
+
+This section demonstrates how to include static images in the documentation.
+If images want to be included, they should be placed in the ``doc/source/_static/`` directory.
path: doc/source/examples/99_misc/template.mystnb
user: login: PipKat
body: ```suggestion
You should place these images in the ``doc/source/_static/`` directory.
```
created_at: 2025-04-08T17:15:35Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,91 @@
+---
+jupytext:
+  text_representation:
+    extension: .mystnb
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.1
+kernelspec:
+  display_name: Python 3 (ipykernel)
+  language: python
+  name: python3
+---
+
+# Miscellaneous: Example template
+
+This example serves as a template for creating new examples in the documentation.
+It shows developers how to structure their code and comments for clarity and consistency.
+It also provides a basic outline for importing necessary modules, initializing the modeler,
+performing operations, and closing the modeler.
+
+It is important to follow the conventions and formatting used in this example to ensure that
+the documentation is easy to read and understand.
+
+## Example imports
+
+Perform the required imports for this example.
+This section should include all necessary imports for the example to run correctly.
+
+```{code-cell} ipython3
+# Imports
+from ansys.geometry.core import launch_modeler
+from ansys.geometry.core.math import Point2D
+from ansys.geometry.core.sketch import Sketch
+```
+
+## Initialize the modeler
+
+```{code-cell} ipython3
+# Initialize the modeler for this example notebook
+m = launch_modeler()
+print(m)
+```
+
+## Body of your example
+
+Developers can add their code here to perform the desired operations.
+This section should include comments and explanations to help users understand what the code is doing.
+
+### Example section: initializing a design
+
+Create a design named ``example-design``.
+
+```{code-cell} ipython3
+# Initialize the example design
+design = m.create_design("example-design")
+```
+
+### Example section: including images
+
+This section demonstrates how to include static images in the documentation.
+If images want to be included, they should be placed in the ``doc/source/_static/`` directory.
+
+They can be referenced in the documentation using the following syntax:
path: doc/source/examples/99_misc/template.mystnb
user: login: PipKat
body: ```suggestion
You can then reference images in the documentation using the following syntax:
```
created_at: 2025-04-08T17:15:53Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,91 @@
+---
+jupytext:
+  text_representation:
+    extension: .mystnb
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.1
+kernelspec:
+  display_name: Python 3 (ipykernel)
+  language: python
+  name: python3
+---
+
+# Miscellaneous: Example template
+
+This example serves as a template for creating new examples in the documentation.
+It shows developers how to structure their code and comments for clarity and consistency.
+It also provides a basic outline for importing necessary modules, initializing the modeler,
+performing operations, and closing the modeler.
+
+It is important to follow the conventions and formatting used in this example to ensure that
+the documentation is easy to read and understand.
+
+## Example imports
+
+Perform the required imports for this example.
+This section should include all necessary imports for the example to run correctly.
+
+```{code-cell} ipython3
+# Imports
+from ansys.geometry.core import launch_modeler
+from ansys.geometry.core.math import Point2D
+from ansys.geometry.core.sketch import Sketch
+```
+
+## Initialize the modeler
+
+```{code-cell} ipython3
+# Initialize the modeler for this example notebook
+m = launch_modeler()
+print(m)
+```
+
+## Body of your example
+
+Developers can add their code here to perform the desired operations.
+This section should include comments and explanations to help users understand what the code is doing.
+
+### Example section: initializing a design
path: doc/source/examples/99_misc/template.mystnb
user: login: PipKat
body: ```suggestion
### Example section: Initialize a design
```
I've changed these section headings to use a simple verb that starts with a capital letter as this is how we want the headings to be formatted.
created_at: 2025-04-08T17:17:44Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,91 @@
+---
+jupytext:
+  text_representation:
+    extension: .mystnb
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.1
+kernelspec:
+  display_name: Python 3 (ipykernel)
+  language: python
+  name: python3
+---
+
+# Miscellaneous: Example template
+
+This example serves as a template for creating new examples in the documentation.
+It shows developers how to structure their code and comments for clarity and consistency.
+It also provides a basic outline for importing necessary modules, initializing the modeler,
+performing operations, and closing the modeler.
+
+It is important to follow the conventions and formatting used in this example to ensure that
+the documentation is easy to read and understand.
+
+## Example imports
+
+Perform the required imports for this example.
+This section should include all necessary imports for the example to run correctly.
+
+```{code-cell} ipython3
+# Imports
+from ansys.geometry.core import launch_modeler
+from ansys.geometry.core.math import Point2D
+from ansys.geometry.core.sketch import Sketch
+```
+
+## Initialize the modeler
+
+```{code-cell} ipython3
+# Initialize the modeler for this example notebook
+m = launch_modeler()
+print(m)
+```
+
+## Body of your example
+
+Developers can add their code here to perform the desired operations.
+This section should include comments and explanations to help users understand what the code is doing.
+
+### Example section: initializing a design
+
+Create a design named ``example-design``.
+
+```{code-cell} ipython3
+# Initialize the example design
+design = m.create_design("example-design")
+```
+
+### Example section: including images
path: doc/source/examples/99_misc/template.mystnb
user: login: PipKat
body: ```suggestion
### Example section: Include images
```
created_at: 2025-04-08T17:18:20Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,91 @@
+---
+jupytext:
+  text_representation:
+    extension: .mystnb
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.1
+kernelspec:
+  display_name: Python 3 (ipykernel)
+  language: python
+  name: python3
+---
+
+# Miscellaneous: Example template
+
+This example serves as a template for creating new examples in the documentation.
+It shows developers how to structure their code and comments for clarity and consistency.
+It also provides a basic outline for importing necessary modules, initializing the modeler,
+performing operations, and closing the modeler.
+
+It is important to follow the conventions and formatting used in this example to ensure that
+the documentation is easy to read and understand.
+
+## Example imports
+
+Perform the required imports for this example.
+This section should include all necessary imports for the example to run correctly.
+
+```{code-cell} ipython3
+# Imports
+from ansys.geometry.core import launch_modeler
+from ansys.geometry.core.math import Point2D
+from ansys.geometry.core.sketch import Sketch
+```
+
+## Initialize the modeler
+
+```{code-cell} ipython3
+# Initialize the modeler for this example notebook
+m = launch_modeler()
+print(m)
+```
+
+## Body of your example
+
+Developers can add their code here to perform the desired operations.
+This section should include comments and explanations to help users understand what the code is doing.
+
+### Example section: initializing a design
+
+Create a design named ``example-design``.
+
+```{code-cell} ipython3
+# Initialize the example design
+design = m.create_design("example-design")
+```
+
+### Example section: including images
+
+This section demonstrates how to include static images in the documentation.
+If images want to be included, they should be placed in the ``doc/source/_static/`` directory.
+
+They can be referenced in the documentation using the following syntax:
+
+![image](../../_static/thumbnails/101_getting_started.png){align=center}
+
+
+### Example section: creating a sketch and plotting it
path: doc/source/examples/99_misc/template.mystnb
user: login: PipKat
body: ```suggestion
### Example section: Create a sketch and plot it
```
created_at: 2025-04-08T17:18:43Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,91 @@
+---
+jupytext:
+  text_representation:
+    extension: .mystnb
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.1
+kernelspec:
+  display_name: Python 3 (ipykernel)
+  language: python
+  name: python3
+---
+
+# Miscellaneous: Example template
+
+This example serves as a template for creating new examples in the documentation.
+It shows developers how to structure their code and comments for clarity and consistency.
+It also provides a basic outline for importing necessary modules, initializing the modeler,
+performing operations, and closing the modeler.
+
+It is important to follow the conventions and formatting used in this example to ensure that
+the documentation is easy to read and understand.
+
+## Example imports
+
+Perform the required imports for this example.
+This section should include all necessary imports for the example to run correctly.
+
+```{code-cell} ipython3
+# Imports
+from ansys.geometry.core import launch_modeler
+from ansys.geometry.core.math import Point2D
+from ansys.geometry.core.sketch import Sketch
+```
+
+## Initialize the modeler
+
+```{code-cell} ipython3
+# Initialize the modeler for this example notebook
+m = launch_modeler()
+print(m)
+```
+
+## Body of your example
+
+Developers can add their code here to perform the desired operations.
+This section should include comments and explanations to help users understand what the code is doing.
+
+### Example section: initializing a design
+
+Create a design named ``example-design``.
+
+```{code-cell} ipython3
+# Initialize the example design
+design = m.create_design("example-design")
+```
+
+### Example section: including images
+
+This section demonstrates how to include static images in the documentation.
+If images want to be included, they should be placed in the ``doc/source/_static/`` directory.
+
+They can be referenced in the documentation using the following syntax:
+
+![image](../../_static/thumbnails/101_getting_started.png){align=center}
+
+
+### Example section: creating a sketch and plotting it
+
+This section demonstrates how to create a sketch and plot it.
+
+```{code-cell} ipython3
+sketch = Sketch()
+sketch.box(Point2D([0, 0]), 10, 10)
+sketch.plot()
+```
+
+### Example section: extruding the sketch and creating a body
path: doc/source/examples/99_misc/template.mystnb
user: login: PipKat
body: ```suggestion
### Example section: Extrude the sketch and create a body
```
created_at: 2025-04-08T17:19:00Z
author_association: MEMBER

PR comments:
user: login: codecov[bot]
created_at: 2025-04-08T10:27:03Z
body: ## [Codecov](https://app.codecov.io/gh/ansys/pyansys-geometry/pull/1893?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ansys) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 90.38%. Comparing base [(`d3d6c77`)](https://app.codecov.io/gh/ansys/pyansys-geometry/commit/d3d6c774b09701e2459ac576c564baf68b18838d?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ansys) to head [(`021f69c`)](https://app.codecov.io/gh/ansys/pyansys-geometry/commit/021f69c949a612ffa7e8dbfc47d2153103fff615?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ansys).
> Report is 2 commits behind head on main.

<details><summary>Additional details and impacted files</summary>


```diff
@@           Coverage Diff           @@
##             main    #1893   +/-   ##
=======================================
  Coverage   90.38%   90.38%           
=======================================
  Files         105      105           
  Lines        9330     9330           
=======================================
  Hits         8433     8433           
  Misses        897      897           
```

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/ansys/pyansys-geometry/pull/1893?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ansys).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ansys).

<details><summary> :rocket: New features to boost your workflow: </summary>

- :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems.
</details>
author_association: NONE
user: login: RobPasMue
created_at: 2025-04-09T06:33:28Z
body: Thank you both @PipKat and @MaxJPRey for your reviews. This is going to be super helpful for collaborators.
author_association: MEMBER