CAD Standards
Onshape is a collaborative tool, which means your CAD is only as useful as it is understandable to the next person who opens it. During build season that person might be a teammate trying to modify your mechanism, a mentor trying to review it, or you yourself three weeks later trying to remember what you were thinking. The standards on this page exist so that anyone can open any document on the team and get to work without a 20-minute orientation.
Document Structure
A full robot is too large and complex to live in a single Onshape document. Loading times get unmanageable, simultaneous editing becomes a nightmare, and version control breaks down. The standard structure splits the robot across three document types.
What it contains: The main layout sketch and Crayon CAD (a simplified model of the overall robot architecture).
This is where the geometry of the entire robot is established. Drivetrain footprint, extension limits, field element positions, mechanism motion paths, and game piece flow all live here as sketches before any real parts are modeled.
Every subsystem document derives its layout sketches from this document. If a geometry changes (elevator height, intake pivot location), it changes here and propagates downstream.
What they contain: One document per major mechanism, each with its own Part Studios, subassemblies, and a top-level subsystem assembly.
Each subsystem document starts by deriving the relevant layout sketches from the Concept Document. Parts are then modeled around those sketches. The top-level subsystem assembly is what gets imported into the Main Robot document.
Naming convention: [input here thanks] Use Onshape's version history to track iterations instead.
What it contains: A single top-level assembly that imports the top-level assembly from each subsystem document.
This is the "full robot" view. No parts are modeled here. Everything is imported. The main robot document is used for final packaging checks, collision detection, and generating screenshots for design reviews.
Layout Sketches
The layout sketch is the foundation of top-down design. It captures the major geometry of each mechanism before any parts are modeled, so that subsystem designers are all working from the same spatial constraints.
A well-made layout sketch drives every important dimension from intentional relationships, not from arbitrary numbers typed in after the fact.
Drivetrain footprint and bumper envelope
Belt and chain runs
Specific plate shapes
Extension limits (per game manual)
Motor locations
Gusset geometry
Field element geometry
Gear pitch circles
Mounting holes
Mechanism pivot points and motion paths
Game piece path through the robot
Use a separate sketch for each subsystem within the layout sketch Part Studio, and give each one a distinct color. Sketching all possible states of each moving subsystem (stowed, deployed, extended) before modeling anything will catch packaging conflicts early rather than after parts are already manufactured.
Part Studio Standards
Start with a Derive
Every Part Studio should start with a Derive command pulling in the relevant layout sketches from the Concept Document. This is what you build on. Parts modeled without a layout sketch reference tend to drift from the robot geometry and cause conflicts at integration.
Origin
The robot origin is defined as the center of the drivebase at floor level. All Part Studios and assemblies use the same origin so that subsystems align correctly when imported into the Main Robot document and so that CAD coordinates match robot code coordinates.
Use the Origin Cube featurescript as the first feature in every Part Studio. It inserts a fixed 2" transparent cube at the origin that assembly mates can always reference, even if other parts change or get deleted.
Naming and Organization
Unnamed parts and features are the fastest way to make a document unworkable for anyone else. Name every part and every sketch as you go, not at the end.
Parts
Descriptive noun ("Left Side Plate", "Intake Pivot Shaft")
Sketches
What they define ("Layout", "Shaft Profile", "Pulley Pocket")
Tabs
Subsystem or component name
Folders in feature tree
Group related features ("Frame Tubes", "Bearing Pockets")
What Goes in a Part Studio
The Part Studio contains custom-manufactured parts only. COTS parts (motors, gearboxes, bearings, hardware) are not modeled here; they are inserted directly into assemblies from FRCDesignLib.
Don't duplicate identical parts in the Part Studio. Model one instance of a symmetric part and duplicate it in the assembly using the replicate tool. Duplicating in the Part Studio bloats loading times without adding anything.
Avoid over-using intensive featurescripts like Tube Converter across many parts in the same studio. If loading times are getting slow, that's usually the cause.
Assembly Standards
The Origin Cube Workflow
Create the Origin Cube in the Part Studio
Insert parts and the Origin Cube into a new assembly
Use the Group tool on all rigid parts together
Fasten the Origin Cube's mate connector to the assembly origin
Insert COTS parts from FRCDesignLib
Use the Replicate tool for hardware (don't mate each bolt individually)
Sort instances into folders (Tubes, Gearbox, Hardware, etc.)
For mechanisms with moving parts (pivot intakes, elevators), create mate connectors on the layout sketch for each degree of freedom, owned by the Origin Cube, and use those connectors to mate subassemblies at the top level.
Use Simplified Models
Detailed COTS models (full swerve modules, motors with internal geometry) have a very high primitive count and will make assemblies lag badly. Always use the simplified versions from FRCDesignLib for electronics, swerve modules, motors, and any COTS assembly you're not modifying.
Minimize Mates
Every mate adds to the assembly solve time. The Origin Cube + Group workflow intentionally keeps mates to a minimum: one fasten at the origin, plus one mate per degree of freedom. Avoid mating individual fasteners or features unless there's a specific reason.
Featurescripts
These are installed on every team member's Onshape account. If you're new, install all of them before starting any robot CAD.
Origin Cube
Fixed origin reference cube with mate connectors and built-in FRC constants
#BeltCTC_5mm
Calculates center-to-center distances for HTD 5mm belt runs
#PulleyPD_5mm
Calculates pitch diameter for HTD 5mm pulleys by tooth count
#ChainCTC_25
Calculates center-to-center distances for #25 chain
#ChainCTC_35
Calculates center-to-center distances for #35 chain
Belt and Chain Gen
Generates belt and chain geometry from C-to-C and tooth count inputs
Robot Pulley
Generates 3D printed pulley geometry with hex insert pocket
Configurable Rollers (Andrew Card's)
Generates roller geometry for intake and conveyor design
MKCad
COTS part library with common FRC components
Installing featurescripts
To install a featurescript, open the Onshape document that hosts it, right-click the custom feature in the toolbar, and select "Add to My Featurescripts." It will then appear in your toolbar in any document.
For the Origin Cube functions (#BeltCTC_5mm, #PulleyPD_5mm, #ChainCTC_25, #ChainCTC_35), these are enabled inside the Origin Cube featurescript options when you insert it into a Part Studio. You don't install them separately.
Common Mistakes
Modeling everything in one document
Slow loading, merge conflicts, no version isolation
Split into Concept, Subsystem, and Main Robot documents
No layout sketch
Parts don't fit together; integration requires rework
Start every subsystem with a derived layout sketch
Unnamed parts and features
Nobody else can navigate the document
Name as you go, not at the end
Duplicating parts in Part Studio
Multiplies loading time for no benefit
Model once, duplicate in assembly with replicate tool
Deriving full COTS geometry for reference
Adds primitives and slows assembly
Use simplified FRCDesignLib models instead
Mating from non-Origin Cube references
Breaks if the referenced part changes
Use Origin Cube mate connectors for all assembly references
Last updated
Was this helpful?