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