Keno Moenck
·
Adrian Pustelnik
·
Julian Koch
·
Thorsten Schüppstuhl
Hamburg University of Technology, Institute of Aircraft Production Technology
The STEP standard is a file-/text-based format that is widely used in industry to store product-related data. GraphSTEP transforms STEP-modeled, more specifically, EXPRESS-modeled data, into a graph and feeds Neo4j to allow cloud-based data manipulation. GraphSTEP supports the following features
- Transforming a STEP file to a graph
- Transforming the graph back to a STEP file
- Manipulation operations (currently implemented: changing the pose of a part / adding new parts)
- Filtering operations (individual branches belonging to basic geometric components or full boundary representations)
- Version control system for STEP-based data
- Access to STEP attributes of all entities
In a nutshell, it brings your STEP files into the cloud and lets you do operations on it.
Initialize and build external dependencies:
git submodule update --recursive --init
./build.sh
Build GraphSTEP:
mkdir build
cd build
cmake ..
make GraphSTEP -j$(nproc)
GraphSTEP contains bindings to Node.js
, such that you can use it, e.g., in your Express.js
application:
npm ci
npm run build
Docker command to launch Neo4j instance (NEO4J_AUTH=neo4j/testpassword
):
docker run --name neo4j -p7474:7474 -p7687:7687 \
-d \
-v $HOME/neo4j/data:/data \
-v $HOME/neo4j/logs:/logs \
-v $HOME/neo4j/conf:/conf \
-v $HOME/neo4j/import:/var/lib/neo4j/import \
-v $HOME/neo4j/plugins:/plugins \
--env NEO4J_AUTH=neo4j/testpassword \
--pull=always \
--env NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \
neo4j:enterprise
GraphSTEP (in its current configuration) uses three different graphs to store data:
Name | Description |
---|---|
productgraph | working graph, stores the STEP-modeled data of the product |
macro | stores filtered graph components |
history | stores the version history of the product data |
Create these graphs, e.g., through Neo4j's
web console:
create database productgraph
create database macro
create database history
The functionalities of GraphSTEP are exposed in a command line interface:
Command | Description |
---|---|
./GraphSTEP read <output directory> |
Transforms the graph back to a STEP file |
./GraphSTEP create <file path> |
Creates a given STEP file into a graph |
./GraphSTEP delete |
Deletes all data of a graph |
./GraphSTEP filter |
Filters branches belonging to specific nodes |
./GraphSTEP restoreFilter |
Loads the filtered data, stored in the macro database, back to the productgraph |
./GraphSTEP filter-brep <part name> |
Filters the boundary representation of a part |
./GraphSTEP restore-brep <part name> |
Loads the filtered boundary representation to the product graph and links it to the desired part |
./GraphSTEP add-part <file path> <part name> <assembly name> |
Adds a new part and links it to the assembly |
./GraphSTEP duplicate-part <part name> <assembly name> |
Duplicates a given part |
./GraphSTEP move-part <part name> <x pos> <y pos> <z pos> |
Moves a part to a desired position |
./GraphSTEP version-control-test <data directory> |
Demonstrates a version control pipeline |
You can bind the GraphSTEPLib
in your own project. Use cli.cpp and CMakeLists.txt as an example.
Import the GraphSTEP addon:
var addon = require("bindings")("graphstepAddon");
- Make sure the addon can be found by your script. Adjust your path if this is not the case.
- Examples for the usage of the addon are contained in the
examples
directory.
You are welcome to submit issues, send pull requests, or share some ideas with us. If you have any other questions, please contact 📧: Adrian Pustelnik.
If you find GraphSTEP useful to your research, please cite our work:
@article{Moenck.2024,
author = {Moenck, Keno and Pustelnik, Adrian and Koch, Julian and Sch{\"u}ppstuhl, Thorsten},
year = {2023},
title = {GraphSTEP: concurrent, cloud-based, lifecycle-oriented editing and updating of product data},
pages = {678--683},
volume = {120},
issn = {22128271},
journal = {Procedia CIRP},
doi = {10.1016/j.procir.2023.09.058}
}
NIST's SFA and stepcode that helped during the course of this work.