Skip to content

Tutorials

Ardeshir Talaei edited this page Oct 31, 2022 · 10 revisions

There are three main components when using this system that the user normally interacts with. These components are

  • Parts
    As the name suggests, each part represents one part that requires machining.

  • Projects
    Each project consists of a list of parts and keeps track of the parts' status.

  • Sheets
    Sheets consist of a set of parts from one or more projects that are nested and ready to be machined out of a board with a specific material and thickness.

These components are the building blocks of the workflow that enables managing multiple machining projects at the same time.

Parts

As the name suggests, each part represents one part that requires machining. Each part consists of the geometry of the part, plus the properties of the part such as material and thickness, as well as metadata information like production deadline, which project they belong to, and the client who has requested the part.

Creating Parts

To create a Part object in Grasshopper, use the Part component of the BCF GH Plugin. This component outputs a Part object when all the mandatory inputs are provided.

Creating Part Object

Expanding Parts

A part object can be expanded as a normal Speckle object using the Deconstruct Speckle Object (DSO) component in Grasshopper. An alternative to this is accessing the Part's properties using a Python component.

Modifying Parts

Since the Part object implements the Speckle Base object, it can be accessed or modified in the same way as one. Please be advised that modifying a part will not result in a new object, and the changes will be applied globally. Therefore, it is recommended to make a duplicate of a part before modifying it.

Note
Same as the Base objects, Part objects are normally immutable. Modifying a Part's properties will generate a new object with a new Speckle ID when sent to the server. However, this system uses the object's part_name property as its identifier.

Projects

Each projects consists of a list of parts and keeps the track of the parts' status. Each project is in fact a dedicated Stream with at least four branches:

  • main
    The main branch keeps track of all the parts in a project. It is considered as the main reference for all the project parts.

  • uploaded
    This branch holds a duplicate of all the parts in the main branch that have not been nested into any sheets yet.

  • nested
    This branch holds a duplicate of all the parts in the main branch that have been already nested in a sheet.

  • done
    This branch holds a duplicate of all the parts in the main branch that have been nested in a sheet that is already machined. In other words, it is the list of parts that are already produced.

The Streams can be managed both through the Web App and from inside Grasshopper using the Project component of BCF Plugin.

Creating an empty Project

The Project component has a Create button on it. When pressed, it create a project with the name that is provided as the second input (considering that another project with that name does not already exist) and will create all the four required branches automatically. Also, if the project does already exist, it will check for the four required branches in that stream and if any of them is missing, it will add it to the stream.
Please note that when you input a project's name that does not exist, the component will turn red to indicate an error. It is the designed behavior and the Create button will still be active. The component will turn white after the button is pressed and the project is successfully created.

Creating a Project

Adding parts to a Project

After creating Parts, they can be added to any project. All the Parts should be added to the main branch of the stream first. main branch acts as a complete list of Parts in a stream. After that, in order to queue them for the nesting process, the Parts should be added to the uploaded branch as well. The nesting process will only take the parts from the uploaded branch of each stream and will move them to the nested branch after they are nested in sheets.

Uploading Parts to a Project

Accessing a Projects Stream

The easiest way to access a project is using the Project component in Grasshopper. To get the project's stream and its branches, a user account (with required access) and ID/URL (the name) of the project(s) should be provided. The component will return the Stream ID of the project and all of its branches, plus the URL of each branch in the same order of the branch names. If multiple project names are provided, the output data will be structured accordingly.

Accessing One Project Accessing Multiple Projects

Updating a Project

Each project keeps track of the parts' status by copying them from the main branch to one of the three uploaded, nested, and done branch. The Update Project component in Grasshopper enables the user to set the status of the parts in a project. This component copies the defined part into the designated branch and will also remove them from any other branch if required.

ModifyProject

Validating a Project

The Project component in Grasshopper has an input named Validate [V] that takes a boolean as the input which is False by default. If set to True, the component will retrieve all the parts from different branches in the stream and will do a set of validation checks.
When validated, the component outputs any errors or problems that are found, as well as the list of all the Part names in the project (only if project is valid).

ValidateProject Validation Error

Syncing a Project

Projects component has a button named Sync, that enables synchrinizing a project with the sheets stream. When pressed, it checks for all the parts in the main branch of the project's stream, and copies each part to its corresponding branch based on if it is nested in a sheet or not, or if the sheet is already machined or still in queue for machining. This operation will make a commit to all the branches of the project's stream except for the main branch. This can fix most of the errors that make a project invalid.

Removing a Project

To completely remove a project, use the Speckle Web App to delete the project's stream. Open the stream in the Web App and using the Settings panel of the stream, press Permanently Delete Stream. Speckle will ask you to type in the name of the stream to prevent accidental deleting of a project.

Removing a Project

Sheets

A Sheet object consist of a set of parts from one or more projects that are nested and ready to be machined out of a board with a specific material and thickness. Aprat from the list of parts and sheet's properties such as material and thickness, a sheet object also includes metadata information such as deadline, nesting efficiency, and the spacing between the nested parts.

Creating Sheets

To create a Sheet object in Grasshopper, use the Sheet component of the BCF GH Plugin. This component outputs a Sheet object when all the mandatory inputs are provided.

Creating Sheet Object

Expanding Sheets

A Sheet object can be expanded as a normal Speckle object using the Deconstruct Speckle Object (DSO) component in Grasshopper. An alternative to this is accessing the Sheet's properties using a Python component.

Accessing Sheets Stream

The easiest way to access the sheets stream is using the Sheets component in Grasshopper. To get the a specific branch of the stream, a user account (with required access) and material and thickness of the intended sheet should be provided. The Branch [B] input of this component defines if it should access the sheets in the queue branch or the done branch. The component will return the Stream ID of the sheets stream and the URL of the intended branch. The component can optionally also return names of the sheets in that specific branch and parts that are nested in each sheet.

Validating Sheets

The Sheets component in Grasshopper has an input named Validate [V] that takes a boolean as the input which is False by default. If set to True, the component will scan all the sheets from the specified branch and runs a set of validation checks on them.
When validated, the component outputs any errors or problems that are found, as well as the names of the sheets in that specific branch, and parts that are nested in each sheet. (only if it is valid).

Marking Sheets as Completed

When a sheet goes for machining, it is moved from the queue/ branch of the sheets stream, to the done branch. This indicates that the sheet is machined and all the parts nested in that sheet should move to the done branch of their corresponding project's stream.
This update can be done using the Update Sheet component in Grasshopper. This component takes the material, thickness, and name of the sheet to be moved and updates the branches accordingly. It also updates the projects' streams of all the parts that are nested in that sheet, by moving those parts from the nested branch to the done branch.