-
Notifications
You must be signed in to change notification settings - Fork 2
Tutorials
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.
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.
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.
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.
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 theBase
objects,Part
objects are normally immutable. Modifying aPart
's properties will generate a new object with a new Speckle ID when sent to the server. However, this system uses the object'spart_name
property as its identifier.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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).
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.