!2440 功能:造型槽检查

pull/2536/MERGE
黄诗津 9 months ago committed by ChenX
parent 55a5aaf5e6
commit 1ccc846728

@ -22,7 +22,7 @@ import { AppToaster } from "../../UI/Components/Toaster";
import { IsDoor, IsDrawer, IsHandle, IsHinge, IsLattice } from "../HideSelect/HideSelectUtils";
const MOVECOUNT = 150;
const UNOPENRENDERTYPE = [RenderType.Edge, RenderType.PlaceFace, RenderType.BigHoleFace]; //不支持开门动作的视图类型
const UNOPENRENDERTYPE = [RenderType.Edge, RenderType.PlaceFace, RenderType.BigHoleFace, RenderType.ModelGroove]; //不支持开门动作的视图类型
export class Command_OpenCabinet implements Command
{

@ -321,7 +321,7 @@ export class ColorMaterial
}
private static _ConceptualMaterial: Map<string, ShaderMaterial> = new Map();
static GetConceptualMaterial(color: number, side: Side = FrontSide, enableTransparent = false, freeze = false)
static GetConceptualMaterial(color: number, side: Side = FrontSide, enableTransparent = false, freeze = false, opacity?: number)
{
if (freeze) color = 257;
let key = `${color},${side},${enableTransparent ? 1 : 0}`;
@ -336,7 +336,15 @@ export class ColorMaterial
get: () => mtl.uniforms.opacity.value !== 1
});
Object.defineProperty(mtl.uniforms.opacity, "value", {
get: () => freeze ? 0.5 : HostApplicationServices.ConceptualOpacity
get: () =>
{
let conceptualOpacity = HostApplicationServices.ConceptualOpacity;
if (freeze)
conceptualOpacity = 0.5;
else if (opacity)
conceptualOpacity = opacity;
return conceptualOpacity;
}
});
}
this._ConceptualMaterial.set(key, mtl);

@ -293,6 +293,7 @@ export enum CommandNames
DrawTempByImport = "DRAWTEMPBYIMPORT",
CheckEdge = "CHECKEDGE",//封边检查
CheckPlaceFace = "CHECKPLACEFACE",//排版面视觉样式显示
ModelGroove = "MODELGROOVE",//造型槽
VisualStyle_CustomNumber = "VSCUSTOMNUMBER",//自定义编号视觉样式
CustomNumber = "CUSTOMNUMBER",//自定义编号UI
CleanCustomNumber = "CLEANCUSTOMNUMBER",//清除自定义编号

@ -158,7 +158,7 @@ export class CylinderHole extends Hole
{
if (renderType === RenderType.Wireframe)
return new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex));
else if (renderType === RenderType.CustomNumber)
else if (renderType === RenderType.CustomNumber || renderType === RenderType.ModelGroove)
return;//不绘制了
// return new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex, FrontSide, true));
else
@ -182,7 +182,7 @@ export class CylinderHole extends Hole
else
{
let mesh = obj as Mesh;
if (type === RenderType.CustomNumber)
if (type === RenderType.CustomNumber || type === RenderType.ModelGroove)
mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex, FrontSide, true);
else
mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex);

@ -1835,6 +1835,7 @@ export class Board extends ExtrudeSolid
|| renderType === RenderType.BigHoleFace //大孔面检查
|| renderType === RenderType.CustomNumber //自定义编号
|| renderType === RenderType.CustomNumberPrint//自定义编号打印
|| renderType === RenderType.ModelGroove //造型槽
)
{
obj = new Object3D();
@ -1876,7 +1877,6 @@ export class Board extends ExtrudeSolid
obj.add(this.GetBigHoleFace());
}
else if (renderType === RenderType.CustomNumber || renderType === RenderType.CustomNumberPrint)
{
if (renderType === RenderType.CustomNumberPrint)

@ -110,6 +110,7 @@ export abstract class CompositeEntity extends Entity
UpdateDrawObject(renderType: RenderType, obj: Object3D)
{
Object3DRemoveAll(obj);
if (renderType === RenderType.ModelGroove) return;
for (let e of this.Entitys)
{
e.IsEmbedEntity = true;

@ -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)
{

@ -643,6 +643,7 @@ export function registerCommand()
commandMachine.RegisterCommand(CommandNames.CheckPlaceFace, new ChangeRenderType(RenderType.PlaceFace));
commandMachine.RegisterCommand(CommandNames.BigHoleFace, new ChangeRenderType(RenderType.BigHoleFace));
commandMachine.RegisterCommand(CommandNames.VisualStyle_CustomNumber, new ChangeRenderType(RenderType.CustomNumber, 0.2));
commandMachine.RegisterCommand(CommandNames.ModelGroove, new ChangeRenderType(RenderType.ModelGroove, 0.2));
commandMachine.RegisterCommand(CommandNames.BackgroundSwitching, new BackgroundSwitching());
commandMachine.RegisterCommand(CommandNames.Renderer, new CMD_Renderer());

@ -186,7 +186,7 @@ export class UserConfig implements IConfigStore
Init()
{
let type = Number(globalThis.localStorage?.getItem(StoreageKeys.RenderType));
if (type && type !== RenderType.Edge)
if (type && type !== RenderType.Edge && type !== RenderType.ModelGroove)
this._renderType = type;
globalThis.userconfig = this;

@ -28,6 +28,7 @@ export enum RenderType
PlaceFace = 8,//排版面 OpenCabinet.UNOPENRENDERTYPE 该视图下不支持开门动作
BigHoleFace = 81, //大孔面 OpenCabinet.UNOPENRENDERTYPE 该视图下不支持开门动作
CustomNumber = 9,//自定义编号
ModelGroove = 10,//造型槽 OpenCabinet.UNOPENRENDERTYPE 该视图下不支持开门动作
/******************************************** 在视口时的渲染模式 */
/**

@ -108,7 +108,7 @@ export default class AxisMode extends Component
return (
<div className='AxisModeWrapper' style={{ display: userConfig.isOpenAxisSwitch ? "flex" : 'none' }}>
{
this.innerWidth < 920 ?
this.innerWidth < 1040 ?
<div className='SwitchAxisMode'>
<Popover
modifiers={{ arrow: { enabled: false } }}

@ -174,7 +174,7 @@ export class CameraControlBtn extends React.Component<{}, {}>
{
this.RenderControlsMenu()
}
</Popover >
</Popover>
<Popover
isOpen={this.state.isOpenViewMenu === true ? true : undefined}
modifiers={{ arrow: { enabled: false } }}
@ -187,9 +187,9 @@ export class CameraControlBtn extends React.Component<{}, {}>
{
this.RenderViewMenu()
}
</Popover >
</Popover>
{
this.innerWidth < 850 ?
this.innerWidth < 950 ?
<Popover
modifiers={{ arrow: { enabled: false } }}
>
@ -201,7 +201,7 @@ export class CameraControlBtn extends React.Component<{}, {}>
{
this.RenderVisualStylesMenu()
}
</Popover > :
</Popover> :
<>
{VisualStyleData.map(
(data) =>

@ -42,6 +42,10 @@ export const VisualStyleData2: IVisualStyle[] = [
title: "概念(透明)",
cmd: CommandNames.ConceptualTransparent
},
{
title: "造型槽",
cmd: CommandNames.ModelGroove
},
{
title: "板号",
cmd: CommandNames.VisualStyle_CustomNumber

Loading…
Cancel
Save