Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.
First time visiting? Here are some places to start:- Looking for a certain topic? Check out the categories filter or use Search (upper right).
- Need support? Ask a question to our Community Support category.
- Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
- Be respectful, on topic and if you see a problem, Flag it.
If you would like to contact our Community Manager personally, feel free to send a private message or an email.
In "Onshape" speak, what is the definition of "workspace", and what is "main" all about?
StephenG
Member Posts: 370 ✭✭✭
I get the definition of a Onshape "Document": a container that holds (really tracks) information supporting a specific design activity (a project), but what is a workspace?
Comment: I do not understand why Onshape had to add new meaning to the word "document" when there are ready other words commonly in use in CAD industry that do a better job of communicating the concept, ex what is wrong with the terms "Project"?
Comment: I do not understand why Onshape had to add new meaning to the word "document" when there are ready other words commonly in use in CAD industry that do a better job of communicating the concept, ex what is wrong with the terms "Project"?
0
Best Answers
-
mthiesmeyer Onshape Employees Posts: 115Hi Stephen,
One of the things that Onshape has that most other CAD programs do not have is a concept of 'branches.' Every branch has a 'workspace' which represents the most up-to-date status of the element tabs in that branch. The default name for the starting branch is 'Main;' you can rename it if you want, and every branch you create will offer the option to designate a name. In addition to a workspace, every branch can have a multitude of 'version's. A 'version' is an immutable snapshot of the workspace at the time that the version was created.
Imagine that we are on a team creating a new set of kitchen cabinets. We have built the basic model which is a box with a flat front. However, our designer would like the front of the cabinet to be more detailed and isn't sure which detailing they like better. They tell you to model one and me to model the other and they will make the decision after seeing the results.
We both want to reference the basic model in our design, but we don't want to copy the document because we want everything related to the cabinet to be in the same place. So instead we create a version of the document, maybe called "Basic Cabinet," and then we each create a branch off of that version. I'm going to call mine "Chamfered Edges," and yours is "Filleted Edges." Now we can both make whatever edits to the cabinet that we want without interfering with the other's work. When we finish and the team lead picks your design (because filleting is way better than chamfering ) they can then take your branch and 'merge' it back into the main branch. The main branch's 'workspace' will now include all of the changes that you made on your branch!
One reason I really like this is that even though the designer picked your branch, mine is still hanging around in that same document. So if later they decide that chamfering really was the way to go it's super easy to find the edits I made and incorporate them into the main design, instead of hunting through old files and trying to find the copy that was made when we originally wanted to try the chamfering.
I hope that cleared up the meaning of workspace, version and branch, and that the example helped illuminate when you would use them. There is also more information in the help docs here.
10 -
mthiesmeyer Onshape Employees Posts: 115Hi Stephen,
Not your fault at all, you haven't seen it before in this context because we were the first ones to do it! That is exactly why we're here to help, and if you have software development experience with branching and merging then this will be much easier to explain.
An analog to git would be:
-document is a project
-workspace is a (git) branch
-version is a tag on a specific commit
-microversion is a commit
Just like you can have multiple branches in a software project, a document in Onshape can contain multiple workspaces. Every microversion(commit) can be turned into a version(tagged).
Source of Confusion answers:
1.) When I copy a "Workspace" is appears a new "Document".
-Copying a workspace is similar to (in git) checking out a branch, copying every file not in the .git directory to a new folder, and running 'git init.' You are basically saying 'I want to get rid of all of the history that made these files because all I care about is that they exist, and I want to make a new project out of them.' When you copy a workspace in Onshape we use the active workspace as the source of the "files."
2.) Why isn't there a copy "Document" function?
-There is no copy document function yet simply because it has not reached critical mass to register as a priority There is an improvement request for it logged here.
3.) I do not see anything in a copied "Workspace" document that indicates it originated, or has any sort of data dependency to its original.
-Correct! That is because there is no data dependency on the original! Just like the example I gave for number 1, once you copy those files and put them in a new project there is no knowledge of where they came from. In Onshape the only link between a document and its copy is that they are named "Document Name" and "Document Name - Copy" and that only lasts as long as you don't change the name of either of them
These are great questions, and I hope that these answers will help you! Additionally, one of the lead engineers on the Branching and Merging system wrote a blog post that you can find here about microversions, branches and workspaces which might clarify some things.
Please let me know if you have any more questions!
Best,
Mike7 -
mthiesmeyer Onshape Employees Posts: 115Hi Stephen,
Sounds like you've got a pretty good handle on things!
Best,
Mike6
Answers
One of the things that Onshape has that most other CAD programs do not have is a concept of 'branches.' Every branch has a 'workspace' which represents the most up-to-date status of the element tabs in that branch. The default name for the starting branch is 'Main;' you can rename it if you want, and every branch you create will offer the option to designate a name. In addition to a workspace, every branch can have a multitude of 'version's. A 'version' is an immutable snapshot of the workspace at the time that the version was created.
Imagine that we are on a team creating a new set of kitchen cabinets. We have built the basic model which is a box with a flat front. However, our designer would like the front of the cabinet to be more detailed and isn't sure which detailing they like better. They tell you to model one and me to model the other and they will make the decision after seeing the results.
We both want to reference the basic model in our design, but we don't want to copy the document because we want everything related to the cabinet to be in the same place. So instead we create a version of the document, maybe called "Basic Cabinet," and then we each create a branch off of that version. I'm going to call mine "Chamfered Edges," and yours is "Filleted Edges." Now we can both make whatever edits to the cabinet that we want without interfering with the other's work. When we finish and the team lead picks your design (because filleting is way better than chamfering ) they can then take your branch and 'merge' it back into the main branch. The main branch's 'workspace' will now include all of the changes that you made on your branch!
One reason I really like this is that even though the designer picked your branch, mine is still hanging around in that same document. So if later they decide that chamfering really was the way to go it's super easy to find the edits I made and incorporate them into the main design, instead of hunting through old files and trying to find the copy that was made when we originally wanted to try the chamfering.
I hope that cleared up the meaning of workspace, version and branch, and that the example helped illuminate when you would use them. There is also more information in the help docs here.
I want to commend you for your thorough attempt to try to educate me on what is reported to be an important and unique feature in Onshape. I have read through your response twice and I am still confused. This is mostly likely my fault, but I am going to have study your response and see if I can express the concept you describe in Onshape.
I am familiar with the concept of branching from a software development perspective, but have not seen its nomenclature used in the Mechanical CAD world.
From what I can determine the terms "Workspace" and "Document" are functionally equivalent; obviously this cannot true because you have must have had very precise reason to use different terms, but I am at a loss as to understanding the differences.
Source of Confusion:
When I copy a "Workspace" is appears a new "Document".
Why isn't there a copy "Document" function?
I do not see anything in a copied "Workspace" document that indicates it originated, or has any sort of data dependency to its original.
I am also going to read/study the Data Management section available in the on-line "Help".
Stephen
Not your fault at all, you haven't seen it before in this context because we were the first ones to do it! That is exactly why we're here to help, and if you have software development experience with branching and merging then this will be much easier to explain.
An analog to git would be:
-document is a project
-workspace is a (git) branch
-version is a tag on a specific commit
-microversion is a commit
Just like you can have multiple branches in a software project, a document in Onshape can contain multiple workspaces. Every microversion(commit) can be turned into a version(tagged).
Source of Confusion answers:
1.) When I copy a "Workspace" is appears a new "Document".
-Copying a workspace is similar to (in git) checking out a branch, copying every file not in the .git directory to a new folder, and running 'git init.' You are basically saying 'I want to get rid of all of the history that made these files because all I care about is that they exist, and I want to make a new project out of them.' When you copy a workspace in Onshape we use the active workspace as the source of the "files."
2.) Why isn't there a copy "Document" function?
-There is no copy document function yet simply because it has not reached critical mass to register as a priority There is an improvement request for it logged here.
3.) I do not see anything in a copied "Workspace" document that indicates it originated, or has any sort of data dependency to its original.
-Correct! That is because there is no data dependency on the original! Just like the example I gave for number 1, once you copy those files and put them in a new project there is no knowledge of where they came from. In Onshape the only link between a document and its copy is that they are named "Document Name" and "Document Name - Copy" and that only lasts as long as you don't change the name of either of them
These are great questions, and I hope that these answers will help you! Additionally, one of the lead engineers on the Branching and Merging system wrote a blog post that you can find here about microversions, branches and workspaces which might clarify some things.
Please let me know if you have any more questions!
Best,
Mike
Based on personal experience I can tell you this data management abstraction is going to be difficult for many users to get a handle on and then know how to use effectively. Knowing how a CAD product manages data is by far the most important thing to be learned before someone is "turned loose" to create content.
I would like to make some statements about what I think I have learned and have you comment on their accuracy/completeness.
1) A "Workplace" is not a thing but a place were things are created and modified.
2) A new "Document" is initialized with a "Workspace" named "main" (which can be renamed). Additional "Workspaces" can be created within the same "Document" by using the "Branch to create workspace..." function.
3) Branches are created from specific snapshot states (versions) of a "Workspace".
4) Multiple authorized users can simultaneously make changes to any part-studio, drawing, assembly in any branch ("Workspace") in a "Document".
5) All additions and modifications are recorded (journalized) to the individual who made them.
6) Changes made in any branch (Document Workspace) can be pushed (Merged) into any other "Workspace" in the same "Document".
7) Care needs to be taken when merging changes from one branch to another because the changes in the "target" branch will be overwrite changes by the "source" branch.
I have a bunch of questions related to working with assemblies (love the assy constraint tools) - building product hierarchies to support a delivered product and the product life cycle. But I first want to read through the On-line help before I ask any question. I will submit my question(s) in another forum post.
Stephen G
Sounds like you've got a pretty good handle on things!
Best,
Mike