extrudo

API docs

Rib

d.rib(inputs?, options?): FeatureHandle<'rib'>

One feature of the timeline, in the create category. Its name follows the app's (Rib1, then Rib2, …); options.name gives it another, options.id its ID and options.index its place in the timeline. Inputs the table calls optional keep the default it names, so a call with none of them still makes a valid feature.

Inputs

Input Type Required or default What it does
curve GeomRef | GeomRef[] (sketchEntity) optional The sketch line the rib grows from.
thickness string | number | ParameterHandle default 2 mm How thick the wall is; a length greater than 0.
side 'both' | 'one' | 'other' default both Which side of the line the wall grows on, or centred on the sketch plane.
flip boolean default false Grow to the other side of the line.

Faces

Role What it is
cap:start The face the sweep starts at: the profile in its own place.
cap:end The face the sweep ends at.
side:<curve> A wall, one per edge of the profile: the sketch curve it came from, or the body edge it was swept from.
side:<line>:end0 The wall at the first end of the line, where the slab was extended to reach the body.
side:<line>:end1 The wall at the second end of the line, the other way round.

handle.face(role) builds a reference to one of them and handle.faceName(role) its persistent name. A <…> is what varies: a side:<sketch curve> is the wall of the curve you pass, and a role of a face that no face carries takes that part out. A role this feature never names is a lost reference — a visible error, never a silent guess.

Example

import { Design, type LineHandle } from '@extrudo/api';

const d = Design.create({ name: 'My part' });

// Two solids to point faces, edges and bodies at.
const plate = d.box({ length: '40 mm', width: '20 mm', height: '10 mm' });
const shaft = d.cylinder({ diameter: '20 mm', height: '20 mm' });

// A sketch with two closed profiles, a hole and a guide line beside them.
let guide!: LineHandle;
const s = d.sketch(d.origin.xy, (k) => {
  k.rectangle([0, 0], [40, 20]);
  k.circle([10, 10], '3 mm');
  k.rectangle([50, 0], [60, 10]);
  guide = k.line([-5, 30], [45, 30]);
});

const profile = s.profileAt([1, 1]);
const sections = s.profiles();
const line = guide.ref();
const face = plate.face('side:front');
const edge = plate.edge([plate.faceName('side:front'), plate.faceName('side:right')]);
const vertex = plate.vertex([plate.faceName('side:front'), plate.faceName('side:right')]);
const corner = plate.vertex([plate.faceName('side:front'), plate.faceName('side:left')]);
const body = plate.body();
const step = 'att-part.step'; // an attachment of the design
const plan = 'att-plan.png';

// Rib.
d.rib({ curve: line, thickness: '3 mm' });

See also