实现板件纹路

pull/264/MERGE
ChenX 6 years ago
parent 568dd7a5a7
commit c139f8a5f2

@ -1,5 +1,6 @@
import { Matrix4, Mesh, Object3D, Vector3 } from 'three';
import { UpdateDraw } from '../Common/Status';
import { boardUVGenerator, boardUVGenerator2 } from '../Geometry/BoardUVGenerator';
import { Box3Ext } from '../Geometry/Box';
import { equaln, MoveMatrix } from '../Geometry/GeUtils';
import { RenderType } from '../GraphicsSystem/RenderType';
@ -493,6 +494,15 @@ export class Board extends ExtureSolid
{
return this;
}
get UCGenerator()
{
if (this.BoardProcessOption.lines === LinesType.Positive)
return boardUVGenerator;
else
return boardUVGenerator2;
}
/**
* ,
*

@ -39,6 +39,7 @@ export class Entity extends CADObject
set Material(materialId: ObjectId)
{
this.WriteAllObjectRecord();
this.materialId = materialId;
this.Update();
}
@ -426,7 +427,7 @@ export class Entity extends CADObject
file.Write(3);
super.WriteFile(file);
file.Write(this.m_Color);
file.WriteObjectId(this.materialId);
file.WriteHardObjectId(this.materialId);
file.Write(this.m_Matrix.toArray());
}
//局部撤销

@ -2,7 +2,7 @@ import { Box3, ExtrudeGeometry, ExtrudeGeometryOptions, Geometry, Matrix3, Matri
import { arrayClone, arrayRemoveIf, arraySortByNumber } from "../Common/ArrayExt";
import { Status, UpdateDraw } from "../Common/Status";
import { ObjectSnapMode } from "../Editor/ObjectSnapMode";
import { BoardUVGenerator } from "../Geometry/BoardUVGenerator";
import { boardUVGenerator } from "../Geometry/BoardUVGenerator";
import { BSPGroupParse } from "../Geometry/BSPGroupParse";
import { cZeroVec, equaln, equalv3, isParallelTo, MoveMatrix, isIntersect } from "../Geometry/GeUtils";
import { CSG } from "../Geometry/ThreeCSG";
@ -961,13 +961,17 @@ export class ExtureSolid extends Entity
{
return new Object3D().add(this.GetObject3DByRenderType(renderType));
}
get UCGenerator()
{
return boardUVGenerator;
}
GeneralGeometry()
{
let extrudeSettings: ExtrudeGeometryOptions = {
steps: 1,
bevelEnabled: false,
depth: this.thickness,
UVGenerator: new BoardUVGenerator(),
UVGenerator: this.UCGenerator,
};
let geo = new ExtrudeGeometry(this.ContourCurve.Shape, extrudeSettings);
geo.applyMatrix(this.contourCurve.OCS);

@ -1,7 +1,6 @@
import { ExtrudeBufferGeometry, Matrix3, UVGenerator, Vector2 } from "three";
import { ExtrudeBufferGeometry, UVGenerator, Vector2 } from "three";
export class BoardUVGenerator implements UVGenerator
class BoardUVGenerator implements UVGenerator
{
generateTopUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number)
{
@ -55,3 +54,25 @@ export class BoardUVGenerator implements UVGenerator
return pts;
}
}
class BoardUVGenerator2 extends BoardUVGenerator
{
generateTopUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number)
{
var a_x = vertices[indexA * 3];
var a_y = vertices[indexA * 3 + 1];
var b_x = vertices[indexB * 3];
var b_y = vertices[indexB * 3 + 1];
var c_x = vertices[indexC * 3];
var c_y = vertices[indexC * 3 + 1];
return [
new Vector2(-a_y, a_x),
new Vector2(-b_y, b_x),
new Vector2(-c_y, c_x)
];
}
}
export let boardUVGenerator = new BoardUVGenerator();
export let boardUVGenerator2 = new BoardUVGenerator2();

Loading…
Cancel
Save