Assemblies

Build and interrogate an assembly by chat — insert and position components, create mates and constraints, swap parts, produce a BOM, check interference, drive configurations, and clone a whole product structure. Positions are millimetres, rotations degrees.

A worked assembly, start to finish

A pin joint: a fork, a pin through it, and a collar on each end. This is the shape of an assembly session that goes well — place first, mate second, verify at each stage.

  1. Create a new assembly and save it as C:\projects\knuckle.sldasm
  2. Insert C:\parts\fork.sldprt at the origin and ground it

    Ground the first component. Everything else positions relative to it.

  3. Insert C:\parts\pin.sldprt at (0, 0, 18)

    Roughly where it belongs is good enough — the mate does the precision.

  4. Make the pin concentric with the fork, and report the solver status and both bound faces' radii

    Check the radius is the bore you meant, not a counterbore next to it.

  5. Insert C:\parts\collar.sldprt twice, at (0, 0, -6) and (0, 0, 42), and make each one concentric with the pin
  6. List the components and give me the assembly bounding box

    Four components, and a bounding box that matches the design. Now it is worth saving.

Creating an assembly and inserting components

Create a new assembly and save it as C:\projects\frame.sldasm
Insert C:\parts\base_plate.sldprt at the origin and ground it
Insert C:\parts\pin.sldprt at (0, 0, 18) rotated 180 degrees about Z

Components can be inserted at an X/Y/Z position, rotated about the world Z, Y and X axes in degrees, and optionally grounded (fixed) on the spot. Rotating on insert is often the difference between one mate and four.

Give reachable paths. When a prompt names a file, that file must exist on your workstation — use a full path such as C:\parts\bracket.sldprt rather than a bare file name, unless the part is already in the working folder.

A component can also be inserted into a sub-assembly rather than the top level, by naming the target:

Insert C:\parts\washer.sldprt into the "gearbox" sub-assembly at (0, 0, 12)

Components can also be removed, grounded later, or suppressed:

Remove the component called spacer-2 from this assembly
Ground the base plate so it cannot move
Suppress the two cover plates so I can see inside

Mates and constraints — name the components, not the faces

This is the most important habit on the page. Ask for the mate by component name and mate type, and let CoPilot find the geometry. Do not supply face or edge IDs, and do not try to describe faces in words.

Make the pin concentric with the fork, then make the collar concentric with the pin

For a concentric or coaxial mate, CoPilot enumerates the cylindrical faces of both components in assembly space, keeps the pairs whose axes actually line up in the world, and prefers the smallest radial gap — so a Ø28 shaft binds to the Ø28 bore rather than to the Ø40 counterbore next to it.

Two consequences worth knowing

Available mate types

Coincident, Concentric, Coaxial, Parallel, Perpendicular, Tangent, Distance, Angle, Flush, plus an insert constraint (mate and axial alignment combined). Distance and angle mates take a value.

Mate the bracket base face flush to the top face of the plate
Constrain the cover 25 mm above the housing top face
Set a 30 degree angle between the two arms

Read the solver status — existence is not health

A mate can exist in the tree and still be broken. Every mate CoPilot creates is checked against the assembly solver, and a mate that does not come back healthy is deleted and reported as a failure rather than left in your model looking finished. The reply carries the evidence:

After each mate, report the solver status and the axis point and radius of both bound faces

Then confirm nothing moved that should not have:

What is the assembly bounding box now?
Re-running a mate is safe. An existing broken mate of the same type between the same two components is removed first; healthy mates are never disturbed.

Replacing and swapping components

Replace C:\parts\bracket.sldprt with C:\parts\bracket_v2.sldprt throughout this assembly

Position and mates are preserved where the new part allows it. For a batch of substitutions, a mapping file with one old|new pair per line can be used instead of naming each one.

Apply the replacements listed in C:\projects\swaps.txt to this assembly

Bills of materials

Export the BOM of this assembly to C:\reports\frame_bom.xlsx

Four BOM shapes are available, and the difference matters:

Export a parts-only BOM with description, part number, material and revision columns to C:\reports\parts.xlsx

A BOM can also be read back in, which is how you build an assembly from a purchased or planned parts list:

Import C:\reports\frame_bom.xlsx and insert each row's component into this assembly

Header naming is tolerant — Part Number, PartNumber and part_number are all understood, likewise File Path/Path and Quantity/Qty.

For a BOM table on a drawing sheet rather than a spreadsheet, see Drawings & Dimensions. For the BOM your PDM system holds, see SOLIDWORKS PDM or Autodesk Vault.

Querying an assembly

List the components in this assembly with their positions
Show me every occurrence of the M8 bolt and where each one sits
Give me the full details of the component "frame|bracket-2" — position, orientation and custom properties
Check this assembly for interference between components
What is the total mass of this assembly?
Walk the dependency graph of this assembly and list every referenced part and drawing

Hiding components to see inside

To study one component, hide the others rather than suppressing them — a hidden component stays loaded and still counts towards mass and interference, it is just not drawn.

Hide every component except the pin
Show all components again

Full details, including which entity kinds each CAD supports, are on Showing & Hiding. (Suppressing, which does change mass and mates, is covered under Variants below.)

Exploded views

Create an exploded view that pulls the cover 60 mm up and the four bolts 30 mm up from it

Each explode step names the components and the distance and direction they move.

Variants: configurations, model states, arrangements, family members

Each of the four 3D CAD systems has this idea and every one names it differently. CoPilot handles all four, using each system's native mechanism — SOLIDWORKS configurations and display states, Inventor model states and positional / design-view representations, NX arrangements and part-family members, Solid Edge family members.

Ask what exists before you name one, so you use the system's own wording:

List the variants of this document
Activate the "Long" configuration
Create a new model state called "Machined" copied from the default one
Point the bracket component at its "Left hand" variant

Note the distinction between the last two ideas: activating a variant changes the document, while pointing a component at a variant changes only that occurrence inside the assembly. A drawing view can also be retargeted at a variant — see Drawings.

Variant capability follows each CAD system's own model, so behaviour is not identical everywhere. In particular, Inventor model states do not offer a per-component suppression column in the way SOLIDWORKS configurations do — if you need component suppression to vary, verify the result by activating the variant and listing the components.

Cloning a product structure

Copying an assembly and renaming its children — the job normally done with Pack-and-Go — can be driven from chat, including multi-level.

Clone this assembly to C:\projects\frame_mk2 with the prefix MK2- on every component

Rename strategies include prefix, suffix, regular-expression replacement, a per-component map, and auto-numbering. The CAD system's own Pack-and-Go machinery does the copying, so references stay intact.

Copy the assembly tree to C:\projects\variant_b and rename anything matching BR-20 to BR-30

Assemblies from a template

If your organization has stored assembly templates, an assembly can be instantiated from one with your input values, rather than built by hand.

List the assembly templates available to me
Instantiate the "Standard gearbox" template with 4 mounting holes and a 250 mm centre distance

CoPilot can also draft a new template from a description for review — it will not save it until someone with the right permission approves it.

Verifying an assembly

Assembly verification is different from part verification: mass and volume are far less trustworthy indicators than component count and bounding box, and in some CAD systems an assembly-level volume query returns nothing useful at all.

Verify this assembly contains 1 base plate, 1 fork, 1 pin and 2 collars, and give me the overall bounding box

After a run of mates, the bounding box is the quickest way to notice that something was dragged across the model by a bad constraint.

See also