extrudo

Docs

Tangent Plane

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

One feature of the timeline, in the construct category. Its name follows the app's (Tangent Plane1, then Tangent Plane2, …); 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
face GeomRef | GeomRef[] (face) optional The cylindrical, conical or spherical face to touch.
plane GeomRef | GeomRef[] (plane, face) optional The plane that says where round the face it touches: it touches where the face's normal is closest to this one. Without one, a fixed direction square to the face's axis.
angle string | number | ParameterHandle default 0 deg Turns the touching point about the face's axis; an angle.
point GeomRef | GeomRef[] (point, vertex) optional Touch the face nearest this point (a point or a vertex; a cone too). Without it, the reference plane and angle decide.

Faces

This feature makes no face of its own, so handle.face(role) has no role to take. Its result keeps the names of the bodies it worked on, so a reference to one of those still resolves.

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';

// Tangent Plane.
d.tangentPlane({ face: shaft.face('cap:start') });

See also