UNPKG

@bitbybit-dev/occt

Version:

Bit By Bit Developers CAD algorithms using OpenCascade Technology kernel. Run in Node and in Browser.

1,653 lines (1,652 loc) 162 kB
import { Base } from "./inputs"; export declare namespace OCCT { type GeomCurvePointer = { hash: number; type: string; }; type Geom2dCurvePointer = { hash: number; type: string; }; type GeomSurfacePointer = { hash: number; type: string; }; type TopoDSVertexPointer = { hash: number; type: string; }; type TopoDSEdgePointer = { hash: number; type: string; }; type TopoDSWirePointer = { hash: number; type: string; }; type TopoDSFacePointer = { hash: number; type: string; }; type TopoDSShellPointer = { hash: number; type: string; }; type TopoDSSolidPointer = { hash: number; type: string; }; type TopoDSCompSolidPointer = { hash: number; type: string; }; type TopoDSCompoundPointer = { hash: number; type: string; }; type TopoDSShapePointer = TopoDSVertexPointer | TopoDSEdgePointer | TopoDSWirePointer | TopoDSFacePointer | TopoDSShellPointer | TopoDSSolidPointer | TopoDSCompoundPointer; enum joinTypeEnum { arc = "arc", intersection = "intersection", tangent = "tangent" } enum bRepOffsetModeEnum { skin = "skin", pipe = "pipe", rectoVerso = "rectoVerso" } enum approxParametrizationTypeEnum { approxChordLength = "approxChordLength", approxCentripetal = "approxCentripetal", approxIsoParametric = "approxIsoParametric" } enum directionEnum { outside = "outside", inside = "inside", middle = "middle" } enum fileTypeEnum { iges = "iges", step = "step" } enum topAbsOrientationEnum { forward = "forward", reversed = "reversed", internal = "internal", external = "external" } enum topAbsStateEnum { in = "in", out = "out", on = "on", unknown = "unknown" } enum shapeTypeEnum { unknown = "unknown", vertex = "vertex", edge = "edge", wire = "wire", face = "face", shell = "shell", solid = "solid", compSolid = "compSolid", compound = "compound", shape = "shape" } enum gccEntPositionEnum { unqualified = "unqualified", enclosing = "enclosing", enclosed = "enclosed", outside = "outside", noqualifier = "noqualifier" } enum positionResultEnum { keepSide1 = "keepSide1", keepSide2 = "keepSide2", all = "all" } enum circleInclusionEnum { none = "none", keepSide1 = "keepSide1", keepSide2 = "keepSide2" } enum twoCircleInclusionEnum { none = "none", outside = "outside", inside = "inside", outsideInside = "outsideInside", insideOutside = "insideOutside" } enum fourSidesStrictEnum { outside = "outside", inside = "inside", outsideInside = "outsideInside", insideOutside = "insideOutside" } enum twoSidesStrictEnum { outside = "outside", inside = "inside" } enum combinationCirclesForFaceEnum { allWithAll = "allWithAll", inOrder = "inOrder", inOrderClosed = "inOrderClosed" } enum typeSpecificityEnum { curve = 0, edge = 1, wire = 2, face = 3 } enum pointProjectionTypeEnum { all = "all", closest = "closest", furthest = "furthest", closestAndFurthest = "closestAndFurthest" } enum geomFillTrihedronEnum { isCorrectedFrenet = "isCorrectedFrenet", isFixed = "isFixed", isFrenet = "isFrenet", isConstantNormal = "isConstantNormal", isDarboux = "isDarboux", isGuideAC = "isGuideAC", isGuidePlan = "isGuidePlan", isGuideACWithContact = "isGuideACWithContact", isGuidePlanWithContact = "isGuidePlanWithContact", isDiscreteTrihedron = "isDiscreteTrihedron" } class DecomposedMeshDto { constructor(faceList?: DecomposedFaceDto[], edgeList?: DecomposedEdgeDto[]); /** * Face list for decomposed faces */ faceList: DecomposedFaceDto[]; /** * Edge list for decomposed edges */ edgeList: DecomposedEdgeDto[]; /** * The points list in a shape that includes vertex shapes */ pointsList: Base.Point3[]; } class DecomposedFaceDto { face_index: number; normal_coord: number[]; number_of_triangles: number; tri_indexes: number[]; vertex_coord: number[]; vertex_coord_vec: Base.Vector3[]; center_point: Base.Point3; center_normal: Base.Vector3; uvs: number[]; } class DecomposedEdgeDto { edge_index: number; middle_point: Base.Point3; vertex_coord: Base.Vector3[]; } class ShapesDto<T> { constructor(shapes?: T[]); /** * The OCCT shapes * @default undefined */ shapes: T[]; } class PointDto { constructor(point?: Base.Point3); /** * The point * @default [0, 0, 0] */ point: Base.Point3; } class XYZDto { constructor(x?: number, y?: number, z?: number); /** * X coord * @default 0 * @minimum -Infinity * @maximum Infinity * @step 0.1 */ x: number; /** * Y coord * @default 0 * @minimum -Infinity * @maximum Infinity * @step 0.1 */ y: number; /** * Z coord * @default 0 * @minimum -Infinity * @maximum Infinity * @step 0.1 */ z: number; } class PointsDto { constructor(points?: Base.Point3[]); /** * The point * @default undefined */ points: Base.Point3[]; } class ConstraintTanLinesFromPtToCircleDto<T> { constructor(circle?: T, point?: Base.Point3, tolerance?: number, positionResult?: positionResultEnum, circleRemainder?: circleInclusionEnum); /** * The circle for tangent points * @default undefined */ circle: T; /** * The point from which to find the lines * @default undefined */ point: Base.Point3; /** * tolerance * @default 1e-7 * @minimum 0 * @maximum Infinity * @step 0.00001 */ tolerance: number; /** * Filters resulting lines by position * @default all */ positionResult: positionResultEnum; /** * Splits provided circle on tangent points and adds it to the solutions * This only works when number of solutions contains 2 lines, when solution involves more than 4 lines, this option will be ignored. * @default none */ circleRemainder: circleInclusionEnum; } class ConstraintTanLinesFromTwoPtsToCircleDto<T> { constructor(circle?: T, point1?: Base.Point3, point2?: Base.Point3, tolerance?: number, positionResult?: positionResultEnum, circleRemainder?: circleInclusionEnum); /** * The circle for tangent points * @default undefined */ circle: T; /** * The point from which to find the lines * @default undefined */ point1: Base.Point3; /** * The point from which to find the lines * @default undefined */ point2: Base.Point3; /** * tolerance * @default 1e-7 * @minimum 0 * @maximum Infinity * @step 0.00001 */ tolerance: number; /** * Filters resulting lines by position * @default all */ positionResult: positionResultEnum; /** * Splits provided circle on tangent points and adds it to the solutions * This only works when number of solutions contains 2 lines, when solution involves more than 4 lines, this option will be ignored. * @default none */ circleRemainder: circleInclusionEnum; } class ConstraintTanLinesOnTwoCirclesDto<T> { constructor(circle1?: T, circle2?: T, tolerance?: number, positionResult?: positionResultEnum, circleRemainders?: twoCircleInclusionEnum); /** * The first circle for tangential lines * @default undefined */ circle1: T; /** * The second circle for tangential lines * @default undefined */ circle2: T; /** * tolerance * @default 1e-7 * @minimum 0 * @maximum Infinity * @step 0.00001 */ tolerance: number; /** * Filters resulting lines by position relative to circles * @default all */ positionResult: positionResultEnum; /** * Splits provided circles on tangent points and returns those as part of the solutions * This only works when number of solutions is limited to 2 lines, when solution involves more than 4 lines, this option will be ignored. * @default none */ circleRemainders: twoCircleInclusionEnum; } class ConstraintTanCirclesOnTwoCirclesDto<T> { constructor(circle1?: T, circle2?: T, tolerance?: number, radius?: number); /** * The first circle for tangential lines * @default undefined */ circle1: T; /** * The second circle for tangential lines * @default undefined */ circle2: T; /** * tolerance * @default 1e-7 * @minimum 0 * @maximum Infinity * @step 0.00001 */ tolerance: number; /** * Radius of the circles being constructed * @default 0.3 * @minimum 0 * @maximum Infinity * @step 0.1 */ radius: number; } class ConstraintTanCirclesOnCircleAndPntDto<T> { constructor(circle?: T, point?: Base.Point3, tolerance?: number, radius?: number); /** * The first circle for tangential lines * @default undefined */ circle: T; /** * The second circle for tangential lines * @default undefined */ point: Base.Point3; /** * tolerance * @default 1e-7 * @minimum 0 * @maximum Infinity * @step 0.00001 */ tolerance: number; /** * Radius of the circles being constructed * @default 0.3 * @minimum 0 * @maximum Infinity * @step 0.1 */ radius: number; } class CurveAndSurfaceDto<T, U> { constructor(curve?: T, surface?: U); /** * Curve * @default undefined */ curve: T; /** * Surface * @default undefined */ surface: U; } class FilletTwoEdgesInPlaneDto<T> { constructor(edge1?: T, edge2?: T, planeOrigin?: Base.Point3, planeDirection?: Base.Vector3, radius?: number, solution?: number); /** * First OCCT edge to fillet * @default undefined */ edge1: T; /** * Second OCCT edge to fillet * @default undefined */ edge2: T; /** * Plane origin that is also used to find the closest solution if two solutions exist. * @default [0, 0, 0] */ planeOrigin: Base.Point3; /** * Plane direction for fillet * @default [0, 1, 0] */ planeDirection: Base.Vector3; /** * Radius of the fillet * @default 0.3 * @minimum 0 * @maximum Infinity * @step 0.1 */ radius: number; /** * if solution is -1 planeOrigin chooses a particular fillet in case of several fillets may be constructed (for example, a circle intersecting a segment in 2 points). Put the intersecting (or common) point of the edges * @default -1 * @optional true */ solution?: number; } class ClosestPointsOnShapeFromPointsDto<T> { constructor(shape?: T, points?: Base.Point3[]); /** * The OCCT shape * @default undefined */ shape: T; /** * The list of points * @default undefined */ points: Base.Point3[]; } class BoundingBoxDto { constructor(bbox?: BoundingBoxPropsDto); /** * Bounding box * @default undefined */ bbox?: BoundingBoxPropsDto; } class BoundingBoxPropsDto { constructor(min?: Base.Point3, max?: Base.Point3, center?: Base.Point3, size?: Base.Vector3); /** * Minimum point of the bounding box * @default [0, 0, 0] */ min: Base.Point3; /** * Maximum point of the bounding box * @default [0, 0, 0] */ max: Base.Point3; /** * Center point of the bounding box * @default [0, 0, 0] */ center: Base.Point3; /** * Size of the bounding box * @default [0, 0, 0] */ size: Base.Vector3; } class BoundingSpherePropsDto { constructor(center?: Base.Point3, radius?: number); /** * Center point of the bounding box * @default [0, 0, 0] */ center: Base.Point3; /** * Radius of the bounding sphere * @default 0 * @minimum 0 * @maximum Infinity * @step 0.1 */ radius: number; } class SplitWireOnPointsDto<T> { constructor(shape?: T, points?: Base.Point3[]); /** * The OCCT wire shape * @default undefined */ shape: T; /** * The list of points * @default undefined */ points: Base.Point3[]; } class ClosestPointsOnShapesFromPointsDto<T> { constructor(shapes?: T[], points?: Base.Point3[]); /** * The OCCT shapes * @default undefined */ shapes: T[]; /** * The list of points * @default undefined */ points: Base.Point3[]; } class ClosestPointsBetweenTwoShapesDto<T> { constructor(shape1?: T, shape2?: T); /** * First OCCT shape * @default undefined */ shape1: T; /** * Second OCCT shape * @default undefined */ shape2: T; } class FaceFromSurfaceAndWireDto<T, U> { constructor(surface?: T, wire?: U, inside?: boolean); /** * Surface from which to create a face * @default undefined */ surface: T; /** * Wire that represents a boundary on the surface to delimit the face * @default undefined */ wire: U; /** * Indicates wether face should be created inside or outside the wire * @default true */ inside: boolean; } class WireOnFaceDto<T, U> { constructor(wire?: T, face?: U); /** * Wire to place on face * @default undefined */ wire: T; /** * Face on which the wire will be placed * @default undefined */ face: U; } class DrawShapeDto<T> { /** * Provide options without default values */ constructor(shape?: T, faceOpacity?: number, edgeOpacity?: number, edgeColour?: Base.Color, faceMaterial?: Base.Material, faceColour?: Base.Color, edgeWidth?: number, drawEdges?: boolean, drawFaces?: boolean, drawVertices?: boolean, vertexColour?: Base.Color, vertexSize?: number, precision?: number, drawEdgeIndexes?: boolean, edgeIndexHeight?: number, edgeIndexColour?: Base.Color, drawFaceIndexes?: boolean, faceIndexHeight?: number, faceIndexColour?: Base.Color); /** * Brep OpenCascade geometry * @default undefined */ shape?: T; /** * Face opacity value between 0 and 1 * @default 1 * @minimum 0 * @maximum 1 * @step 0.1 */ faceOpacity: number; /** * Edge opacity value between 0 and 1 * @default 1 * @minimum 0 * @maximum 1 * @step 0.1 */ edgeOpacity: number; /** * Hex colour string for the edges * @default #ffffff */ edgeColour: Base.Color; /** * Face material * @default undefined * @optional true */ faceMaterial?: Base.Material; /** * Hex colour string for face colour * @default #ff0000 */ faceColour: Base.Color; /** * Edge width * @default 2 * @minimum 0 * @maximum Infinity * @step 0.1 */ edgeWidth: number; /** * You can turn off drawing of edges via this property * @default true */ drawEdges: boolean; /** * You can turn off drawing of faces via this property * @default true */ drawFaces: boolean; /** * You can turn off drawing of vertexes via this property * @default false */ drawVertices: boolean; /** * Color of the vertices that will be drawn * @default #ff00ff */ vertexColour: string; /** * The size of a vertices that will be drawn * @default 0.03 * @minimum 0 * @maximum Infinity * @step 0.01 */ vertexSize: number; /** * Precision of the mesh that will be generated for the shape, lower number will mean more triangles * @default 0.01 * @minimum 0 * @maximum Infinity * @step 0.01 */ precision: number; /** * Draw index of edges in space * @default false */ drawEdgeIndexes: boolean; /** * Indicates the edge index height if they are drawn * @default 0.06 * @minimum 0 * @maximum Infinity * @step 0.01 */ edgeIndexHeight: number; /** * Edge index colour if the edges are drawn * @default #ff00ff */ edgeIndexColour: Base.Color; /** * Draw indexes of faces in space * @default false */ drawFaceIndexes: boolean; /** * Indicates the edge index height if they are drawn * @default 0.06 * @minimum 0 * @maximum Infinity * @step 0.01 */ faceIndexHeight: number; /** * Edge index colour if the edges are drawn * @default #0000ff */ faceIndexColour: Base.Color; } class DrawShapesDto<T> { /** * Provide options without default values */ constructor(shapes?: T[], faceOpacity?: number, edgeOpacity?: number, edgeColour?: Base.Color, faceMaterial?: Base.Material, faceColour?: Base.Color, edgeWidth?: number, drawEdges?: boolean, drawFaces?: boolean, drawVertices?: boolean, vertexColour?: Base.Color, vertexSize?: number, precision?: number, drawEdgeIndexes?: boolean, edgeIndexHeight?: number, edgeIndexColour?: Base.Color, drawFaceIndexes?: boolean, faceIndexHeight?: number, faceIndexColour?: Base.Color); /** * Brep OpenCascade geometry * @default undefined */ shapes: T[]; /** * Face opacity value between 0 and 1 * @default 1 * @minimum 0 * @maximum 1 * @step 0.1 */ faceOpacity: number; /** * Edge opacity value between 0 and 1 * @default 1 * @minimum 0 * @maximum 1 * @step 0.1 */ edgeOpacity: number; /** * Hex colour string for the edges * @default #ffffff */ edgeColour: Base.Color; /** * Face material * @default undefined * @optional true */ faceMaterial?: Base.Material; /** * Hex colour string for face colour * @default #ff0000 */ faceColour: Base.Color; /** * Edge width * @default 2 * @minimum 0 * @maximum Infinity * @step 0.1 */ edgeWidth: number; /** * You can turn off drawing of edges via this property * @default true */ drawEdges: boolean; /** * You can turn off drawing of faces via this property * @default true */ drawFaces: boolean; /** * You can turn off drawing of vertexes via this property * @default false */ drawVertices: boolean; /** * Color of the vertices that will be drawn * @default #ff00ff */ vertexColour: string; /** * The size of a vertices that will be drawn * @default 0.03 * @minimum 0 * @maximum Infinity * @step 0.01 */ vertexSize: number; /** * Precision of the mesh that will be generated for the shape, lower number will mean more triangles * @default 0.01 * @minimum 0 * @maximum Infinity * @step 0.01 */ precision: number; /** * Draw index of edges in space * @default false */ drawEdgeIndexes: boolean; /** * Indicates the edge index height if they are drawn * @default 0.06 * @minimum 0 * @maximum Infinity * @step 0.01 */ edgeIndexHeight: number; /** * Edge index colour if the edges are drawn * @default #ff00ff */ edgeIndexColour: Base.Color; /** * Draw indexes of faces in space * @default false */ drawFaceIndexes: boolean; /** * Indicates the edge index height if they are drawn * @default 0.06 * @minimum 0 * @maximum Infinity * @step 0.01 */ faceIndexHeight: number; /** * Edge index colour if the edges are drawn * @default #0000ff */ faceIndexColour: Base.Color; } class FaceSubdivisionDto<T> { /** * Provide options without default values */ constructor(shape?: T, nrDivisionsU?: number, nrDivisionsV?: number, shiftHalfStepU?: boolean, removeStartEdgeU?: boolean, removeEndEdgeU?: boolean, shiftHalfStepV?: boolean, removeStartEdgeV?: boolean, removeEndEdgeV?: boolean); /** * Brep OpenCascade geometry * @default undefined */ shape: T; /** * Number of points that will be added on U direction * @default 10 * @minimum 1 * @maximum Infinity * @step 1 */ nrDivisionsU: number; /** * Number of points that will be added on V direction * @default 10 * @minimum 1 * @maximum Infinity * @step 1 */ nrDivisionsV: number; /** * Sometimes you want to shift your points half way the step distance, especially on periodic surfaces * @default false */ shiftHalfStepU: boolean; /** * Removes start edge points on U * @default false */ removeStartEdgeU: boolean; /** * Removes end edge points on U * @default false */ removeEndEdgeU: boolean; /** * Sometimes you want to shift your points half way the step distance, especially on periodic surfaces * @default false */ shiftHalfStepV: boolean; /** * Removes start edge points on V * @default false */ removeStartEdgeV: boolean; /** * Removes end edge points on V * @default false */ removeEndEdgeV: boolean; } class FaceSubdivisionToWiresDto<T> { /** * Provide options without default values */ constructor(shape?: T, nrDivisions?: number, isU?: boolean, shiftHalfStep?: boolean, removeStart?: boolean, removeEnd?: boolean); /** * Openascade Face * @default undefined */ shape: T; /** * Number of points that will be added on U direction * @default 10 * @minimum 1 * @maximum Infinity * @step 1 */ nrDivisions: number; /** * Linear subdivision direction true - U, false - V * @default true */ isU: boolean; /** * Sometimes you want to shift your wires half way the step distance, especially on periodic surfaces * @default false */ shiftHalfStep: boolean; /** * Removes start wire * @default false */ removeStart: boolean; /** * Removes end wire * @default false */ removeEnd: boolean; } class FaceSubdivideToRectangleWiresDto<T> { /** * Provide options without default values */ constructor(shape?: T, nrRectanglesU?: number, nrRectanglesV?: number, scalePatternU?: number[], scalePatternV?: number[], filletPattern?: number[], inclusionPattern?: boolean[], offsetFromBorderU?: number, offsetFromBorderV?: number); /** * Openascade Face * @default undefined */ shape: T; /** * Number of rectangles on U direction * @default 10 * @minimum 1 * @maximum Infinity * @step 1 */ nrRectanglesU: number; /** * Number of rectangles on V direction * @default 10 * @minimum 1 * @maximum Infinity * @step 1 */ nrRectanglesV: number; /** * Rectangle scale pattern on u direction - numbers between 0 and 1, if 1 or undefined is used, no scaling is applied * @default undefined * @optional true */ scalePatternU: number[]; /** * Rectangle scale pattern on v direction - numbers between 0 and 1, if 1 or undefined is used, no scaling is applied * @default undefined * @optional true */ scalePatternV: number[]; /** * Rectangle fillet scale pattern - numbers between 0 and 1, if 0 is used, no fillet is applied, * if 1 is used, the fillet will be exactly half of the length of the shorter side of the rectangle * @default undefined * @optional true */ filletPattern: number[]; /** * Rectangle inclusion pattern - true means that the rectangle will be included, * false means that the rectangle will be removed from the face * @default undefined * @optional true */ inclusionPattern: boolean[]; /** * If offset on U is bigger then 0 we will use a smaller space for rectangles to be placed. This means that even rectangle of U param 1 will be offset from the face border * That is often required to create a pattern that is not too close to the face border * It should not be bigger then half of the total width of the face as that will create problems * @default 0 * @minimum 0 * @maximum 0.5 * @step 0.01 */ offsetFromBorderU: number; /** * If offset on V is bigger then 0 we will use a smaller space for rectangles to be placed. This means that even rectangle of V param 1 will be offset from the face border * That is often required to create a pattern that is not too close to the face border * It should not be bigger then half of the total width of the face as that will create problems * @default 0 * @minimum 0 * @maximum 0.5 * @step 0.01 */ offsetFromBorderV: number; } class FaceSubdivideToHexagonWiresDto<T> { /** * Provide options without default values */ constructor(shape?: T, nrHexagonsU?: number, nrHexagonsV?: number, flatU?: boolean, scalePatternU?: number[], scalePatternV?: number[], filletPattern?: number[], inclusionPattern?: boolean[], offsetFromBorderU?: number, offsetFromBorderV?: number, extendUUp?: boolean, extendUBottom?: boolean, extendVUp?: boolean, extendVBottom?: boolean); /** * Openascade Face * @default undefined */ shape?: T; /** * Number of hexagons on U direction * @default 10 * @minimum 1 * @maximum Infinity * @step 1 */ nrHexagonsU?: number; /** * Number of hexagons on V direction * @default 10 * @minimum 1 * @maximum Infinity * @step 1 */ nrHexagonsV?: number; flatU: boolean; /** * Hexagon scale pattern on u direction - numbers between 0 and 1, if 1 or undefined is used, no scaling is applied * @default undefined * @optional true */ scalePatternU?: number[]; /** * Hexagon scale pattern on v direction - numbers between 0 and 1, if 1 or undefined is used, no scaling is applied * @default undefined * @optional true */ scalePatternV?: number[]; /** * Hexagon fillet scale pattern - numbers between 0 and 1, if 0 is used, no fillet is applied, * if 1 is used, the fillet will be exactly half of the length of the shortest segment of the hexagon * @default undefined * @optional true */ filletPattern?: number[]; /** * Hexagon inclusion pattern - true means that the hexagon will be included, * false means that the hexagon will be removed from the face * @default undefined * @optional true */ inclusionPattern?: boolean[]; /** * If offset on U is bigger then 0 we will use a smaller space for hexagons to be placed. This means that even hexagon of U param 1 will be offset from the face border * That is often required to create a pattern that is not too close to the face border * It should not be bigger then half of the total width of the face as that will create problems * @default 0 * @minimum 0 * @maximum 0.5 * @step 0.01 */ offsetFromBorderU?: number; /** * If offset on V is bigger then 0 we will use a smaller space for hexagons to be placed. This means that even hexagon of V param 1 will be offset from the face border * That is often required to create a pattern that is not too close to the face border * It should not be bigger then half of the total width of the face as that will create problems * @default 0 * @minimum 0 * @maximum 0.5 * @step 0.01 */ offsetFromBorderV?: number; /** * If true, we will extend the hexagons beyond the face u up border by their pointy tops * @default false */ extendUUp?: boolean; /** * If true, we will extend the hexagons beyond the face u bottom border by their pointy tops * @default false */ extendUBottom?: boolean; /** * If true, we will extend the hexagons beyond the face v upper border by their half width * @default false */ extendVUp?: boolean; /** * If true, we will extend the hexagons beyond the face v bottom border by their half width * @default false */ extendVBottom?: boolean; } class FaceSubdivideToHexagonHolesDto<T> { /** * Provide options without default values */ constructor(shape?: T, nrHexagonsU?: number, nrHexagonsV?: number, flatU?: boolean, holesToFaces?: boolean, scalePatternU?: number[], scalePatternV?: number[], filletPattern?: number[], inclusionPattern?: boolean[], offsetFromBorderU?: number, offsetFromBorderV?: number); /** * Openascade Face * @default undefined */ shape?: T; /** * Number of hexagons on U direction * @default 10 * @minimum 1 * @maximum Infinity * @step 1 */ nrHexagonsU?: number; /** * Number of hexagons on V direction * @default 10 * @minimum 1 * @maximum Infinity * @step 1 */ nrHexagonsV?: number; flatU: boolean; /** * If true, we will also create holes as faces * @default false */ holesToFaces?: boolean; /** * Hexagon scale pattern on u direction - numbers between 0 and 1, if 1 or undefined is used, no scaling is applied * @default undefined * @optional true */ scalePatternU?: number[]; /** * Hexagon scale pattern on v direction - numbers between 0 and 1, if 1 or undefined is used, no scaling is applied * @default undefined * @optional true */ scalePatternV?: number[]; /** * Hexagon fillet scale pattern - numbers between 0 and 1, if 0 is used, no fillet is applied, * if 1 is used, the fillet will be exactly half of the length of the shortest segment of the hexagon * @default undefined * @optional true */ filletPattern?: number[]; /** * Hexagon inclusion pattern - true means that the hexagon will be included, * false means that the hexagon will be removed from the face * @default undefined * @optional true */ inclusionPattern?: boolean[]; /** * If offset on U is bigger then 0 we will use a smaller space for hexagons to be placed. This means that even hexagon of U param 1 will be offset from the face border * That is often required to create a pattern that is not too close to the face border * It should not be bigger then half of the total width of the face as that will create problems * @default 0 * @minimum 0 * @maximum 0.5 * @step 0.01 */ offsetFromBorderU?: number; /** * If offset on V is bigger then 0 we will use a smaller space for hexagons to be placed. This means that even hexagon of V param 1 will be offset from the face border * That is often required to create a pattern that is not too close to the face border * It should not be bigger then half of the total width of the face as that will create problems * @default 0 * @minimum 0 * @maximum 0.5 * @step 0.01 */ offsetFromBorderV?: number; } class FaceSubdivideToRectangleHolesDto<T> { /** * Provide options without default values */ constructor(shape?: T, nrRectanglesU?: number, nrRectanglesV?: number, scalePatternU?: number[], scalePatternV?: number[], filletPattern?: number[], inclusionPattern?: boolean[], holesToFaces?: boolean, offsetFromBorderU?: number, offsetFromBorderV?: number); /** * Openascade Face * @default undefined */ shape: T; /** * Number of rectangles on U direction * @default 10 * @minimum 1 * @maximum Infinity * @step 1 */ nrRectanglesU: number; /** * Number of rectangles on V direction * @default 10 * @minimum 1 * @maximum Infinity * @step 1 */ nrRectanglesV: number; /** * Rectangle scale pattern on u direction - numbers between 0 and 1, if 1 or undefined is used, no scaling is applied * @default undefined * @optional true */ scalePatternU: number[]; /** * Rectangle scale pattern on v direction - numbers between 0 and 1, if 1 or undefined is used, no scaling is applied * @default undefined * @optional true */ scalePatternV: number[]; /** * Rectangle fillet scale pattern - numbers between 0 and 1, if 0 is used, no fillet is applied, * if 1 is used, the fillet will be exactly half of the length of the shorter side of the rectangle * @default undefined * @optional true */ filletPattern: number[]; /** * Rectangle inclusion pattern - true means that the rectangle will be included, * false means that the rectangle will be removed from the face * @default undefined * @optional true */ inclusionPattern: boolean[]; /** * If true, we will also output the faces for all the rectangles. The first face in the result will be the original face with holes punched, while the rest will be the rectangles * @default false */ holesToFaces: boolean; /** * If offset on U is bigger then 0 we will use a smaller space for rectangles to be placed. This means that even rectangle of U param 1 will be offset from the face border * That is often required to create a pattern that is not too close to the face border * It should not be bigger then half of the total width of the face as that will create problems * @default 0 * @minimum 0 * @maximum 0.5 * @step 0.01 */ offsetFromBorderU: number; /** * If offset on V is bigger then 0 we will use a smaller space for rectangles to be placed. This means that even rectangle of V param 1 will be offset from the face border * That is often required to create a pattern that is not too close to the face border * It should not be bigger then half of the total width of the face as that will create problems * @default 0 * @minimum 0 * @maximum 0.5 * @step 0.01 */ offsetFromBorderV: number; } class FaceSubdivisionControlledDto<T> { /** * Provide options without default values */ constructor(shape?: T, nrDivisionsU?: number, nrDivisionsV?: number, shiftHalfStepNthU?: number, shiftHalfStepUOffsetN?: number, removeStartEdgeNthU?: number, removeStartEdgeUOffsetN?: number, removeEndEdgeNthU?: number, removeEndEdgeUOffsetN?: number, shiftHalfStepNthV?: number, shiftHalfStepVOffsetN?: number, removeStartEdgeNthV?: number, removeStartEdgeVOffsetN?: number, removeEndEdgeNthV?: number, removeEndEdgeVOffsetN?: number); /** * Brep OpenCascade geometry * @default undefined */ shape: T; /** * Number of subdivisions on U direction * @default 10 * @minimum 1 * @maximum Infinity * @step 1 */ nrDivisionsU: number; /** * Number of subdivisions on V direction * @default 10 * @minimum 1 * @maximum Infinity * @step 1 */ nrDivisionsV: number; /** * Shift half step every nth U row * @default 0 * @minimum 0 * @maximum Infinity * @step 1 */ shiftHalfStepNthU: number; /** * Offset for shift half step every nth U row * @default 0 * @minimum 0 * @maximum Infinity * @step 1 */ shiftHalfStepUOffsetN: number; /** * Removes start edge points on U * @default 0 * @minimum 0 * @maximum Infinity * @step 1 */ removeStartEdgeNthU: number; /** * Offset for remove start edge points on U * @default 0 * @minimum 0 * @maximum Infinity * @step 1 */ removeStartEdgeUOffsetN: number; /** * Removes end edge points on U * @default 0 * @minimum 0 * @maximum Infinity * @step 1 */ removeEndEdgeNthU: number; /** * Offset for remove end edge points on U * @default 0 * @minimum 0 * @maximum Infinity * @step 1 */ removeEndEdgeUOffsetN: number; /** * Shift half step every nth V row * @default 0 * @minimum 0 * @maximum Infinity * @step 1 */ shiftHalfStepNthV: number; /** * Offset for shift half step every nth V row * @default 0 * @minimum 0 * @maximum Infinity * @step 1 */ shiftHalfStepVOffsetN: number; /** * Removes start edge points on V * @default 0 * @minimum 0 * @maximum Infinity * @step 1 */ removeStartEdgeNthV: number; /** * Offset for remove start edge points on V * @default 0 * @minimum 0 * @maximum Infinity * @step 1 */ removeStartEdgeVOffsetN: number; /** * Removes end edge points on V * @default 0 * @minimum 0 * @maximum Infinity * @step 1 */ removeEndEdgeNthV: number; /** * Offset for remove end edge points on V * @default 0 * @minimum 0 * @maximum Infinity * @step 1 */ removeEndEdgeVOffsetN: number; } class FaceLinearSubdivisionDto<T> { /** * Provide options without default values */ constructor(shape?: T, isU?: boolean, param?: number, nrPoints?: number, shiftHalfStep?: boolean, removeStartPoint?: boolean, removeEndPoint?: boolean); /** * Brep OpenCascade geometry * @default undefined */ shape: T; /** * Linear subdivision direction true - U, false - V * @default true */ isU: boolean; /** * Param on direction 0 - 1 * @default 0.5 * @minimum 0 * @maximum 1 * @step 0.1 */ param: number; /** * Number of subdivisions on opposite direction * @default 10 * @minimum 1 * @maximum Infinity * @step 1 */ nrPoints: number; /** * Sometimes you want to shift your points half way the step distance, especially on periodic surfaces * @default false */ shiftHalfStep: boolean; /** * Removes first point * @default false */ removeStartPoint: boolean; /** * Removes last point * @default false */ removeEndPoint: boolean; } class WireAlongParamDto<T> { /** * Provide options without default values */ constructor(shape?: T, isU?: boolean, param?: number); /** * Brep OpenCascade geometry * @default undefined */ shape: T; /** * Linear subdivision direction true - U, false - V * @default true */ isU: boolean; /** * Param on direction 0 - 1 * @default 0.5 * @minimum 0 * @maximum 1 * @step 0.1 */ param: number; } class WiresAlongParamsDto<T> { /** * Provide options without default values */ constructor(shape?: T, isU?: boolean, params?: number[]); /** * Brep OpenCascade geometry * @default undefined */ shape: T; /** * Linear subdivision direction true - U, false - V * @default true */ isU: boolean; /** * Params on direction 0 - 1 * @default undefined */ params: number[]; } class DataOnUVDto<T> { /** * Provide options without default values */ constructor(shape?: T, paramU?: number, paramV?: number); /** * Brep OpenCascade geometry * @default undefined */ shape: T; /** * Param on U direction 0 to 1 * @default 0.5 * @minimum 0 * @maximum 1 * @step 0.1 */ paramU: number; /** * Param on V direction 0 to 1 * @default 0.5 * @minimum 0 * @maximum 1 * @step 0.1 */ paramV: number; } class DataOnUVsDto<T> { /** * Provide options without default values */ constructor(shape?: T, paramsUV?: [number, number][]); /** * Brep OpenCascade geometry * @default undefined */ shape: T; /** * Params uv * @default [[0.5, 0.5]] */ paramsUV: [number, number][]; } class PolygonDto { constructor(points?: Base.Point3[]); /** * Points points * @default undefined */ points: Base.Point3[]; } class PolygonsDto { constructor(polygons?: PolygonDto[], returnCompound?: boolean); /** * Polygons * @default undefined */ polygons: PolygonDto[]; /** * Indicates whether the shapes should be returned as a compound */ returnCompound: boolean; } class PolylineDto { constructor(points?: Base.Point3[]); /** * Points points * @default undefined */ points: Base.Point3[]; } class PolylineBaseDto { constructor(polyline?: Base.Polyline3); /** * Polyline * @default undefined */ polyline: Base.Polyline3; } class PolylinesBaseDto { constructor(polylines?: Base.Polyline3[]); /** * Polylines * @default undefined */ polylines: Base.Polyline3[]; } class LineBaseDto { constructor(line?: Base.Line3); /** * Line * @default undefined */ line: Base.Line3; } class LinesBaseDto { constructor(lines?: Base.Line3[]); /** * Lines * @default undefined */ lines: Base.Line3[]; } class SegmentBaseDto { constructor(segment?: Base.Segment3); /** * Segment * @default undefined */ segment: Base.Segment3; } class SegmentsBaseDto { constructor(segments?: Base.Segment3[]); /** * Segments * @default undefined */ segments: Base.Segment3[]; } class TriangleBaseDto { constructor(triangle?: Base.Triangle3); /** * Triangle * @default undefined */ triangle: Base.Triangle3; } class MeshBaseDto { constructor(mesh?: Base.Mesh3); /** * Mesh * @default undefined */ mesh: Base.Mesh3; } class PolylinesDto { constructor(polylines?: PolylineDto[], returnCompound?: boolean); /** * Polylines * @default undefined */ polylines: PolylineDto[]; /** * Indicates whether the shapes should be returned as a compound */ returnCompound: boolean; } class SquareDto { constructor(size?: number, center?: Base.Point3, direction?: Base.Vector3); /** * size of square * @default 1 * @minimum 0 * @maximum Infinity * @step 1 */ size: number; /** * Center of the square * @default [0, 0, 0] */ center: Base.Point3; /** * Direction of the square * @default [0, 1, 0] */ direction: Base.Vector3; } class RectangleDto { constructor(width?: number, length?: number, center?: Base.Point3, direction?: Base.Vector3); /** * width of the rectangle * @default 1 * @minimum 0 * @maximum Infinity * @step 1 */ width: number; /** * Height of the rectangle * @default 2 * @minimum 0 * @maximum Infinity * @step 1 */ length: number; /** * Center of the rectangle * @default [0, 0, 0] */ center: Base.Point3; /**