jsketcher/web/app/cad/legacy/brep/revolve.js

35 lines
1.1 KiB
JavaScript

import {BooleanOperation, combineShells} from './boolean-operation'
import {ReadSketchFromFace} from '../../sketch/sketchReader'
import {revolve} from '../../../brep/brep-builder'
export function Revolve(app, params) {
const face = app.findFace(params.face);
const solid = face.solid;
const surface = face.surface;
const sketch = ReadSketchFromFace(app, face);
const pivot = evalPivot(params.pivot, sketch, face.csys);
const shells = [];
const contours = sketch.fetchContours();
for (let contour of contours) {
const basePath = contour.transferInCoordinateSystem(face.csys);
const shell = revolve(basePath, surface, pivot.p0, pivot.v, params.angle);
shells.push(shell);
}
const operand = combineShells(shells);
return BooleanOperation(face, solid, operand, 'union');
}
export function evalPivot(pivot, sketch, csys) {
const segment = sketch.findById(pivot);
if (segment == null) {
return null;
}
const tr = csys.outTransformation;
const p0 = tr.apply(segment.a);
const v = tr.apply(segment.b).minus(p0)._normalize();
return {p0, v}
}