UNPKG

@polygonjs/polygonjs

Version:

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

34 lines (33 loc) 1.33 kB
"use strict"; import { BufferGeometry, BufferAttribute } from "three"; import { BaseSopOperation } from "../../../../../engine/operations/sop/_Base"; import { ObjectType } from "../../../Constant"; import { cadMaterialPoint } from "../CadConstant"; import { CadLoaderSync } from "../CadLoaderSync"; import { cadShapeClone } from "./CadShapeCommon"; import { objectContentCopyProperties } from "../../../ObjectContent"; export function cadVertexToObject3D(cadObject) { const oc = CadLoaderSync.oc(); const vertex = cadObject.cadGeometry(); const point = oc.BRep_Tool.Pnt(vertex); const geo = new BufferGeometry(); const positions = [point.X(), point.Y(), point.Z()]; geo.setAttribute("position", new BufferAttribute(new Float32Array(positions), 3)); const object = BaseSopOperation.createObject(geo, ObjectType.POINTS, cadMaterialPoint()); objectContentCopyProperties(cadObject, object); return object; } export function cadVertexCreate(oc, t) { const point = new oc.gp_Pnt_3(t.x, t.y, t.z); return _vertexFromPoint(oc, point); } function _vertexFromPoint(oc, point) { const api = new oc.BRepBuilderAPI_MakeVertex(point); const vertex = api.Vertex(); api.delete(); return vertex; } export function cadVertexClone(src) { const oc = CadLoaderSync.oc(); return oc.TopoDS.Vertex_1(cadShapeClone(src)); }