diff --git a/mevislab.github.io/content/about/about.md b/mevislab.github.io/content/about/about.md
index cbce733a6..e6626aa4a 100644
--- a/mevislab.github.io/content/about/about.md
+++ b/mevislab.github.io/content/about/about.md
@@ -6,7 +6,7 @@ status: "OK"
tags: ["Symbols", "Glossary", "Overview"]
---
## Symbols
-We embedded three symbols, referencing additional info, tasks and warnings:
+We embedded three symbols, referencing additional info, tasks, and warnings:
{{}}
Provides additional links or info on the current topic.
{{}}
diff --git a/mevislab.github.io/content/contact.md b/mevislab.github.io/content/contact.md
index 5cd49c1f3..e70e8fdb8 100644
--- a/mevislab.github.io/content/contact.md
+++ b/mevislab.github.io/content/contact.md
@@ -3,12 +3,12 @@ title: "Contact"
date: 2022-06-15T08:54:53+02:00
draft: false
---
-### Feedback is valuable and always appreciated!
+### Feedback is Valuable and Always Appreciated!
#### MeVisLab Licensing
Having any questions on MeVisLab Licensing? Please contact the [MeVisLab Sales Team](mailto://sales@mevislab.de)
-#### MeVisLab forum
+#### MeVisLab Forum
Searching for a forum to ask your specific MeVisLab questions? Having trouble with functionalities? Ask [here](https://forum.mevislab.de)! Someone else might know the answer. If not - one of our developers will help you out!
#### General Questions
diff --git a/mevislab.github.io/content/examples/basic_mechanisms/contour_filter/index.md b/mevislab.github.io/content/examples/basic_mechanisms/contour_filter/index.md
index 73623a8c0..75792f98e 100644
--- a/mevislab.github.io/content/examples/basic_mechanisms/contour_filter/index.md
+++ b/mevislab.github.io/content/examples/basic_mechanisms/contour_filter/index.md
@@ -9,7 +9,7 @@ This example shows how to create a contour filter.
# Summary
Images are loaded via `ImageLoad` module and visualized unchanged in a `View2D` module *View2D1*.
-Additionally the images are modified by a local macro module `Filter` and shown in another `View2D` viewer *View2D*.
+Additionally, the images are modified by a local macro module `Filter` and shown in another `View2D` viewer *View2D*.
In order to display the same slice (unchanged and changed), the module `SyncFloat` is used to synchronize the field value *startSlice* in both viewers. The `SyncFloat` module duplicates the value *Float1* to the field *Float2*.
diff --git a/mevislab.github.io/content/examples/basic_mechanisms/macro_modules_and_module_interaction/example1/index.md b/mevislab.github.io/content/examples/basic_mechanisms/macro_modules_and_module_interaction/example1/index.md
index 81b98cab1..43ed34991 100644
--- a/mevislab.github.io/content/examples/basic_mechanisms/macro_modules_and_module_interaction/example1/index.md
+++ b/mevislab.github.io/content/examples/basic_mechanisms/macro_modules_and_module_interaction/example1/index.md
@@ -4,13 +4,13 @@ title: "Panel for the contour filter"
category: "basic_mechanisms"
---
-# Example 1: Panel for the contour filter
+# Example 1: Panel for the Contour Filter
This example contains a whole package structure. Inside you can find the example contour filter for which a panel was created.
## Summary
-A new macro module `Filter` has been created. Initially macro modules do not provide an own panel containing user interface elements such as buttons. The *Automatic Panel* is shown on double-clicking the module providing the name of the module.
+A new macro module `Filter` has been created. Initially, macro modules do not provide an own panel containing user interface elements such as buttons. The *Automatic Panel* is shown on double-clicking the module providing the name of the module.
-In this example we update the *\*.script* file of the `Filter` module to display the kernel selection field of the `Convolution` module within its network.
+In this example we update the *.script* file of the `Filter` module to display the kernel selection field of the `Convolution` module within its network.
{{}}
Changes applied to fields in the macro module's panel are applied to their internal network as well.
diff --git a/mevislab.github.io/content/examples/basic_mechanisms/macro_modules_and_module_interaction/example2/index.md b/mevislab.github.io/content/examples/basic_mechanisms/macro_modules_and_module_interaction/example2/index.md
index bb70e21d0..d61178cc9 100644
--- a/mevislab.github.io/content/examples/basic_mechanisms/macro_modules_and_module_interaction/example2/index.md
+++ b/mevislab.github.io/content/examples/basic_mechanisms/macro_modules_and_module_interaction/example2/index.md
@@ -4,13 +4,13 @@ title: "Python scripting"
category: "basic_mechanisms"
---
-# Example 2: Python scripting
+# Example 2: Python Scripting
This example shows how to create module interactions via Python scripting.
## Summary
A new macro module `IsoCSOs` is created providing two viewers in its internal network, `View2D` and `SoExaminerViewer`. Both viewers are included in the panel of the module.
-To showcase how Python functions can be implemented in MeVisLab and called from within a module, additional buttons to browse directories and create contours via the `CSOIsoGenerator` are added. Lastly a field listener is implemented reacting to field changes by colorizing contours when the user hovers over them with the mouse.
+To showcase how Python functions can be implemented in MeVisLab and called from within a module, additional buttons to browse directories and create contours via the `CSOIsoGenerator` are added. Lastly, a field listener is implemented reacting to field changes by colorizing contours when the user hovers over them with the mouse.

diff --git a/mevislab.github.io/content/examples/basic_mechanisms/viewer_application/index.md b/mevislab.github.io/content/examples/basic_mechanisms/viewer_application/index.md
index 33d916c8d..d102d7123 100644
--- a/mevislab.github.io/content/examples/basic_mechanisms/viewer_application/index.md
+++ b/mevislab.github.io/content/examples/basic_mechanisms/viewer_application/index.md
@@ -4,7 +4,7 @@ title: "Creating a simple application"
category: "basic_mechanisms"
---
-# Example 3: Creating a simple application
+# Example 3: Creating a Simple Application
In this example, you will learn how to create a simple prototype application in MeVisLab including a user interface (UI) with 2D and 3D viewers.

diff --git a/mevislab.github.io/content/examples/data_objects/contours/example1/index.md b/mevislab.github.io/content/examples/data_objects/contours/example1/index.md
index a8022c56c..dc61f3461 100644
--- a/mevislab.github.io/content/examples/data_objects/contours/example1/index.md
+++ b/mevislab.github.io/content/examples/data_objects/contours/example1/index.md
@@ -4,8 +4,8 @@ title: "Creation of Contours"
category: "data_objects"
---
-# Contour Example 1: Creation of contours
-Contours are stored as Contour Segmented Objects (CSOs) in MeVisLab.
+# Contour Example 1: Creation of Contours
+Contours are stored as Contour Segmentation Objects (CSOs) in MeVisLab.
This example highlights ways of creating CSOs using modules of the `SoCSOEditor` group.
{{}}
@@ -27,7 +27,7 @@ The `SoCSOEditor` module group contains several modules, some of which are liste
* `SoCSOLiveWireEditor`
{{}}
-Whenever Contour Segmented Objects are created, they are temporarily stored by and can be managed with the `CSOManager`.
+Whenever Contour Segmentation Objects are created, they are temporarily stored by and can be managed with the `CSOManager`.
{{}}
In this example, contours are created and colors and styles of these CSOs are customized by using the `SoCSOVisualizationSettings` module.
@@ -35,8 +35,8 @@ In this example, contours are created and colors and styles of these CSOs are cu

## Summary
-+ Contours are stored as their own abstract data type called Contour Segmented Objects (often abbreviated to *CSO*).
-+ The `SoEditor` module group contains several useful modules to create, interact with or modify CSOs.
++ Contours are stored as their own abstract data type called Contour Segmentation Objects (often abbreviated to *CSO*).
++ The `SoCSO\*Editor` module group contains several useful modules to create, interact with or modify CSOs.
+ Created CSOs are temporarily stored and can be managed using the `CSOManager`.
# Download
diff --git a/mevislab.github.io/content/examples/data_objects/contours/example2/index.md b/mevislab.github.io/content/examples/data_objects/contours/example2/index.md
index 1122f2b07..35138b56c 100644
--- a/mevislab.github.io/content/examples/data_objects/contours/example2/index.md
+++ b/mevislab.github.io/content/examples/data_objects/contours/example2/index.md
@@ -4,11 +4,11 @@ title: "Contour interpolation"
category: "data_objects"
---
-# Contour Example 2: Contour interpolation
+# Contour Example 2: Contour Interpolation
This example shows how to interpolate CSOs across slices.
## Summary
-In this example, semi-automatic countours are created using the `SoCSOLiveWireEditor` module and their depiction is modified using the `SoCSOVisualizationSettings` module.
+In this example, semi-automatic countours are created using the `SoCSOLiveWireEditor` module and their visualization is modified using the `SoCSOVisualizationSettings` module.
Additional contours between the manually created ones are generated by the `CSOSliceInterpolator` and added to the `CSOManager`. Different groups of contours are created for the left and right lobe of the lung and colored respectively.
diff --git a/mevislab.github.io/content/examples/data_objects/contours/example3/index.md b/mevislab.github.io/content/examples/data_objects/contours/example3/index.md
index ffbdd9648..7cbf2282a 100644
--- a/mevislab.github.io/content/examples/data_objects/contours/example3/index.md
+++ b/mevislab.github.io/content/examples/data_objects/contours/example3/index.md
@@ -4,15 +4,15 @@ title: "2D and 3D visualization of contours"
category: "data_objects"
---
-# Contour Example 3: 2D and 3D visualization of contours
+# Contour Example 3: 2D and 3D Visualization of Contours
This example shows how to display CSOs in 2D as an overlay and additionally how the CSOs are displayed in 3D.
## Summary
-Images are loaded by using a `LocalImage` module and displayed in a 2D viewer. A `SoCSOLiveWireEditor` is added to draw contours on the images. The `CSOSliceInterpolator` generates additional contours between the manual CSOs by using linear interpolation.
+Images are loaded by using a `LocalImage` module and displayed in a 2D viewer. A `SoCSOLiveWireEditor` is added to draw contours on the images. The `CSOSliceInterpolator` generates additional contours between the manually created CSOs by using linear interpolation.
-The module `VoxelizeCSO` is used to create a three-dimensional voxel mask of the contours which can be used as an overlay on the images in a `View2D` panel. The `SoView2DOverlay` module defines the color and opacity of the overlay.
+The module `VoxelizeCSO` is used to create a three-dimensional voxel mask of the contours that can be used as an overlay on the images in a `View2D` panel. The `SoView2DOverlay` module defines the color and opacity of the overlay.
-Lastly the panel of the `View3D` module is used to visualize the voxel mask in 3D.
+Lastly, the panel of the `View3D` module is used to visualize the voxel mask in 3D.

diff --git a/mevislab.github.io/content/examples/data_objects/contours/example4/index.md b/mevislab.github.io/content/examples/data_objects/contours/example4/index.md
index 27ec41c1c..e9e5fd737 100644
--- a/mevislab.github.io/content/examples/data_objects/contours/example4/index.md
+++ b/mevislab.github.io/content/examples/data_objects/contours/example4/index.md
@@ -4,7 +4,7 @@ title: "Annotation of images"
category: "data_objects"
---
-# Contour Example 4: Annotation of images
+# Contour Example 4: Annotation of Images
This example shows how to add annotations to an image.
## Summary
diff --git a/mevislab.github.io/content/examples/data_objects/contours/example5/index.md b/mevislab.github.io/content/examples/data_objects/contours/example5/index.md
index 410aa725f..564e771b1 100644
--- a/mevislab.github.io/content/examples/data_objects/contours/example5/index.md
+++ b/mevislab.github.io/content/examples/data_objects/contours/example5/index.md
@@ -4,11 +4,11 @@ title: "Contours and ghosting"
category: "data_objects"
---
-# Contour Example 5: Contours and ghosting
-This image shows how to automatically create CSOs based on ISO values. In addition the visualization of CSOs of previous and subsequent slices is shown.
+# Contour Example 5: Contours and Ghosting
+This image shows how to automatically create CSOs based on isovalues. In addition, the visualization of CSOs of previous and subsequent slices is shown.
## Summary
-In this example, the `CSOIsoGenerator` is used to generate contours based on a given ISO value of the image. Contours are generated in the image where the given ISO value is close to the one configured. These contours are stored in the `CSOManager` and ghosting is activated in the `SoCSOVisualizationSettings`.
+In this example, the `CSOIsoGenerator` is used to generate contours based on a given isovalue of the image. Contours are generated in the image where the given isovalue is close to the one configured. These contours are stored in the `CSOManager` and ghosting is activated in the `SoCSOVisualizationSettings`.
Ghosting means not only showing contours available on the currently visible slice but also contours of the neighbouring slices with increasing transparency.
diff --git a/mevislab.github.io/content/examples/data_objects/curves/example1/index.md b/mevislab.github.io/content/examples/data_objects/curves/example1/index.md
index 8c58b9237..8230f5278 100644
--- a/mevislab.github.io/content/examples/data_objects/curves/example1/index.md
+++ b/mevislab.github.io/content/examples/data_objects/curves/example1/index.md
@@ -4,7 +4,7 @@ title: "Drawing curves"
category: "data_objects"
---
-# Curves Example: Drawing curves
+# Curves Example: Drawing Curves
This examples shows how to create and render curves.

diff --git a/mevislab.github.io/content/examples/data_objects/markers/example1/index.md b/mevislab.github.io/content/examples/data_objects/markers/example1/index.md
index 4d8777d6b..70128d12f 100644
--- a/mevislab.github.io/content/examples/data_objects/markers/example1/index.md
+++ b/mevislab.github.io/content/examples/data_objects/markers/example1/index.md
@@ -4,7 +4,7 @@ title: "Distance between markers"
category: "data_objects"
---
-# Marker Example 1: Distance between markers
+# Marker Example 1: Distance Between Markers
This examples shows how to create markers in a viewer and measure their distance.

diff --git a/mevislab.github.io/content/examples/data_objects/surface_objects/example2/index.md b/mevislab.github.io/content/examples/data_objects/surface_objects/example2/index.md
index f2aed1280..7ca35ab38 100644
--- a/mevislab.github.io/content/examples/data_objects/surface_objects/example2/index.md
+++ b/mevislab.github.io/content/examples/data_objects/surface_objects/example2/index.md
@@ -4,8 +4,8 @@ title: "Processing and modification of WEMs"
category: "data_objects"
---
-# Surface Example 2: Processing and modification of WEMs
-This example shows how to process and modify WEMs using the modules `WEMModify`, `WEMSmooth` and `WEMSurfaceDistance`.
+# Surface Example 2: Processing and Modification of WEMs
+This example shows how to process and modify WEMs using the modules `WEMModify`, `WEMSmooth`, and `WEMSurfaceDistance`.

# Download
diff --git a/mevislab.github.io/content/examples/data_objects/surface_objects/example3/index.md b/mevislab.github.io/content/examples/data_objects/surface_objects/example3/index.md
index 8b8346799..4e4b29677 100644
--- a/mevislab.github.io/content/examples/data_objects/surface_objects/example3/index.md
+++ b/mevislab.github.io/content/examples/data_objects/surface_objects/example3/index.md
@@ -5,14 +5,14 @@ category: "data_objects"
---
# Surface Example 3: Interactions with WEM
-## Scale, rotate and move a WEM in a scene
+## Scale, Rotate, and Move a WEM in a Scene
In this example, we are using a `SoTransformerDragger` module to apply transformations on a 3D WEM object via mouse interactions.

### Download
You can download the example network [here](/examples/data_objects/surface_objects/example3/SurfaceExample3.mlab)
-## Interactively modify WEMs
+## Interactively Modify WEMs
In this example, we are using a `SoWEMBulgeEditor` module to modify a WEM using the mouse.

diff --git a/mevislab.github.io/content/examples/data_objects/surface_objects/example4/index.md b/mevislab.github.io/content/examples/data_objects/surface_objects/example4/index.md
index fb057189f..7423dcc55 100644
--- a/mevislab.github.io/content/examples/data_objects/surface_objects/example4/index.md
+++ b/mevislab.github.io/content/examples/data_objects/surface_objects/example4/index.md
@@ -4,8 +4,8 @@ title: "Interactively moving WEM"
category: "data_objects"
---
-# Surface Example 4: Interactively moving WEM
-This example shows how to use dragger modules, to modify objects in a 3D viewer.
+# Surface Example 4: Interactively Moving WEM
+This example shows how to use dragger modules to modify objects in a 3D viewer.

# Download
diff --git a/mevislab.github.io/content/examples/data_objects/surface_objects/example5/index.md b/mevislab.github.io/content/examples/data_objects/surface_objects/example5/index.md
index cf12558a0..95cbb7c09 100644
--- a/mevislab.github.io/content/examples/data_objects/surface_objects/example5/index.md
+++ b/mevislab.github.io/content/examples/data_objects/surface_objects/example5/index.md
@@ -5,7 +5,7 @@ category: "data_objects"
---
# Surface Example 5: WEM - Primitive Value Lists
-This example shows how to use Primitive Value Lists (PVLs). With the help of PVLs the distance between the surfaces of WEMs is color coded.
+This example shows how to use Primitive Value Lists (PVLs). With the help of PVLs, the distance between the surfaces of WEMs is color-coded.

# Download
diff --git a/mevislab.github.io/content/examples/howto.md b/mevislab.github.io/content/examples/howto.md
index 2ef339d4a..ac46244f0 100644
--- a/mevislab.github.io/content/examples/howto.md
+++ b/mevislab.github.io/content/examples/howto.md
@@ -11,16 +11,16 @@ menu:
---
### Structure
-Each tutorial chapter was used as an umbrella theme to structure related examples, that are linked in a list.
+Each tutorial chapter was used as an umbrella theme to structure related examples that are linked in a list.
After clicking any of the linked examples, you will be forwarded to a short description of the feature and have the option to download the resource that produces your desired effect.
-The provided files are usually either \*.mlab files or \*.zip archives. You will find a short tutorial on how to add those files into your MeVisLab application, to work with them, below.
+The provided files are usually either *.mlab* files or *.zip* archives. You will find a short tutorial on how to add those files into your MeVisLab application to work with them below.
### MeVisLab (\*.mlab) files
-MeVisLab files are networks stored as \*.mlab files.
+MeVisLab files are networks stored as *.mlab* files.
{{}}
-Double clicking the left mouse button within your MeVisLab workspace works as a shortcut to open files.
+Double-clicking the left mouse button within your MeVisLab workspace works as a shortcut to open files.
{{}}
Files can also be opened using the menu option {{< menuitem "File" "Open">}}.
@@ -38,7 +38,7 @@ The contents can be extracted into the directory of your package. Make sure to k
The typical directory structure of a MeVisLab package looks like this:

-The package *TutorialSummary* within the package group *MeVis* is shown above. A package normally at least contains a *Projects* directory, which is where the macro modules are located. When extracting the contents of a \*.zip file, the *Projects* folder of your package should be the target directory.
+The package *TutorialSummary* within the package group *MeVis* is shown above. A package typically contains at least a *Projects* directory, which is where the macro modules are located. When extracting the contents of a *.zip* file, the *Projects* folder of your package should be the target directory.
Sometimes we even provide test cases. Extract them into the *TestCases* directory.

@@ -47,10 +47,10 @@ Sometimes we even provide test cases. Extract them into the *TestCases* director
Feel free to create certain directories if they do not exist yet, but make sure to name them conforming the directory structure shown above.
{{}}
-Continuing on your MeVisLab workspace: You might need to reload the module cache after adding macro modules out of \*.zip archives for them to be displayed and ready to be used. To do so, open {{< menuitem "Extras" "Reload Module Database (Clear Cache)" >}}.
+Continuing on your MeVisLab workspace: You might need to reload the module cache after adding macro modules out of *.zip* archives for them to be displayed and ready to be used. To do so, open {{< menuitem "Extras" "Reload Module Database (Clear Cache)" >}}.
-### Python (\*.py) or Script (\*.script) files
-In the rare case that a \*.py or \*.script file is provided, make sure to firstly follow the tutorials related to macro modules and test cases.
+### Python (\*.py) or Script (\*.script) Files
+In the rare case that a *.py* or *.script* file is provided, make sure to firstly follow the tutorials related to macro modules and test cases.
{{}}
The integration of Python scripts might not add a lot of value for someone that lacks the knowledge conveyed by the tutorials.
diff --git a/mevislab.github.io/content/examples/image_processing/example1/index.md b/mevislab.github.io/content/examples/image_processing/example1/index.md
index fecc418c6..2b1420588 100644
--- a/mevislab.github.io/content/examples/image_processing/example1/index.md
+++ b/mevislab.github.io/content/examples/image_processing/example1/index.md
@@ -4,7 +4,7 @@ title: "Arithmetic operations on two images"
category: "image_processing"
---
-# Image Processing Example 1: Arithmetic operations on two images
+# Image Processing Example 1: Arithmetic Operations on Two Images
In this example, we apply scalar functions on two images like Add, Multiply, Subtract, etc.
## Summary
diff --git a/mevislab.github.io/content/examples/image_processing/example2/index.md b/mevislab.github.io/content/examples/image_processing/example2/index.md
index a33fcf121..f6a59398c 100644
--- a/mevislab.github.io/content/examples/image_processing/example2/index.md
+++ b/mevislab.github.io/content/examples/image_processing/example2/index.md
@@ -4,8 +4,8 @@ title: "Masking images"
category: "image_processing"
---
-# Image Processing Example 2: Masking images
-In this example, we create a simple mask on an image, so that background pixels are not affected by changes of the window/level values.
+# Image Processing Example 2: Masking Images
+In this example, we create a simple mask on an image, so that background voxels are not affected by changes of the window/level values.
## Summary
We are loading images by using the `LocalImage` module and show them in a `SynchroView2D`. The same image is shown in the right viewer of the `SynchroView2D` but with a `Threshold` based `Mask`.
diff --git a/mevislab.github.io/content/examples/image_processing/example4/index.md b/mevislab.github.io/content/examples/image_processing/example4/index.md
index e1f2c1e1b..16c7f8a2f 100644
--- a/mevislab.github.io/content/examples/image_processing/example4/index.md
+++ b/mevislab.github.io/content/examples/image_processing/example4/index.md
@@ -4,11 +4,11 @@ title: "Subtract 3D objects"
category: "image_processing"
---
-# Image Processing Example 4: Subtract 3D objects
+# Image Processing Example 4: Subtract 3D Objects
In this example, we subtract a sphere from another WEM.
## Summary
-We are loading images by using the `LocalImage` module and render them as a 3D scene in a `SoExaminerViewer`. We also add a sphere which is then subtracted from the original image.
+We are loading images by using the `LocalImage` module and render them as a 3D scene in a `SoExaminerViewer`. We also add a sphere that is then subtracted from the original image.

diff --git a/mevislab.github.io/content/examples/image_processing/example5/index.md b/mevislab.github.io/content/examples/image_processing/example5/index.md
index 98ae1bad0..ae4d5dedd 100644
--- a/mevislab.github.io/content/examples/image_processing/example5/index.md
+++ b/mevislab.github.io/content/examples/image_processing/example5/index.md
@@ -8,7 +8,7 @@ category: "image_processing"
In this example, we are using the currently visible slice from a 2D view as a clip plane in 3D.
## Summary
-We are loading images by using the `LocalImage` module and render them as a 2-dimensional image stack `SoRenderArea`. The displayed slice is used to create a 3D plane/clip plane in a `SoExaminerViewer`.
+We are loading images by using the `LocalImage` module and render them as a two-dimensional image stack `SoRenderArea`. The displayed slice is used to create a 3D plane/clip plane in a `SoExaminerViewer`.

diff --git a/mevislab.github.io/content/examples/open_inventor/example1/index.md b/mevislab.github.io/content/examples/open_inventor/example1/index.md
index 23f8a9038..7205561ba 100644
--- a/mevislab.github.io/content/examples/open_inventor/example1/index.md
+++ b/mevislab.github.io/content/examples/open_inventor/example1/index.md
@@ -4,13 +4,13 @@ title: "Open Inventor objects"
category: "open_inventor"
---
-# Open Inventor Example 1: Open Inventor objects
-In this example a simple Open Inventor scene is created. The Open Inventor scene shows three objects of different color and shape.
+# Open Inventor Example 1: Open Inventor Objects
+In this example, a simple Open Inventor scene is created. The Open Inventor scene shows three objects of different color and shape.
## Summary
-A `SoExaminerViewer` is used to render open inventor scenes in 3D. The `SoBackground` module defines the background of the whole scene.
+A `SoExaminerViewer` is used to render Open Inventor scenes in 3D. The `SoBackground` module defines the background of the whole scene.
-Three 3D objects are created (`SoCone`, `SoSphere` and `SoCube`) having a defined `SoMaterial` module for setting the *DiffuseColor* of the object. The cube and the cone are also transformed by a `SoTransform` module so that they are located next to the centered sphere.
+Three 3D objects are created (`SoCone`, `SoSphere`, and `SoCube`) having a defined `SoMaterial` module for setting the *DiffuseColor* of the object. The cube and the cone are also transformed by a `SoTransform` module so that they are located next to the centered sphere.
In the end, all three objects including their materials and transformations are added to the `SoExaminerViewer` by a `SoGroup`.
diff --git a/mevislab.github.io/content/examples/open_inventor/example2/index.md b/mevislab.github.io/content/examples/open_inventor/example2/index.md
index 15927a436..e8ec855bc 100644
--- a/mevislab.github.io/content/examples/open_inventor/example2/index.md
+++ b/mevislab.github.io/content/examples/open_inventor/example2/index.md
@@ -4,7 +4,7 @@ title: "Mouse interactions in an Open Inventor scene"
category: "open_inventor"
---
-# Open Inventor Example 2: Mouse interactions in an Open Inventor scene
+# Open Inventor Example 2: Mouse Interactions in an Open Inventor Scene
This example shows how to implement object interactions.
## Summary
diff --git a/mevislab.github.io/content/examples/open_inventor/example4/index.md b/mevislab.github.io/content/examples/open_inventor/example4/index.md
index 64c264acd..880f332f8 100644
--- a/mevislab.github.io/content/examples/open_inventor/example4/index.md
+++ b/mevislab.github.io/content/examples/open_inventor/example4/index.md
@@ -4,7 +4,7 @@ title: "Camera interaction with collision detection"
category: "open_inventor"
---
-# Open Inventor Example 4: Camera interaction with collision detection
+# Open Inventor Example 4: Camera Interaction with Collision Detection
This example shows how to implement a camera flight using keyboard shortcuts. Collisions with anatomical structures are detected and the flight stops. In addition to that, the camera object and direction is rendered in another viewer.
This example has been taken from the [MeVisLab forum](https://forum.mevislab.de/index.php?topic=3947.0).
diff --git a/mevislab.github.io/content/examples/testing/Example1/index.md b/mevislab.github.io/content/examples/testing/Example1/index.md
index 4774352b1..5de45d245 100644
--- a/mevislab.github.io/content/examples/testing/Example1/index.md
+++ b/mevislab.github.io/content/examples/testing/Example1/index.md
@@ -4,7 +4,7 @@ date: 2022-06-15T08:56:33+02:00
category: "testing"
---
-# Testing Example 1: Writing a simple test case in MeVisLab
+# Testing Example 1: Writing a Simple Test Case in MeVisLab
This example shows how to write and execute test cases in MeVisLab. The Python files can be downloaded below.
# Download
diff --git a/mevislab.github.io/content/examples/testing/example3/index.md b/mevislab.github.io/content/examples/testing/example3/index.md
index 3f2884a1d..3ede87d2a 100644
--- a/mevislab.github.io/content/examples/testing/example3/index.md
+++ b/mevislab.github.io/content/examples/testing/example3/index.md
@@ -4,7 +4,7 @@ date: 2022-06-15T08:56:33+02:00
category: "testing"
---
-# Testing Example 3: Iterative tests in MeVisLab with Screenshots
+# Testing Example 3: Iterative Tests in MeVisLab with Screenshots
In this example you will learn how to write iterative tests in MeVisLab. In addition to that, we create a screenshot of a viewer and add the image to the test report.
# Download
diff --git a/mevislab.github.io/content/examples/thirdparty/example1/index.md b/mevislab.github.io/content/examples/thirdparty/example1/index.md
index c8dbf0b9d..a2c841d03 100644
--- a/mevislab.github.io/content/examples/thirdparty/example1/index.md
+++ b/mevislab.github.io/content/examples/thirdparty/example1/index.md
@@ -4,7 +4,7 @@ date: 2022-06-15T08:56:33+02:00
category: "thirdparty"
---
-# ThirdParty Example 1: OpenCV Webcam access
+# ThirdParty Example 1: OpenCV Webcam Access
This Python file shows how to access the webcam via OpenCV and use the video via `PythonImage` module in MeVisLab.
# Download
diff --git a/mevislab.github.io/content/examples/thirdparty/example2/index.md b/mevislab.github.io/content/examples/thirdparty/example2/index.md
index f3eff5be1..07e7d366f 100644
--- a/mevislab.github.io/content/examples/thirdparty/example2/index.md
+++ b/mevislab.github.io/content/examples/thirdparty/example2/index.md
@@ -4,7 +4,7 @@ date: 2022-06-15T08:56:33+02:00
category: "thirdparty"
---
-# ThirdParty Example 2: Face detection in OpenCV
+# ThirdParty Example 2: Face Detection in OpenCV
This Python file shows how to access the webcam and detect faces in the video stream via OpenCV.
# Download
diff --git a/mevislab.github.io/content/examples/thirdparty/pytorch1/index.md b/mevislab.github.io/content/examples/thirdparty/pytorch1/index.md
index 162836a45..48d31b288 100644
--- a/mevislab.github.io/content/examples/thirdparty/pytorch1/index.md
+++ b/mevislab.github.io/content/examples/thirdparty/pytorch1/index.md
@@ -4,7 +4,7 @@ date: 2022-06-15T08:56:33+02:00
category: "thirdparty"
---
-# ThirdParty Example 5: Segmentation in webcam stream by using PyTorch
+# ThirdParty Example 5: Segmentation in Webcam Stream by using PyTorch
This macro module segments a person shown in a webcam stream by using a pre-trained network from PyTorch (torchvision).

diff --git a/mevislab.github.io/content/examples/visualization/example1/index.md b/mevislab.github.io/content/examples/visualization/example1/index.md
index 568468056..faf4ac4d7 100644
--- a/mevislab.github.io/content/examples/visualization/example1/index.md
+++ b/mevislab.github.io/content/examples/visualization/example1/index.md
@@ -4,7 +4,7 @@ title: "Synchronous view of two images"
category: "visualization"
---
-# Visualization Example 1: Synchronous view of two images
+# Visualization Example 1: Synchronous View of Two Images
This very simple example shows how to load an image and apply a basic `Convolution` filter to the image. The image with and without filter is shown in a Viewer and scrolling is synchronized so that the same slice is shown for both images.

diff --git a/mevislab.github.io/content/examples/visualization/example2/index.md b/mevislab.github.io/content/examples/visualization/example2/index.md
index 231f14dea..9dc8b0e17 100644
--- a/mevislab.github.io/content/examples/visualization/example2/index.md
+++ b/mevislab.github.io/content/examples/visualization/example2/index.md
@@ -4,8 +4,8 @@ title: "Creating a magnifier"
category: "visualization"
---
-# Visualization Example 2: Creating a magnifier
-This example shows how to create a magnifier. Using the module `SubImage` a fraction of the original image can be extracted and enlarged.
+# Visualization Example 2: Creating a Magnifier
+This example shows how to create a magnifier. Using the module `SubImage`, a fraction of the original image can be extracted and enlarged.

# Download
diff --git a/mevislab.github.io/content/examples/visualization/example3/index.md b/mevislab.github.io/content/examples/visualization/example3/index.md
index 51685c6f2..8dc962e8f 100644
--- a/mevislab.github.io/content/examples/visualization/example3/index.md
+++ b/mevislab.github.io/content/examples/visualization/example3/index.md
@@ -4,7 +4,7 @@ title: "Image overlays"
category: "visualization"
---
-# Visualization Example 3: Image overlays
+# Visualization Example 3: Image Overlays
This example shows the creation of an overlay. Using the module `SoView2DOverlay`, an overlay can be blended over a 2D image.

diff --git a/mevislab.github.io/content/examples/visualization/example4/index.md b/mevislab.github.io/content/examples/visualization/example4/index.md
index c072c8e63..4f10381c2 100644
--- a/mevislab.github.io/content/examples/visualization/example4/index.md
+++ b/mevislab.github.io/content/examples/visualization/example4/index.md
@@ -4,7 +4,7 @@ title: "Display images converted to Open Inventor scene objects"
category: "visualization"
---
-# Visualization Example 4: Display images converted to Open Inventor scene objects
+# Visualization Example 4: Display Images Converted to Open Inventor Scene Objects
This example shows how to convert images to Open Inventor scene objects using the module `SoView2D` and modules based on `SoView2D`.

diff --git a/mevislab.github.io/content/examples/visualization/example5/index.md b/mevislab.github.io/content/examples/visualization/example5/index.md
index d0c719454..8c7c53f5b 100644
--- a/mevislab.github.io/content/examples/visualization/example5/index.md
+++ b/mevislab.github.io/content/examples/visualization/example5/index.md
@@ -4,7 +4,7 @@ title: "Volume rendering and interactions"
category: "visualization"
---
-# Visualization Example 5: Volume rendering and interactions
+# Visualization Example 5: Volume Rendering and Interactions
This example shows the volume rendering of a scan. The texture of the volume is edited and animations are implemented.

diff --git a/mevislab.github.io/content/introduction/introduction.md b/mevislab.github.io/content/introduction/introduction.md
index 1e4324932..6112f813d 100644
--- a/mevislab.github.io/content/introduction/introduction.md
+++ b/mevislab.github.io/content/introduction/introduction.md
@@ -29,21 +29,21 @@ a [*Software Development Kit (SDK)*](/glossary/#mevislab-sdk) and an [*Applicati
In turn, the *MeVisLab SDK* consists of an [*Integrated Development Environment (IDE)*](/glossary/#mevislab-ide)
for visual programming and the advanced text editor [*MATE*](/glossary/#mevislab-mate) for Python
-scripting, providing code completion, debugging, profiling and automated
+scripting, providing code completion, debugging, profiling, and automated
test development as well as execution.
You can re-use thousands of pre-defined [*Modules*](/glossary/#module) for image processing
-(2D up to 6D images) and visualization, combine them or even build your own.
+(2D up to 6D images) and visualization, combine them, or even build your own.
A quick introduction on available modules and [example networks](/glossary/#example-network) will be given in the following tutorials.
-### Structure and usage of provided tutorials
+### Structure and Usage of Provided Tutorials
This tutorial is a hands-on training. You will learn about basic mechanics and
features of MeVisLab.
Starting with this introduction, we will be leading you through all relevant aspects of the user interface,
-commonly used functionalities and provide you with all the basic knowledge you need to build your own web applications.
+commonly used functionalities, and provide you with all the basic knowledge you need to build your own web applications.
Additional information is accessible through embedded links, forwarding you to a related glossary entry or tutorial and shortcuts, advice and hints will be highlighted as shown [here](/about/about/).
@@ -51,7 +51,7 @@ The tutorials are divided into chapters by their topic and each chapter contains
You find them at the end of the tutorial or, also sorted by chapters, under the menu entry [Examples](/examples/howto).
The examples under the designated menu entry are more suitable if you already have a little experience and rather search for inspiration than for explanations.
-### Starting MeVisLab for the first time
+### Starting MeVisLab for the First Time
Right after installation of MeVisLab, you will find some new icons on your Desktop (if selected during setup).
@@ -73,14 +73,14 @@ First, start the MeVisLab IDE. After the Welcome Screen, the standard user inter
By default, MeVisLab starts with an empty [workspace](/glossary/#workspace).
-This is where you will be developing and editing networks. Networks essentially form the base of all processing and visualization pipelines, so the workspace is, where the visual programming is done.
+This is where you will be developing and editing networks. Essentially, networks form the base of all processing and visualization pipelines, so the workspace is where the visual programming is done.
#### Views Area
The standard [Views Area](/glossary/#views-area) contains the [Output Inspector and Module Inspector](./tutorials/basicmechanisms#The_Output_Inspector_and_the_Module_Inspector "Output Inspector and Module Inspector"). With the help of the Output Inspector, you can visualize the modules output.
{{}}
-Further information on each module, e. g. about [module parameters](/glossary/#field), can be found using the [Module Inspector](/glossary/#module-inspector).
+Further information on each module, e.g., about [module parameters](/glossary/#field), can be found using the [Module Inspector](/glossary/#module-inspector).
{{}}
#### Debug Output
@@ -90,7 +90,7 @@ Debugging information can be found using the [Debug Output](/glossary/#debug-out
The MeVisLab IDE and its layout are completely configurable. You can
rearrange the items and add new views via {{< menuitem "Main Menu" "View" "Views" >}}.
-### Filetypes used in, for and with MeVisLab
+### File Types Used in, for, and With MeVisLab
{{< bootstrap-table table_class="table table-striped" >}}
| Extension
| Description |
@@ -104,14 +104,14 @@ rearrange the items and add new views via {{< menuitem "Main Menu" "View" "Views
| `.dcm` | DCM part of the imported DICOM file, see [Importing DICOM Data](./tutorials/basicmechanisms/dataimport#DICOMImport "Importing DICOM Data"). |
{{< /bootstrap-table >}}
-### Module types {#Module_Types}
+### Module Types {#Module_Types}
{{}}
[Modules](/glossary/#module) are the basic entities the MeVisLab concept is built upon.
-They provide the functionalities to process, display and interact with images.
+They provide the functionalities to process, display, and interact with images.
{{}}
-The three existing module types (ML, [Open Inventor](/glossary/#open-inventor) and [macro module](/glossary/#macro-module)) can be distinguished by their colors:
+The three existing module types (ML, [Open Inventor](/glossary/#open-inventor), and [macro module](/glossary/#macro-module)) can be distinguished by their colors:
{{< bootstrap-table table_class="table table-striped" >}}
| Type
| Appearance
| Characteristics |
@@ -121,7 +121,7 @@ The three existing module types (ML, [Open Inventor](/glossary/#open-inventor) a
| Macro module (brown) |  | Combination of other module types, allowing the implementation of hierarchies and scripted interaction. |
{{< /bootstrap-table >}}
-### Invalid modules
+### Invalid Modules
If a module is invalid, it is displayed in bright red. This might happen if the module itself is not available for your system.
@@ -140,22 +140,22 @@ Once the debug console is cleared, the warning and error indicators next to the
module are also cleared.
{{}}
-Informational messages are indicated in a similar matter on the same spot, but in a subtle grey color.
+Informational messages are indicated in a similar matter on the same spot, but in a subtle gray color.
-### Module interactions through the Context Menu
+### Module Interactions Through the Context Menu
Each module has a context menu, providing the following options:

* **Show Internal Network:** [Macro modules](/glossary/#macro-module) provide an entry to open the internal network. You can see what happens inside a macro module. The internal network may also contain other macro modules.
-* **Show Window:** If a module does not provide an User Interface, you will see the automatic panel, showing the module's name. Modules may additionally have one or more windows which can be opened. You can also open the Scripting Console of a module to integrate Python.
+* **Show Window:** If a module does not provide a User Interface, you will see the automatic panel showing the module's name. Modules may additionally have one or more windows that can be opened. You can also open the Scripting Console of a module to integrate Python.
* **Instance Name:** You can edit or copy the instance name. Renaming can be useful if the same module appears more than once in one network and/or if you want to access and distinguish the modules in your Python script.
* **Help:** The menu entry Help provides access to the Module Help pages and to an example network where the module is used. This example network often helps to understand which additional modules can be added to create your desired effect.
* **Extras:** Automated tests written for the specific module can be executed here. You can also run this module in a separate process.
-* **Reload Definition:** In case you are currently working on a module, you may need to reload the definition so that your changes are applied on the module (for example attached Python scripts).
-* **Related Files:** Related files allows a quick access to the modules *\*.script* or *\*.py* files. The files are automatically opened in [MATE](/glossary/#mevislab-mate) for editing.
+* **Reload Definition:** In the case you are currently working on a module, you may need to reload the definition so that your changes are applied on the module (for example, attached Python scripts).
+* **Related Files:** Related files allows a quick access to the modules *.script* or *.py* files. The files are automatically opened in [MATE](/glossary/#mevislab-mate) for editing.
* **Show Enclosing Folder:** This entry opens the directory where your module is stored.
-* **Grouping:** Multiple modules can be clustered and the groups can be named. This adds clarity to the structure of your network. In addition to that, grouped modules can be converted to local- or global macro modules easily.
+* **Grouping:** Multiple modules can be clustered and the groups can be named. This adds clarity to the structure of your network. In addition to that, grouped modules can be converted to local or global macro modules easily.
### Input and Output Connectors {#Module_Connectors}
As the creation of a network requires connected modules, each module has input and output connectors, located on their top and bottom side. Data is transmitted from the output connector on the top side of one module to the input connector on another module's bottom side.
@@ -176,30 +176,30 @@ A connection can be established by dragging one module close to the other.
Some modules even contain hidden connectors in addition to the ones displayed on the module's surface. Click on the workspace and press {{< keyboard "SPACE" >}} to see the hidden connectors as well as the internal networks of each module. You can now also use the hidden connectors for building connections.
-For more information about connectors and different types of connections click {{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch03s03.html" "here" >}}.
-If you want to know more about establishing, interrupting, moving and replacing connections, have a look at {{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch03s04.html" "this." >}}
+For more information about connectors and different types of connections, click {{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch03s03.html" "here" >}}.
+If you want to know more about establishing, removing, moving, and replacing connections, have a look at {{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch03s04.html" "this." >}}
### Parameter Connections
Besides through a module's input and output connectors, connections can also be established between parameters in the module's panel.
{{}}
-An exemplary use-case for a parameter connection is synchronization. Have a look [here](/tutorials/basicmechanisms/#TutorialParameterConnection).
+An exemplary use case for a parameter connection is synchronization. Have a look [here](/tutorials/basicmechanisms/#TutorialParameterConnection).
{{}}
-### Macro modules {#Macro_Modules}
+### Macro Modules {#Macro_Modules}
{{}}
-The creation of macros is furtherly explained in [Tutorial Chapter I - Example 2.2](/tutorials/basicmechanisms/macromodules/globalmacromodules)
+The creation of macros is explained in more detail in [Tutorial Chapter I - Example 2.2](/tutorials/basicmechanisms/macromodules/globalmacromodules)
{{}}
-### Adding modules to your workspace {#Searching_and_Adding_Modules}
+### Adding Modules to your Workspace {#Searching_and_Adding_Modules}
There are several ways to add a module to your current network:
-- via the menu bar entry {{< menuitem "Modules" >}}.
-- via {{< menuitem "Quick Search" >}}.
-- via the View Module Search.
-- via the View Module Browser.
-- via copy and paste from another network.
+- via the menu bar entry {{< menuitem "Modules" >}}
+- via {{< menuitem "Quick Search" >}}
+- via the View Module Search
+- via the View Module Browser
+- via copy and paste from another network
- by scripting, see the {{< docuLinks "/Resources/Documentation/Publish/SDK/ScriptingReference/index.html" "Scripting Reference" >}}
Both the menu entry{{< menuitem "Modules" >}} and the Module Browser display all available modules. The modules are sorted hierarchically by topic and name, as defined in the file `Genre.def`.
@@ -210,23 +210,23 @@ Therefore, both places are a good starting point when in need of a specific func
The advantage of the Module Browser is that you can right-click {{< mousebutton "right" >}} the
entries, open the context menu and, for example, open the help (in your
-default Internet browser) or the module files (in MATE, the in-built
+default Internet browser) or the module files (in MATE, the built-in
text editor).
{{}}
For a module to be listed, it has to be available in the [SDK](/glossary/#mevislab-sdk) or in your self-defined
-[packages](/glossary/#package). A detailed tutorial on how to create packages, can be found [here](/tutorials/basicmechanisms/macromodules/package/). If in doubt or missing something, check out the loaded packages in the preferences.
+[packages](/glossary/#package). A detailed tutorial on how to create packages can be found [here](/tutorials/basicmechanisms/macromodules/package/). If in doubt or missing something, check out the loaded packages in the preferences.
{{}}
-Usually the quickest way to add modules to a network is the quick search in the menu bar. It offers you the possibility to search for modules by module name. By default, the search will also be extended to keywords and substrings and is case-insensitive. To change these settings, click the magnifier button for the search options.
+Usually the quickest way to add modules to a network is the quick search in the menu bar. It offers the possibility to search for modules by module name. By default, the search will also be extended to keywords and substrings and is case-insensitive. To change these settings, click the magnifier button for the search options.

{{}}
-Any time you enter something in the MeVisLab GUI while not being in a dialog window, your entry will be put into the quick search automatically.
+Any time you enter something in the MeVisLab GUI while not focussing a dialog window, your entry will be put into the quick search automatically.
{{}}
- Use the {{< keyboard "ArrowUp" >}} and {{< keyboard "ArrowDown" >}} keys on your keyboard to move to one of the listed modules. The module's decription will appear next to it, allowing you to decide if this is the right module for your use-case.
+ Use the {{< keyboard "ArrowUp" >}} and {{< keyboard "ArrowDown" >}} keys on your keyboard to move to one of the listed modules. The module's decription will appear next to it, allowing you to decide if this is the right module for your use case.

diff --git a/mevislab.github.io/content/tutorials/basicmechanisms.md b/mevislab.github.io/content/tutorials/basicmechanisms.md
index f40b522d6..6ec13cb77 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms.md
@@ -26,20 +26,20 @@ Additional information on the basics of MeVisLab are explained {{< docuLinks "/R
### Loading Data {#TutorialLoadingData}
-First, we need to load the data we would like to work on, e.g. a CT scan. In MeVisLab, modules are used to perform their associated specific task, they are the basic entities you will be working with. Each module has a different functionality for processing, visualization and interaction. Connecting modules enables the development of complex processing pipelines. You will get to know different types of modules throughout the course of this tutorial.
+First, we need to load the data we would like to work on, e.g., a CT scan. In MeVisLab, modules are used to perform their associated specific task: they are the basic entities you will be working with. Each module has a different functionality for processing, visualization, and interaction. Connecting modules enables the development of complex processing pipelines. You will get to know different types of modules throughout the course of this tutorial.
Starting off, we will add the module `ImageLoad` to our network to load our data. The module can be found by typing its name into the search bar on the top-right corner and is added to your network by clicking it.

-Next, we select and load the data we'd like to process. Double-click the module `ImageLoad` to open its panel. You can browse through your folders to select the data you'd like to open. Example data can be found in the MeVisLab DemoData directory *$(InstallDir)/Packages/MeVisLab/Resources/DemoData* located in the MeVisLab installation path. Select a file, for example an MRI scan of a shoulder *Shoulder_Fracture.tif*. The image is loaded immediately and basic information of the loaded image can be seen in the Panel.
+Next, we select and load the data we'd like to process. Double-click the module `ImageLoad` to open its panel. You can browse through your folders to select the data you'd like to open. Example data can be found in the MeVisLab DemoData directory *$(InstallDir)/Packages/MeVisLab/Resources/DemoData* located in the MeVisLab installation path. Select a file, for example, an MRI scan of a shoulder *Shoulder_Fracture.tif*. The image is loaded immediately and basic information of the loaded image can be seen in the Panel.
{{}}
There also are modules to load multiple other formats of data. These are the most common ones:
* `DicomImport` to load DICOM Images
* `LocalImage` to load any image format
-For a more detailed description on loading DICOM images, look {{< docuLinks "/Resources/Documentation/Publish/SDK/GettingStarted/ch03.html" "here">}}
+For a more detailed description on loading DICOM images, see {{< docuLinks "/Resources/Documentation/Publish/SDK/GettingStarted/ch03.html" "here">}}
{{}}
@@ -101,14 +101,14 @@ By dragging the connection away from either the input or the output connector, t
Connections between compatible outputs and inputs are established automatically if two modules get close enough to each other.
{{}}
-Connecting, Disconnecting, Moving and Replacing Connections is furtherly explained {{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch03s04.html" "here" >}}
+Connecting, Disconnecting, Moving, and Replacing Connections is explained in more detail {{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch03s04.html" "here" >}}
{{}}
[//]: <> (MVL-653)
### Image Processing {#TutorialImageProcessing}
-An average kernel will be used to smooth the image out as our next step will be to actually process our image. Add the `Convolution`module to your workspace and disconnect the `View2D`module from the `ImageLoad`module by clicking on the connection and pressing {{< keyboard "DEL" >}}. Now, you can build new connections from the module `ImageLoad` to the module `Convolution` and the `Convolution`module to `View2D`.
+An average kernel will be used to smooth the image as our next step will be to actually process our image. Add the `Convolution` module to your workspace and disconnect the `View2D` module from the `ImageLoad` module by clicking on the connection and pressing {{< keyboard "DEL" >}}. Now, you can build new connections from the module `ImageLoad` to the module `Convolution` and the `Convolution` module to `View2D`.

@@ -118,9 +118,9 @@ Open the panel of the `Convolution` module by double-clicking it. The panel allo
The module `View2D` is now displaying the smoothed image.
-To compare the processed and unprocessed image, click on the output connector of the module `ImageLoad` to display the original image in the Output Inspector. The Output Inspectors greatest advantage is, that it's able to display the output of any connector in the process chain (as long as an interpretable format is used). Simply click the connector or connection to find out more about the module output.
+To compare the processed and unprocessed image, click on the output connector of the module `ImageLoad` to display the original image in the Output Inspector. The Output Inspectors greatest advantage is that it's able to display the output of any connector in the process chain (as long as an interpretable format is used). Simply click the connector or connection to find out more about the module output.
-You can also inspect changes between processed (output connector) and unprocessed (input connector) images by adding a second or even third viewer to your network."Layers" of applied changes can be inspected next to each other using more than one viewer and placing as well as connecting them accordingly. We will be using a second `View2D`-module. Notice how the second Viewer is numbered for you to be able to distinguish them better. It might be important to know at this point, that numerous connections can be established from one output-connector but an input-connector can only receive one stream of data. Please connect the module `ImageLoad` to the second viewer to display the images twice. You can now scroll through the slices of both viewers and inspect the images.
+You can also inspect changes between processed (output connector) and unprocessed (input connector) images by adding a second or even third viewer to your network. "Layers" of applied changes can be inspected next to each other using more than one viewer and placing as well as connecting them accordingly. We will be using a second `View2D` module. Notice how the second viewer is numbered for you to be able to distinguish them better. It might be important to know at this point that numerous connections can be established from one output connector but an input connector can only receive one stream of data. Please connect the module `ImageLoad` to the second viewer to display the images twice. You can now scroll through the slices of both viewers and inspect the images.

@@ -134,14 +134,14 @@ In order to practise establishing parameter connections, add the `SyncFloat` mod

-We will be synchronizing the *startSlice* fields of our viewers, to be able to directly compare the effect our processing module has on the slices:
+We will be synchronizing the *startSlice* fields of our viewers to be able to directly compare the effect our processing module has on the slices:
Right-click the viewer `View2D` to open its context menu and select {{< menuitem "Show Window" "Automatic Panel" >}}.

Doing so shows all parameter fields of the module `View2D`.
-Search for the field *startSlice*. The field indicates which slice is currently shown in the viewer. If you scroll through the slices of an image the value of *startSlice* changes.
+Search for the field *startSlice*. The field indicates which slice is currently shown in the viewer. If you scroll through the slices of an image, the value of *startSlice* changes.
Now, double-click the module `SyncFloat` to open its panel.
@@ -149,7 +149,7 @@ Click on the label *startSlice* in the automatic panel of the module `View2D`, k

-The connection is drawn as a thin grey arrow between both modules with the arrowhead pointing to the module that receives the field value as input. The value of the field *starSlice* is now transmitted to the field *Float1*. Changing *StartSlice* automatically changes *Float1*, but not the other way round.
+The connection is drawn as a thin gray arrow between both modules with the arrowhead pointing to the module that receives the field value as input. The value of the field *startSlice* is now transmitted to the field *Float1*. Changing *startSlice* automatically changes *Float1*, but not the other way round.

@@ -161,11 +161,11 @@ As a result, scrolling through the slices with the mouse wheel {{< mousebutton "

-It is also possible to use the pre-defined module `SynchroView2D` to accomplish a similar result.(`SynchroView2D`'s usage is futherly described in [this chapter](/tutorials/visualization/visualizationexample1/) ).
+It is also possible to use the pre-defined module `SynchroView2D` to accomplish a similar result.(`SynchroView2D`'s usage is described in more detail in [this chapter](/tutorials/visualization/visualizationexample1/) ).
-### Grouping modules {#TutorialGroupingModules}
+### Grouping Modules {#TutorialGroupingModules}
-A contour filter can be created based on our previously created network. To finalize the filter, add the modules `Arithmetic2` and `Morphology` to your workspace and connect the modules as shown below. Double-click the module `Arithmetic2` to open its panel. Change the field *Function* of the module `Arithmetic2` to use the function *subtract* in the panel of the module. The contour filter is done now. You can inspect each processing step using the Output Inspector by clicking on the input and output connectors of the respective modules. The final results can be displayed using the viewer modules. If necessary, adjust the contrast by pressing the right arrow key and moving the cursor.
+A contour filter can be created based on our previously created network. To finalize the filter, add the modules `Arithmetic2` and `Morphology` to your workspace and connect the modules as shown below. Double-click the module `Arithmetic2` to open its panel. Change the field *Function* of the module `Arithmetic2` to use the function *subtract* in the panel of the module. The contour filter is done now. You can inspect each processing step using the Output Inspector by clicking on the input and output connectors of the respective modules. The final results can be displayed using the viewer modules. If necessary, adjust the contrast by pressing the right mouse button and moving the cursor.

@@ -173,11 +173,11 @@ If you'd like to know more about specific modules, search for help. You can do t

-To be able to better distinguish the image processing pipeline, you can encapsulate it in a group: Select the three modules, for example by dragging a selection rectangle around them. Then right-click the selection to open the context menu and select {{< menuitem "Add to New Group" >}}.
+To be able to better distinguish the image processing pipeline, you can encapsulate it in a group: Select the three modules, for example, by dragging a selection rectangle around them. Then right-click the selection to open the context menu and select {{< menuitem "Add to New Group" >}}.

-Enter a name for the new group, for example *Filter*. The new group is created and displayed as a green rectangle. The group allows for quick interactions with all its modules.
+Enter a name for the new group, for example, *Filter*. The new group is created and displayed as a green rectangle. The group allows for quick interactions with all its modules.

@@ -191,12 +191,12 @@ More information on module groups can be found {{< docuLinks "/Resources/Documen
[//]: <> (MVL-653)
-### Macro modules {#TutorialMacroModules}
+### Macro Modules {#TutorialMacroModules}
You have probably already noticed how the modules differ in color. Each color represents another type of module:
- * The blue modules are called ML modules, they process voxel images.
- * Green modules are OpenInventor modules, they enable visual 3D scene graphs.
+ * The blue modules are called ML modules: they process voxel images.
+ * Green modules are OpenInventor modules: they enable visual 3D scene graphs.
* The brown modules are called macro modules. Macro modules encapsulate a whole network in a single module.
To condense our filter into one single module, we will now be creating a macro module out of it. To do that, right-click on the group title and select *Convert To Local Macro*. Name your new macro module and finish. You just created a local macro module. Local macros can only be used from networks in the same or any parent directory.
diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/coordinatesystems/coordinatesystems.md b/mevislab.github.io/content/tutorials/basicmechanisms/coordinatesystems/coordinatesystems.md
index 5bfcff143..846f9396f 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms/coordinatesystems/coordinatesystems.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms/coordinatesystems/coordinatesystems.md
@@ -25,24 +25,24 @@ The blue rectangle shows the same region in the three coordinate systems.

-## World coordinates
+## World Coordinates
World coordinates are:
* Global: Combine several objects in a view
* Isotropic: All directions are equivalent
* Orthogonal: Coordinate axes are orthogonal to each other
-The origin of the world coordinate system can be anywhere and is not clearly defined. Origins of the other coordinate systems can always be mapped to the world coordinate system. In case of DICOM images, this mapping is defined by DICOM tags.
+The origin of the world coordinate system can be anywhere and is not clearly defined. Origins of the other coordinate systems can always be mapped to the world coordinate system. In the case of DICOM images, this mapping is defined by DICOM tags.
-### World coordinates in MeVisLab
+### World Coordinates in MeVisLab
You can show the world coordinates in MeVisLab by using the following example network:

-The `ConstantImage` module generates an artificial image with a certain size, data type and a constant fill value. The origin of the image is at the origin of the world coordinate system, therefore the `SoCoordinateSystem` module shows the world coordinate system. In order to have a larger z-axis, open the panel of the `ConstantImage` module and set *IMage Size* for *Z* to *256*.
+The `ConstantImage` module generates an artificial image with a certain size, data type, and a constant fill value. The origin of the image is at the origin of the world coordinate system, therefore the `SoCoordinateSystem` module shows the world coordinate system. In order to have a larger z-axis, open the panel of the `ConstantImage` module and set *IMage Size* for *Z* to *256*.

-Placing an object into the Open Inventor Scene of the `SoExaminerViewer`, in this case a `SoCube` with *width*, *height* and *depth* of 10, places the object to the origin of the world coordinate system.
+Placing an object into the Open Inventor Scene of the `SoExaminerViewer`, in this case a `SoCube` with *width*, *height*, and *depth* of 10, places the object to the origin of the world coordinate system.

@@ -52,19 +52,19 @@ You can move an object in your scene, for example by using a `SoTranslation` mod

### Transformations
-More complex transformations can be done by using the `SoTransform` module. You can not only translate an existing object, but also rotate, scale and apply many other transformations.
+More complex transformations can be done by using the `SoTransform` module. You can not only translate an existing object, but also rotate, scale, and apply many other transformations.

{{< networkfile "/examples/basic_mechanisms/coordinatesystems/WorldCoordinates.mlab" >}}
-## Voxel coordinates
+## Voxel Coordinates
Voxel coordinates are:
* Relative to an image
* Continuous from [0..x,0..y,0..z], voxel center at 0.5
* Direct relation to voxel location in memory
-### Voxel coordinates in MeVisLab
+### Voxel Coordinates in MeVisLab
You can show the voxel coordinates in MeVisLab by using the following example network:

@@ -75,11 +75,11 @@ Load the file *Liver1_CT_venous.small.tif* .The `Info` module shows detailed inf
The *Advanced* tab of the `Info` module shows the world coordinates of the image. In this case, the origin of the voxel coordinate system is located at -186.993, -173.993, -249.993.
-In addition to that, you can see a scaling which has been done on the image. The voxel sizes are shown in the diagonal values of the matrix as 3.985792, 3.985792, 3.985798.
+In addition to that, you can see a scaling that has been done on the image. The voxel sizes are shown in the diagonal values of the matrix as 3.985792, 3.985792, 3.985798.

-You can change the scaling to 1 by adding a `Resample3D` module to the network, Set the voxel size to 1, 1, 1 and inspect the `Info` module.
+You can change the scaling to 1 by adding a `Resample3D` module to the network: set the voxel size to 1, 1, 1 and inspect the `Info` module.

@@ -107,7 +107,7 @@ You can also add a `SoVertexProperty` and a `SoLineSet` module and configure a l
{{< networkfile "/examples/basic_mechanisms/coordinatesystems/VoxelCoordinates.mlab" >}}
-## Device coordinates
+## Device Coordinates
Device coordinates are:
* 2D coordinates in OpenGL viewport
* Measured in pixel
diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/coordinatesystems/coordinatesystems2.md b/mevislab.github.io/content/tutorials/basicmechanisms/coordinatesystems/coordinatesystems2.md
index b12238fca..4a7fbea22 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms/coordinatesystems/coordinatesystems2.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms/coordinatesystems/coordinatesystems2.md
@@ -24,12 +24,12 @@ World coordinates also refer to the patient axes. They are:

-The DICOM (Digital Imaging and Communications in Medicine) standard defines a data format that groups information into data sets. This way, the image data is always kept together with all meta information like patient ID, study time, series time, acquisition data etc. The image slice is represented by another tag with pixel information.
+The DICOM (Digital Imaging and Communications in Medicine) standard defines a data format that groups information into data sets. This way, the image data is always kept together with all meta information like patient ID, study time, series time, acquisition data, etc. The image slice is represented by another tag with pixel information.
-DICOM tags have unique numbers, encoded as two 16 bit numbers, usually shown in hexadecimal notation as two four-digit numbers (xxxx,xxxx). These numbers are the data group number and the data element number.
+DICOM tags have unique numbers, encoded as two 16-bit numbers, usually shown in hexadecimal notation as two four-digit numbers (xxxx,xxxx). These numbers are the data group number and the data element number.
{{}}
-Although DICOM is a standard, often the data that is received / recorded does not follow the standard. Wrongly used tags or missing mandatory tags may cause problems in data processing.
+Although DICOM is a standard, often the data that is received/recorded does not follow the standard. Wrongly used tags or missing mandatory tags may cause problems in data processing.
{{}}
Some typical modules for DICOM handling:
@@ -48,7 +48,7 @@ For handling and manipulating DICOM data in C++, the DICOM toolkit [DCMTK](https
Another option for Python is [pydicom](https://pydicom.github.io/).
{{}}
-## Orthogonal views
+## Orthogonal Views
The module `OrthoView2D` provides a 2D view displaying the input image in three orthogonal viewing directions. By default, the view is configured as *Cube* where the transverse view is placed in the top right segment, sagittal in bottom left and coronal in bottom right segment. Use the left mouse button to set a position in the data set. This position will be displayed in all available views and is available as field *worldPosition*.

diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/globalmacromodules.md b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/globalmacromodules.md
index 48bb74379..1e3884c10 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/globalmacromodules.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/globalmacromodules.md
@@ -13,7 +13,7 @@ menu:
parent: "macro_modules"
---
-# Example 2.2: Global macro modules
+# Example 2.2: Global Macro Modules
{{< youtube "M4HnA0d1V5k">}}
@@ -21,18 +21,18 @@ menu:
In this chapter you will learn how to create global macro modules. There are many ways to do this. You can convert local macros into global macro modules or you can directly create global macro modules using the *Project Wizard*. In contrast to local macro modules, global macro modules are commonly available throughout projects and can be found via module search and under {{< menuitem "Modules" >}}.
-## Steps to do
-### Transform a local macro module into a global macro module
+## Steps to Do
+### Transform a Local Macro Module into a Global Macro Module
To transform our local macro module `Filter` from [Chapter I](/tutorials/basicmechanisms#TutorialMacroModules) into a global macro module,
right-click {{< mousebutton "right" >}} the macro module to open the context menu and select {{< menuitem "Extras" "Convert To Global Module..." >}}

-### Define module properties
+### Define Module Properties
-1. Choose a unique module name
+1. Choose a unique module name.
-2. State the module author
+2. State the module's author.
3. Select the genre of the module. For this, browse through the module
genres to select the appropriate genre. In our case, as our macro module
@@ -43,7 +43,7 @@ right-click {{< mousebutton "right" >}} the macro module to open the context men
4. Tick the box *Add reference to example network* to directly create the template for an example network for your macro module.
5. Select the package you like to store the module in. We choose the
- package we created [before](./tutorials/basicmechanisms/macromodules/package/). Your module is saved in an .mlab format
+ package we created [before](./tutorials/basicmechanisms/macromodules/package/). Your module is saved in the *.mlab* format
and can be found in
*\\MyPackageGroup\\General\\Modules\\Macros\\MyProject*.
@@ -55,14 +55,14 @@ Also keep in mind that Python files are only created automatically if selected i

-### Use the Project Wizard to create global macro modules
+### Use the Project Wizard to Create Global Macro Modules
Instead of converting a local macro module into a global macro module, you can also use the *Project Wizard* to create new macro modules. Open the Project Wizard via {{< menuitem "File" "Run Project Wizard ..." >}}. Then, select {{< menuitem "Modules (Scripting)" "Macro module" >}} and *Run Wizard*.
-### Define module properties
+### Define Module Properties
-1. Choose a unique module name
+1. Choose a unique module name.
-2. State the module author
+2. State the module's author.
3. Select the genre of the module. For this, browse through the module
genres to select the appropriate genre. In our case, as our macro module
@@ -71,19 +71,19 @@ Instead of converting a local macro module into a global macro module, you can a
4. Tick the box *Add reference to example network* to directly create the template for an example network for your macro module.
5. Select the package you like to store the module in. We choose the
- package we created [before](./tutorials/basicmechanisms/macromodules/package/). Your module is saved in an .mlab format
+ package we created [before](./tutorials/basicmechanisms/macromodules/package/). Your module is saved in the *.mlab* format
and can be found in
*\\MyPackageGroup\\General\\Modules\\Macros\\MyProject*.
{{}}
-Make sure to chose *Directory Structure* as *self-contained*. This makes sure that all files of your module are stored in a single directory.
+Make sure to chose *Directory Structure* as *self-contained*. This ensures that all files of your module are stored in a single directory.
{{}}
- Press *Next >* to edit further properties. You have the opportunity to directly define the internal network of the macro module, for example by copying an existing network. In this case, we could copy the network of the local macro module `Filter` we already created. In addition, you have the opportunity to directly create a Python file. Python scripting can be used for the implementation of module interactions and other module functionalities. More information about Python scripting can be found [here](./tutorials/basicmechanisms/macromodules/pythonscripting).
+ Press *Next >* to edit further properties. You have the opportunity to directly define the internal network of the macro module, for example, by copying an existing network. In this case, we could copy the network of the local macro module `Filter` we already created. In addition, you have the opportunity to directly create a Python file. Python scripting can be used for the implementation of module interactions and other module functionalities. More information about Python scripting can be found [here](./tutorials/basicmechanisms/macromodules/pythonscripting).
{{< imagegallery 2 "/images" "ProjectWizard1" "ProjectWizard2" >}}
-## Structure of global macro modules
+## Structure of Global Macro Modules
After creating your global macro module, you can find the created project *MyProject* in your package. This project contains your macro module `Filter`. For the macro module exist three files:
* *Filter.def*: Module definition file
* *Filter.mlab*: Network file which contains the internal network of your macro module
@@ -95,7 +95,7 @@ In addition, two folders may be created:

-## How to find global macro modules
+## How to Find Global Macro Modules
All available modules are categorized and can be found via {{< menuitem "Modules" >}} in
the respective genre. After creating a global
macro, the new module can be found via {{< menuitem "Modules" "Filters" >}}. In addition, you can now find your macro module via module search.
@@ -109,7 +109,7 @@ If you do not find your new global macro module, try to reload the module databa
{{}}
## Summary
-* Via right-click {{< mousebutton "right" >}} {{< menuitem "Extras" "Convert To Global Module..." >}} global macro modules can be created out of local macro modules
-* You can use the Project Wizard to create new macro modules
-* You need to have a package structure to store your global macro module
+* Via right-click {{< mousebutton "right" >}} {{< menuitem "Extras" "Convert To Global Module..." >}} global macro modules can be created out of local macro modules.
+* You can use the Project Wizard to create new macro modules.
+* You need to have a package structure to store your global macro module.
* Global macro modules are available throughout projects and can be found via *Module Search* and under menu item {{< menuitem "Modules" >}}.
\ No newline at end of file
diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/guidesign.md b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/guidesign.md
index 904f525c3..995537a47 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/guidesign.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/guidesign.md
@@ -12,7 +12,7 @@ menu:
weight: 410
parent: "macro_modules"
---
-# Example 2.4: Building a Panel Layout: Interactions with macro modules
+# Example 2.4: Building a Panel Layout: Interactions with Macro Modules
{{< youtube "tdQUkkROWBg">}}
@@ -28,7 +28,7 @@ More information about GUI design in MeVisLab can be found {{< docuLinks "/Resou
[//]: <> (MVL-653)
[//]: <> (MVL-651)
-## Creating a panel for the macro module flilter {#Example_Paneldesign}
+## Creating a Panel for the Macro Module Filter {#Example_Paneldesign}
### Creation of a module panel
In [Example 2.2](/tutorials/basicmechanisms/macromodules/globalmacromodules) we created the global macro module `Filter`. By now, this module does not have a proper panel. When double-clicking {{< mousebutton "left" >}} the module, the *Automatic Panel* is shown.
@@ -40,9 +40,9 @@ To add and edit a panel, open the context menu and select {{< menuitem "Related

-### Module interface
-Per default, the *\*.script* file contains the {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#mdl_Interface" "interface" >}} of the module.
-In the interface section (everything insight the curled brackets behind the name *Interface*) you can define the module inputs, the module outputs and also all module fields (or *Parameters*).
+### Module Interface
+Per default, the *.script* file contains the {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#mdl_Interface" "interface" >}} of the module.
+In the interface section (everything insight the curled brackets behind the name *Interface*) you can define the module inputs, the module outputs, and also all module fields (or *Parameters*).
[//]: <> (MVL-653)
{{< highlight filename="Filter.script" >}}
@@ -62,9 +62,9 @@ Interface {
```
{{}}
-##### Module inputs and outputs
+##### Module Inputs and Outputs
-To create an input/output, you need to define a *Field* in the respective input/output environment. Each input/output gets a name (here *input0/output0*) which you can use to reference this field. The module input maps to an input of the internal network. You need to define this mapping. In this case the input of the macro module `Filter` maps to the input of the module `Convolution` of the internal network (*internalName = Convolution.input0*). Similarly, you need to define which output of the internal network maps to the output of the macro module `Filter`. In this example, the output of the internal module `Arithmethic2` maps to the output of our macro module `Filter` (*internalName = Arithmetic2.output0*).
+To create an input/output, you need to define a *Field* in the respective input/output environment. Each input/output gets a name (here *input0/output0*) that you can use to reference this field. The module input maps to an input of the internal network. You need to define this mapping. In this case, the input of the macro module `Filter` maps to the input of the module `Convolution` of the internal network (*internalName = Convolution.input0*). Similarly, you need to define which output of the internal network maps to the output of the macro module `Filter`. In this example, the output of the internal module `Arithmethic2` maps to the output of our macro module `Filter` (*internalName = Arithmetic2.output0*).
Creating an input/output causes:
1. Input/output connectors are added to the module.
@@ -74,13 +74,13 @@ Creating an input/output causes:

-##### Module fields
+##### Module Fields
In the environment *Parameters* you can define *fields* of your macro module. These fields may map to existing fields of the internal network (*internalName = ...* ), but they do not need to and can also be completely new. You can reference these fields when creating a panel, to allow interactions with these fields. All fields appear in the *Automatic Panel*.
-### Module panel layout
+### Module Panel Layout
-To create your own User Interface, we need to create a {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#mdl_Window" "Window" >}}. A window is one of the layout elements which exist in MDL. These layout elements are called {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#Controls" "controls" >}}. The curled brackets define the window environment, in which you can define properties of the window and insert further controls like a {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#mdl_Box" "Box" >}}.
+To create your own User Interface, we need to create a {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#mdl_Window" "Window" >}}. A window is one of the layout elements that exist in MDL. These layout elements are called {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#Controls" "controls" >}}. The curled brackets define the window environment, in which you can define properties of the window and insert further controls like a {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#mdl_Box" "Box" >}}.
Initially, we call the window *MyWindowTitle*, which can be used to reference this window.
@@ -175,11 +175,11 @@ Window MyWindowName {
There are much more controls, which can be used. For example a CheckBox,
-a Table, a Grid, a Button, \... . To find out more, take a look into the {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#Controls" "MDL Reference" >}}.
+a Table, a Grid, or a Button. To find out more, take a look into the {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#Controls" "MDL Reference" >}}.
[//]: <> (MVL-653)
-### Module interactions {#mdlInteractions}
+### Module Interactions {#mdlInteractions}
Until now, we learned how to create the layout of a panel. As a next step, we like to get an overview over interactions.
@@ -187,7 +187,7 @@ Until now, we learned how to create the layout of a panel. As a next step, we li
You can add the module `GUIExample` to your workspace and play around with is.
{{}}
-#### Access to existing fields of the internal network
+#### Access to Existing Fields of the Internal Network
To interact with fields of the internal network in your User Interface, we
need to access these fields. To access the field of the internal module
@@ -199,7 +199,7 @@ Then, open the panel of the module `Convolution` and right-click {{< mousebutton

In the panel of the module `Convolution`, you can change this variable *Kernel* via a drop-down menu. In
-MDL a drop-down menu is called a {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#mdl_ComboBox" "ComboBox" >}}. We can take over the field *predefKernel*, its drop-down menu and all its properties by
+MDL, a drop-down menu is called a {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#mdl_ComboBox" "ComboBox" >}}. We can take over the field *predefKernel*, its drop-down menu and all its properties by
creating a new field in our panel and reference to the internal
field *Convolution.predefKernel*, which already exist in the internal network.
@@ -221,7 +221,7 @@ Window MyWindowName {

-As an alternative, you can define the field *kernel* in the *Parameters* environment, and reference the defined field by its name. The result in the panel is the same. You can see a difference in the Automatic Panel. All fields, which are defined in the interface in the *Parameters* environment appear in the Automatic Panel. Fields of the internal network, which are used but not declared in the section *Parameters* of the module interface do not appear in the Automatic Panel.
+As an alternative, you can define the field *kernel* in the *Parameters* environment, and reference the defined field by its name. The result in the panel is the same. You can see a difference in the Automatic Panel. All fields that are defined in the interface in the *Parameters* environment appear in the Automatic Panel. Fields of the internal network, which are used but not declared in the section *Parameters* of the module interface, do not appear in the Automatic Panel.
{{< highlight filename="Filter.script" >}}
```Stan
@@ -253,9 +253,9 @@ Window MyWindowName {
#### Commands
-We can not only use existing functionalities, but also add new interactions via Python scripting.
+We cannot only use existing functionalities, but also add new interactions via Python scripting.
-In below example we added a *wakeupCommand* to the Window and a simple *command* to the Button.
+In the example below, we added a *wakeupCommand* to the Window and a simple *command* to the Button.
{{< highlight filename="Filter.script" >}}
```Stan
@@ -270,9 +270,9 @@ Window MyWindowName {
```
{{}}
-The *wakeupCommand* defines a Python function which is executed as soon as the Window is opened. The Button *command* is executed when the user clicks on the Button.
+The *wakeupCommand* defines a Python function that is executed as soon as the Window is opened. The Button *command* is executed when the user clicks on the Button.
-Both commands reference a Python function which is executed whenever both actions (open the Window or click the Button) are executed.
+Both commands reference a Python function that is executed whenever both actions (open the Window or click the Button) are executed.
If you like to learn more about Python scripting, take a look at [Example 2.5](tutorials/basicmechanisms/macromodules/pythonscripting).
@@ -288,12 +288,12 @@ Commands {
{{}}
{{}}
-The section Source should already be available and generated automatically in case you enable the Wizard to add a Python file to your module.
+The section *Source* should already be available and generated automatically in case you enable the Wizard to add a Python file to your module.
{{}}
[//]: <> (MVL-653)
-You can right-click {{< mousebutton "right" >}} on the command (*myWindowCommand* or *myButtonAction*) in your *\*.script* file and select {{< menuitem "Create Python Funtion......" >}}. The text editor MATE opens automatically and generates an initial Python function for you. You can simply add a logging function or implement complex logic here.
+You can right-click {{< mousebutton "right" >}} on the command (*myWindowCommand* or *myButtonAction*) in your *.script* file and select {{< menuitem "Create Python Funtion......" >}}. The text editor MATE opens automatically and generates an initial Python function for you. You can simply add a logging function or implement complex logic here.
**Example:**
{{< highlight filename="Filter.py" >}}
@@ -306,10 +306,10 @@ def myButtonAction:
```
{{}}
-## Available examples
-MeVisLab provides a lot of example modules for GUI development. All of these examples provides the \*.script file for UI development and the \*.py file containing the Python script.
+## Available Examples
+MeVisLab provides a lot of example modules for GUI development. All of these examples provides the *.script* file for UI development and the *.py* file containing the Python script.
-### Layouting examples
+### Layouting Examples
* {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#TestVerticalLayout" "TestVerticalLayout Module">}}
* {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#TestHorizontalLayout" "TestHorizontalLayout Module">}}
* {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#TestTableLayout" "TestTableLayout Module">}}
@@ -318,7 +318,7 @@ MeVisLab provides a lot of example modules for GUI development. All of these exa
* {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#TestBoxLayout" "TestBoxLayout Module">}}
* {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#TestTabViewLayout" "TestTabViewLayout Module">}}
-### Other examples
+### Other Examples
* {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#TestHyperText" "TestHyperText Module">}}
* {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#TestListBox" "TestListBox Module">}}
* {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#TestListView" "TestListView Module">}}
@@ -334,7 +334,7 @@ Please use the *Module Search* with the prefix *Test* for more examples.
## Summary
* User interfaces and several module panels can be created for each macro module.
-* You can create a panel, define inputs and outputs as well as interactions, in your *\*.script* file in {{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch26.html" "MATE">}} by using the {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html" "MeVisLab Definition Language (MDL)">}}.
+* You can create a panel, define inputs and outputs as well as interactions, in your *.script* file in {{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch26.html" "MATE">}} by using the {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html" "MeVisLab Definition Language (MDL)">}}.
* Module interactions can be implemented using commands, which are linked to Python functions.
* You can implement field listeners, which trigger actions after a field value changes.
diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/helpfiles.md b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/helpfiles.md
index f4aa55bc7..502134896 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/helpfiles.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/helpfiles.md
@@ -12,7 +12,7 @@ menu:
weight: 400
parent: "macro_modules"
---
-# Example 2.3: Creation of module help
+# Example 2.3: Creation of Module Help
Generating help of a macro module is part of the video about macro modules from [Example 2: Creation of global macro modules](/tutorials/basicmechanisms/macromodules/globalmacromodules)
{{< youtube "M4HnA0d1V5k">}}
@@ -21,17 +21,17 @@ Generating help of a macro module is part of the video about macro modules from
In this chapter, you will learn how to create a help page and an example network. For hands-on training, we will use the macro module `Filter`, which was created in the [previous chapter](/tutorials/basicmechanisms/macromodules/globalmacromodules).
-Depending on the way the macro module was created the default help page and example network might or might not exist. In case they exist, the help page only contains information about module in- and outputs as well as module fields. The example network only contains the macro module itself. Both, the help page and the example network, can be created and edited after module creation.
+Depending on the way the macro module was created, the default help page and example network might or might not exist. In the case they exist, the help page only contains information about module inputs and outputs as well as module fields. The example network only contains the macro module itself. Both, the help page and the example network, can be created and edited after module creation.
-## Steps to do
-### Creation of help files using MeVisLab MATE
-We will start by creating a help file using the build in text editor {{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch26.html" "MeVisLab MATE">}} (MeVisLab Advanced Text Editor). If you open the context menu of your global macro module and select {{< menuitem "Help" >}}, it might be, that no help page is given. We will start to create a help file by selecting {{< menuitem "Help" "Create Help" >}}. If a help page already exists, select {{< menuitem "Help" "Edit Help" >}}.
+## Steps to Do
+### Creation of Help Files Using MeVisLab MATE
+We will start by creating a help file using the built-in text editor {{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch26.html" "MeVisLab MATE">}} (MeVisLab Advanced Text Editor). If you open the context menu of your global macro module and select {{< menuitem "Help" >}}, it might be that no help page is given. We will start to create a help file by selecting {{< menuitem "Help" "Create Help" >}}. If a help page already exists, select {{< menuitem "Help" "Edit Help" >}}.
[//]: <> (MVL-653)

-{{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch26.html" "MeVisLab MATE">}} opens. An \*.mhelp file (*Filter.mhelp*) is created automatically and is stored in the folder your macro module `Filter` is stored in. You can find the folder structure in MATE on the left side. Editing the text field, you can edit the help file.
+{{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch26.html" "MeVisLab MATE">}} opens. An *.mhelp* file (*Filter.mhelp*) is created automatically and stored in the folder your macro module `Filter` is stored in. You can find the folder structure in MATE on the left side. Editing the text field, you can edit the help file.
[//]: <> (MVL-653)
@@ -40,7 +40,7 @@ We will start by creating a help file using the build in text editor {{< docuLin
When creating the help file of a module, all important information of the
module down to the field specifications are extracted and created automatically. Thus, the
basic module information is always available in the module
-help. Additional documentation should be added by the module author. On the left
+help. Additional documentation should be added by the module's author. On the left
side, you can find the outline of the help file. Each section can be
edited. In this example, we added the purpose of the module
to the help file.
@@ -68,10 +68,10 @@ The result can be seen when opening the help file via context menu in MeVisLab I
Depending on the way the macro module was created, more or less features are automatically given in the help file and the example network. All missing features can be added manually.
{{}}
-### Creation of an example network
-To add an example network to your module, you need to add a reference to the respective *\*.mlab* file to the module definition file (.def). Open the file *Filter.def*. You can find the line *exampleNetwork = "$(LOCAL)/networks/FilterExample.mlab"*, which defines the reference to the *\*.mlab* file containing the example network. Per default the name of the example network is *ModulenameExample.mlab*. An *\*.mlab* file containing only the module Filter is created insight the folder *networks*.
+### Creation of an Example Network
+To add an example network to your module, you need to add a reference to the respective *\*.mlab* file to the module definition file (.def). Open the file *Filter.def*. You can find the line *exampleNetwork = "$(LOCAL)/networks/FilterExample.mlab"*, which defines the reference to the *.mlab* file containing the example network. By default, the name of the example network is *ModulenameExample.mlab*. An *.mlab* file containing only the module *Filter* is created inside the folder *networks*.
-It is possible that the reference to the example network or the file *FilterExample.mlab* is missing. One reason could be, that its creation was not selected when creating the macro module. In this case, add the reference and the file manually.
+It is possible that the reference to the example network or the file *FilterExample.mlab* is missing. One reason could be that its creation was not selected when creating the macro module. In this case, add the reference and the file manually.

@@ -83,6 +83,6 @@ To create the example network, open the file *FilterExample.mlab* in MeVisLab an
## Summary
* {{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch26.html" "MeVisLab MATE">}} is a build-in text editor which can be used to create module help files, module panels or to create module interactionss via Python scripting.
* You can create help files via the module context menu using MeVisLab Mate.
-* You can add an example network to your macro module via the .def file
+* You can add an example network to your macro module via the .def file.
[//]: <> (MVL-653)
\ No newline at end of file
diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/itemmodelview.md b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/itemmodelview.md
index 8db3421fc..74646de77 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/itemmodelview.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/itemmodelview.md
@@ -12,14 +12,14 @@ menu:
weight: 465
parent: "basicmechanisms"
---
-# Example 7: Creating your own ItemModel by using the ItemModelView
+# Example 7: Creating Your Own ItemModel by Using the ItemModelView
## Introduction
In this example, we will show how to use the *ItemModelView* MDL control to represent an abstract hierarchical item model with generically named attributes. You will see how to select the displayed attributes in the resulting table and how to interact with this table.
We create a macro module that receives an input image and then shows some selected DICOM attributes of this patient in our own *ItemModelView*.
-## Prepare your network
+## Prepare Your Network
### Create a Macro Module
{{}}
@@ -30,7 +30,7 @@ Use the *Project Wizard* via menu entry {{< menuitem "File" "Run Project Wizard
Start with an empty network and add a Python file.
-We can leave the *Fields* empty for now. We can add them in the *\*.script* file.
+We can leave the *Fields* empty for now. We can add them in the *.script* file.
Click *Create* {{< mousebutton "left" >}}.
@@ -38,12 +38,12 @@ Click *Create* {{< mousebutton "left" >}}.
If you cannot find your module via *Module Search*, reload module cache by clicking the menu item {{< menuitem "Extras" "Reload Module Database (Clear Cache)" >}}
-### Define the necessary fields
+### Define the Necessary Fields
Add your new module `MyItemModelView` to your workspace. It does not provide a user interface and you do not have any *Fields* available.

-Open the *\*.script* file of your module via right-click {{< mousebutton "right" >}} and {{< menuitem "Related Files (4)" "MyItemModelView.script" >}}.
+Open the *.script* file of your module via right-click {{< mousebutton "right" >}} and {{< menuitem "Related Files (4)" "MyItemModelView.script" >}}.
We first define the input for the image.
{{< highlight filename="MyItemModelView.script" >}}
@@ -100,7 +100,7 @@ If you now open your panel, you should see the *Input* *inImage* and the just cr

-### Add the ItemModelView to your panel
+### Add the ItemModelView to Your Panel
We can now add the *ItemModelView* to our panel and define the columns of the view, that we want to see. Add a *Window* section to your script file and define it as seen below.
{{< highlight filename="MyItemModelView.script" >}}
@@ -109,8 +109,8 @@ Window {
Category {
Vertical {
ItemModelView myItemModel {
- name = itemModelView
- idAttribute = id
+ name = itemModelView
+ idAttribute = id
Column id {}
Column patientName {}
Column patientBirthdate {}
@@ -143,8 +143,8 @@ Your module now also shows an output *MLBase* object and the columns you defined

-### Fill your table with data
-We want to get the necessary information from the defined input image *inImage*. We want the module to update the content whenever the input image changes. Therefore we need a *Field Listener* calling a Python function whenever the input image changes. Add it to your *Commands* section.
+### Fill Your Table with Data
+We want to get the necessary information from the defined input image *inImage*. We want the module to update the content whenever the input image changes. Therefore, we need a *Field Listener* calling a Python function whenever the input image changes. Add it to your *Commands* section.
{{< highlight filename="MyItemModelView.script" >}}
```Stan
@@ -181,7 +181,7 @@ We need to import *mevis.MLAB* and we define the attributes of our resulting vie
The unique *id* is an increasing *Integer* and we can now initialize our model.
-#### Implement the model
+#### Implement the Model
In Python, we have to define some basic classes and functions for our final model. Define a class *MyItem* which represents a single item. Each item may have children of the same type to provide a hierarchical structure.
{{< highlight filename="MyItemModelView.py" >}}
@@ -194,7 +194,7 @@ class MyItem:
```
{{}}
-Now we implement a very simple and basic model named *MyItemModel*. Initially we create a new *MLBase* object using the existing *StandardItemModel* and define the structure of our items as already done using the attributes.
+Now we implement a very simple and basic model named *MyItemModel*. Initially, we create a new *MLBase* object using the existing *StandardItemModel* and define the structure of our items as already done using the attributes.
Some additional functions are necessary to get the root item and the selected index of the model. We also need functions to add and insert items and to clear all items.
@@ -253,7 +253,7 @@ class MyItemModel:
```
{{}}
-You can see that the above Python code uses a field *selection* which contains the ID of the selected item in our table. We have to add this *Field* to our *\*.script* file, too.
+You can see that the above Python code uses a field *selection* that contains the ID of the selected item in our table. We have to add this *Field* to our *.script* file, too.
{{< highlight filename="MyItemModelView.script" >}}
```Stan
@@ -279,7 +279,7 @@ Window {
```
{{}}
-#### Fill the model with your data
+#### Fill the Model with Your Data
Now, we can implement the function *imageChanged*.
{{< highlight filename="MyItemModelView.py" >}}
@@ -361,8 +361,8 @@ If you now open the panel of your module, you can already see the results.
The first line shows the information of the patient, the study and the series and each child item represents a single slice of the image.
-## Interact with your model
-We can now add options to interact with the *ItemModelView*. Open the *\*.script* file of your module and go to the *Commands* section. We add a *FieldListener* to our *selection* field. Whenever the user selects a different item in our view, the Python function *itemClicked* in the *FieldListener* is executed.
+## Interact with Your Model
+We can now add options to interact with the *ItemModelView*. Open the *.script* file of your module and go to the *Commands* section. We add a *FieldListener* to our *selection* field. Whenever the user selects a different item in our view, the Python function *itemClicked* in the *FieldListener* is executed.
{{< highlight filename="MyItemModelView.script" >}}
```Stan
@@ -400,7 +400,7 @@ def itemClicked(field: "mevislab.MLABField"):
```
{{}}
-The *itemClicked* function uses *id* from the selected item to get the value of column 8 (in this case it is the *SOP Instance UID* of the image) and prints this value.
+The *itemClicked* function uses *id* from the selected item to get the value of column 8 (in this case, it is the *SOP Instance UID* of the image) and prints this value.

@@ -431,8 +431,8 @@ def itemClicked(field: "mevislab.MLABField"):
While the *imageChanged* function is executed, the parameter is set to *False* and the *itemClicked* function does not print anything.
## Summary
-* *ItemModelViews* allow you to define your own abstract hierarchical item model with generically named attributes
-* This model can be provided as Output and added to the Panel of your module
+* *ItemModelViews* allow you to define your own abstract hierarchical item model with generically named attributes.
+* This model can be provided as Output and added to the Panel of your module.
* Interactions with the model can be implemented by using a *FieldListener*.
{{< networkfile "examples/basic_mechanisms/Modules.zip" >}}
diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/package.md b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/package.md
index 0a1446a7d..7a4ebf3cc 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/package.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/package.md
@@ -14,7 +14,7 @@ menu:
---
-# Example 2.1: Package creation
+# Example 2.1: Package Creation
{{< youtube "1wrGsYtAs3g">}}
@@ -28,7 +28,7 @@ Macro modules and projects are stored in packages. If you like to create a globa
[//]: <> (MVL-653)
-## Steps to do
+## Steps to Do
To create packages and package groups, we will use the Project Wizard. Open the Project Wizard via {{< menuitem "File" "Run Project Wizard ..." >}}. Then, select {{< menuitem "Package" "New Package" >}} and *Run Wizard*.

@@ -40,9 +40,9 @@ Next you need to:
2. Find a name for your package, in our example we call it *General*.
-3. Select the path your package group is supposed to be stored in (If you
+3. Select the path your package group is supposed to be stored in. If you
like to add a package to an existing package group, select its name
- and chose the path the package group is stored in)
+ and chose the path the package group is stored in.
If you now create the package, you can find a folder structure in the
desired directory. The folder of your package group contains the folder
diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythondebugger.md b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythondebugger.md
index f9a770701..168b18f2f 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythondebugger.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythondebugger.md
@@ -12,56 +12,56 @@ menu:
weight: 455
parent: "basicmechanisms"
---
-# Example 5: Debugging Python files in MATE
+# Example 5: Debugging Python Files in MATE
{{< youtube "ccLDQUrlzjU">}}
## Introduction
MeVisLab provides the powerful integrated text editor MATE. By default, MATE is used to create/edit files like Python scripts. In this tutorial, we want to show you how to debug Python scripts in MeVisLab.
-## Prepare your network
+## Prepare Your Network
We are using a very simple network of pre-defined modules, but you can also debug your self-written Python scripts. Add a `LocalImage` module to your workspace and connect it to a `DicomTagBrowser` module. The `DicomTagBrowser` module shows a table containing the DICOM tags of your currently opened file.

-## Open Python script in MATE
+## Open Python Script in MATE
To debug our module, we need to open the Python file. Right-click {{< mousebutton "right" >}} the module `DicomTagBrowser` and select {{< menuitem "Related Files (3)" "DicomTagBrowser.py" >}}. The file is opened in MATE.
{{}}
-MATE only opens Python files if default configuration in *MeVisLab/Preferences* is not changed for *Supportive Programs*.
+MATE only opens Python files if the default configuration in *MeVisLab/Preferences* is not changed for *Supportive Programs*.
{{}}

{{}}
-You can not only debug your own files, but also Python scripts of pre-defined MeVisLab modules.
+You cannot only debug your own files, but also Python scripts of pre-defined MeVisLab modules.
{{}}
The user interface of MATE provides some relevant views for debugging.
-### Outline view
+### Outline View
The *Outline* view shows a list of all functions defined in your currently opened script.
-### Project Workspace view
+### Project Workspace View
The *Project Workspace* view shows the content of the directories for all of your opened files. In this case, we only opened one file and only see the content of the directory for the `DicomTagBrowser` module.
-### Debug Output view
+### Debug Output View
The *Debug Output* view shows the messages you also see in MeVisLab. Additional views are available as soon as we start debugging our file.
-## Debug a Python script
+## Debug a Python Script
First we need to enable debugging. In the MATE main menu, select {{< menuitem "Debug" "Enable Debugging" >}}. You can see some new panels appearing in MATE.
-### Debugging panel
+### Debugging Panel
The *Debugging* panel allows you to step through your code.

-### Stack Frames panel
+### Stack Frames Panel
The *Stack Frames* panel shows your current stack trace while debugging.

-### Variables/Watches/Evaluate Expression panel
+### Variables/Watches/Evaluate Expression Panel
Another panel *Variables/Watches/Evaluate Expression* appears, where you can see all current local and global variables. Add your own variables to watch their current value and evaluate your own expressions.

diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythonpip.md b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythonpip.md
index 6bb50bd3e..8bd99789a 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythonpip.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythonpip.md
@@ -12,9 +12,9 @@ menu:
weight: 450
parent: "basicmechanisms"
---
-# Example 4: Installing additional Python packages using the PythonPip module
+# Example 4: Installing Additional Python Packages Using the PythonPip Module
## Introduction
-MeVisLab already comes with a lot of integrated third party software tools ready to use. Nevertheless it might be necessary to install additional Python packages for your specific needs. This example will walk you through the process of adding packages through usage of/using the `PythonPip` module.
+MeVisLab already comes with a lot of integrated third-party software tools ready to use. Nevertheless, it might be necessary to install additional Python packages for your specific needs. This example will walk you through the process of adding packages through usage of/using the `PythonPip` module.
The `PythonPip` module allows to work with the Python package manager pip. It can be used to install Python packages into the site-packages of the MeVisLab Python installation.
@@ -24,7 +24,7 @@ It technically provides the full Python package ecosystem, though you will have
* **All installed packages with C-Extensions are release only**, so you can only import them in a release MeVisLab (under Windows)
{{}}
-Under Windows: Existing packages (e. g./ like *NumPy*) can only be upgraded if they haven't already been loaded by MeVisLab's Python. So please make sure to start with a *fresh* MeVisLab
+On Windows: Existing packages (e.g., *NumPy*) can only be upgraded if they haven't already been loaded by MeVisLab's Python. So please make sure to start with a *fresh* MeVisLab
{{}}
**Packages that you should not upgrade or install (because they have been adapted for MeVisLab):**
@@ -35,14 +35,14 @@ Under Windows: Existing packages (e. g./ like *NumPy*) can only be upgraded if t
These are some of the most important packages that have been adapted for MeVisLab. If you seem to have a problem upgrading another one that is not listed here, make sure to ask in the [MeVisLab forum](https://forum.mevislab.de) or directly contact our developers via [EMail](mailto://info@mevislab.de).
-### Working with the PythonPip module on your MeVisLab workspace
+### Working with the PythonPip Module on your MeVisLab Workspace
The module `PythonPip` can be found via module search. It provides a user interface showing the currently installed Python packages including version and MeVisLab package it has been installed to.

Select the package to install the Python package into, write the name of the package and click install.
-In case you want to install a specific version, you can also use *==1.2.0*
+In the case you want to install a specific version, you can also use *==1.2.0*
{{}}
We strongly recommend to install the packages into a MeVisLab user package. This has many advantages:
@@ -53,9 +53,9 @@ We strongly recommend to install the packages into a MeVisLab user package. This
The only disadvantage: Python commands will not be recognized outside of MeVisLab by default.
{{}}
-Thirdparty information and *\*.mli* files are updated automatically.
+Thirdparty information and *.mli* files are updated automatically.
-### Using the commandline
+### Using the Commandline
Another option is using the commandline tool provided by MeVisLab. Under Windows, you need to change to directory *Packages\MeVis\ThirdParty\Python* first.
{{< highlight filename="commandline" >}}
@@ -65,10 +65,10 @@ MeVisPython -m pip ...
{{}}
{{}}
-The commandline option does not provide the possibility to install into a specified user package. Thirdparty information and *\*.mli* files are not adapted automatically with the commandline tool.
+The commandline option does not provide the possibility to install into a specified user package. Third-party information and *.mli* files are not adapted automatically with the commandline tool.
{{}}
In [Example 1: Installing PyTorch using the PythonPip module](/tutorials/thirdparty/pytorch/pytorchexample1/) we are installing PyTorch to use it in MeVisLab scripting.
## Summary
-* The `PythonPip` module allows to install additional Python packages to adapt MeVisLab to a certain extent
+* The `PythonPip` module allows to install additional Python packages to adapt MeVisLab to a certain extent.
diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythonscripting.md b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythonscripting.md
index c2a2dc991..d7d6d00a2 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythonscripting.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythonscripting.md
@@ -22,17 +22,17 @@ In fact, nearly everything in MeVisLab can be done via Python scripting: You can
## Basics
To see how to access modules, fields, and so on, open the *Scripting Console* Via {{< menuitem "Scripting" "Show Scripting Console" >}}.
-### Internal field names
+### Internal Field Names
You can find the internal name of one module field in the respective network. Open a panel, for example the Automatic Panel and right-click {{< mousebutton "right" >}} the field's title to open the field's context menu. Now, you can select *Copy Name*, to copy the internal name of the field. This name can be used to access the field via scripting.
-### Scripting context
+### Scripting Context
-When entering *ctx* to the console, you can see the context you are working with. In the context of the *Scripting Console*, you have access to your workspace, meaning the whole network, its modules and the module fields.
+When entering *ctx* to the console, you can see the context you are working with. In the context of the *Scripting Console*, you have access to your workspace, meaning the whole network, its modules, and the module fields.

-### Editing the workspace
+### Editing the Workspace
In the *Scripting Console*, you can add and connect modules using the following commands:
@@ -40,7 +40,7 @@ In the *Scripting Console*, you can add and connect modules using the following
* *ctx.field("* < ModuleName.FieldName> *")* : Access a field of a module.
* *ctx.field("* < ModuleInput > *").connectFrom("* < ModuleOutput > *")* : Draw a connection from one module's output to another module's input.
-In this case we added the modules `DicomImport` and `View2D` to the workspace and connected both modules.
+In this case, we added the modules `DicomImport` and `View2D` to the workspace and connected both modules.

@@ -48,9 +48,9 @@ It is also possible to add notes to your workspace.

-### Access modules and module fields
+### Access Modules and Module Fields
-You can access modules via *ctx.module("* < ModuleName > *")*. From this object, you can access module fields, module inputs and outputs and everything in context of this module.
+You can access modules via *ctx.module("* < ModuleName > *")*. From this object, you can access module fields, module inputs and outputs, and everything in context of this module.
You can also directly access a module field via *ctx.field("* < ModuleName.FieldName > *")*. Different methods can be called on this object. Take a look at the {{< docuLinks "/Resources/Documentation/Publish/SDK/ScriptingReference/group__scripting.html" "Scripting Reference" >}} to find out which methods can be called for which object or class. You can for example access the value of the respective field.
@@ -64,7 +64,7 @@ You can also directly access a module field via *ctx.field("* < ModuleName.Field
[//]: <> (MVL-653)
-## Where and how to use Python scripting
+## Where and How to Use Python Scripting
#### Scripting View
Under {{< menuitem "View" "Views" "Scripting" >}} you can find the View *Scripting*. The view offers a standard Python console, without any meaningful network or module context. This means only general Python functionalities can be tested and used. Access to modules or your network is not possible.
@@ -73,7 +73,7 @@ Under {{< menuitem "View" "Views" "Scripting" >}} you can find the View *Scripti
You can open the *Scripting Console* via {{< menuitem "Scripting" "Show Scripting Console" >}}. In the context of your workspace, you can access your network and modules.
-#### Scripting console of modules
+#### Scripting Console of Modules
Every module offers a scripting console. Open the context menu of a module and select {{< menuitem "Show Window" "Scripting Console" >}}. You can work in the context (*ctx.*) of this module.
@@ -81,14 +81,14 @@ Every module offers a scripting console. Open the context menu of a module and s
The module `RunPythonScript` allows to execute Python scripts from within a MeVisLab network. You can draw parameter connection from modules to `RunPythonScript` and back, to process parameter fields using Python scripting. An example for the usage of `RunPythonScript` can be found [here](../scriptingexample1/).
-#### Module interactions via Python scripting
+#### Module Interactions via Python Scripting
-You can reference to a Python function inside a *\*.script* file of a macro module. With this, you can for example execute a Python function, whenever you open a panel, define the action which is executed when pressing a button or specify the command triggered by a [field listener](tutorials/basicmechanisms/macromodules/scriptingexample2). An example for module interactions via Python scripting is given in the same example.
+You can reference to a Python function inside a *.script* file of a macro module. With this, you can for example execute a Python function, whenever you open a panel, define the action that is executed when pressing a button or specify the command triggered by a [field listener](tutorials/basicmechanisms/macromodules/scriptingexample2). An example for module interactions via Python scripting is given in the same example.
-#### Python scripting in network files (\*.mlab)
-If you do not want to create a macro module, you can also execute Python scripts in a network file (\*.mlab). Save your network using a defined name, for example *mytest.mlab*. Then create a \*.script and a \*.py file in the same directory, using the same names (*mytest.script* and *mytest.py*).
+#### Python Scripting in Network Files (*.mlab*)
+If you do not want to create a macro module, you can also execute Python scripts in a network file (*.mlab*). Save your network using a defined name, for example *mytest.mlab*. Then create a *.script* and a *.py* file in the same directory, using the same names (*mytest.script* and *mytest.py*).
-Open the \*.script file and add a *Commands* section defining the name of the Python file.
+Open the *.script* file and add a *Commands* section defining the name of the Python file.
{{< highlight filename="IsoCSOs.script" >}}
```Stan
@@ -111,7 +111,7 @@ print("Hello")
If you now use the menu item {{< menuitem "Scripting" "Start Network Script" >}}, the script can be executed inside your network. You can also use the keyboard shortcut {{< keyboard "ctrl+R" >}}.
-## Tips and tricks
+## Tips and Tricks
#### Scripting Assistant
Under {{< menuitem "View" "Views" "Scripting Assistant" >}} you can find the view *Scripting Assistant*. In this view, the actions you execute in the workspace are translated into Python script.
@@ -121,7 +121,7 @@ For example: Open the *Scripting Assistant*. Add the module `WEMInitialize` to y

## Examples
-See the following examples for Python Scripting:
+See the following examples for Python scripting:
1. [The module RunPythonScript](./tutorials/basicmechanisms/macromodules/scriptingexample1/)
2. [Module interactions via Python scripting](./tutorials/basicmechanisms/macromodules/scriptingexample2/)
@@ -129,4 +129,4 @@ See the following examples for Python Scripting:
* Python can be used to access, create and process networks, modules, fields and panels.
* You can use Python via different scripting consoles.
-* You can also define custom module interactions by referencing to Python functions from the *\*.script* file
\ No newline at end of file
+* You can also define custom module interactions by referencing to Python functions from the *.script* file.
diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/scriptingexample1.md b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/scriptingexample1.md
index fb20b9a32..5fb912f18 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/scriptingexample1.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/scriptingexample1.md
@@ -13,7 +13,7 @@ menu:
parent: "macro_modules"
---
-# Example 2.5.1: The module RunPythonScript
+# Example 2.5.1: The Module RunPythonScript
{{< youtube "O5Get1PMOq8" >}}
@@ -21,14 +21,14 @@ menu:
The module `RunPythonScript` allows to execute Python scripts from within a MeVisLab network. You can draw parameter connection from modules to `RunPythonScript` and back, to process parameter fields using Python scripting.
-## Steps to do
-### Develop your network
+## Steps to Do
+### Develop Your Network
In this example, we like to dynamically change the color of a cube in an Open Inventor scene. For that, add and connect the following modules as shown.

-### Scripting using the moduule `RunPythonScript`
+### Scripting Using the Module `RunPythonScript`
Open the panel of `RunPythonScript`. There is an option to display input and output fields. For that, tick the box *Fields* on the top left side of the panel.
diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/scriptingexample2.md b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/scriptingexample2.md
index 5e3a70846..f76eae5fa 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/scriptingexample2.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/scriptingexample2.md
@@ -12,23 +12,23 @@ menu:
weight: 440
parent: "macro_modules"
---
-# Example 2.5.2: Module interactions via Python scripting
+# Example 2.5.2: Module Interactions Via Python Scripting
{{< youtube "hGq6vA7Ll9Q" >}}
## Introduction
-In this example, you will learn how to add Python scripting to your User Interface. The network used in [Chapter V](tutorials/dataobjects/contours/contourexample5/) will be used for creating the macro module.
+In this example, you will learn how to add Python scripting to your user interface. The network used in [Chapter V](tutorials/dataobjects/contours/contourexample5/) will be used for creating the macro module.
-## Steps to do
-### Creating the macro module
+## Steps to Do
+### Creating the Macro Module
First, we condense the example network into a macro module and then we create a panel for that module. To create a macro module use the
Project Wizard, which you find under {{< menuitem "File" "Run Project Wizard" >}}. Select
*Macro module* and press *Run*.
Now, you have to edit:
1. Name: The name of your module
-2. Package: Select the package you like to save the macro module in.
+2. Package: Select the package you like to save the macro module in
3. Directory Structure: Change to *Self-contained* (this setting is only available in MeVisLab versions before 5.0.0, later versions always use *self-contained*)
4. Project: Select you project name
@@ -43,13 +43,13 @@ Now, create your macro module and reload MeVisLab. You can find your module via

-To design a panel and create a user interface for the macro module, open the *\*.script* file. You can see, that a Command environment exist, which defines the python file as source for all commands.
+To design a panel and create a user interface for the macro module, open the *.script* file. You can see that a *Command* environment exist, which defines the Python file as source for all commands.


-### Creating a panel with tabs and viewers
+### Creating a Panel with Tabs and Viewers
At first, we create a {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#mdl_Window" "Window" >}} with two {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html##mdl_TabView" "Tabs" >}}. One *Main* tab, in which both viewers of the network are represented and one tab for *Settings*. For generating tabs, we can use the control {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#mdl_TabView" "TabView" >}}, with its items {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#mdl_TabViewItem" "TabViewItem" >}}. The control *TabView* enables to add a command, which is executed when opening the tab. For adding the viewers to the panel, we use the Control *Viewer*.
@@ -83,7 +83,7 @@ Window {

-### Edit viewer settings in the panel
+### Edit Viewer Settings in the Panel
You may want to change the design setting of the right viewer. This is
still possible via the internal network of the macro module. Open the
@@ -95,7 +95,7 @@ the module `SoExaminerViewer` via context menu {{< menuitem "Show Windows" "Auto

-### Selection of images
+### Selection of Images
Next, we like to add the option to browse through the folders and select
the image, we like to create CSOs from. This functionality is already given in the internal network in the module `LocalImage`. We can copy this functionality from `LocalImage` and add this option to the panel above both viewers. But, how should we know, which field name we
@@ -140,16 +140,16 @@ Window {

-### Add buttons to your panel
+### Add Buttons to your Panel
-As a next step, we like to add a *Browse\...*-Button, like in the module
+As a next step, we like to add a *Browse\...* button, like in the module
`LocalImage`, and also a button to create the CSOs.
-To create the *Browse\...*-Button:
+To create the *Browse\...* button:
1. Create a button containing the command *fileDialog*.
2. Right-click {{< mousebutton "right" >}} the command to create the respective function in the Python file.
-3. Edit the function in the Python file, to enable the file dialog (similar function as in *LocalImage.py*).
+3. Edit the function in the Python file to enable the file dialog (similar function as in *LocalImage.py*).
To create the Iso Generator Button:
@@ -239,7 +239,7 @@ can do this in the following way:

-2. Enable a functionality which allows us to notice the id of the CSO we are currently hovering over with our mouse. For this open the internal network of our macro module. We will use the module `SoView2DCSOExtensibleEditor`. Open its panel and select the tab *Advanced*. You can check a box to enable *Update CSO id under mouse*. If you now hover over a CSO, you can see its id in the panel. We can save the internal network to save this functionality, but we can also solve our problem via scripting. The Scripting Assistant translated our action into code, which we can use.
+2. Enable a functionality that allows us to notice the id of the CSO we are currently hovering over with our mouse. For this open the internal network of our macro module. We will use the module `SoView2DCSOExtensibleEditor`. Open its panel and select the tab *Advanced*. You can check a box to enable *Update CSO id under mouse*. If you now hover over a CSO, you can see its id in the panel. We can save the internal network to save this functionality, but we can also solve our problem via scripting. The Scripting Assistant translated our action into code, which we can use.

@@ -271,7 +271,7 @@ def enableFunctionalities():
3. Implement a field listener. This field listener will detect when you hover over a CSO and the CSO id changes. Triggered by a CSO id change, a colorization function will be executed, which will colorize the selected CSO.
-In the *\*.script* file:
+In the *.script* file:
{{< highlight filename="IsoCSOs.script" >}}
```Stan
diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/soviewportregion.md b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/soviewportregion.md
index 914e3631a..8bf617a57 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/soviewportregion.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/soviewportregion.md
@@ -22,14 +22,14 @@ We will demonstrate how to:
* Assign different content to each region.
* Use alternative methods, such as `SoView2D`, when applicable.
-## Prepare your network
+## Prepare Your Network
-### Displaying three images in one panel
+### Displaying Three Images in One Panel
Add an `ImageLoad` module to your workspace and select a 3D image like *./MeVisLab/Resources/DemoData/MRI_Head.tif* from the MeVisLab demo data directory. Connect an `OrthoReformat3` module and add three `View2D` modules.

-Opening the three `View2D` module panels now shows the data in 3 orthogonal views. The module `OrthoReformat3` transforms the input image (by rotating and/or flipping) into the three main views commonly used.
+Opening the three `View2D` module panels now shows the data in three orthogonal views. The module `OrthoReformat3` transforms the input image (by rotating and/or flipping) into the three main views commonly used.

@@ -49,7 +49,7 @@ This happens, because all three `SoViewportRegion` modules have the same setting

-The `SoViewportRegion` module allows to define the X- and Y-position and the width and height of the image in the `SoRenderArea` module.
+The `SoViewportRegion` module allows to define the x- and y-position and the width and height of the image in the `SoRenderArea` module.
Values can be in pixels or as fractions from 0 to 1:
@@ -109,7 +109,7 @@ The right `SoViewportRegion` module should look as follows:

-#### Displaying four images in one panel
+#### Displaying Four Images in One Panel
In the next example, the `SoRenderArea` will display four views at the same time: axial, coronal, sagittal, and a 3D view.

@@ -152,14 +152,14 @@ You will see that the orientation cube of the 3D viewer appears in the bottom ri

-## Alternative using `SoView2D`
+## Alternative Using `SoView2D`
In case you want the same dataset to be visualized in multiple viewers, the module `SoView2D` already provides this functionality.

-Whenever you are using the `SoView2D` module to visualize a 2D dataset, you need to add a `View2DExtensions` module and for example a `SoRenderArea` module. Without the `View2DExtensions` module, interactions like scrolling through slices or changing the window and level settings will not be possible.
+Whenever you are using the `SoView2D` module to visualize a 2D dataset, you need to add a `View2DExtensions` module and, for example, a `SoRenderArea` module. Without the `View2DExtensions` module, interactions like scrolling through slices or changing the window and level settings will not be possible.
-By default, you will see your images in a single viewer the same way as if you use the `View2D` module. The *number of columns* is defined as *1* by default. If you now change the *Number of Slices* to something like *3*, you will see 3 viewers shown in 1 column. As we can only connect one dataset, this network cannot display multiple series at the same time.
+By default, you will see your images in a single viewer the same way as if you use the `View2D` module. The *number of columns* is defined as *1* by default. If you now change the *Number of Slices* to something like *3*, you will see three viewers shown in a single column. As we can only connect one dataset, this network cannot display multiple series at the same time.

diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/viewerexample.md b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/viewerexample.md
index 47e500201..40f6cb1c1 100644
--- a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/viewerexample.md
+++ b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/viewerexample.md
@@ -12,29 +12,29 @@ menu:
weight: 445
parent: "basicmechanisms"
---
-# Example 3: Creating a simple application
+# Example 3: Creating a Simple Application
## Introduction
-In the previous examples, you already learned how to create macro modules, user interfaces and how to interact with your UI via Python scripting.
+In the previous examples, you already learned how to create macro modules, user interfaces, and how to interact with your UI via Python scripting.
-In this example, you will learn how to create a simple Prototype application in MeVisLab including a User Interface with 2D and 3D viewer. You will learn how to implement field listeners and react on events.
+In this example, you will learn how to create a simple prototype application in MeVisLab including a user interface with 2D and 3D viewer. You will learn how to implement field listeners and react on events.
-## Steps to do
-### Create your network
-Start with an empty network and add the Module `ImageLoad` to your workspace. Then add a `View2D` and `View3D` to your workspace and connect the modules as seen below.
+## Steps to Do
+### Create Your Network
+Start with an empty network and add the Module `ImageLoad` to your workspace. Then, add a `View2D` and `View3D` to your workspace and connect the modules as seen below.

-### Load an image
+### Load an Image
Now double-click {{< mousebutton "left" >}} on the `ImageLoad` module and open any image. You can use the included file *./MeVisLab/Resources/DemoData/MRI_Head.dcm*.
Opening your viewers should now show the images in 2D and 3D.

-### Save your network
-Now, save your network as *\*.mlab* file and remember the location.
+### Save Your Network
+Now, save your network as *.mlab* file and remember the location.
-### Create a macro module
-Open the Project Wizard via {{< menuitem "File" "Run Project Wizard" >}} and run Wizard for a *macro module*. Name your module *MyViewerApplication*, enter your details and click *Next >*.
+### Create a Macro Module
+Open the Project Wizard via {{< menuitem "File" "Run Project Wizard" >}} and run the Wizard for a *macro module*. Name your module *MyViewerApplication*, enter your details, and click *Next >*.

@@ -46,18 +46,18 @@ You can leave all fields empty for now and just click *Create*.

-MeVisLab reloads its internal database and you can open a new Tab. Search for your newly created module, in our case it was *MyViewerApplication*.
+MeVisLab reloads its internal database and you can open a new tab. Search for your newly created module, in our case it was *MyViewerApplication*.

-In case you double-click {{< mousebutton "left" >}} your module now, you will see the *Automatic Panel* only showing the name of your module, because we did not add any own *Window* until now.
+In the case you double-click {{< mousebutton "left" >}} your module now, you will see the *Automatic Panel* only showing the name of your module, because we did not add any own *Window* until now.
-### Develop your User Interface
-Before adding your own UI, open internal network of your macro module via right-click {{< mousebutton "right" >}} and {{< menuitem "Show Internal Network" >}}. Open the panel of your `ImageLoad` module and set filename to an empty string (clear). This is necessary for later.
+### Develop Your User Interface
+Before adding your own UI, open the internal network of your macro module via right-click {{< mousebutton "right" >}} and {{< menuitem "Show Internal Network" >}}. Open the panel of your `ImageLoad` module and set *filename* to an empty string (clear). This is necessary for later.
Now, right-click on your *MyViewerApplication* and select {{< menuitem "Related Files" "MyViewerApplication.script" >}}
-{{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch26.html" "MATE">}} opens showing your script file. You already learned how to create simple UI elements in [Example 2.4](tutorials/basicmechanisms/macromodules/guidesign). Now we will create a little more complex UI including your `View2D` and `View3D`.
+{{< docuLinks "/Resources/Documentation/Publish/SDK/MeVisLabManual/ch26.html" "MATE">}} opens showing your script file. You already learned how to create simple UI elements in [Example 2.4](tutorials/basicmechanisms/macromodules/guidesign). Now, we will create a little more complex UI including your `View2D` and `View3D`.
First we need a new *Field* in your *Parameters* section. Name the field *filepath* and set *internalName* to *ImageLoad.filename*.
@@ -75,7 +75,7 @@ Interface {
```
{{}}
-We now re-use the *filepath* field from the `ImageLoad` module for our interface. Add a *Window* and a *Vertical* to the bottom of your *\*.script* file. Add the just created parameter field *filepath* inside your *Vertical* as seen below.
+We now re-use the *filepath* field from the `ImageLoad` module for our interface. Add a *Window* and a *Vertical* to the bottom of your *.script* file. Add the just created parameter field *filepath* inside your *Vertical* as seen below.
{{< highlight filename="MyViewerApplication.script" >}}
``` Stan
@@ -105,7 +105,7 @@ If you now double-click {{< mousebutton "left" >}} on your module, you can see y

-Next, we will add your 2D and 3D Viewers and a Button to your Window. Change your *\*.script* file as seen below:
+Next, we will add your 2D and 3D viewers and a *Button* to your *Window*. Change your *.script* file as seen below:
{{< highlight filename="MyViewerApplication.script" >}}
``` Stan
@@ -136,19 +136,19 @@ Window {
```
{{}}
-We have a vertical Layout having 2 items placed horizontally next to each other. The new Button gets the title *Reset* but does nothing, yet because we did not add a Python function to a command.
+We have a vertical layout having two items placed horizontally next to each other. The new *Button* gets the title *Reset* but does nothing yet, because we did not add a Python function to a command.
-Additionally we added the `View2D` and the `View3D` to our *Window* and defined the *height*, *width* and the *expandX/Y* property to *yes*. This leads our viewers to resize together with our *Window*.
+Additionally, we added the `View2D` and the `View3D` to our *Window* and defined the *height*, *width* and the *expandX/Y* property to *yes*. This leads our viewers to resize together with our *Window*.
{{}}
Additional information about the `View2D` and `View3D` options can be found in the MeVisLab {{< docuLinks "/Resources/Documentation/Publish/SDK/MDLReference/index.html#mdl_Viewer" "MDL Reference">}}
{{}}
-You can now play around with your module in MeVisLab SDK. Open the *Window* and select a file. You can see the 2 viewers showing the 2D and 3D images. You can interact with your viewers the same way as in your MeVisLab network. All functionalities are taken from the modules and transferred to your user interface.
+You can now play around with your module in MeVisLab SDK. Open the *Window* and select a file. You can see the two viewers showing the 2D and 3D images. You can interact with your viewers the same way as in your MeVisLab network. All functionalities are taken from the modules and transferred to your user interface.

-### Develop a python function for your Button
+### Develop a Python Function for Your Button
Next we want to reset the filepath to an empty string on clicking our *Reset* button. Add the *reset* command to your Button.
{{< highlight filename="MyViewerApplication.script" >}}
``` Stan
@@ -174,11 +174,11 @@ def reset():
Clicking on *Reset* in your module now clears the filename field and the viewers do not show any images anymore.
-#### Field listeners {#fieldlisteners}
+#### Field Listeners {#fieldlisteners}
-A field listener watches a given field in your network and reacts on any changes of the field value. You can define Python functions to execute in case a change has been detected.
+A field listener watches a given field in your network and reacts on any changes of the field value. You can define Python functions to execute in the case a change has been detected.
-In order to define such a listener, you need to add it to the *Commands* section in your *\*.script* file.
+In order to define such a listener, you need to add it to the *Commands* section in your *.script* file.
**Example:**
{{< highlight filename="MyViewerApplication.script" >}}
@@ -195,7 +195,7 @@ Commands {
In the above example, we react on changes of the field *startSlice* of the module `View2D`. Whenever the field value (currently displayed slice) changes, the Python function *printCurrentSliceNumber* is executed.
-In your Python file `MyViewerApplication.py` you can now add the following:
+In your Python file `MyViewerApplication.py`, you can now add the following:
{{< highlight filename="MyViewerApplication.py" >}}
```Python
diff --git a/mevislab.github.io/content/tutorials/dataobjects.md b/mevislab.github.io/content/tutorials/dataobjects.md
index e095a85d5..7a52cc45d 100644
--- a/mevislab.github.io/content/tutorials/dataobjects.md
+++ b/mevislab.github.io/content/tutorials/dataobjects.md
@@ -14,8 +14,8 @@ menu:
---
## Data Objects in MeVisLab {#TutorialDataObjects}
-MeVisLab provides pre-defined data objects, e. g.
-* [Contour Segmented Objects (CSOs)](/tutorials/dataobjects/contourobjects)
+MeVisLab provides pre-defined data objects, e.g.:
+* [Contour Segmentation Objects (CSOs)](/tutorials/dataobjects/contourobjects)
,
which are three-dimensional objects encapsulating formerly defined contours within images.
* [Surface Objects (Winged Edge Meshes or WEMs)](/tutorials/dataobjects/surfaceobjects)
represent the surface of geometrical figures and allow the user to manipulate them.
@@ -24,4 +24,4 @@ are used to mark specific locations or aspects of an image and allow to process
* [Curves](tutorials/dataobjects/curves)
can print the results of a function as two-dimensional mathematical graphs into a diagram.
-Usage, advantages and disadvantages of each above mentioned data object type will be covered in the following specified chapters, where you will be building example networks for some of the most common use cases.
+Usage, advantages, and disadvantages of each above-mentioned data object type will be covered in the following specified chapters, where you will be building example networks for some of the most common use cases.
diff --git a/mevislab.github.io/content/tutorials/dataobjects/contourobjects.md b/mevislab.github.io/content/tutorials/dataobjects/contourobjects.md
index bdd7cf556..84110f525 100644
--- a/mevislab.github.io/content/tutorials/dataobjects/contourobjects.md
+++ b/mevislab.github.io/content/tutorials/dataobjects/contourobjects.md
@@ -16,11 +16,11 @@ menu:
## Introduction
### Structure of CSOs
-MeVisLab provides modules to create contours in images. 3D objects which encapsulate these contours are called Contour Segmented Objects (CSOs).
+MeVisLab provides modules to create contours in images. 3D objects that encapsulate these contours are called Contour Segmentation Objects (CSOs).
In the next image, you can see a rectangular shaped CSO. The pink circles you can see are called *Seed Points*.
-*Seed Points* define the shape of the CSO. In case of a rectangle, you need four *Seed Points* forming the corners, to define the whole rectangle.
+*Seed Points* define the shape of the CSO. In the case of a rectangle, you need four *Seed Points* forming the corners to define the whole rectangle.
The points forming the blue lines are called *Path Points*.
@@ -41,17 +41,17 @@ The following images show editors available in MeVisLab for drawing CSOs:
{{}}
The `SoCSOIsoEditor` and `SoCSOLiveWireEditor` are special, because they are using an algorithm to detect edges themselves.
-* The `SoCSOIsoEditor` generates iso-contours interactively.
+* The `SoCSOIsoEditor` generates isocontours interactively.
* The `SoCSOLiveWireEditor` renders and semi-interactively generates CSOs based on the LiveWire algorithm.
{{}}
### CSO Lists and CSO Groups
-All created CSOs are stored in CSO lists, which can be saved and loaded on demand. The lists can not only store the coordinates of the CSOs, but also additional information in the form of name-value pairs (using specialized modules or Python scripting).
+All created CSOs are stored in CSO lists that can be saved and loaded on demand. The lists can not only store the coordinates of the CSOs, but also additional information in the form of name-value pairs (using specialized modules or Python scripting).

-Each `SoCSO*Editor` requires a `SoView2DCSOExtensibleEditor` which manages attached CSO editors and renderers and offers an optional default renderer for all types of CSOs. In addition to that, the list of CSOs needs to be stored in a `CSOManager`.
+Each `SoCSO*Editor` requires a `SoView2DCSOExtensibleEditor` that manages attached CSO editors and renderers and offers an optional default renderer for all types of CSOs. In addition to that, the list of CSOs needs to be stored in a `CSOManager`.
The appearance of the CSO can be defined by using a `SoCSOVisualizationSettings` module.
diff --git a/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample1.md b/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample1.md
index c62078815..637915770 100644
--- a/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample1.md
+++ b/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample1.md
@@ -19,15 +19,15 @@ menu:
## Introduction
-We like to start with the creation of CSOs. To create CSOs, you need a `SoCSO*`-Editor. There are several different editors, which can be used to create CSOs (see [here](tutorials/dataobjects/contourobjects#CSOEditors)). Some of them are introduced in this example.
+We like to start with the creation of CSOs. To create CSOs, you need a `SoCSO*`-Editor. There are several different editors that can be used to create CSOs (see [here](tutorials/dataobjects/contourobjects#CSOEditors)). Some of them are introduced in this example.
-## Steps to do
-### Develop your network
-For this example, we need the following modules. Add the modules to your workspace, connect them as shown below and load the example image *$(DemoDataPath)/BrainMultiModal/ProbandT1.tif*.
+## Steps to Do
+### Develop Your Network
+For this example, we need the following modules. Add the modules to your workspace, connect them as shown below, and load the example image *$(DemoDataPath)/BrainMultiModal/ProbandT1.tif*.

-### Edit rectangular CSO
+### Edit Rectangular CSO
Now, open the module `View2D`. Use your left mouse key {{< mousebutton "left" >}}, to draw a rectangle, which is your first CSO.

@@ -44,7 +44,7 @@ If you now open the panel of the `CSOManager`, you will find one CSO, the one we

-### Change properties of CSO
+### Change Properties of CSO
Now, add the module `SoCSOVisualizationSettings` to your workspace and connect it as shown below.

@@ -55,17 +55,17 @@ be red). Tick the *Auto apply* box at the bottom or press *Apply*.

-### CSOs of different shapes
+### CSOs of Different Shapes
Exchange the module `SoCSORectangleEditor` with another editor, for
-example the `SoSCOPolygonEditor` or `SoCSOSplineEditor`. Other editors
+example, the `SoSCOPolygonEditor` or `SoCSOSplineEditor`. Other editors
allow to draw CSOs of other shapes. For polygon-shaped CSOs or CSOs
consisting of splines, left-click on the image viewer to add new points
-to form the CSO. Double--click to finish the CSO.
+to form the CSO. Double-click to finish the CSO.


-### Draw filled CSOs
+### Draw Filled CSOs
If you want to fill the shapes, you can simply add a `SoCSOFillingRenderer` module to your `SoView2DCSOExtensibleEditor`.

@@ -73,10 +73,10 @@ If you want to fill the shapes, you can simply add a `SoCSOFillingRenderer` modu
Create CSOs with green color and ellipsoid shapes.
## Summary
-* CSOs can be created using a SoCSO-Editor
-* CSOs of different shapes can be created
-* A list of CSOs can be stored in the `CSOManager`
-* Properties of CSOs can be changed using `SoCSOVisualizationSettings`
+* CSOs can be created using a SoCSO-Editor.
+* CSOs of different shapes can be created.
+* A list of CSOs can be stored in the `CSOManager`.
+* Properties of CSOs can be changed using `SoCSOVisualizationSettings`.
{{< networkfile "examples/data_objects/contours/example1/ContourExample1.mlab" >}}
diff --git a/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample2.md b/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample2.md
index f3dfcab0d..cc4dcf29e 100644
--- a/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample2.md
+++ b/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample2.md
@@ -27,8 +27,8 @@ generated between manual segmentations based on a linear interpolation.
As a last step, we will group together CSOs of the same anatomical unit.
-## Steps to do
-### Develop your network and create CSOs
+## Steps to Do
+### Develop Your Network and Create CSOs
In order to do that, create the shown network. You can use the network
from the previous example and exchange the `SoCSO`-Editor. In addition to
@@ -39,7 +39,7 @@ displays the amount of existing CSOs.

-### Create CSO interpolations
+### Create CSO Interpolations
We like to generate interpolated contours for existing CSOs. In order to
do that, add the module `CSOSliceInterpolator` to your workspace and
connect it as shown.
@@ -47,7 +47,7 @@ connect it as shown.

Open the panel of module `CSOSliceInterpolator` and change the *Group
-Handling* and the *Mode* as shown. If you now press *Update* interpolating
+Handling* and the *Mode* as shown. If you now press *Update*, interpolating
CSOs are created.

@@ -62,7 +62,7 @@ displayed in white and interpolated CSOs are marked in yellow.

### Group CSOs
-We like to segment both lobes of the lung. To distinguish the CSOs of both lungs, we like to group CSOs together, according to the lung, they belong to. First, we like to group together all CSOs belonging to the lung we already segmented. In order to do this, open the `CSOManager`. Create a new Group and label that Group. We chose the label *Left Lung*. Now, mark the created Group and all CSOs you want to include into that group and press *Combine*. If you click on the Group, all CSOs belonging to this Group are marked with a star.
+We like to segment both lobes of the lung. To distinguish the CSOs of both lungs, we like to group CSOs together, according to the lung they belong to. First, we like to group together all CSOs belonging to the lung we already segmented. In order to do this, open the `CSOManager`. Create a new Group and label that Group. We chose the label *Left Lung*. Now, mark the created Group and all CSOs you want to include into that group and press *Combine*. If you click on the Group, all CSOs belonging to this Group are marked with a star.
{{}}
Keep in mind, that the right lung might be displayed on the left side of the image and vice versa, depending on your view.
@@ -77,16 +77,16 @@ As a next step, segment the right lung by creating new CSOs.
Create a new Group for all CSOs of the right lung. We labeled this Group *Right Lung*. Again, mark the group and the CSOs you like to combine and press *Combine*.

-To visually distinguish the CSOs of both groups, change the color of each group under {{< menuitem "Group" "Visuals" >}}. We changed the color of the *Left Lung* to be green and of the *Right Lung* to be orange of path and seed points. In addition, we increased the *Width* of the path points.
+To visually distinguish the CSOs of both groups, change the color of each group under {{< menuitem "Group" "Visuals" >}}. We changed the color of the *Left Lung* to be green and of the *Right Lung* to be orange for path and seed points. In addition, we increased the *Width* of the path points.

As a last step, we need to disconnect the module `SoCSOVisualizationSettings`, as this module overwrites the visualization settings we enabled for each group in the `CSOManager`.

## Summary
-* `SoCSOLiveWireEditor` can be used to create CSOs semi-automatically
-* CSO interpolations can be created using `CSOSliceInterpolator`
-* CSOs can be grouped together using the `CSOManager`
+* `SoCSOLiveWireEditor` can be used to create CSOs semi-automatically.
+* CSO interpolations can be created using `CSOSliceInterpolator`.
+* CSOs can be grouped together using the `CSOManager`.
{{< networkfile "examples/data_objects/contours/example2/ContourExample2.mlab" >}}
diff --git a/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample3.md b/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample3.md
index 718e75d7b..7d27a713b 100644
--- a/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample3.md
+++ b/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample3.md
@@ -23,22 +23,22 @@ This allows us to mark one of two lungs. In addition to
that, we will display the whole segmented lobe of the lung in a 3D
image.
-## Steps to do
-### Develop your network
+## Steps to Do
+### Develop Your Network
Use the network from the [contour example 2](/tutorials/dataobjects/contours/contourexample2) and add the modules `VoxelizeCSO`,
`SoView2DOverlay` and `View2D` to your workspace. Connect the module as
shown. The module `VoxelizeCSO` allows to convert CSOs into voxel images.

-### Convert CSOs into voxel images
+### Convert CSOs into Voxel Images
Update the module `VoxelizeCSOs` to create overlays based on your CSOs.
The result can be seen in `View2D1`.

-Next, we like to inspect the marked lobe of the lung. This means, we
-like to inspect the object, build out of CSOs. In order to do that, add
+Next, we like to inspect the marked lobe of the lung. This means we
+like to inspect the object that is built out of CSOs. In order to do that, add
the `View3D` module. The 3D version of the lung can be seen in the
viewer.
@@ -46,8 +46,8 @@ viewer.

## Summary
-* The module `VoxelizeCSO` converts CSOs to voxel images
-* Create an overlay out of voxel images using `SoView2DOverlay`
+* The module `VoxelizeCSO` converts CSOs to voxel images.
+* Create an overlay out of voxel images using `SoView2DOverlay`.
{{< networkfile "examples/data_objects/contours/example3/ContourExample3.mlab" >}}
diff --git a/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample4.md b/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample4.md
index 96a92d07b..36fa74e46 100644
--- a/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample4.md
+++ b/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample4.md
@@ -20,19 +20,19 @@ menu:
In this example we like to calculate the volume of our object, in this
case the part of the lung we have segmented.
-## Steps to do
-### Develop your network and calculate the lung volume
+## Steps to Do
+### Develop Your Network and Calculate the Lung Volume
Add the module `CalculateVolume` and `SoView2DAnnotation` to your workspace
and connect both modules as shown. Update the module `CalculateVolume`,
which directly shows the volume of our object.

-### Display the lung volume in the image
+### Display the Lung Volume in the Image
We now like to display the volume in the image viewer. For this, open
the panel of the modules `CalculateVolume` and `SoView2DAnnotation`.
Open the tab *Input* in the panel of the module `SoView2DAnnotation`. Now
-construct a parameter connection between *Total Volume* calculated in
+establish a parameter connection between *Total Volume* calculated in
the module `CalculateVolume` and the *input00* of the module
`SoView2DAnnotation`. This connection projects the *Total Volume* to the
input of `SoView2DAnnotation`.
@@ -44,8 +44,8 @@ each annotation mode.

-We select the tab *User* which we like to work on. You can see four
-fields, which display four areas of a viewer in which you can add
+We select the tab *User* that we like to work on. You can see four
+fields that display four areas of a viewer in which you can add
information text to the image.

@@ -58,9 +58,9 @@ the annotations of the viewer by pressing the keyboard shortcut {{< keyboard "A"

## Summary
-* `CalculateVolume` can calculate the volume of a voxel image
-* `SoView2DAnnotation` enables to manually change the annotation mode of a viewer
-* Annotations shown in a `View2D` can be customized by using a `SoView2DAnnotation` module
+* `CalculateVolume` can calculate the volume of a voxel image.
+* `SoView2DAnnotation` enables to manually change the annotation mode of a viewer.
+* Annotations shown in a `View2D` can be customized by using a `SoView2DAnnotation` module.
{{< networkfile "examples/data_objects/contours/example4/ContourExample4.mlab" >}}
diff --git a/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample5.md b/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample5.md
index ee46a03cc..42fb183c0 100644
--- a/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample5.md
+++ b/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample5.md
@@ -18,19 +18,18 @@ menu:
## Introduction
-In this example, we like to automatically create CSOs based on a predefined iso value.
+In this example, we like to automatically create CSOs based on a predefined isovalue.
-## Steps to do
-### Develop your network
+## Steps to Do
+### Develop Your Network
Add the following modules to your workspace and connect them as shown.
Load the example image *Bone.tiff*.
-### Automatic creation of CSOs based on the iso value
+### Automatic Creation of CSOs Based on the Isovalue
Now, open the panel of `CSOIsoGenerator` to set the *Iso Value* to 1200. If you press *Update* in
-the panel, you can see the creation of CSOs on every slide, when opening
-the module `View2D`. In addition to that the number of CSOs is displayed in the `CSOManager`. The module
-`CSOIsoGenerator` generates iso-contours for each slice at a fixed iso
-value. This means that closed CSOs are formed based on the detection of the
+the panel, you can see the creation of CSOs on every slide when opening
+the module `View2D`. In addition to that, the number of CSOs is displayed in the `CSOManager`. The module
+`CSOIsoGenerator` generates isocontours for each slice at a fixed isovalue. This means that closed CSOs are formed based on the detection of the
voxel value of 1200 on every slice.

@@ -39,13 +38,13 @@ voxel value of 1200 on every slice.
Now, we like to make CSOs of previous and subsequent slices visible (Ghosting). In
order to do that, open the panel of `SoCSOVisualizationSettings` and
open the tab *Misc*. Increase the parameter `Ghosting depth in voxel`,
-which shows you the number of slices above and below the current slice,
+which shows you the number of slices above and below the current slice in
which CSOs are also seen in the viewer. The result can be seen in the
viewer.

-### Display created CSOs
+### Display Created CSOs
At last, we like to make all CSOs visible in a 3D viewer. To do that,
add the modules `SoCSO3DRenderer` and `SoExaminerViewer` to your network
and connect them as shown. In the viewer `SoExaminerViewer` you can see
@@ -54,8 +53,8 @@ all CSOs together. In this case all scanned bones can be seen.

## Summary
-* `CSOIsoGenerator` enables automatic COS generation based on an iso value
-* Ghosting allows to display CSOs of previous and following slices
+* `CSOIsoGenerator` enables automatic CSO generation based on an isovalue.
+* Ghosting allows to display CSOs of previous and following slices.
{{< networkfile "examples/data_objects/contours/example5/ContourExample5.mlab" >}}
diff --git a/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample6.md b/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample6.md
index 68fa79732..d7436635d 100644
--- a/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample6.md
+++ b/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample6.md
@@ -20,8 +20,8 @@ menu:
In this example, we are adding a label to a contour. The label provides information about measurements and about the contour itself. The label remains connected to the contour and can be moved via mouse interactions.
-## Steps to do
-### Develop your network
+## Steps to Do
+### Develop Your Network
Add a `LocalImage` and a `View2D` module to your workspace and connect them as shown below. Load the file *ProbandT1.dcm* from MeVisLab demo data. In order to create contours (CSOs), we need a `SoView2DCSOExtensibleEditor` module. It manages attached CSO editors, renderers and offers an optional default renderer for all types of CSOs.
@@ -35,7 +35,7 @@ We are now able to create lines in the `View2D`. You can also modify the lines b

-The created lines do neither provide any details about the length of your measurement, nor a unique ID to identify it in case of multiple CSOs.
+The created lines do neither provide any details about the length of your measurement, nor a unique ID to identify it in the case of multiple CSOs.
Add a `CSOLabelRenderer` module to your network and connect it to a `SoGroup`. Also connect your `SoCSODistanceLineEditor` to the `SoGroup` as seen below. The *ID* of each CSO appears next to your distance lines. Moving the ID also shows the *name* of the contour.
@@ -46,7 +46,7 @@ We now want to customize the details to be shown for each distance line. Open th
Enter the following to the panel of the `CSOLabelRenderer` module:
{{< highlight filename="CSOLabelRenderer" >}}
```Python
-labelString = f"Length {cso.getLength()}"
+labelString = f"Length: {cso.getLength()}"
labelName = f"Distance: {cso.getId()}"
deviceOffsetX = 0
deviceOffsetY = 0
@@ -64,11 +64,11 @@ labelString = f'Length: {cso.getLength():.2f} mm'
```
{{}}
-In order to see all possible parameters of a CSO, add a `CSOInfo` module to your network and connect it to the `CSOManager`. The geometric informations of the selected CSO from `CSOManager` can be seen there.
+In order to see all possible parameters of a CSO, add a `CSOInfo` module to your network and connect it to the `CSOManager`. The geometric information of the selected CSO from `CSOManager` can be seen there.

-For labels shown on greyscale images, it makes sense to add a shadow. Open the panel of the `SoCSOVisualizationSettings` module and on tab *Misc* check the option *Should render shadow*. This increases the readability of your labels.
+For labels shown on grayscale images, it makes sense to add a shadow. Open the panel of the `SoCSOVisualizationSettings` module and on tab *Misc* check the option *Should render shadow*. This increases the readability of your labels.
{{< imagegallery 2 "/images/tutorials/dataobjects/contours/" "Ex6_NoShadow" "Ex6_Shadow" >}}
@@ -120,7 +120,7 @@ You will find a lot more information in the `CSOInfo` module for your rectangles

-## Parameters and meanings for all CSO types
+## Parameters and Meanings for All CSO Types
diff --git a/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample7.md b/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample7.md
index e9304152c..ef9d3371f 100644
--- a/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample7.md
+++ b/mevislab.github.io/content/tutorials/dataobjects/contours/contourexample7.md
@@ -18,7 +18,7 @@ menu:
## Introduction
-In this example, we are using the module `CSOListContainer` instead of the `CSOManager`. The `CSOManager` is a heavy weight, UI driven module. You can use it to see all of your CSOs, CSOLists and CSOGroups in the module panel. The `CSOListContainer` is a light weight module with focus on Python scripting. We recommend to use this module for final application development, because Python provides much more flexibility in handling CSO objects.
+In this example, we are using the module `CSOListContainer` instead of the `CSOManager`. The `CSOManager` is a heavyweight, UI driven module. You can use it to see all of your CSOs and CSOGroups in the module panel. The `CSOListContainer` is a lightweight module with focus on Python scripting. We recommend to use this module for final application development, because Python provides much more flexibility in handling CSO objects.

@@ -26,10 +26,10 @@ In this example, we are using the module `CSOListContainer` instead of the `CSOM
We will create multiple CSOs by using the `SoCSOEllipseEditor` and dynamically add these CSOs to different groups via Python scripting depending on their size. CSOs larger than a configurable threshold will be red, small CSOs will be drawn green. The colors will also be adapted if we manually resize the contours.
-## Steps to do
-### Develop your network
+## Steps to Do
+### Develop Your Network
-Add a `LocalImage` and a `View2D` module to your workspace and connect them as shown below. Load the file *ProbandT1.dcm* from MeVisLab demo data. In order to create contours (CSOs), we need a `SoView2DCSOExtensibleEditor` module. It manages attached CSO editors, renderers and offers an optional default renderer for all types of CSOs.
+Add a `LocalImage` and a `View2D` module to your workspace and connect them as shown below. Load the file *ProbandT1.dcm* from MeVisLab demo data. In order to create contours (CSOs), we need a `SoView2DCSOExtensibleEditor` module. It manages attached CSO editors, renderers, and offers an optional default renderer for all types of CSOs.
Add a `SoCSOEllipseEditor` and a `CSOListContainer` to the `SoView2DCSOExtensibleEditor`
@@ -39,7 +39,7 @@ You are now able to draw CSOs.
Create a separate directory for this tutorial and save your network in this empty directory. This makes the final structure easier to read.
-### Create a local macro module
+### Create a Local Macro Module
Select the module `CSOListContainer` and open menu {{