Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FILTER : SliceTriangleGeometry & CreateAMScanPaths #984

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
0768a12
Initial Slice Triangle code pushed.
imikejackson May 29, 2024
50f43ff
Add unit test for Slice Triangle Geometry
imikejackson May 29, 2024
c718c0f
Add legacy uuid mapping for SliceTriangleGeometryFilter & CreateAMSca…
jmarquisbq May 30, 2024
57a7e0c
Finish setting up SliceTriangleGeometryFilter parameters & FromSIMPLJ…
jmarquisbq May 30, 2024
9e5031c
Finish porting SliceTriangleGeometry filter algorithm
jmarquisbq May 30, 2024
5909db2
Fix SliceTriangleGeometry unit test
jmarquisbq May 30, 2024
dbf07fc
Fix geometry unit dimensionality intialization
jmarquisbq May 30, 2024
c67eecf
Finish CreateAMScanPathFilter skeleton code, preflight, and fromSIMPL…
jmarquisbq May 30, 2024
938f05f
Finish porting the CreateAMScanPaths filter
jmarquisbq May 31, 2024
85f7817
Add CreateAMScanPaths unit test
jmarquisbq May 31, 2024
3c70bf8
Update DataPath constructor to check for empty strings when intializi…
jmarquisbq May 31, 2024
6b97941
Update filters' documentation
jmarquisbq May 31, 2024
807e141
Add example pipeline containing both filters
jmarquisbq May 31, 2024
99b382d
Fix CreateAMScanPaths parameter keys
jmarquisbq May 31, 2024
f19560f
Fix unit test bugs
jmarquisbq Jun 3, 2024
e82b609
Fix unit test error on MacOS.
imikejackson Jun 3, 2024
2f5e50b
Add option to remove duplicate nodes in SliceTriangleGeometry filter
jmarquisbq Jun 12, 2024
7c41de2
Remove duplicate node assumptions in CreateAMScanPaths
jmarquisbq Jun 12, 2024
69f3996
Revert "Add option to remove duplicate nodes in SliceTriangleGeometry…
jmarquisbq Jun 12, 2024
05d91c0
Alwasy remove duplicate nodes in SliceTriangleGeometryFilter
jmarquisbq Jun 12, 2024
e9f9283
Since RegionIds are optional we need to use pointers instead of refer…
imikejackson Jun 12, 2024
4e8a600
Update EliminateDuplicateNodes function to allow any NodeGeometry to …
imikejackson Jun 12, 2024
329b5cf
Update unit tests
jmarquisbq Jun 12, 2024
b65a88a
Fix null ptr check and missing existence checks for TriangleGeom::fin…
jmarquisbq Jun 12, 2024
60b9f58
Fix rebase
jmarquisbq Jun 12, 2024
fe467cf
Fix failing unit test
imikejackson Jun 25, 2024
058f7b9
DOC: Update documentation
imikejackson Jun 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/Plugins/SimplnxCore/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ set(${PLUGIN_NAME}_SOURCE_DIR ${simplnx_SOURCE_DIR}/src/Plugins/${PLUGIN_NAME})
# These are all the filters in the plugin. All filters should be kept in the
# PLUGIN_NAME/src/PLUGIN_NAME/Filters/ directory.
set(FilterList
CreateAMScanPathsFilter
SliceTriangleGeometryFilter
AddBadDataFilter
AlignGeometriesFilter
AlignSectionsFeatureCentroidFilter
Expand Down Expand Up @@ -139,6 +141,8 @@ set(ActionList
)

set(AlgorithmList
CreateAMScanPaths
SliceTriangleGeometry
AddBadData
AlignSectionsFeatureCentroid
AlignSectionsList
Expand Down
32 changes: 32 additions & 0 deletions src/Plugins/SimplnxCore/docs/CreateAMScanPathsFilter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Create AM Scan Paths Filter

## Group (Subgroup)

Core (Geometry/Processing)

## Description

Given an input **Edge Geometry**, stripe width, hatch spacing, laser power, and scan speed, this **Filter** will generate an **Edge Geometry** representing the additive manufacturing scan paths along with arrays containing times for each scan path node and powers, region ids, and slice ids for each scan path. The "SliceTriangleGeometry" filter is typically used before this filter to generate the proper edge geometry.

![](Images/CreateAMScanVectors_5.png)

## Examples of Scan Vector Width and Spacing Values

| | Hatch Spacing=0.5 | Hatch Spacing=3.0 |
|----------------|--------------------|--------|
| Hatch Length=0.5 | ![](Images/CreateAMScanVectors_2.png) | ![](Images/CreateAMScanVectors_3.png) |
| Hatch Length=3.0 | ![](Images/CreateAMScanVectors_4.png) | ![](Images/CreateAMScanVectors_1.png) |

% Auto generated parameter table will be inserted here

## Example Pipelines

CreateScanVectors

## License & Copyright

Please see the description file distributed with this **Plugin**

## DREAM3D-NX Help

If you need help, need to file a bug report or want to request a new feature, please head over to the [DREAM3DNX-Issues](https://github.com/BlueQuartzSoftware/DREAM3DNX-Issues/discussions) GitHub site where the community of DREAM3D-NX users can help answer your questions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
37 changes: 37 additions & 0 deletions src/Plugins/SimplnxCore/docs/SliceTriangleGeometryFilter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Slice Triangle Geometry

## Group (Subgroup)

Sampling (Geometry)

## Description

This **Filter** slices an input **Triangle Geometry**, producing an **Edge Geometry**. The user can control the range over which to slice (either the entire range of the geoemtry or a specified subregion), and the spacing bewteen slices. Currently this filter only supports slicing along the direction of the z axis. The total area and perimieter of each slice is also computed and stored as an attribute on each created slice.

Additionally, if the input **Triangle Geometry** is labeled with an identifier array (such as different regions or features), the user may select this array and the resulting edges will inherit these identifiers.

## Example Output

Example Surface Mesh being sliced with a 0.25 slice spacing.

![](Images/SliceTriangleGeometry_1.png)


Example Surface Mesh being sliced with a 2.0 slice spacing.

![](Images/SliceTriangleGeometry_2.png)

% Auto generated parameter table will be inserted here

## Example Pipelines

CreateScanVectors

## License & Copyright

Please see the description file distributed with this plugin.

## DREAM3D Mailing Lists

If you need more help with a filter, please consider asking your question on the DREAM3D Users mailing list:
https://groups.google.com/forum/?hl=en#!forum/dream3d-users
96 changes: 96 additions & 0 deletions src/Plugins/SimplnxCore/pipelines/CreateScanVectors.d3dpipeline
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
{
"isDisabled": false,
"name": "CreateScanVectors.d3dpipeline",
"pinnedParams": [],
"pipeline": [
{
"args": {
"face_attribute_matrix_name": "Face Data",
"face_normals_name": "Face Normals",
"output_triangle_geometry_path": "TriangleDataContainer",
"scale_factor": 1.0,
"scale_output": false,
"stl_file_path": "Data/STL_Models/Example_Triangle_Geometry.stl",
"vertex_attribute_matrix_name": "Vertex Data"
},
"comments": "",
"filter": {
"name": "nx::core::ReadStlFileFilter",
"uuid": "2f64bd45-9d28-4254-9e07-6aa7c6d3d015"
},
"isDisabled": false
},
{
"args": {
"created_region_ids_path": "TriangleDataContainer/Face Data/Region Ids",
"input_triangle_geometry_path": "TriangleDataContainer",
"num_triangles_name": "NumTriangles",
"triangle_attribute_matrix_name": "Cell Feature AM"
},
"comments": "",
"filter": {
"name": "nx::core::LabelTriangleGeometryFilter",
"uuid": "7a7a2c6f-3b03-444d-8b8c-5976b0e5c82e"
},
"isDisabled": false
},
{
"args": {
"edge_attribute_matrix_name": "Edge Data",
"have_region_ids": true,
"input_triangle_geometry_path": "TriangleDataContainer",
"output_edge_geometry_path": "Edge Geometry",
"region_ids_array_path": "TriangleDataContainer/Face Data/Region Ids",
"slice_attribute_matrix_name": "Slice Feature Data",
"slice_ids_array_name": "Slice Ids",
"slice_range_index": 0,
"slice_spacing_value": 0.33,
"z_end_value": 0.0,
"z_start_value": 0.0
},
"comments": "",
"filter": {
"name": "nx::core::SliceTriangleGeometryFilter",
"uuid": "754a47c0-149a-4109-a810-2b2968743895"
},
"isDisabled": false
},
{
"args": {
"cad_region_ids_array_path": "Edge Geometry/Edge Data/Region Ids",
"cad_slice_data_container_path": "Edge Geometry",
"cad_slice_ids_array_path": "Edge Geometry/Edge Data/Slice Ids",
"hatch_attribute_matrix_name": "Vector Data",
"hatch_data_container_path": "ScanVectorGeometry",
"hatch_spacing": 0.33,
"power": 100.0,
"powers_array_name": "Powers",
"region_ids_array_name": "RegionIds",
"speed": 1000.0,
"stripe_width": 10.0,
"time_array_name": "Times",
"vertex_attribute_matrix_name": "Vector Node Data"
},
"comments": "",
"filter": {
"name": "nx::core::CreateAMScanPathsFilter",
"uuid": "b757be16-1418-4b69-b475-99e63d00a2e3"
},
"isDisabled": false
},
{
"args": {
"export_file_path": "Data/Output/ScanVectors/ExampleAMScanVectors.dream3d",
"write_xdmf_file": true
},
"comments": "",
"filter": {
"name": "nx::core::WriteDREAM3DFilter",
"uuid": "b3a95784-2ced-41ec-8d3d-0242ac130003"
},
"isDisabled": false
}
],
"version": 1,
"workflowParams": []
}
Loading
Loading