UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

103 lines (102 loc) 3.67 kB
"use strict"; export var CadGeometryType = /* @__PURE__ */ ((CadGeometryType2) => { CadGeometryType2["POINT_2D"] = "CADPoint2D"; CadGeometryType2["CURVE_2D"] = "CADCurve2D"; CadGeometryType2["VERTEX"] = "CADVertex"; CadGeometryType2["EDGE"] = "CADEdge"; CadGeometryType2["WIRE"] = "CADWire"; CadGeometryType2["FACE"] = "CADFace"; CadGeometryType2["SHELL"] = "CADShell"; CadGeometryType2["SOLID"] = "CADSolid"; CadGeometryType2["COMPSOLID"] = "CADCompsolid"; CadGeometryType2["COMPOUND"] = "CADCompound"; return CadGeometryType2; })(CadGeometryType || {}); const CAD_GEOMETRY_TYPES = [ "CADPoint2D" /* POINT_2D */, "CADCurve2D" /* CURVE_2D */, "CADVertex" /* VERTEX */, "CADEdge" /* EDGE */, "CADWire" /* WIRE */, "CADFace" /* FACE */, "CADShell" /* SHELL */, "CADSolid" /* SOLID */, "CADCompsolid" /* COMPSOLID */, "CADCompound" /* COMPOUND */ ]; export const CAD_GEOMETRY_TYPES_SET = new Set(CAD_GEOMETRY_TYPES); export const CAD_GEOMETRY_TYPES_SHAPE = [ "CADVertex" /* VERTEX */, "CADEdge" /* EDGE */, "CADWire" /* WIRE */, "CADFace" /* FACE */, "CADShell" /* SHELL */, "CADSolid" /* SOLID */, "CADCompsolid" /* COMPSOLID */, "CADCompound" /* COMPOUND */ ]; export const CAD_GEOMETRY_TYPES_SET_SHAPE = new Set(CAD_GEOMETRY_TYPES_SHAPE); function _createShapeTypeToCadGeometryTypeMap(oc) { const shapeEnum = oc.TopAbs_ShapeEnum; const map = /* @__PURE__ */ new Map([ [shapeEnum.TopAbs_VERTEX, "CADVertex" /* VERTEX */], [shapeEnum.TopAbs_EDGE, "CADEdge" /* EDGE */], [shapeEnum.TopAbs_WIRE, "CADWire" /* WIRE */], [shapeEnum.TopAbs_FACE, "CADFace" /* FACE */], [shapeEnum.TopAbs_SHELL, "CADShell" /* SHELL */], [shapeEnum.TopAbs_SOLID, "CADSolid" /* SOLID */], [shapeEnum.TopAbs_COMPSOLID, "CADCompsolid" /* COMPSOLID */], [shapeEnum.TopAbs_COMPOUND, "CADCompound" /* COMPOUND */] ]); return map; } function _createCastMapFromCadGeometryTypeMap(oc) { const shapeEnum = oc.TopAbs_ShapeEnum; const map = /* @__PURE__ */ new Map([ [shapeEnum.TopAbs_VERTEX, oc.TopoDS.Vertex_1], [shapeEnum.TopAbs_EDGE, oc.TopoDS.Edge_1], [shapeEnum.TopAbs_WIRE, oc.TopoDS.Wire_1], [shapeEnum.TopAbs_FACE, oc.TopoDS.Face_1], [shapeEnum.TopAbs_SHELL, oc.TopoDS.Shell_1], [shapeEnum.TopAbs_SOLID, oc.TopoDS.Solid_1], [shapeEnum.TopAbs_COMPSOLID, oc.TopoDS.CompSolid_1], [shapeEnum.TopAbs_COMPOUND, oc.TopoDS.Compound_1] ]); return map; } let shapeTypeToCadGeometryTypeMap; let shapeCasterByCadGeometryTypeMap; export function cadGeometryTypeFromShape(oc, shape) { shapeTypeToCadGeometryTypeMap = shapeTypeToCadGeometryTypeMap || _createShapeTypeToCadGeometryTypeMap(oc); return shapeTypeToCadGeometryTypeMap.get(shape.ShapeType()); } export function cadDowncast(oc, shape) { shapeCasterByCadGeometryTypeMap = shapeCasterByCadGeometryTypeMap || _createCastMapFromCadGeometryTypeMap(oc); const caster = shapeCasterByCadGeometryTypeMap.get(shape.ShapeType()); return caster(shape); } export const _createCadNumberHandle = () => ({ current: 0 }); export const _createCadVector3Handle = () => ({ x: _createCadNumberHandle(), y: _createCadNumberHandle(), z: _createCadNumberHandle() }); export const _createCadBox3Handle = () => ({ min: _createCadVector3Handle(), max: _createCadVector3Handle() }); export class CadGC { static withGC(callback) { const deletables = /* @__PURE__ */ new Set(); function r(deletable) { deletables.add(deletable); return deletable; } const result = callback(r); deletables.forEach((deletable) => { deletable.delete(); }); deletables.clear(); return result; } }