Introduction
A part is a named container for modelling statements. Inside it, sketches, extrudes and cuts fuse and interact the way they do anywhere else; across its boundary, nothing fuses. A part is also the unit an assembly works with: only an exported part() definition can be inserted, mated and animated.
Part
part(name, callback) declares a named part. Everything the callback does — sketches, features, connectors, exposures, parameters, properties — belongs to that part.
Param
param() declares a named value with a control, at the top of a part() body. The part's file shows it in the Parameters panel; an assembly sets it per instance. The return value is a plain number, string, boolean or array, so the rest of the body reads it like any variable: in a sketch guess, a dimension, an extrude distance, an if, a loop bound.
Connector
A connector is a named coordinate frame attached to the part's geometry — an origin, an X direction and a Z normal. Mates in an assembly join connectors to connectors, so the connectors a part declares are its mating interface. Every instance of the part carries the same set. A bolt circle or a hole grid needs only one: declare it on the first hole and copy it.
Expose
expose(name, source) publishes a piece of the part's geometry under a name. It is the outbound half of the part's interface: param() takes values in, connector() hands mate frames out, expose() hands geometry out.
Property
property(label, name, value) publishes a value the part computes, under a name the code reads it by and a label the Parameters panel shows. It is the part's value interface, the outbound twin of param(): a parameter is a value the part takes in, a property is a value it hands out, calculated from those parameters. connector() and expose() do the same for mate frames and geometry.