UNPKG

@polygonjs/polygonjs

Version:

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

51 lines (50 loc) 1.54 kB
"use strict"; import { CadGeometryType } from "../CadCommon"; import { CadLoaderSync } from "../CadLoaderSync"; import { pushOnArrayAtEntry } from "../../../../MapUtils"; import { CadObject } from "../CadObject"; const objectsByType = /* @__PURE__ */ new Map(); export function cadMergeCompact(inputObjects) { objectsByType.clear(); for (const inputObject of inputObjects) { pushOnArrayAtEntry(objectsByType, inputObject.type, inputObject); } const oc = CadLoaderSync.oc(); const newObjects = []; objectsByType.forEach((objects, type) => { switch (type) { case CadGeometryType.EDGE: { return cadMergeCompactEdges(oc, objects, newObjects); } case CadGeometryType.WIRE: { return cadMergeCompactWires(oc, objects, newObjects); } default: { for (const object of objects) { newObjects.push(object); } } } }); return newObjects; } export function cadMergeCompactEdges(oc, objects, newObjects) { const api = new oc.BRepBuilderAPI_MakeWire_1(); for (const object of objects) { api.Add_1(object.cadGeometry()); } const wire = api.Wire(); api.delete(); newObjects.push(new CadObject(wire, CadGeometryType.WIRE)); return; } export function cadMergeCompactWires(oc, objects, newObjects) { const api = new oc.BRepBuilderAPI_MakeWire_1(); for (const object of objects) { api.Add_2(object.cadGeometry()); } const wire = api.Wire(); api.delete(); newObjects.push(new CadObject(wire, CadGeometryType.WIRE)); return; }