@bitbybit-dev/occt
Version:
Bit By Bit Developers CAD algorithms using OpenCascade Technology kernel. Run in Node and in Browser.
47 lines (46 loc) • 2.04 kB
JavaScript
import * as Inputs from "../../api/inputs";
export class OCCTCurves {
constructor(occ, och) {
this.occ = occ;
this.och = och;
}
geom2dEllipse(inputs) {
// Create axis with primary direction, perpendicular direction is computed internally
const dir2 = [-inputs.direction[1], inputs.direction[0]]; // Perpendicular to direction
const axis2d = this.och.entitiesService.gpAx22d(inputs.center, inputs.direction, dir2);
const res = this.occ.CreateGeom2d_Ellipse(axis2d, inputs.radiusMajor, inputs.radiusMinor);
axis2d.delete();
return res;
}
geom2dCircle(inputs) {
// Create axis with primary direction, perpendicular direction is computed internally
const dir2 = [-inputs.direction[1], inputs.direction[0]]; // Perpendicular to direction
const axis2d = this.och.entitiesService.gpAx22d(inputs.center, inputs.direction, dir2);
const res = this.occ.CreateGeom2d_Circle(axis2d, inputs.radius);
axis2d.delete();
return res;
}
geom2dTrimmedCurve(inputs) {
return this.occ.CreateGeom2d_TrimmedCurve(inputs.shape, inputs.u1, inputs.u2);
}
geom2dSegment(inputs) {
const pt1 = this.och.entitiesService.gpPnt2d(inputs.start);
const pt2 = this.och.entitiesService.gpPnt2d(inputs.end);
const res = this.occ.CreateGeom2d_Segment(pt1, pt2);
pt1.delete();
pt2.delete();
return res;
}
get2dPointFrom2dCurveOnParam(inputs) {
const pt2d = inputs.shape.Value(inputs.param);
const pt = [pt2d.X(), pt2d.Y()];
pt2d.delete();
return pt;
}
geomCircleCurve(inputs) {
return this.och.entitiesService.createCircle(inputs.radius, inputs.center, inputs.direction, Inputs.OCCT.typeSpecificityEnum.wire);
}
geomEllipseCurve(inputs) {
return this.och.entitiesService.createEllipse(inputs.radiusMinor, inputs.radiusMajor, inputs.center, inputs.direction, Inputs.OCCT.typeSpecificityEnum.wire);
}
}