UNPKG

@polygonjs/polygonjs

Version:

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

41 lines (40 loc) 1.37 kB
"use strict"; import { BaseSopOperation } from "../../../../../engine/operations/sop/_Base"; import { cadMaterialLine } from "../CadConstant"; import { ObjectType } from "../../../Constant"; import { CadLoaderSync } from "../CadLoaderSync"; import { cadShapeClone } from "./CadShapeCommon"; import { traverseEdges } from "../CadTraverse"; import { cadEdgeToBufferGeometry } from "./CadEdge"; import { objectContentCopyProperties } from "../../../ObjectContent"; export function cadWireToObject3D(cadObject, tesselationParams) { const wire = cadObject.cadGeometry(); const geometries = []; const oc = CadLoaderSync.oc(); traverseEdges(oc, wire, (edge) => { const geometry = cadEdgeToBufferGeometry(edge, tesselationParams); if (geometry) { geometries.push(geometry); } }); return geometries.map((geometry) => { const object = BaseSopOperation.createObject( geometry, ObjectType.LINE_SEGMENTS, cadMaterialLine(tesselationParams.edgesColor) ); objectContentCopyProperties(cadObject, object); return object; }); } export function cadWireClone(src) { const oc = CadLoaderSync.oc(); return oc.TopoDS.Wire_1(cadShapeClone(src)); } export function cadWireFromEdge(oc, edge) { const api = new oc.BRepBuilderAPI_MakeWire_1(); api.Add_1(edge); const wire = api.Wire(); api.delete(); return wire; }