UNPKG

@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
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); } }