@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
41 lines (40 loc) • 1.37 kB
JavaScript
;
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;
}