|
|
|
@ -1,6 +1,6 @@
|
|
|
|
|
import { Geom3 } from '@jscad/modeling/src/geometries/types';
|
|
|
|
|
import Flatbush from 'flatbush';
|
|
|
|
|
import { Box3, BoxGeometry, BufferGeometry, ExtrudeGeometry, ExtrudeGeometryOptions, Float32BufferAttribute, FrontSide, Frustum, Geometry, InstancedInterleavedBuffer, InterleavedBufferAttribute, LineSegments, Matrix3, Matrix4, Mesh, Object3D, Line as TLine, UVGenerator, Vector3 } from "three";
|
|
|
|
|
import { Box3, BoxGeometry, BufferGeometry, ExtrudeGeometry, ExtrudeGeometryOptions, Float32BufferAttribute, FrontSide, Frustum, Geometry, Group, InstancedInterleavedBuffer, InterleavedBufferAttribute, LineSegments, Matrix3, Matrix4, Mesh, Object3D, Line as TLine, UVGenerator, Vector3 } from "three";
|
|
|
|
|
import { Line2 } from "three/examples/jsm/lines/Line2";
|
|
|
|
|
import { LineGeometry } from "three/examples/jsm/lines/LineGeometry";
|
|
|
|
|
import { arrayClone, arrayLast, arrayPushArray, arrayRemoveIf, arrayRemoveOnce, arraySortByNumber, arraySum } from "../../Common/ArrayExt";
|
|
|
|
@ -2113,6 +2113,14 @@ export class ExtrudeSolid extends Entity
|
|
|
|
|
new LineSegments(this.EdgeGeometry, ColorMaterial.GetConceptualEdgeMaterial())
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
else if (renderType === RenderType.ModelGroove)
|
|
|
|
|
{
|
|
|
|
|
obj.add(
|
|
|
|
|
// new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(9, FrontSide, true, this.Freeze)),
|
|
|
|
|
new LineSegments(this.EdgeGeometry, ColorMaterial.GetConceptualEdgeMaterial())
|
|
|
|
|
);
|
|
|
|
|
obj.add(this.GetModelGroove());
|
|
|
|
|
}
|
|
|
|
|
else if (renderType === RenderType.Physical)
|
|
|
|
|
{
|
|
|
|
|
let mesh = obj as Mesh;
|
|
|
|
@ -2169,7 +2177,31 @@ export class ExtrudeSolid extends Entity
|
|
|
|
|
mesh.material = this.MeshMaterial;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private GetModelGroove()
|
|
|
|
|
{
|
|
|
|
|
const grooves: ExtrudeSolid[] = [];
|
|
|
|
|
for (const sp of this.__CacheSplitExtrudes ?? [])
|
|
|
|
|
{
|
|
|
|
|
grooves.push(...sp.grooves);
|
|
|
|
|
}
|
|
|
|
|
const group = new Group();
|
|
|
|
|
for (const groove of grooves)
|
|
|
|
|
{
|
|
|
|
|
const grooveClone = groove.Clone();
|
|
|
|
|
grooveClone.UpdateDrawGeometry();
|
|
|
|
|
const mtx = new Matrix4().premultiply(grooveClone.OCSNoClone).premultiply(this.OCSInv);
|
|
|
|
|
|
|
|
|
|
const edgeGeo = grooveClone.EdgeGeometry;
|
|
|
|
|
edgeGeo.applyMatrix4(mtx);
|
|
|
|
|
const line = new LineSegments(edgeGeo, ColorMaterial.GetLineMaterial(1, this.Freeze));
|
|
|
|
|
|
|
|
|
|
const meshGeo = grooveClone.MeshGeometry;
|
|
|
|
|
meshGeo.applyMatrix4(mtx);
|
|
|
|
|
const mesh = new Mesh(meshGeo, ColorMaterial.GetConceptualMaterial(1, FrontSide, true, this.Freeze, 0.6));
|
|
|
|
|
group.add(mesh, line);
|
|
|
|
|
}
|
|
|
|
|
return group;
|
|
|
|
|
}
|
|
|
|
|
UpdateJigMaterial(color = 8)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|