Announcing Robot Manager: New Automation App For Onshape

Hello all,
I’m happy to announce the release of Robot Manager, my new design automation app for Onshape.

robot-icon

The application can be found in the Onshape App Store here: Robot Manager App

To use the app, first subscribe to the app in the Onshape App Store using the above link, then access the app via the right panel menu of any Part Studio or Assembly (the same way you access the MKCAD app).

At launch, the following features are included:

  • Push version - Create versions and push them to other linked documents automatically.
  • Generate assembly - Automatically create an assembly from a part studio.
  • Update all references - Update all references in a document to the latest version in one click.

Teams which spread their robot CAD across multiple documents should find Push version especially useful. To use Push version, first link your documents together via the Manage links menu, then use the Push version command to create a new version and push it to all linked parent documents automatically.

For example, a team with a top level Robot document and an Intake document can add their Robot document to their Intake document as a parent. They can then use Push version to create a new version of their Intake document. When they do so, all references from their Robot document to their Intake document will be automatically updated to use the newly created version. This means their Robot document will be kept up to date automatically.

If you have any comments, concerns, suggestions, bugs to report, or anything else you’d like to say, you can fill out this google form, reply to this thread, or DM me.

Thanks, and I hope you find this helpful!

26 Likes

I tried to install and get this setup but I’m getting an error when I use the flyout.

EDIT: Well, it works in a different browser, so it’s likely a cache issue somewhere.

EDIT 2: Only seems to work in Firefox. Chrome, Chrome Incognito, and Edge all have the server error.

2 Likes

Issue should be fixed - thanks for the detailed report. I suppose that’s what I get for not doing a proper beta :sweat_smile:

2 Likes

It seems to be working,

Is there supposed to be anything on the “Home” tab? It seems like the actual work is done on the “Versions” tap and home is just blank.

Curious if you could share some screenshots or examples of this app. Not sure if I’m just not understanding some of the features.
Is the generate assembly just a quick way to punch out parts into a new assembly instead of manually inserting them?
For updating all references is it just the same spot you would normally click to update?

1 Like

Home tab wasn’t blank for me, but after interacting with it a bit it became blank…

I tried creating an assembly from a part studio and I get a new assembly tab with nothing but an empty (therefore broken) group object in it.

Feature request: is there a way to create the assembly in the current “folder”? I use folders to organize tabs by mechanism, so it’d be nice to not need to go back to the root and move it after.


Also, not sure if this is related, but I’m seeing this in my browser logs:


Looks like it’s related to this: 3DxWare 10 Archives - 3Dconnexion US which isn’t a device I’ve ever had.

It seems to just be a shorthand to updating each out-of-date part across all tabs in a project. At least, that’s what it did when I just tested it.

Hey Alex, really cool app. I’m looking at the manage linked documents window in my parent document and the listed versions keep glitching. The should be “1. Drivetrain”, “2. Carriage”, and “3. Arm”, but it keeps duplicating and removing things in the list.

image

Also, the “Update all references” option seems very unlikely to be used in any team that’s also using MKCad, since they are regularly working with dozens of inserted parts and assemblies that have newer versions. Given the risk of breaking a lot of things with a blanket update of MKCad inserts, is there any way to have this tool only update the top level documents (“1. Drivetrain”, “2. Carriage”, and “3. Arm”)? Or some other solution that avoids automatically trying to update all MKCad inserts.

image

1 Like

I just pushed an update addressing several of the issues mentioned so far. Below are some additional notes/responses.

Bug Reports

Is there supposed to be anything on the “Home” tab? It seems like the actual work is done on the “Versions” tap and home is just blank.

Home tab wasn’t blank for me, but after interacting with it a bit it became blank…

The Home page was intended to contain Assembly actions when open in an Assembly, and Part Studio actions when open in a Part Studio. Since there wasn’t actually any assembly specific actions, it was blank in assemblies.

The update I just pushed addresses this by renaming Home to Part studio or Assembly based on context. I also added a WIP message to the Assembly tab and changed the behavior so the Versions tab is the default when opening Robot manager in an Assembly.

I’m looking at the manage linked documents window in my parent document and the listed versions keep glitching. The should be “1. Drivetrain”, “2. Carriage”, and “3. Arm”, but it keeps duplicating and removing things in the list.

It looks like some async logic I had was breaking things. It should be fixed now - please let me know if you’re still seeing problems with this.

Feature Requests

Feature request: is there a way to create the assembly in the current “folder”? I use folders to organize tabs by mechanism, so it’d be nice to not need to go back to the root and move it after.

I also dislike the new tab creation behavior. Unfortunately, there aren’t any ways to improve this (that I know of) since folders inside documents aren’t exposed to the Onshape API.

Given the risk of breaking a lot of things with a blanket update of MKCad inserts, is there any way to have this tool only update the top level documents (“1. Drivetrain”, “2. Carriage”, and “3. Arm”)? Or some other solution that avoids automatically trying to update all MKCad inserts.

Here’s a couple different ways of improving Update all references I’ve been thinking about:

  • Add a document selector to Update all references to make it possible to select specific documents you’d like to update from.
  • Add a tab selector to Update all references to make it possible to only update specific tabs.
  • Add an Update child references action to make it possible to only update references to linked child documents.

Let me know if any of them seem particularly useful, since I probably won’t implement all of them.

Other Questions

Is the generate assembly just a quick way to punch out parts into a new assembly instead of manually inserting them?

I tried creating an assembly from a part studio and I get a new assembly tab with nothing but an empty (therefore broken) group object in it.

Yeah, pretty much. Generate assembly also (tries) to add all the inserted parts to a Group mate automatically, based off the assumption that you’re designing parts in the correct place in your part studio (which is generally considered best practice).

To be completely honest, Generate assembly is mainly a holdover from some of my earlier experiments with Auto assembly, which was removed from the V1 release due to scope creep. It should hopefully get some additional options in the future which make it more useful.

It looks like some async logic I had was breaking things. It should be fixed now - please let me know if you’re still seeing problems with this.

Now I get a 502 Bad Gateway error when I try to open the app tab.

Yep, I sure did break it again. I was accidentally uploading my local .env.

It should actually be fixed now. Sorry everyone!

Thanks, that fixed everything!

Here’s a couple different ways of improving Update all references I’ve been thinking about:

  • Add a document selector to Update all references to make it possible to select specific documents you’d like to update from.
  • Add a tab selector to Update all references to make it possible to only update specific tabs.
  • Add an Update child references action to make it possible to only update references to linked child documents.

Let me know if any of them seem particularly useful, since I probably won’t implement all of them.

The main use case I’m imagining for this app is working within robot document systems that have been specifically set up to have your parent-child relationships. Given that, I see the most utility for the Update Reference functionality that specifically updates all child documents.

Side question: I’ve seen mentions of pulling the parent assembly into child documents as a reference. Is there a well-established way of doing this? Does it mess with parent-child reference handling?

1 Like

We used to do this directly, by having a construction document that had the whole robot assembly in it in each mechanism document. That led to some issues and needed a lot of work to keep everything on the right version.

We now just do this by using edit in context, to get the geometry we need from the top level robot in each document.

2 Likes

That makes sense, though I’d be interested to know if the Robot Manager app currently, or with some additional functionality, would help keep things at the right version and enable your previous strategy.

That being said, edit in context is a bit mystical for me right now. Do you have any resources that get into more detail about using contexts for a robot? For example, should I edit in the context of the main robot assembly or the subassembly that contains the specific geometry the current workspace needs to reference? I tried looking at Spectrum’s CAD but only your top level assemblies are viewable to the public, so I couldn’t explore how you’re using these contexts.

Side question: I’ve seen mentions of pulling the parent assembly into child documents as a reference. Is there a well-established way of doing this? Does it mess with parent-child reference handling?

As far as I’m aware, you can do this already by making Mechanism documents parents of your Robot document. It’s possible to create reference loops like this since references are always based on fixed versions, so there aren’t any circular dependency problems.

Setting up your documents this way allows Robot manager to push versions from your mechanisms to your robot, and push your robot to your mechanisms for use as a reference. Note that, e.g. propagating a new climber design to your intake is a two step process - first push the climber to your top level robot, then push the robot back to the intake (and the climber).

It should be noted, however, that using this technique to create a circular design reference might be a bit confusing. For example, you could wind up with a chicken and the egg scenario if you were to use the intake on your circularly linked robot as a reference for said intake.

A better application of this might be hosting your top level geometry in your top level robot document. So long as your top level geometry doesn’t depend on your top level robot assembly, you can safely push the geometry to your mechanism documents, use it as a reference, and then push the mechanisms back to your top level robot assembly. The alternative to this, of course, is to simply to create a separate Robot Geometry document.

One way Robot manager could be improved to support these types of workflows might be the ability to recursively propagate pushed versions. I would probably impose rule like “a single push version can’t update references in any given document more than once” to handle cycles in the parent child dependency graph. I’m hesitant to add this, however, since I suspect a lot of the time you might have stuff to fix after pushing one version, so immediately propagating again might not be the best idea.

1 Like

To answer the side question: usually edit-in-context is finicky and slow; learning from David and Andrew, I prefer deriving parts into the part studio from other documents and making them a composite. For example, deriving the drivetrain tubes and swerve modules into the intake part studio to reference off of and check for clearance. They’re made into a closed composite to clean up the parts list.

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.