init5
22
app/supreium_viewer/package/Readme.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# poseidon-engine-core
|
||||
|
||||
This is the core of rendering engine. shared by all rendering project.
|
||||
|
||||
use can use submodule to reference this project,
|
||||
or use package created by poseidon-engine-core-wrap project.
|
||||
|
||||
## Breaking Changes
|
||||
|
||||
1. 2022-12-29. Avoid export classes as default export, user need to change the way of import.
|
||||
2. 2022-12-29. to run in node, user need to import 'canvas-gl' and invoke init() function to register the font for canvas before create NodeWebGLRenderer.
|
||||
3. 2022-12-20. import the classes from 'poseidon-engine-core'
|
||||
4. 2022-12-20. rename file MeshLineExMaterial, rename MeLineColorMapMaterialParameters to LineColorMapMaterialParameters
|
||||
5. 2023-1-28. move after-projection-matrix from materials into cameras. do not need to update shaders any more.
|
||||
6. 2023-2-9. support color mapped materials. use ColorMapExMaterials instead. TODO: support filters later.
|
||||
|
||||
## Version History
|
||||
|
||||
### v0.2.0
|
||||
|
||||
1. 修复ScreenHelper.focusCamera连续多次调用的bug
|
||||
2. 修改Legend拼写错误
|
||||
BIN
app/supreium_viewer/package/dist/assets/ball.png
vendored
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
app/supreium_viewer/package/dist/assets/cross.png
vendored
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
app/supreium_viewer/package/dist/assets/leftTop.png
vendored
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
app/supreium_viewer/package/dist/assets/rightTop.png
vendored
Normal file
|
After Width: | Height: | Size: 16 KiB |
1
app/supreium_viewer/package/dist/assets/toDown.svg
vendored
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1656572456155" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="47431" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M141.84448 228.97664a25.6 25.6 0 0 0-8.6528 35.15392l330.61376 546.51392a56.32 56.32 0 0 0 19.03616 19.03616c26.61376 16.1024 61.24032 7.5776 77.34272-19.03616l330.61376-546.51392A25.6 25.6 0 0 0 868.8896 225.28H155.09504a25.6 25.6 0 0 0-13.25056 3.69664zM868.8896 174.08c42.4192 0 76.8 34.38592 76.8 76.8a76.8 76.8 0 0 1-11.0848 39.75168l-330.61376 546.51392c-30.73536 50.81088-96.83968 67.08224-147.65056 36.34688a107.52 107.52 0 0 1-36.34176-36.34688L89.38496 290.6368c-21.95456-36.3008-10.33216-83.51232 25.9584-105.472A76.8 76.8 0 0 1 155.09504 174.08h713.79456z" fill="#bfbfbf" p-id="47432"></path></svg>
|
||||
|
After Width: | Height: | Size: 988 B |
1
app/supreium_viewer/package/dist/assets/toLeft.svg
vendored
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1656572420938" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="46589" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M795.02336 141.85472a25.6 25.6 0 0 0-35.15392-8.6528L213.35552 463.81568a56.32 56.32 0 0 0-19.03616 19.03616c-16.1024 26.61376-7.5776 61.24032 19.03616 77.34272l546.51392 330.60864a25.6 25.6 0 0 0 38.85056-21.90336V155.10528a25.6 25.6 0 0 0-3.69664-13.25056zM849.92 868.89984c0 42.4192-34.38592 76.8-76.8 76.8a76.8 76.8 0 0 1-39.75168-11.0848L186.8544 604.00128c-50.81088-30.73536-67.08224-96.8448-36.34688-147.65056a107.52 107.52 0 0 1 36.34688-36.34176l546.5088-330.61376c36.3008-21.95456 83.51232-10.33216 105.472 25.9584A76.8 76.8 0 0 1 849.92 155.10528v713.79456z" fill="#bfbfbf" p-id="46590"></path></svg>
|
||||
|
After Width: | Height: | Size: 989 B |
1
app/supreium_viewer/package/dist/assets/toRight.svg
vendored
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1656572433880" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="46874" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M228.97664 141.85472A25.6 25.6 0 0 0 225.28 155.10528v713.79456a25.6 25.6 0 0 0 38.85056 21.90336l546.51392-330.60864c26.61376-16.1024 35.13856-50.72896 19.03616-77.34272a56.32 56.32 0 0 0-19.03616-19.03616L264.13056 133.20192a25.6 25.6 0 0 0-35.15392 8.6528zM174.08 868.89984V155.10528a76.8 76.8 0 0 1 11.08992-39.75168c21.95456-36.29056 69.1712-47.91296 105.46176-25.9584l546.51392 330.61376a107.52 107.52 0 0 1 36.34688 36.34176c30.73536 50.80576 14.464 116.9152-36.34688 147.65056l-546.5088 330.61376A76.8 76.8 0 0 1 250.88 945.69984c-42.41408 0-76.8-34.3808-76.8-76.8z" fill="#bfbfbf" p-id="46875"></path></svg>
|
||||
|
After Width: | Height: | Size: 994 B |
1
app/supreium_viewer/package/dist/assets/toTop.svg
vendored
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1656572448124" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="47179" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M882.12992 795.01824a25.6 25.6 0 0 0 8.6528-35.15392L560.16896 213.34528a56.32 56.32 0 0 0-19.03616-19.03616c-26.61376-16.09728-61.2352-7.5776-77.3376 19.03616L133.18144 759.86432a25.6 25.6 0 0 0 21.90336 38.85056h713.79456a25.6 25.6 0 0 0 13.25056-3.69664zM155.0848 849.91488c-42.41408 0-76.8-34.38592-76.8-76.8a76.8 76.8 0 0 1 11.08992-39.75168L419.98848 186.84416c30.73536-50.80576 96.83968-67.07712 147.64544-36.34176a107.52 107.52 0 0 1 36.34688 36.34176l330.61376 546.51904c21.95456 36.29056 10.32704 83.5072-25.9584 105.46176a76.8 76.8 0 0 1-39.7568 11.08992H155.0848z" fill="#bfbfbf" p-id="47180"></path></svg>
|
||||
|
After Width: | Height: | Size: 996 B |
143
app/supreium_viewer/package/dist/browser.mjs
vendored
Normal file
143
app/supreium_viewer/package/dist/index.mjs
vendored
Normal file
1
app/supreium_viewer/package/dist/types/index.d.ts
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export * from './src';
|
||||
16
app/supreium_viewer/package/dist/types/src/cad/brep/BRepAssembly.d.ts
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
import { BRepBody, IBRepCompObj } from './BRepBody';
|
||||
export interface IAssemblyProps {
|
||||
name: string;
|
||||
}
|
||||
export interface IAssembly {
|
||||
subAssemblies: IAssembly[];
|
||||
bodies: BRepBody[];
|
||||
props?: IAssemblyProps;
|
||||
}
|
||||
export declare class BRepAssembly implements IAssembly {
|
||||
readonly subAssemblies: IAssembly[];
|
||||
readonly bodies: BRepBody[];
|
||||
props?: IAssemblyProps;
|
||||
name(): string | undefined;
|
||||
static fromCompound(comObj: IBRepCompObj): BRepAssembly | null;
|
||||
}
|
||||
127
app/supreium_viewer/package/dist/types/src/cad/brep/BRepBody.d.ts
vendored
Normal file
@@ -0,0 +1,127 @@
|
||||
import { SupBox } from '../types';
|
||||
import { BRepEdge } from './BRepEdge';
|
||||
import { BRepFace } from './BRepFace';
|
||||
import { BRepObject, IBRepProps } from './BRepObject';
|
||||
import { BRepShell } from './BRepShell';
|
||||
import { BRepSolid } from './BRepSolid';
|
||||
import { BodyType, ShapeType } from './BRepType';
|
||||
import { BRepVertex } from './BRepVertex';
|
||||
import { BRepWire } from './BRepWire';
|
||||
/**
|
||||
* @brief BRep body基类
|
||||
*
|
||||
*/
|
||||
export declare abstract class BRepBody {
|
||||
/**
|
||||
* @brief body类型
|
||||
*
|
||||
* @return
|
||||
* -<em>body 类型</em>
|
||||
*/
|
||||
abstract bodyType(): BodyType;
|
||||
/**
|
||||
* @brief 转换为特定body类型
|
||||
* @param
|
||||
*
|
||||
* @return
|
||||
* -<em>相应类型body</em>
|
||||
*/
|
||||
toSolid(): BRepSolidBody;
|
||||
toShell(): BRepShellBody;
|
||||
toWire(): BRepWireBody;
|
||||
toAcorn(): BRepAcornBody;
|
||||
toCompound(): BRepCompoundBody;
|
||||
findVertex(name: string | string[]): BRepVertex | undefined;
|
||||
findEdge(name: string | string[]): BRepEdge | undefined;
|
||||
findFace(name: string | string[]): BRepFace | undefined;
|
||||
findWire(name: string | string[]): BRepWire | undefined;
|
||||
findShell(name: string | string[]): BRepShell | undefined;
|
||||
findSolid(name: string | string[]): BRepSolid | undefined;
|
||||
findBRepObject(name: string | string[]): BRepObject | undefined;
|
||||
abstract bndBox(): SupBox;
|
||||
protected static calcuBox(obj: BRepObject): SupBox;
|
||||
}
|
||||
/**
|
||||
* @brief 实体类型body
|
||||
*
|
||||
*/
|
||||
export declare class BRepSolidBody extends BRepBody {
|
||||
readonly solid: BRepSolid;
|
||||
constructor(solid: BRepSolid);
|
||||
bodyType(): BodyType;
|
||||
toSolid(): BRepSolidBody;
|
||||
findVertex(name: string | string[]): BRepVertex | undefined;
|
||||
findEdge(name: string | string[]): BRepEdge | undefined;
|
||||
findFace(name: string | string[]): BRepFace | undefined;
|
||||
findSolid(name: string | string[]): BRepSolid | undefined;
|
||||
bndBox(): SupBox;
|
||||
}
|
||||
/**
|
||||
* @brief 壳类型body
|
||||
*
|
||||
*/
|
||||
export declare class BRepShellBody extends BRepBody {
|
||||
readonly shell: BRepShell;
|
||||
constructor(shell: BRepShell);
|
||||
bodyType(): BodyType;
|
||||
toShell(): BRepShellBody;
|
||||
findVertex(name: string | string[]): BRepVertex | undefined;
|
||||
findEdge(name: string | string[]): BRepEdge | undefined;
|
||||
findFace(name: string | string[]): BRepFace | undefined;
|
||||
findShell(name: string | string[]): BRepShell | undefined;
|
||||
bndBox(): SupBox;
|
||||
}
|
||||
/**
|
||||
* @brief wire 类型body
|
||||
*
|
||||
*/
|
||||
export declare class BRepWireBody extends BRepBody {
|
||||
readonly wire: BRepWire;
|
||||
constructor(wire: BRepWire);
|
||||
toWire(): BRepWireBody;
|
||||
bodyType(): BodyType;
|
||||
findVertex(name: string | string[]): BRepVertex | undefined;
|
||||
findEdge(name: string | string[]): BRepEdge | undefined;
|
||||
findWire(name: string | string[]): BRepWire | undefined;
|
||||
bndBox(): SupBox;
|
||||
}
|
||||
/**
|
||||
* @brief acorn类型body
|
||||
*
|
||||
*/
|
||||
export declare class BRepAcornBody extends BRepBody {
|
||||
readonly point: BRepVertex;
|
||||
constructor(point: BRepVertex);
|
||||
bodyType(): BodyType;
|
||||
toAcorn(): BRepAcornBody;
|
||||
findVertex(name: string | string[]): BRepVertex | undefined;
|
||||
bndBox(): SupBox;
|
||||
}
|
||||
/**
|
||||
* @brief compound类型body
|
||||
*
|
||||
*/
|
||||
export declare class BRepCompoundBody extends BRepBody {
|
||||
readonly solids: BRepSolid[];
|
||||
readonly shells: BRepShell[];
|
||||
readonly wires: BRepWire[];
|
||||
readonly acorns: BRepVertex[];
|
||||
bodyType(): BodyType;
|
||||
toCompound(): BRepCompoundBody;
|
||||
addSubShape(obj: IBRepObj): boolean;
|
||||
findVertex(name: string | string[]): BRepVertex | undefined;
|
||||
findEdge(name: string | string[]): BRepEdge | undefined;
|
||||
findFace(name: string | string[]): BRepFace | undefined;
|
||||
findSolid(name: string | string[]): BRepSolid | undefined;
|
||||
findShell(name: string | string[]): BRepShell | undefined;
|
||||
findWire(name: string | string[]): BRepWire | undefined;
|
||||
bndBox(): SupBox;
|
||||
}
|
||||
export interface IBRepObj {
|
||||
type: ShapeType;
|
||||
props?: IBRepProps;
|
||||
}
|
||||
export interface IBRepCompObj extends IBRepObj {
|
||||
subShapes: IBRepObj[];
|
||||
}
|
||||
export declare const createBRepBody: (obj: IBRepObj) => BRepBody | null;
|
||||
20
app/supreium_viewer/package/dist/types/src/cad/brep/BRepEdge.d.ts
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
import { CurveType } from '../geom/CurveType';
|
||||
import { Polygon } from '../geom/Polygon';
|
||||
import { BRepObject } from './BRepObject';
|
||||
import { ShapeType } from './BRepType';
|
||||
import { BRepVertex } from './BRepVertex';
|
||||
/**
|
||||
* @brief BRep边对象
|
||||
*
|
||||
*/
|
||||
export declare class BRepEdge extends BRepObject {
|
||||
readonly geomType: CurveType;
|
||||
readonly polygon: Polygon;
|
||||
readonly start: BRepVertex;
|
||||
readonly end: BRepVertex;
|
||||
constructor(obj: any, parent: BRepObject);
|
||||
isGeom(): boolean;
|
||||
getAllEdges(): BRepEdge[];
|
||||
getAllVertices(): BRepVertex[];
|
||||
shapeType(): ShapeType;
|
||||
}
|
||||
23
app/supreium_viewer/package/dist/types/src/cad/brep/BRepFace.d.ts
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
import { SurfaceType } from '../geom/SurfaceType';
|
||||
import { Triangulation } from '../geom/Triangulation';
|
||||
import { BRepEdge } from './BRepEdge';
|
||||
import { BRepLoop } from './BRepLoop';
|
||||
import { BRepObject } from './BRepObject';
|
||||
import { ShapeType } from './BRepType';
|
||||
import { BRepVertex } from './BRepVertex';
|
||||
/**
|
||||
* @brief 边界面类型
|
||||
*
|
||||
*/
|
||||
export declare class BRepFace extends BRepObject {
|
||||
readonly geomType: SurfaceType;
|
||||
readonly triangulation: Triangulation;
|
||||
readonly loops: BRepLoop[];
|
||||
constructor(obj: any, parent: BRepObject);
|
||||
hasInnerLoop(): boolean;
|
||||
isGeom(): boolean;
|
||||
getAllFaces(): BRepFace[];
|
||||
getAllEdges(): BRepEdge[];
|
||||
getAllVertices(): BRepVertex[];
|
||||
shapeType(): ShapeType;
|
||||
}
|
||||
17
app/supreium_viewer/package/dist/types/src/cad/brep/BRepHalfEdge.d.ts
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
import { BRepEdge } from './BRepEdge';
|
||||
import { BRepObject } from './BRepObject';
|
||||
import { ShapeType } from './BRepType';
|
||||
import { BRepVertex } from './BRepVertex';
|
||||
/**
|
||||
* @brief 半边对象
|
||||
*
|
||||
*/
|
||||
export declare class BRepHalfEdge extends BRepObject {
|
||||
readonly edge: BRepEdge;
|
||||
readonly reversed: boolean;
|
||||
constructor(parent: BRepObject, obj: any);
|
||||
shapeType(): ShapeType;
|
||||
isGeom(): boolean;
|
||||
getAllEdges(): BRepEdge[];
|
||||
getAllVertices(): BRepVertex[];
|
||||
}
|
||||
18
app/supreium_viewer/package/dist/types/src/cad/brep/BRepLoop.d.ts
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
import { BRepEdge } from './BRepEdge';
|
||||
import { BRepHalfEdge } from './BRepHalfEdge';
|
||||
import { BRepObject } from './BRepObject';
|
||||
import { ShapeType } from './BRepType';
|
||||
import { BRepVertex } from './BRepVertex';
|
||||
/**
|
||||
* @brief BRep环对象,用于限定Face的边界
|
||||
*
|
||||
*/
|
||||
export declare class BRepLoop extends BRepObject {
|
||||
readonly halfEdges: BRepHalfEdge[];
|
||||
readonly isOut: boolean;
|
||||
constructor(parent: BRepObject | null, obj: any);
|
||||
shapeType(): ShapeType;
|
||||
isGeom(): boolean;
|
||||
getAllEdges(): BRepEdge[];
|
||||
getAllVertices(): BRepVertex[];
|
||||
}
|
||||
29
app/supreium_viewer/package/dist/types/src/cad/brep/BRepObject.d.ts
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
import { BRepBody } from './BRepBody';
|
||||
import { BRepEdge } from './BRepEdge';
|
||||
import { BRepFace } from './BRepFace';
|
||||
import { ShapeType } from './BRepType';
|
||||
import { BRepVertex } from './BRepVertex';
|
||||
export interface IBRepProps {
|
||||
name: string | string[];
|
||||
color?: number;
|
||||
}
|
||||
/**
|
||||
* @brief BRep对象接口
|
||||
*
|
||||
*/
|
||||
export declare abstract class BRepObject {
|
||||
parent: BRepObject | null;
|
||||
props?: IBRepProps;
|
||||
constructor(parent: BRepObject | null, obj: any);
|
||||
name(): string | string[] | undefined;
|
||||
abstract shapeType(): ShapeType;
|
||||
abstract isGeom(): boolean;
|
||||
findEdge(_name: string | string[]): BRepEdge | undefined;
|
||||
findFace(_name: string | string[]): BRepFace | undefined;
|
||||
findVertex(_name: string | string[]): BRepVertex | undefined;
|
||||
getAllFaces(): BRepFace[];
|
||||
getAllEdges(): BRepEdge[];
|
||||
getAllVertices(): BRepVertex[];
|
||||
static findBRep(name: string | string[], array: BRepObject[]): BRepObject | undefined;
|
||||
body(): BRepBody;
|
||||
}
|
||||
27
app/supreium_viewer/package/dist/types/src/cad/brep/BRepShell.d.ts
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
import { BRepBody } from './BRepBody';
|
||||
import { BRepEdge } from './BRepEdge';
|
||||
import { BRepFace } from './BRepFace';
|
||||
import { BRepObject } from './BRepObject';
|
||||
import { ShapeType } from './BRepType';
|
||||
import { BRepVertex } from './BRepVertex';
|
||||
/**
|
||||
* @brief BRep壳对象,壳对象包含面、边和顶点
|
||||
*
|
||||
*/
|
||||
export declare class BRepShell extends BRepObject {
|
||||
readonly faces: BRepFace[];
|
||||
readonly edges: BRepEdge[];
|
||||
readonly vertices: BRepVertex[];
|
||||
private wrappedBody;
|
||||
constructor(obj: any, parent?: BRepObject | null);
|
||||
findVertex(name: string | string[]): BRepVertex | undefined;
|
||||
findEdge(name: string | string[]): BRepEdge | undefined;
|
||||
findFace(name: string | string[]): BRepFace | undefined;
|
||||
shapeType(): ShapeType;
|
||||
isGeom(): boolean;
|
||||
getAllFaces(): BRepFace[];
|
||||
getAllEdges(): BRepEdge[];
|
||||
getAllVertices(): BRepVertex[];
|
||||
body(): BRepBody;
|
||||
setBody(body: BRepBody): void;
|
||||
}
|
||||
26
app/supreium_viewer/package/dist/types/src/cad/brep/BRepSolid.d.ts
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
import { BRepBody } from './BRepBody';
|
||||
import { BRepEdge } from './BRepEdge';
|
||||
import { BRepFace } from './BRepFace';
|
||||
import { BRepObject } from './BRepObject';
|
||||
import { BRepShell } from './BRepShell';
|
||||
import { ShapeType } from './BRepType';
|
||||
import { BRepVertex } from './BRepVertex';
|
||||
/**
|
||||
* @brief BRep实体对象
|
||||
*
|
||||
*/
|
||||
export declare class BRepSolid extends BRepObject {
|
||||
readonly shells: BRepShell[];
|
||||
private wrappedBody;
|
||||
constructor(obj: any);
|
||||
shapeType(): ShapeType;
|
||||
isGeom(): boolean;
|
||||
findVertex(name: string | string[]): BRepVertex | undefined;
|
||||
findEdge(name: string | string[]): BRepEdge | undefined;
|
||||
findFace(name: string | string[]): BRepFace | undefined;
|
||||
getAllFaces(): BRepFace[];
|
||||
getAllEdges(): BRepEdge[];
|
||||
getAllVertices(): BRepVertex[];
|
||||
body(): BRepBody;
|
||||
setBody(body: BRepBody): void;
|
||||
}
|
||||
27
app/supreium_viewer/package/dist/types/src/cad/brep/BRepType.d.ts
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* @brief BRep对象类型
|
||||
* @note 这里定义的BRep对象主要用于显示,这里采用Parasolid/ACIS的拓扑表示方式
|
||||
*
|
||||
*/
|
||||
export declare enum ShapeType {
|
||||
COMPOUND = 0,//! 复合类型
|
||||
SOLID = 2,//! 实体类型
|
||||
SHELL = 3,//! 壳类型
|
||||
FACE = 4,//! 面类型
|
||||
WIRE = 5,//! 线框类型
|
||||
EDGE = 6,//! 边类型
|
||||
VERTEX = 7,//! 顶点类型
|
||||
LOOP = 9,//! 环类型,与a/p对应
|
||||
HALFEDGE = 10
|
||||
}
|
||||
/**
|
||||
* @brief BRep body类型,使用brep对象时应该以此为单位进行使用
|
||||
*
|
||||
*/
|
||||
export declare enum BodyType {
|
||||
BT_SolidBody = 0,//! 实体对象
|
||||
BT_ShellBody = 1,//! 壳对象
|
||||
BT_WireBody = 2,//! 线框对象
|
||||
BT_AcornBody = 3,//! 点对象
|
||||
BT_CompoundBody = 4
|
||||
}
|
||||
18
app/supreium_viewer/package/dist/types/src/cad/brep/BRepVertex.d.ts
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
import { Point } from '../geom/Point';
|
||||
import { BRepBody } from './BRepBody';
|
||||
import { BRepObject } from './BRepObject';
|
||||
import { ShapeType } from './BRepType';
|
||||
/**
|
||||
* @brief BRep顶点对象
|
||||
*
|
||||
*/
|
||||
export declare class BRepVertex extends BRepObject {
|
||||
readonly point: Point;
|
||||
private wrappedBody;
|
||||
constructor(obj: any, parent?: BRepObject | null);
|
||||
isGeom(): boolean;
|
||||
shapeType(): ShapeType;
|
||||
getAllVertices(): BRepVertex[];
|
||||
body(): BRepBody;
|
||||
setBody(body: BRepBody): void;
|
||||
}
|
||||
24
app/supreium_viewer/package/dist/types/src/cad/brep/BRepWire.d.ts
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
import { BRepBody } from './BRepBody';
|
||||
import { BRepEdge } from './BRepEdge';
|
||||
import { BRepObject } from './BRepObject';
|
||||
import { ShapeType } from './BRepType';
|
||||
import { BRepVertex } from './BRepVertex';
|
||||
/**
|
||||
* @brief BRep环对象
|
||||
*
|
||||
*/
|
||||
export declare class BRepWire extends BRepObject {
|
||||
readonly edges: BRepEdge[];
|
||||
readonly vertices: BRepVertex[];
|
||||
private wrappedBody;
|
||||
constructor();
|
||||
constructor(obj: any);
|
||||
findVertex(name: string | string[]): BRepVertex | undefined;
|
||||
findEdge(name: string | string[]): BRepEdge | undefined;
|
||||
isGeom(): boolean;
|
||||
shapeType(): ShapeType;
|
||||
getAllEdges(): BRepEdge[];
|
||||
getAllVertices(): BRepVertex[];
|
||||
body(): BRepBody;
|
||||
setBody(body: BRepBody): void;
|
||||
}
|
||||
12
app/supreium_viewer/package/dist/types/src/cad/brep/index.d.ts
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
export * from './BRepBody';
|
||||
export * from './BRepEdge';
|
||||
export * from './BRepFace';
|
||||
export * from './BRepHalfEdge';
|
||||
export * from './BRepLoop';
|
||||
export * from './BRepObject';
|
||||
export * from './BRepShell';
|
||||
export * from './BRepSolid';
|
||||
export * from './BRepType';
|
||||
export * from './BRepVertex';
|
||||
export * from './BRepWire';
|
||||
export * from './BRepAssembly';
|
||||
43
app/supreium_viewer/package/dist/types/src/cad/geom/AABB/AABB.d.ts
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
import { Vector3, Vector2 } from 'three';
|
||||
export declare class AABB {
|
||||
readonly lowPoint: Vector3 | Vector2;
|
||||
readonly highPoint: Vector3 | Vector2;
|
||||
/**
|
||||
* @remarks
|
||||
* If the min is higher than the max, the bounding box calculations will break
|
||||
*
|
||||
* @param minX the minimum value in the X axis
|
||||
* @param minY the minimum value in the Y axis
|
||||
* @param minZ the minimum value in the Z axis
|
||||
* @param maxX the maximum value in the X axis
|
||||
* @param maxY the maximum value in the Y axis
|
||||
* @param maxZ the maximum value in the Z axis
|
||||
*/
|
||||
constructor(minX: number, minY: number, minZ: number | null, maxX: number, maxY: number, maxZ: number | null);
|
||||
/**
|
||||
* Merges the two bounding boxes to create a larger one containing the two
|
||||
*
|
||||
* @param other - The other bounding box to use for merging
|
||||
* @returns The new bounding box containing both bounding boxes
|
||||
*/
|
||||
merge(other: AABB): AABB;
|
||||
/**
|
||||
* Check if the other bounding box is overlapping with this one
|
||||
*
|
||||
* @param other - The bounding box to check overlap against
|
||||
* @returns `true` if the other bounding box is colling, `false` otherwise
|
||||
*/
|
||||
overlaps(other: AABB): boolean;
|
||||
/**
|
||||
* Check if the point is contained within the bounding box
|
||||
*
|
||||
* @param point - The point to check
|
||||
* @returns `true` if the point is inside the bounding box, `false` otherwise
|
||||
*/
|
||||
containsPoint(point: Vector3 | Vector2): boolean;
|
||||
get is3D(): boolean;
|
||||
get width(): number;
|
||||
get height(): number;
|
||||
get depth(): number;
|
||||
get space(): number;
|
||||
}
|
||||
38
app/supreium_viewer/package/dist/types/src/cad/geom/AABB/AABBNode.d.ts
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
import { IAABBShape } from './IAABBShape';
|
||||
import { AABB } from './AABB';
|
||||
/**
|
||||
* Axis Aligned Bouding Box Node
|
||||
*
|
||||
* @remark
|
||||
* The bounding box on this nodes either fully contains the shape or the two child nodes.
|
||||
*/
|
||||
interface IAABBNode {
|
||||
Aabb: AABB;
|
||||
Shape?: IAABBShape;
|
||||
ParentNode?: IAABBNode;
|
||||
LeftNode?: IAABBNode;
|
||||
RightNode?: IAABBNode;
|
||||
readonly IsLeaf: boolean;
|
||||
}
|
||||
export declare class AABBNode implements IAABBNode {
|
||||
Aabb: AABB;
|
||||
Shape?: IAABBShape;
|
||||
ParentNode?: IAABBNode;
|
||||
LeftNode?: IAABBNode;
|
||||
RightNode?: IAABBNode;
|
||||
/**
|
||||
* @param aabb - A bounding box containing the shape or the two child nodes
|
||||
* @param shape - A reference to a shape implementation of IAABBShape
|
||||
* @param parentNode - The node parenting this node
|
||||
* @param leftNode - The first child node
|
||||
* @param rightNode - The second child node
|
||||
*/
|
||||
constructor(Aabb: AABB, shape?: IAABBShape, parentNode?: IAABBNode, leftNode?: IAABBNode, rightNode?: IAABBNode);
|
||||
/**
|
||||
* @remark
|
||||
* The node is considered a leaf when is has no reference to any child nodes.
|
||||
* Only leaf nodes should contain shapes
|
||||
*/
|
||||
get IsLeaf(): boolean;
|
||||
}
|
||||
export {};
|
||||
61
app/supreium_viewer/package/dist/types/src/cad/geom/AABB/AABBTree.d.ts
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
import { Ray, Vector3, Vector2 } from 'three';
|
||||
import { IAABBShape } from './IAABBShape';
|
||||
import { AABBNode } from './AABBNode';
|
||||
/**
|
||||
* Axis Aligned Bounding Box Tree
|
||||
*/
|
||||
export declare class AABBTree {
|
||||
private rootNode?;
|
||||
private shapeToNodeMap;
|
||||
constructor();
|
||||
/**
|
||||
* Adds a new shape to the tree.
|
||||
* @param shape The shape to add to the tree (Must be an implementation of IAABBShape interface)
|
||||
*/
|
||||
addShape(shape: IAABBShape): void;
|
||||
/**
|
||||
* Removes the shape and balances the tree
|
||||
* @remarks The method will gracefully exit if the shape doesn't exist in the tree
|
||||
* @param shape - The shape to remove from the tree
|
||||
*/
|
||||
removeShape(shape: IAABBShape): void;
|
||||
/**
|
||||
* Finds all the shape overlapping with the point
|
||||
* @remarks if the tree is empty this function will always return an empty array
|
||||
* @param shape - The shape to check overlaps against
|
||||
* @returns An array containing all the shape overlapping with the point
|
||||
*/
|
||||
getShapesOverlappingWith(point: Vector3 | Vector2): IAABBShape[];
|
||||
/**
|
||||
* Returns all the node in the tree
|
||||
*
|
||||
* @remarks
|
||||
* The nodes that serves as parent containers are also returned. Do not expect every node to contain a shape
|
||||
*
|
||||
* @returns An array containing all the nodes the tree contains
|
||||
*/
|
||||
getAllNodes(): AABBNode[];
|
||||
/**
|
||||
* Iterates recursivly over the entire three and all the node to the array
|
||||
*
|
||||
* @param node - The node to iterate over
|
||||
* @param array - Reference to the array that will contain all the nodes in the tree
|
||||
*/
|
||||
private nodeIterator;
|
||||
/**
|
||||
* Remove a node from the tree and balances the tree if needed
|
||||
*
|
||||
* @param node - The node to remove from the tree
|
||||
*/
|
||||
private removeNode;
|
||||
/**
|
||||
* @remarks
|
||||
* When the parent node intersects the ray, the child node is found separately.
|
||||
* If a Boundbox for a leaf node intersects a ray, the leaf node is returned
|
||||
*
|
||||
* @notion two dimensional ray intersection is not achieved
|
||||
* @param ray A ray type from threejs
|
||||
* @returns All shapes that intersect the Ray
|
||||
*/
|
||||
ray2Tree(ray: Ray): IAABBShape[] | null;
|
||||
}
|
||||
7
app/supreium_viewer/package/dist/types/src/cad/geom/AABB/IAABBShape.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { Vector3, Vector2 } from 'three';
|
||||
import { AABB } from './AABB';
|
||||
export interface IAABBShape {
|
||||
getAABB(): AABB;
|
||||
containsPoint(point: Vector3 | Vector2): boolean;
|
||||
getTypeName(): string;
|
||||
}
|
||||
13
app/supreium_viewer/package/dist/types/src/cad/geom/AABB/LineAABBShape.d.ts
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
import { Vector3, Vector2 } from 'three';
|
||||
import { IAABBShape } from './IAABBShape';
|
||||
import { AABB } from './AABB';
|
||||
export declare class LineAABBShape implements IAABBShape {
|
||||
private aabb;
|
||||
private VectorList;
|
||||
private type;
|
||||
constructor(A: Vector3 | Vector2, B: Vector3 | Vector2);
|
||||
getAABB(): AABB;
|
||||
containsPoint(point: Vector3 | Vector2): boolean;
|
||||
getTypeName(): string;
|
||||
points(): (Vector3 | Vector2)[];
|
||||
}
|
||||
13
app/supreium_viewer/package/dist/types/src/cad/geom/AABB/TriAABBShape.d.ts
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
import { Vector3, Vector2 } from 'three';
|
||||
import { IAABBShape } from './IAABBShape';
|
||||
import { AABB } from './AABB';
|
||||
export declare class TriAABBShape implements IAABBShape {
|
||||
private aabb;
|
||||
private VectorList;
|
||||
private type;
|
||||
constructor(A: Vector3 | Vector2, B: Vector3 | Vector2, C: Vector3 | Vector2);
|
||||
getAABB(): AABB;
|
||||
containsPoint(point: Vector3 | Vector2): boolean;
|
||||
getTypeName(): string;
|
||||
points(): (Vector3 | Vector2)[];
|
||||
}
|
||||
6
app/supreium_viewer/package/dist/types/src/cad/geom/AABB/index.d.ts
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
export * from './AABB';
|
||||
export * from './AABBNode';
|
||||
export * from './AABBTree';
|
||||
export * from './IAABBShape';
|
||||
export * from './LineAABBShape';
|
||||
export * from './TriAABBShape';
|
||||
17
app/supreium_viewer/package/dist/types/src/cad/geom/Coord.d.ts
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
import { SupVector } from '../types';
|
||||
/**
|
||||
* @brief 坐标对象
|
||||
* @note 坐标对象目前使用threejs的Vector3实现
|
||||
*
|
||||
*/
|
||||
export declare class Coord {
|
||||
readonly xyz: SupVector;
|
||||
constructor(x: number, y: number, z: number);
|
||||
setCoord(x: number, y: number, z: number): void;
|
||||
x(): number;
|
||||
y(): number;
|
||||
z(): number;
|
||||
static toFloat32Array(coords: Coord[]): Float32Array;
|
||||
static toArray(coords: Coord[]): number[];
|
||||
static toArrayVec(coords: SupVector[]): number[];
|
||||
}
|
||||
10
app/supreium_viewer/package/dist/types/src/cad/geom/Coordinate.d.ts
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
import { SupMat4, SupVector } from '../types';
|
||||
export declare class Coordinate {
|
||||
readonly pos: SupVector;
|
||||
readonly zDir: SupVector;
|
||||
readonly xDir: SupVector;
|
||||
constructor(pos?: SupVector, zDir?: SupVector, xDir?: SupVector);
|
||||
get yDir(): SupVector;
|
||||
private normalize;
|
||||
toMatrix4(): SupMat4;
|
||||
}
|
||||
15
app/supreium_viewer/package/dist/types/src/cad/geom/CurveType.d.ts
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* @brief 曲线类型枚举
|
||||
*
|
||||
*/
|
||||
export declare enum CurveType {
|
||||
Line = 0,//! 直线
|
||||
Circle = 1,//! 圆
|
||||
Ellipse = 2,//! 椭圆
|
||||
Parabola = 3,//! 抛物线
|
||||
Hyperbola = 4,//! 双曲线
|
||||
OffsetCurve = 5,//! 偏置曲线
|
||||
BezierCurve = 6,//! 贝塞尔曲线
|
||||
BSplineCurve = 7,//! Nurbs曲线
|
||||
Other = 8
|
||||
}
|
||||
10
app/supreium_viewer/package/dist/types/src/cad/geom/Direct.d.ts
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
import { Coord } from './Coord';
|
||||
import { SupMat4 } from '../types';
|
||||
/**
|
||||
* @brief 方向对象
|
||||
*
|
||||
*/
|
||||
export declare class Direct extends Coord {
|
||||
constructor(x: number, y: number, z: number);
|
||||
applayMatrix4(mat: SupMat4): void;
|
||||
}
|
||||
174
app/supreium_viewer/package/dist/types/src/cad/geom/GeometryBuilder.d.ts
vendored
Normal file
@@ -0,0 +1,174 @@
|
||||
import { Coordinate } from './Coordinate';
|
||||
import { PolyGeometry } from './PolyGeometry';
|
||||
import { Triangulation } from './Triangulation';
|
||||
import { SupBox, SupVector } from '../types';
|
||||
type NumberArray4 = [number, number, number, number];
|
||||
export type CRModeType = 'Chamfer' | 'Fillet';
|
||||
export type CRModeTypeArray4 = [CRModeType, CRModeType, CRModeType, CRModeType];
|
||||
export declare class GeometryBuilder {
|
||||
static angleTol: number;
|
||||
static zeroTol: number;
|
||||
private static floatEqual;
|
||||
static cone(r1: number, r2: number, l: number, csys?: Coordinate): Triangulation | null;
|
||||
static arrow(cylR: number, cylL: number, coneR: number, coneL: number, csys?: Coordinate): Triangulation | null;
|
||||
static cutPlaneByBox(box: SupBox, csys: Coordinate): PolyGeometry | null;
|
||||
static box(min: SupVector, max: SupVector, csys?: Coordinate): PolyGeometry | null;
|
||||
static sphere(radius: number, center: SupVector, csys?: Coordinate, segments?: number): Triangulation;
|
||||
/**
|
||||
* 计算一段圆弧上的离散的点
|
||||
* @param center 圆心
|
||||
* @param radius 半径
|
||||
* @param startAngle 开始角度
|
||||
* @param endAngle 结束角度
|
||||
* @param segments 线段数量
|
||||
* @param returnMode 1, 2, 3, 4 返回模式
|
||||
* @param xy true 在 xy 平面上 false 在 xz平面上
|
||||
* @returns
|
||||
* returnMode | length | means
|
||||
* ------------------------------------------------
|
||||
* 1 | segments | start + paths
|
||||
* 2 | segments | paths + end
|
||||
* 3 | segments + 1 | start + paths + end
|
||||
* 4 | segments - 1 | paths
|
||||
*/
|
||||
private static computeArcNodes;
|
||||
/**
|
||||
* geneate line with connecting start index to end index
|
||||
* for example:
|
||||
* input: 0, 3
|
||||
* output: [0,1,1,2,2,3]
|
||||
* @param startIndex start index
|
||||
* @param endIndex end index
|
||||
* @returns line array connect start index to end index
|
||||
*/
|
||||
private static generateArcLine;
|
||||
/**
|
||||
* 使用多个圆环创建面和圆环线
|
||||
* loops length | first loop length | result surface
|
||||
* --------------------------------------------------
|
||||
* 1 | 1 | point -> error
|
||||
* 1 | >= 3 | plane -> circle plane
|
||||
* 2 | 1 | circle plane or cone surface
|
||||
* 2 | === another | torus plane or cone plane
|
||||
* >2 | === others | torus surface
|
||||
* @param loops 圆环数组
|
||||
* @param poly 添加到的目标PolyGeometry
|
||||
* @param lineMode
|
||||
* 0: don't add lines
|
||||
* 1: add first loop lines
|
||||
* 2: add last loop lines
|
||||
* 3. add first and last loop lines
|
||||
* @param close 是否形成闭环,头尾相接
|
||||
* @param z true: the surface normal direction is z positive; false: the surface normal direction is z negative
|
||||
*/
|
||||
private static addSurfaceByLoops;
|
||||
/**
|
||||
* 球或空心球的2D草图
|
||||
* @param r1 大圆半径
|
||||
* @param r2 小圆半径 为0时球,大于0时空心球 大于等于r1时报错
|
||||
* @param center 圆心
|
||||
* @param quarter false: full ; true: 1/4 circle
|
||||
* @param segments 一个圆的分段数
|
||||
* @param csys 坐标系
|
||||
*/
|
||||
static sphere2D(r1: number, r2: number, center?: SupVector, quarter?: boolean, segments?: number, csys?: Coordinate | undefined): PolyGeometry;
|
||||
/**
|
||||
* 构造圆环的草图
|
||||
* @param radius 截面半径
|
||||
* @param center 截面圆心
|
||||
* @param quarter false: full quarter: 半圆
|
||||
* @param segments 整圆分段数
|
||||
* @param csys 坐标系
|
||||
* @returns
|
||||
*/
|
||||
static torus2D(radius: number, center: SupVector, quarter?: boolean, segments?: number, csys?: Coordinate | undefined): PolyGeometry;
|
||||
/**
|
||||
* 根据点 和 anchors 创建 2D 轮廓图形
|
||||
* @param poly 目标PolyGeometry
|
||||
* @param nodes 一些点坐标
|
||||
* @param anchors 锚点,创建线的起止点
|
||||
*/
|
||||
private static create2DShape;
|
||||
/**
|
||||
* R1
|
||||
* |<---> __ ←-
|
||||
* | r2 / \ r1 p1↑ 点创建顺序
|
||||
* | | |
|
||||
* | | |
|
||||
* | | |
|
||||
* | r3 \__/ r4
|
||||
* |<--------->
|
||||
* pos R2
|
||||
*
|
||||
* @param R1 小圆半径
|
||||
* @param R2 大圆半径
|
||||
* @param height 高度
|
||||
* @param position 旋转轴位置
|
||||
* @param radii 倒角半径 4 个
|
||||
* @param modes 倒角类型 4个
|
||||
* @param quarter 是否 1/4
|
||||
* @param segments 倒圆角的时候圆弧的分辨率
|
||||
* @returns nodes 和 anchors 和 middle( 上 与 下 的 分界点)
|
||||
*/
|
||||
private static cylinder2DNodes;
|
||||
static cylinder(R1: number, R2: number, height: number, position?: SupVector, radii?: NumberArray4, modes?: CRModeTypeArray4, segments?: number, revolution?: boolean, range?: [number, number], quarter?: boolean, csys?: Coordinate | undefined): PolyGeometry;
|
||||
/**
|
||||
* |
|
||||
* | _________ ——
|
||||
* | r2 / \ r1 p0 ↑
|
||||
* | | ·p | y
|
||||
* | r3 \_________/ r4 ↓
|
||||
* |pos |<--------->| ——
|
||||
* | x
|
||||
* |————————————————————————
|
||||
* @param x box x direction length
|
||||
* @param y box y direction length
|
||||
* @param position box center position
|
||||
* @param radii r1, r2, r3, r4
|
||||
* @param modes m1, m2, m3, m4
|
||||
* @param segments one arc segments( Π / 2)
|
||||
*/
|
||||
private static box2DNodes;
|
||||
/**
|
||||
* 创建的基本体的顶面或者底面的平面
|
||||
* @param poly 目标PolyGeometry
|
||||
* @param nodes 一圈平面点
|
||||
* @param anchors 锚点,创建线的起止点
|
||||
* @param z true: 法向z正方形 false: 法向为z的负方向
|
||||
*/
|
||||
private static addOneTopOrBottomPlane;
|
||||
/**
|
||||
* 添加一个侧面,可能是一个平面或者一个圆柱面,平面由4个点,2个三角形组成,圆柱面由2n个点,2n个三角形组成
|
||||
* @param poly 目标PolyGeometry
|
||||
* @param nodes1 底面的点
|
||||
* @param nodes2 顶面的点
|
||||
*/
|
||||
private static addOneSideSurface;
|
||||
/**
|
||||
* 复杂的box, 可对4个角进行倒角
|
||||
* @param x x方向长度
|
||||
* @param y y方向长度
|
||||
* @param z z方向长度
|
||||
* @param position 底面圆心位置
|
||||
* @param radii 4个角的倒角半径
|
||||
* @param modes 4个角的倒角模式
|
||||
* @param segments Math.PI / 4 的分段数
|
||||
* @param extrude 是否extrude , false返回2D图形
|
||||
* @param csys 坐标系
|
||||
* @returns PolyGeometry
|
||||
*/
|
||||
static complexBox(x: number, y: number, z: number, position?: SupVector, radii?: NumberArray4, modes?: CRModeTypeArray4, segments?: number, extrude?: boolean, csys?: Coordinate | undefined): PolyGeometry;
|
||||
/**
|
||||
* 构造正多边形棱柱
|
||||
* @param radius 外接圆半径
|
||||
* @param height 高度
|
||||
* @param edgeNumber 边数量
|
||||
* @param startAngle 起始点位置
|
||||
* @param bottomCenter 底面圆心位置
|
||||
* @param extrude true: 拉伸的3D模型 false: 未拉伸的2D轮廓
|
||||
* @param csys 坐标系
|
||||
* @returns poly geometry
|
||||
*/
|
||||
static regularPolygonalPrism(radius: number, height: number, edgeNumber: number, startAngle?: number, bottomCenter?: SupVector, extrude?: boolean, csys?: Coordinate | undefined): PolyGeometry;
|
||||
}
|
||||
export {};
|
||||
9
app/supreium_viewer/package/dist/types/src/cad/geom/Point.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
import { Coord } from './Coord';
|
||||
import { SupMat4 } from '../types';
|
||||
/**
|
||||
* @brief 点对象
|
||||
*
|
||||
*/
|
||||
export declare class Point extends Coord {
|
||||
applayMatrix4(mat: SupMat4): void;
|
||||
}
|
||||
49
app/supreium_viewer/package/dist/types/src/cad/geom/PolyGeometry.d.ts
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
import { Ray } from 'three';
|
||||
import { Triangle } from './Triangulation';
|
||||
import { SupBox, SupVector } from '../types';
|
||||
import { AABBTree } from './AABB/AABBTree';
|
||||
export type PolyLine = {
|
||||
indices: number[];
|
||||
isSegment: boolean;
|
||||
props?: object;
|
||||
};
|
||||
export type PolySurf = {
|
||||
triangles: Triangle[];
|
||||
props?: object;
|
||||
};
|
||||
export interface IPolyGeometry {
|
||||
nodes: Array<[number, number, number]>;
|
||||
surfs?: Array<{
|
||||
props?: object;
|
||||
triangles: Array<[number, number, number]>;
|
||||
}>;
|
||||
lines?: Array<{
|
||||
props?: object;
|
||||
indices: Array<[number, number]> | number[];
|
||||
}>;
|
||||
}
|
||||
/**
|
||||
* @brief poly几何,可以包含多个多边形面和多边形边
|
||||
*
|
||||
*/
|
||||
export declare class PolyGeometry {
|
||||
readonly nodes: SupVector[];
|
||||
readonly lines: PolyLine[];
|
||||
readonly surfs: PolySurf[];
|
||||
constructor(nodes?: SupVector[]);
|
||||
static createIndex(poly: PolyLine): number[];
|
||||
bndBox(): SupBox;
|
||||
static createFromIPoly(data: IPolyGeometry): PolyGeometry;
|
||||
static ray2Tree(ray: Ray, tree: AABBTree): number;
|
||||
/**
|
||||
* AABB Tree is used to calculate the distance between two PolyGeometrys
|
||||
* @param geomFrom PolyGeometry
|
||||
* @param geomTo PolyGeometry
|
||||
* @param direction The direction from geomFrom to geomTo
|
||||
* @returns The distance from geomFrom to geomTo calculated along the direction.
|
||||
* If the return value is negative, it represents the distance from geomFrom to geomTo in the opposite direction.
|
||||
* If the return value is positive, it represents the distance from geomFrom to geomTo in the positive direction.
|
||||
* If the return value is null, it means that geomFrom and geomTo cannot calculate the distance in this direction.
|
||||
*/
|
||||
static calDistancewithAABB(geomFrom: PolyGeometry, geomTo: PolyGeometry, direction: SupVector): number | null;
|
||||
}
|
||||
14
app/supreium_viewer/package/dist/types/src/cad/geom/Polygon.d.ts
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
import { Point } from './Point';
|
||||
import { SupBox } from '../types';
|
||||
/**
|
||||
* @brief 多边形对象
|
||||
*
|
||||
*/
|
||||
export declare class Polygon {
|
||||
protected nodes: Point[];
|
||||
constructor();
|
||||
get nodeList(): Point[];
|
||||
set nodeList(nodes: Point[]);
|
||||
static createIndex(size: number, offset: number): number[];
|
||||
bndBox(): SupBox;
|
||||
}
|
||||
17
app/supreium_viewer/package/dist/types/src/cad/geom/SurfaceType.d.ts
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* @brief 曲面类型
|
||||
*
|
||||
*/
|
||||
export declare enum SurfaceType {
|
||||
Plane = 0,//! 平面
|
||||
Cylinder = 1,//! 圆柱面
|
||||
Cone = 2,//! 圆锥面
|
||||
Sphere = 3,//! 球面
|
||||
Torus = 4,//! 圆环面
|
||||
BezierSurface = 5,//! 贝塞尔曲面
|
||||
BSplineSurface = 6,//! Nurbs曲面
|
||||
SurfaceOfRevolution = 7,//! 回转面
|
||||
SurfaceOfExtrusion = 8,//! 拉伸面
|
||||
OffsetSurface = 9,//! 偏执面
|
||||
OtherSurface = 10
|
||||
}
|
||||
36
app/supreium_viewer/package/dist/types/src/cad/geom/Triangulation.d.ts
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
import { BufferGeometry } from 'three';
|
||||
import { Direct } from './Direct';
|
||||
import { Point } from './Point';
|
||||
import { SupBox, SupMat4 } from '../types';
|
||||
/**
|
||||
* @brief 三角面片对象
|
||||
*
|
||||
*/
|
||||
export declare class Triangle {
|
||||
node1: number;
|
||||
node2: number;
|
||||
node3: number;
|
||||
constructor(n1: number, n2: number, n3: number);
|
||||
}
|
||||
/**
|
||||
* @brief 面片集合对象
|
||||
*
|
||||
*/
|
||||
export declare class Triangulation {
|
||||
protected nodes: Point[];
|
||||
protected normals: Direct[];
|
||||
protected triangles: Triangle[];
|
||||
constructor();
|
||||
get nodeList(): Point[];
|
||||
set nodeList(nodes: Point[]);
|
||||
get triangleList(): Triangle[];
|
||||
set triangleList(triangles: Triangle[]);
|
||||
get normalList(): Direct[];
|
||||
set normalList(normals: Direct[]);
|
||||
static toUint32Array(indices: Triangle[]): Uint32Array;
|
||||
static toArray(indices: Triangle[], offset?: number): number[];
|
||||
static createFromBufferGeometry(buffer: BufferGeometry): Triangulation | null;
|
||||
applayMatrix4(mat: SupMat4): void;
|
||||
bndBox(): SupBox;
|
||||
expandSharedPoint(): void;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
export {};
|
||||
10
app/supreium_viewer/package/dist/types/src/cad/geom/index.d.ts
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
export * from './Coord';
|
||||
export * from './Coordinate';
|
||||
export * from './CurveType';
|
||||
export * from './Direct';
|
||||
export * from './GeometryBuilder';
|
||||
export * from './Point';
|
||||
export * from './PolyGeometry';
|
||||
export * from './Polygon';
|
||||
export * from './SurfaceType';
|
||||
export * from './Triangulation';
|
||||
5
app/supreium_viewer/package/dist/types/src/cad/index.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
export * from './brep';
|
||||
export * from './geom';
|
||||
export * from './mesh';
|
||||
export * from './view';
|
||||
export * from './types';
|
||||
44
app/supreium_viewer/package/dist/types/src/cad/mesh/CellBasedMesh.d.ts
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
import { SupBox } from '../types';
|
||||
export interface IAABBRange {
|
||||
xMin: number;
|
||||
yMin?: number;
|
||||
zMin?: number;
|
||||
xMax: number;
|
||||
yMax?: number;
|
||||
zMax?: number;
|
||||
}
|
||||
export interface ICell {
|
||||
i: number;
|
||||
j?: number;
|
||||
k?: number;
|
||||
index: number;
|
||||
}
|
||||
export interface ILevelMesh {
|
||||
level: number;
|
||||
cells: ICell[];
|
||||
xCoords: number[];
|
||||
yCoords?: number[];
|
||||
zCoords?: number[];
|
||||
}
|
||||
export interface ICellBasedMesh {
|
||||
dimension: number;
|
||||
range: IAABBRange;
|
||||
meshes: ILevelMesh[];
|
||||
}
|
||||
export interface IBoxLibMesh {
|
||||
dimension: number;
|
||||
range: number[];
|
||||
mesh_levels: {
|
||||
level: number;
|
||||
resolution: number[];
|
||||
cell_idx: number[];
|
||||
}[];
|
||||
}
|
||||
export declare class CellBasedMesh implements ICellBasedMesh {
|
||||
readonly dimension: number;
|
||||
readonly range: IAABBRange;
|
||||
readonly meshes: ILevelMesh[];
|
||||
constructor(data: ICellBasedMesh);
|
||||
static createFromBoxLib(data: IBoxLibMesh): CellBasedMesh;
|
||||
bndBox(): SupBox;
|
||||
}
|
||||
77
app/supreium_viewer/package/dist/types/src/cad/mesh/NodeBasedMesh.d.ts
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
import { MeshEdge, MeshElement, MeshFace, MeshNode } from './element/MeshElement';
|
||||
import { SupBox } from '../types';
|
||||
export interface IMeshData {
|
||||
nodes: Array<Array<number>>;
|
||||
elements: Array<Array<number>>;
|
||||
faces?: Array<Array<number>>;
|
||||
}
|
||||
export type MeshProp = {
|
||||
forNode: boolean;
|
||||
name: string;
|
||||
size: number;
|
||||
data: Map<number, number[]>;
|
||||
range: {
|
||||
min: number[];
|
||||
max: number[];
|
||||
};
|
||||
};
|
||||
/**
|
||||
* @brief 基于节点的网格对象
|
||||
*
|
||||
*/
|
||||
export declare class NodeBasedMesh {
|
||||
readonly nodes: Map<number, MeshNode>;
|
||||
readonly elements: Map<number, MeshElement>;
|
||||
readonly props: MeshProp[];
|
||||
constructor(nodes: MeshNode[], elements: MeshElement[]);
|
||||
/**
|
||||
* @brief 获取特征面上的网格节点
|
||||
* @param node-初始节点
|
||||
* @param angTol-网格面角度限制(弧度)
|
||||
*/
|
||||
getNodesFromFace(node: MeshNode, angTol: number): MeshNode[];
|
||||
/**
|
||||
* @brief 获取特征面上的网格面
|
||||
* @param face-初始网格面
|
||||
* @param angTol-网格面角度限制(弧度)
|
||||
*/
|
||||
getMeshFaces(face: MeshFace, angTol: number): MeshFace[];
|
||||
private getMeshFacesFromFace;
|
||||
/**
|
||||
* @brief 获取特征边上的网格边
|
||||
* @param edge-初始网格边
|
||||
* @param angTol-网格边角度限制(弧度)
|
||||
*/
|
||||
getMeshEdgesByFeat(angTol: number, edge: MeshEdge): MeshEdge[];
|
||||
private getEdgeBorders;
|
||||
static createFromData(data: IMeshData): NodeBasedMesh;
|
||||
/**
|
||||
* @brief 添加属性
|
||||
* @param name-属性名称
|
||||
* @param size-属性长度
|
||||
* @param forNode-是否为节点属性
|
||||
* @param data-属性数据(属性数据的组织按照如下规则: nodeId1 data1 data2 ... dataN nodeId2...)
|
||||
*
|
||||
* @return true-成功, false-失败
|
||||
*/
|
||||
attachProperty(name: string, size: number, forNode: boolean, data: number[]): boolean;
|
||||
getProperty(name: string): MeshProp | undefined;
|
||||
bndBox(): SupBox;
|
||||
/**
|
||||
* @brief 2D网格拉伸为3D网格
|
||||
* @param off1-上偏移
|
||||
* @param off2-下偏移
|
||||
*
|
||||
* @return 转化后的3D网格,如果转化失败则返回null
|
||||
*/
|
||||
to3DMeshByExtrude(off1: number, off2: number): NodeBasedMesh | null;
|
||||
/**
|
||||
* @brief 2D网格旋转为3D网格
|
||||
* @param start-起始角度(度)
|
||||
* @param ang-旋转角度(度)
|
||||
* @param res-分辨率(度)
|
||||
*
|
||||
* @return 转化后的3D网格,如果转化失败则返回null
|
||||
*/
|
||||
to3DMeshByRevolve(start: number, ang: number, res: number): NodeBasedMesh | null;
|
||||
}
|
||||
12
app/supreium_viewer/package/dist/types/src/cad/mesh/PostProcessType.d.ts
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
export type VectorData = {
|
||||
vectors: number[];
|
||||
space: number;
|
||||
};
|
||||
export type StreamLine = {
|
||||
lines: Array<Array<number>>;
|
||||
};
|
||||
export type StreamLineProp = {
|
||||
name: string;
|
||||
size: number;
|
||||
data: Array<Array<number>>;
|
||||
};
|
||||
10
app/supreium_viewer/package/dist/types/src/cad/mesh/element/FaceBasedEle.d.ts
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
import { MeshType } from './MeshType';
|
||||
import { MeshElement } from './MeshElement';
|
||||
export declare class FaceBasedEle extends MeshElement {
|
||||
type(): MeshType;
|
||||
protected initEdgesAndFaces(): void;
|
||||
addFace(nodes: number[]): void;
|
||||
private addEdge;
|
||||
private addNode;
|
||||
copy(): MeshElement;
|
||||
}
|
||||
7
app/supreium_viewer/package/dist/types/src/cad/mesh/element/HexOrder2N20Ele.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { MeshType } from './MeshType';
|
||||
import { HexahedronEle } from './HexahedronEle';
|
||||
import { MeshElement } from './MeshElement';
|
||||
export declare class HexOrder2N20Ele extends HexahedronEle {
|
||||
type(): MeshType;
|
||||
copy(): MeshElement;
|
||||
}
|
||||
7
app/supreium_viewer/package/dist/types/src/cad/mesh/element/HexOrder2N27Ele.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { MeshType } from './MeshType';
|
||||
import { HexahedronEle } from './HexahedronEle';
|
||||
import { MeshElement } from './MeshElement';
|
||||
export declare class HexOrder2N27Ele extends HexahedronEle {
|
||||
type(): MeshType;
|
||||
copy(): MeshElement;
|
||||
}
|
||||
7
app/supreium_viewer/package/dist/types/src/cad/mesh/element/HexahedronEle.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { MeshType } from './MeshType';
|
||||
import { MeshElement } from './MeshElement';
|
||||
export declare class HexahedronEle extends MeshElement {
|
||||
type(): MeshType;
|
||||
protected initEdgesAndFaces(): void;
|
||||
copy(): MeshElement;
|
||||
}
|
||||
7
app/supreium_viewer/package/dist/types/src/cad/mesh/element/Line2Ele.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { MeshType } from './MeshType';
|
||||
import { MeshElement } from './MeshElement';
|
||||
export declare class Line2Ele extends MeshElement {
|
||||
type(): MeshType;
|
||||
protected initEdgesAndFaces(): void;
|
||||
copy(): MeshElement;
|
||||
}
|
||||
53
app/supreium_viewer/package/dist/types/src/cad/mesh/element/MeshElement.d.ts
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
import { Triangle } from '../../geom/Triangulation';
|
||||
import { MeshType } from './MeshType';
|
||||
export type MeshNode = {
|
||||
id: number;
|
||||
coord: number[];
|
||||
};
|
||||
export type MeshEdge = {
|
||||
node1: number;
|
||||
node2: number;
|
||||
};
|
||||
export type MeshFace = {
|
||||
nodes: number[];
|
||||
triangles: Triangle[];
|
||||
};
|
||||
/**
|
||||
* @brief 网格单元抽象类
|
||||
*
|
||||
*/
|
||||
export declare abstract class MeshElement {
|
||||
id: number;
|
||||
readonly nodes: number[];
|
||||
readonly faces: MeshFace[];
|
||||
readonly edges: MeshEdge[];
|
||||
constructor(id: number, nodes: number[]);
|
||||
/**
|
||||
* @brief
|
||||
* @param
|
||||
*
|
||||
* @return
|
||||
* -<em>1</em>
|
||||
*/
|
||||
setNodes(nodes: number[]): void;
|
||||
/**
|
||||
* @brief 单元类型
|
||||
*
|
||||
* @return
|
||||
* -<em>单元类型</em>
|
||||
*/
|
||||
abstract type(): MeshType;
|
||||
/**
|
||||
* @brief 初始化网格边和网格面
|
||||
*
|
||||
* @return
|
||||
* -<em>无</em>
|
||||
*/
|
||||
protected abstract initEdgesAndFaces(): void;
|
||||
/**
|
||||
* @brief 拷贝自身
|
||||
*
|
||||
* @return 拷贝对象
|
||||
*/
|
||||
abstract copy(): MeshElement;
|
||||
}
|
||||
19
app/supreium_viewer/package/dist/types/src/cad/mesh/element/MeshType.d.ts
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
export declare enum MeshType {
|
||||
Line_2 = 0,//! 2节点线单元
|
||||
Triangle_3 = 1,//! 3节点三角形单元
|
||||
Quadrangle_4 = 2,//! 4节点四边形单元
|
||||
Tetrahedron_4 = 3,//! 4节点四面体单元
|
||||
Hexahedron_8 = 4,//! 8节点六面体单元
|
||||
Prism_6 = 5,//! 6节点三棱柱单元
|
||||
Pyramid_5 = 6,//! 5节点四棱锥单元
|
||||
Line_3_Order2 = 7,//! 3节点二阶线单元
|
||||
Triangle_6_Order2 = 8,//! 6节点二阶三角形单元
|
||||
Quadrangle_9_Order2 = 9,//! 9节点二阶四边形单元
|
||||
Tetrahedron_10_Order2 = 10,//! 10节点二阶四面体单元
|
||||
Hexahedron_27_Order2 = 11,//! 27节点二阶六面体单元
|
||||
Prism_18_Order2 = 12,//! 18节点二阶三棱柱单元
|
||||
Pyramid_14_Order2 = 13,//! 14节点二阶四棱锥单元
|
||||
Plane_Polygon = 14,//! 平面多边形网格,通过首尾相连的方式组成
|
||||
Hexahedron_20_Order2 = 15,//! 27节点二阶六面体单元
|
||||
FaceBasedEle = 100
|
||||
}
|
||||
7
app/supreium_viewer/package/dist/types/src/cad/mesh/element/PlanePolygonEle.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { MeshType } from './MeshType';
|
||||
import { MeshElement } from './MeshElement';
|
||||
export declare class PlanePolygonEle extends MeshElement {
|
||||
type(): MeshType;
|
||||
protected initEdgesAndFaces(): void;
|
||||
copy(): MeshElement;
|
||||
}
|
||||
7
app/supreium_viewer/package/dist/types/src/cad/mesh/element/QuadrangleEle.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { MeshType } from './MeshType';
|
||||
import { MeshElement } from './MeshElement';
|
||||
export declare class QuadrangleEle extends MeshElement {
|
||||
type(): MeshType;
|
||||
protected initEdgesAndFaces(): void;
|
||||
copy(): MeshElement;
|
||||
}
|
||||
7
app/supreium_viewer/package/dist/types/src/cad/mesh/element/TetOrder2Ele.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { MeshElement } from './MeshElement';
|
||||
import { MeshType } from './MeshType';
|
||||
import { TetrahedronEle } from './TetrahedronEle';
|
||||
export declare class TetOrder2Ele extends TetrahedronEle {
|
||||
type(): MeshType;
|
||||
copy(): MeshElement;
|
||||
}
|
||||
7
app/supreium_viewer/package/dist/types/src/cad/mesh/element/TetrahedronEle.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { MeshType } from './MeshType';
|
||||
import { MeshElement } from './MeshElement';
|
||||
export declare class TetrahedronEle extends MeshElement {
|
||||
type(): MeshType;
|
||||
protected initEdgesAndFaces(): void;
|
||||
copy(): MeshElement;
|
||||
}
|
||||
7
app/supreium_viewer/package/dist/types/src/cad/mesh/element/TriangleEle.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { MeshType } from './MeshType';
|
||||
import { MeshElement } from './MeshElement';
|
||||
export declare class TriangleEle extends MeshElement {
|
||||
type(): MeshType;
|
||||
protected initEdgesAndFaces(): void;
|
||||
copy(): MeshElement;
|
||||
}
|
||||
11
app/supreium_viewer/package/dist/types/src/cad/mesh/element/index.d.ts
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
export * from './HexahedronEle';
|
||||
export * from './MeshElement';
|
||||
export * from './MeshType';
|
||||
export * from './QuadrangleEle';
|
||||
export * from './TetrahedronEle';
|
||||
export * from './TriangleEle';
|
||||
export * from './Line2Ele';
|
||||
export * from './HexOrder2N20Ele';
|
||||
export * from './HexOrder2N27Ele';
|
||||
export * from './TetOrder2Ele';
|
||||
export * from './PlanePolygonEle';
|
||||
4
app/supreium_viewer/package/dist/types/src/cad/mesh/index.d.ts
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
export * from './element';
|
||||
export * from './NodeBasedMesh';
|
||||
export * from './CellBasedMesh';
|
||||
export * from './PostProcessType';
|
||||
13
app/supreium_viewer/package/dist/types/src/cad/types.d.ts
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
import { Box3, Color, Matrix4, Vector2, Vector3, Vector4 } from 'three';
|
||||
export declare class SupVector extends Vector3 {
|
||||
}
|
||||
export declare class SupColor extends Color {
|
||||
}
|
||||
export declare class SupBox extends Box3 {
|
||||
}
|
||||
export declare class SupMat4 extends Matrix4 {
|
||||
}
|
||||
export declare class SupVec4 extends Vector4 {
|
||||
}
|
||||
export declare class SupVec2 extends Vector2 {
|
||||
}
|
||||
23
app/supreium_viewer/package/dist/types/src/cad/view/BRepViewObject.d.ts
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
import { BRepBody } from '../brep/BRepBody';
|
||||
import { BRepObject } from '../brep/BRepObject';
|
||||
import { ViewMode } from './ViewMode';
|
||||
import { ViewObject } from './ViewObject';
|
||||
import { ViewObjType } from './ViewObjType';
|
||||
/**
|
||||
* @brief BRep 可视化对象
|
||||
*
|
||||
*/
|
||||
export declare class BRepViewObject extends ViewObject {
|
||||
private wrappedBody;
|
||||
private wrappedRenders;
|
||||
constructor(body: BRepBody);
|
||||
type(): ViewObjType;
|
||||
protected computeSelects(viewMode: ViewMode): boolean;
|
||||
protected computeRenders(viewMode: ViewMode): boolean;
|
||||
get body(): BRepBody;
|
||||
set body(body: BRepBody);
|
||||
setBRepColor(brep: BRepObject, color: number): boolean;
|
||||
setBRepOpacity(brep: BRepObject, opacity: number): boolean;
|
||||
unSetBRepColor(brep: BRepObject): boolean;
|
||||
clearData(): void;
|
||||
}
|
||||
47
app/supreium_viewer/package/dist/types/src/cad/view/CellBasedMeshVO.d.ts
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
import { Color, Float32BufferAttribute } from 'three';
|
||||
import { CellBasedMesh } from '../mesh/CellBasedMesh';
|
||||
import { IBindLegendObj, Legend, LegendUpdateArg } from './Legend';
|
||||
import { ViewMode } from './ViewMode';
|
||||
import { ViewObject } from './ViewObject';
|
||||
import { ViewObjType } from './ViewObjType';
|
||||
interface IPropertyData {
|
||||
attr: Float32BufferAttribute;
|
||||
min: number;
|
||||
max: number;
|
||||
}
|
||||
/**
|
||||
* @brief 基于单元的网格对象显示组件
|
||||
*
|
||||
*/
|
||||
export declare class CellBasedMeshVO extends ViewObject implements IBindLegendObj {
|
||||
protected wrappedLegend: Legend | null;
|
||||
protected wrappedMesh: CellBasedMesh;
|
||||
private wrappedRenders;
|
||||
protected wrappedProperties: Map<number, Map<string, IPropertyData>>;
|
||||
protected wrappedCurProp: string;
|
||||
protected wrappedSolidColor: Color;
|
||||
protected wrappedLevelStates: Map<number, boolean>;
|
||||
constructor(mesh: CellBasedMesh);
|
||||
protected onLegendUpdateCB: (arg?: LegendUpdateArg) => void;
|
||||
unbindLegend: (legend: Legend) => void;
|
||||
useLegend: boolean;
|
||||
bindLegend: (legend: Legend) => void;
|
||||
type(): ViewObjType;
|
||||
protected computeSelects(_mode: ViewMode): boolean;
|
||||
protected computeRenders(mode: ViewMode): boolean;
|
||||
attachProperty(level: number, name: string, data: number[]): boolean;
|
||||
activeProperty(name: string): boolean;
|
||||
setFaceColor(color: number): void;
|
||||
private updateProperty;
|
||||
get legend(): Legend | null;
|
||||
/**
|
||||
* @brief 获取/设置网格层的显示状态
|
||||
* @param level 网格层号
|
||||
*/
|
||||
levelVisible(level: number): boolean | undefined;
|
||||
setLevelVisible(level: number, state: boolean): void;
|
||||
get mesh(): CellBasedMesh;
|
||||
get props(): Map<number, Map<string, IPropertyData>>;
|
||||
clearData(): void;
|
||||
}
|
||||
export {};
|
||||
39
app/supreium_viewer/package/dist/types/src/cad/view/Legend.d.ts
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
import { ColorMapLegend, ColorMapLegendType, LiteEvent } from '../../core';
|
||||
import { SupColor } from '../types';
|
||||
export declare enum LegendUpdateType {
|
||||
Colors = 0,
|
||||
Range = 1,
|
||||
Type = 2
|
||||
}
|
||||
export interface LegendUpdateArg {
|
||||
type: LegendUpdateType;
|
||||
arg: unknown;
|
||||
}
|
||||
export declare class Legend extends ColorMapLegend {
|
||||
readonly updateEvent: LiteEvent<LegendUpdateArg>;
|
||||
protected wrappedColors: SupColor[];
|
||||
protected wrappedRange: number[];
|
||||
constructor();
|
||||
private updateLegend;
|
||||
setColorMap(colormap: string | SupColor[], numColor?: number | undefined): void;
|
||||
get colors(): SupColor[];
|
||||
get range(): {
|
||||
readonly min: number;
|
||||
readonly max: number;
|
||||
};
|
||||
set range(range: {
|
||||
readonly min: number;
|
||||
readonly max: number;
|
||||
});
|
||||
get type(): ColorMapLegendType;
|
||||
set type(value: ColorMapLegendType);
|
||||
}
|
||||
export interface IBindLegendObj {
|
||||
useLegend: boolean;
|
||||
bindLegend: {
|
||||
(legend: Legend): void;
|
||||
};
|
||||
unbindLegend: {
|
||||
(legend: Legend): void;
|
||||
};
|
||||
}
|
||||
9
app/supreium_viewer/package/dist/types/src/cad/view/LegendManager.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
import { LegendPanel } from '../../core';
|
||||
import { IBindLegendObj, Legend } from './Legend';
|
||||
export declare class LegendManager {
|
||||
readonly legend: Legend;
|
||||
readonly legendPanel: LegendPanel;
|
||||
constructor();
|
||||
bindObject(obj: IBindLegendObj): void;
|
||||
unbindObject(obj: IBindLegendObj): void;
|
||||
}
|
||||
81
app/supreium_viewer/package/dist/types/src/cad/view/NodeBasedMeshVO.d.ts
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
import { Color } from 'three';
|
||||
import { NodeBasedMesh } from '../mesh/NodeBasedMesh';
|
||||
import { IBindLegendObj, Legend, LegendUpdateArg } from './Legend';
|
||||
import { SelectElement } from './SelectElement';
|
||||
import { ViewMode } from './ViewMode';
|
||||
import { ViewObject } from './ViewObject';
|
||||
import { ViewObjType } from './ViewObjType';
|
||||
/**
|
||||
* @brief 基于节点的网格对象显示组件
|
||||
*
|
||||
*/
|
||||
export declare class NodeBasedMeshVO extends ViewObject implements IBindLegendObj {
|
||||
protected wrappedLegend: Legend | null;
|
||||
protected wrappedMesh: NodeBasedMesh;
|
||||
protected wrappedMeshBak: NodeBasedMesh | null;
|
||||
private wrappedRenders;
|
||||
protected wrappedCurProp: string;
|
||||
protected wrappedDeformFactor: number;
|
||||
protected wrappedDeformOn: boolean;
|
||||
protected wrappedDeformAttr: string;
|
||||
protected wrappedSolidColor: Color;
|
||||
protected wrappedLineColor: Color;
|
||||
private wrappedNodeItemMap;
|
||||
private wrappedFaceItemMap;
|
||||
private wrappedEdgeItemMap;
|
||||
private wrappedShowNode;
|
||||
private wrappedLineContour;
|
||||
constructor(mesh: NodeBasedMesh);
|
||||
unbindLegend: (legend: Legend) => void;
|
||||
useLegend: boolean;
|
||||
protected onLegendUpdateCB: (arg?: LegendUpdateArg) => void;
|
||||
bindLegend: (legend: Legend) => void;
|
||||
setNodesColor(nodes: number[], color: number): void;
|
||||
type(): ViewObjType;
|
||||
protected computeSelects(_mode: ViewMode): boolean;
|
||||
protected computeRenders(mode: ViewMode): boolean;
|
||||
protected attachProperty(name: string, index: number): boolean;
|
||||
activeProperty(name: string, index?: number): boolean;
|
||||
setFaceColor(color: number): void;
|
||||
setLineColor(color: number): void;
|
||||
private updateProperty;
|
||||
get legend(): Legend | null;
|
||||
private updateNodeVisible;
|
||||
get showNode(): boolean;
|
||||
set showNode(show: boolean);
|
||||
get showLineContour(): boolean;
|
||||
set showLineContour(show: boolean);
|
||||
get deformOn(): boolean;
|
||||
set deformOn(open: boolean);
|
||||
get deformAttr(): string;
|
||||
set deformAttr(name: string);
|
||||
get deformFactor(): number;
|
||||
set deformFactor(factor: number);
|
||||
get mesh(): NodeBasedMesh;
|
||||
set mesh(mesh: NodeBasedMesh);
|
||||
get visible(): boolean;
|
||||
set visible(show: boolean);
|
||||
/**
|
||||
* @brief 拉伸为3D网格
|
||||
* @param off1-上偏移
|
||||
* @param off2-下偏移
|
||||
*/
|
||||
extrudeMesh(off1: number, off2: number): void;
|
||||
/**
|
||||
* @brief 旋转为3D网格
|
||||
* @param start-起始角度(度)
|
||||
* @param ang-旋转角度(度)
|
||||
* @param res-分辨率(度)
|
||||
*/
|
||||
revolveMesh(start: number, ang: number, res: number): void;
|
||||
/**
|
||||
* @brief 恢复为2D网格
|
||||
*/
|
||||
to2dMesh(): void;
|
||||
clearData(): void;
|
||||
}
|
||||
export declare function getMeshSurfNodesSel(sel: SelectElement, mode: ViewMode, angTol: number): SelectElement[];
|
||||
export declare function getMeshAllNodesSel(sel: SelectElement, mode: ViewMode): SelectElement[];
|
||||
export declare function getMeshSurfFacesSel(sel: SelectElement, mode: ViewMode, angTol: number): SelectElement[];
|
||||
export declare function getMeshAllFacesSel(sel: SelectElement, mode: ViewMode): SelectElement[];
|
||||
export declare function getMeshCurveEdgesSel(sel: SelectElement, mode: ViewMode, angTol: number): SelectElement[];
|
||||
41
app/supreium_viewer/package/dist/types/src/cad/view/Owner.d.ts
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
import { BRepObject } from '../brep/BRepObject';
|
||||
/**
|
||||
* @brief 拾取对象Owner类型
|
||||
*
|
||||
*/
|
||||
export declare enum OwnerType {
|
||||
OT_BRepOwner = 0,//! BRep类型owner
|
||||
OT_SelectOwner = 1,//! 拾取类型owner,其owner是SelectElement对象
|
||||
OT_MeshNode = 2,//! 网格节点类型owner
|
||||
OT_MeshEdge = 3,//! 网格边类型owner
|
||||
OT_MeshFace = 4,//! 网格面类型owner
|
||||
OT_MeshElement = 5,//! 网格单元类型owner
|
||||
OT_Triangulation = 6,//! 三角化对象owner
|
||||
OT_PolyGeometry = 7,//! 多边形几何对象owner
|
||||
OT_Custom = 8
|
||||
}
|
||||
/**
|
||||
* @brief owner类,用于表征拾取、显示的目标对象
|
||||
*
|
||||
*/
|
||||
export declare class Owner {
|
||||
readonly owner: unknown;
|
||||
readonly type: OwnerType;
|
||||
constructor(owner: unknown, type: OwnerType);
|
||||
/**
|
||||
* @brief 作为brep对象返回
|
||||
* @param
|
||||
*
|
||||
* @return
|
||||
* -<em>当owner类型为brep时,返回brep对象,否则返回null</em>
|
||||
*/
|
||||
asBRepObject(): BRepObject | null;
|
||||
/**
|
||||
* @brief 作为SelectElement返回
|
||||
* @param
|
||||
*
|
||||
* @return
|
||||
* -<em>select对象或null</em>
|
||||
*/
|
||||
asSelectElement(): unknown;
|
||||
}
|
||||
21
app/supreium_viewer/package/dist/types/src/cad/view/PlaneViewObject.d.ts
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
import { ViewMode } from './ViewMode';
|
||||
import { ViewObject } from './ViewObject';
|
||||
import { ViewObjType } from './ViewObjType';
|
||||
import { SupVector } from '../types';
|
||||
export declare class PlaneViewObject extends ViewObject {
|
||||
readonly origin: SupVector;
|
||||
readonly normal: SupVector;
|
||||
readonly xdir: SupVector;
|
||||
uMin: number;
|
||||
uMax: number;
|
||||
vMin: number;
|
||||
vMax: number;
|
||||
private wrappedRenders;
|
||||
private wrappedRenderTexts;
|
||||
constructor(origin?: SupVector, normal?: SupVector, xdir?: SupVector);
|
||||
type(): ViewObjType;
|
||||
protected computeSelects(mode: ViewMode): boolean;
|
||||
protected computeRenders(mode: ViewMode): boolean;
|
||||
appendText(text: string, position: [number, number, number]): void;
|
||||
clearData(): void;
|
||||
}
|
||||
25
app/supreium_viewer/package/dist/types/src/cad/view/PolyGeom2DVO.d.ts
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
import { ViewMode } from './ViewMode';
|
||||
import { ViewObject } from './ViewObject';
|
||||
import { ViewObjType } from './ViewObjType';
|
||||
import { PolyGeometry } from '../geom';
|
||||
export declare class PolyGeom2DVO extends ViewObject {
|
||||
private wrappedGeom;
|
||||
private wrappedRenders;
|
||||
private wrappedPos;
|
||||
private wrappedShowTriangles;
|
||||
private wrappedTrianglesCfg;
|
||||
constructor(geom: PolyGeometry);
|
||||
setTrianglesLineColor(color: number): void;
|
||||
setTrianglesLineWidth(width: number): void;
|
||||
type(): ViewObjType;
|
||||
protected computeSelects(mode: ViewMode): boolean;
|
||||
protected computeRenders(mode: ViewMode): boolean;
|
||||
private updateVisibility;
|
||||
get geom(): PolyGeometry;
|
||||
set geom(geom: PolyGeometry);
|
||||
get showTriangles(): boolean;
|
||||
set showTriangles(show: boolean);
|
||||
get visible(): boolean;
|
||||
set visible(show: boolean);
|
||||
clearData(): void;
|
||||
}
|
||||
25
app/supreium_viewer/package/dist/types/src/cad/view/PolyGeomVO.d.ts
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
import { ViewMode } from './ViewMode';
|
||||
import { ViewObject } from './ViewObject';
|
||||
import { ViewObjType } from './ViewObjType';
|
||||
import { PolyGeometry } from '../geom';
|
||||
export declare class PolyGeomVO extends ViewObject {
|
||||
private wrappedGeom;
|
||||
private wrappedRenders;
|
||||
private wrappedPos;
|
||||
private wrappedShowTriangles;
|
||||
private wrappedTrianglesCfg;
|
||||
constructor(geom: PolyGeometry);
|
||||
setTrianglesLineColor(color: number): void;
|
||||
setTrianglesLineWidth(width: number): void;
|
||||
type(): ViewObjType;
|
||||
protected computeSelects(mode: ViewMode): boolean;
|
||||
protected computeRenders(mode: ViewMode): boolean;
|
||||
private updateVisibility;
|
||||
get geom(): PolyGeometry;
|
||||
set geom(geom: PolyGeometry);
|
||||
get showTriangles(): boolean;
|
||||
set showTriangles(show: boolean);
|
||||
get visible(): boolean;
|
||||
set visible(show: boolean);
|
||||
clearData(): void;
|
||||
}
|
||||
27
app/supreium_viewer/package/dist/types/src/cad/view/RenderAnnoLine.d.ts
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
import { Line2D, Line2DConfig, ICadView, Vec3 } from '../../content';
|
||||
import { RenderAnnotationEle } from './RenderAnnotationEle';
|
||||
import { RenderEleType } from './RenderEleType';
|
||||
import { GroupConfig, RenderGroup } from './RenderGroup';
|
||||
import { SupMat4 } from '../types';
|
||||
export declare class RenderAnnoLine extends RenderAnnotationEle {
|
||||
protected wrappedLine: Line2D;
|
||||
constructor(points: Vec3[], group: RenderGroup, cfg: Line2DConfig, headArrow?: boolean, tailArrow?: boolean);
|
||||
get points(): Vec3[];
|
||||
set points(pnts: Vec3[]);
|
||||
get headArrow(): boolean;
|
||||
set headArrow(show: boolean);
|
||||
get tailArrow(): boolean;
|
||||
set tailArrow(show: boolean);
|
||||
get visible(): boolean;
|
||||
set visible(show: boolean);
|
||||
get config(): Line2DConfig;
|
||||
set config(cfg: Line2DConfig);
|
||||
transform(mat: SupMat4): void;
|
||||
type(): RenderEleType;
|
||||
display(engine: ICadView, _config: GroupConfig): boolean;
|
||||
remove(engine: ICadView): boolean;
|
||||
removeByOwner(engine: ICadView, owner: unknown, _clearData: boolean): boolean;
|
||||
copyData(group: RenderGroup): unknown;
|
||||
isEmpty(): boolean;
|
||||
hilight(cfg: GroupConfig): void;
|
||||
}
|
||||
28
app/supreium_viewer/package/dist/types/src/cad/view/RenderAnnoText.d.ts
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
import { Text2D, Text3D, TextConfig, ICadView, Vec3 } from '../../content';
|
||||
import { RenderAnnotationEle } from './RenderAnnotationEle';
|
||||
import { RenderEleType } from './RenderEleType';
|
||||
import { GroupConfig, RenderGroup } from './RenderGroup';
|
||||
import { SupMat4, SupVector } from '../types';
|
||||
export declare class RenderAnnoText extends RenderAnnotationEle {
|
||||
protected wrappedText: Text2D | Text3D | null;
|
||||
constructor(text: string, group: RenderGroup, cfg?: TextConfig | null);
|
||||
get text(): string;
|
||||
set text(str: string);
|
||||
private createText;
|
||||
get anchorPnt(): SupVector;
|
||||
set anchorPnt(pnt: SupVector);
|
||||
get direction(): number | Vec3;
|
||||
set direction(dir: number | Vec3);
|
||||
get facing(): Vec3;
|
||||
set facing(dir: Vec3);
|
||||
get visible(): boolean;
|
||||
set visible(show: boolean);
|
||||
transform(mat: SupMat4): void;
|
||||
type(): RenderEleType;
|
||||
display(engine: ICadView, config: GroupConfig): boolean;
|
||||
remove(engine: ICadView): boolean;
|
||||
removeByOwner(engine: ICadView, owner: unknown, clearData: boolean): boolean;
|
||||
isEmpty(): boolean;
|
||||
copyData(group: RenderGroup): unknown;
|
||||
hilight(cfg: GroupConfig): void;
|
||||
}
|
||||
6
app/supreium_viewer/package/dist/types/src/cad/view/RenderAnnotationEle.d.ts
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
import { Owner } from './Owner';
|
||||
import { RenderElement } from './RenderElement';
|
||||
export declare abstract class RenderAnnotationEle extends RenderElement {
|
||||
owner: Owner | null;
|
||||
isAnnotation(): boolean;
|
||||
}
|
||||
12
app/supreium_viewer/package/dist/types/src/cad/view/RenderEleType.d.ts
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* @brief 渲染对象类型
|
||||
*
|
||||
*/
|
||||
export declare enum RenderEleType {
|
||||
Invalid = 0,//! 无效
|
||||
Points = 1,//! 点集合
|
||||
LineSegments = 2,//! 线段集合(线段可以不连续)
|
||||
Mesh = 3,//! 面片集合
|
||||
Text = 4,//! 文本
|
||||
AnnoLine = 5
|
||||
}
|
||||
56
app/supreium_viewer/package/dist/types/src/cad/view/RenderElement.d.ts
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
import { ICadView } from '../../content';
|
||||
import { RenderEleType } from './RenderEleType';
|
||||
import { GroupConfig, RenderGroup } from './RenderGroup';
|
||||
import { SupMat4 } from '../types';
|
||||
/**
|
||||
* @brief 渲染元素对象,维护共享的attribute对象与与子对象,其子对象引用共同的attribute
|
||||
*
|
||||
*/
|
||||
export declare abstract class RenderElement {
|
||||
protected wrappedGroup: RenderGroup;
|
||||
constructor(group: RenderGroup);
|
||||
abstract get visible(): boolean;
|
||||
abstract set visible(show: boolean);
|
||||
isGeomEle(): boolean;
|
||||
isAnnotation(): boolean;
|
||||
abstract transform(mat: SupMat4): void;
|
||||
/**
|
||||
* @brief 获取渲染对象类型
|
||||
*
|
||||
* @return
|
||||
* -<em>RenderEleType 渲染对象类型</em>
|
||||
*/
|
||||
abstract type(): RenderEleType;
|
||||
/**
|
||||
* @brief 显示对象
|
||||
* @param engine 底层显示引擎
|
||||
*
|
||||
* @return
|
||||
* -<em>true 成功</em>
|
||||
* -<em>true 失败</em>
|
||||
*/
|
||||
abstract display(engine: ICadView, config: GroupConfig): boolean;
|
||||
/**
|
||||
* @brief 移除显示
|
||||
* @param engine 底层显示引擎
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
abstract remove(engine: ICadView): boolean;
|
||||
abstract removeByOwner(engine: ICadView, owner: unknown, clearData: boolean): boolean;
|
||||
abstract isEmpty(): boolean;
|
||||
/**
|
||||
* @brief 在group中创建一个拷贝对象,同时将element的数据拷贝到该对象中,不拷贝items对象
|
||||
* @param group 拷贝对象的容器
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
abstract copyData(group: RenderGroup): unknown;
|
||||
abstract hilight(cfg: GroupConfig): void;
|
||||
unHilight(): void;
|
||||
hilightOwner(cfg: GroupConfig, owner: unknown): void;
|
||||
unHilightOwner(owner: unknown): void;
|
||||
get group(): RenderGroup;
|
||||
}
|
||||
96
app/supreium_viewer/package/dist/types/src/cad/view/RenderGeomEle.d.ts
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
import { Float32BufferAttribute } from 'three';
|
||||
import { ICadView, ShapeConfig, ShapesBase } from '../../content';
|
||||
import { Owner } from './Owner';
|
||||
import { RenderElement } from './RenderElement';
|
||||
import { RenderEleType } from './RenderEleType';
|
||||
import { GroupConfig, RenderGroup } from './RenderGroup';
|
||||
import { SupMat4 } from '../types';
|
||||
/**
|
||||
* @brief 渲染元素对象子对象,每一个子元素对应于显示对象的最小组成单元
|
||||
*
|
||||
*/
|
||||
export declare class RenderElementItem {
|
||||
protected wrappedOwner: Owner | null;
|
||||
protected wrappedEle: RenderGeomEle;
|
||||
protected wrappedStartIndex: number;
|
||||
protected wrappedLength: number;
|
||||
constructor(ele: RenderGeomEle);
|
||||
get owner(): Owner | null;
|
||||
set owner(owner: Owner | null);
|
||||
get element(): RenderGeomEle;
|
||||
get start(): number;
|
||||
set start(index: number);
|
||||
get length(): number;
|
||||
set length(len: number);
|
||||
}
|
||||
/**
|
||||
* @brief 渲染元素对象,维护共享的attribute对象与与子对象,其子对象引用共同的attribute
|
||||
*
|
||||
*/
|
||||
export declare abstract class RenderGeomEle extends RenderElement {
|
||||
readonly items: RenderElementItem[];
|
||||
protected wrappedShapes: ShapesBase | null;
|
||||
constructor(group: RenderGroup);
|
||||
isGeomEle(): boolean;
|
||||
transform(mat: SupMat4): void;
|
||||
removeByOwner(engine: ICadView, owner: unknown, clearData: boolean): boolean;
|
||||
isEmpty(): boolean;
|
||||
get visible(): boolean;
|
||||
set visible(show: boolean);
|
||||
get shapes(): ShapesBase | null;
|
||||
set shapes(shapes: ShapesBase | null);
|
||||
abstract posAttr(): Float32BufferAttribute;
|
||||
/**
|
||||
* @brief
|
||||
* @param
|
||||
*
|
||||
* @return
|
||||
* -<em>1</em>
|
||||
*/
|
||||
getRenderItem(owner: any): RenderElementItem | undefined;
|
||||
/**
|
||||
* @brief 获取渲染对象类型
|
||||
*
|
||||
* @return
|
||||
* -<em>RenderEleType 渲染对象类型</em>
|
||||
*/
|
||||
abstract type(): RenderEleType;
|
||||
/**
|
||||
* @brief 显示对象
|
||||
* @param engine 底层显示引擎
|
||||
*
|
||||
* @return
|
||||
* -<em>true 成功</em>
|
||||
* -<em>true 失败</em>
|
||||
*/
|
||||
abstract display(engine: ICadView, config: GroupConfig): boolean;
|
||||
/**
|
||||
* @brief 移除显示
|
||||
* @param engine 底层显示引擎
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
remove(engine: ICadView): boolean;
|
||||
/**
|
||||
* @brief 创建子对象
|
||||
* @param
|
||||
*
|
||||
* @return
|
||||
* -<em>创建的对象</em>
|
||||
*/
|
||||
createItem(owner: Owner, start: number, length: number): RenderElementItem;
|
||||
displayItem(config: ShapeConfig, item: RenderElementItem, isHili?: boolean): boolean;
|
||||
protected displayAllItems(config: ShapeConfig, isHili?: boolean): void;
|
||||
removeItem(item: RenderElementItem, clearData?: boolean): boolean;
|
||||
protected removeAllItems(clearData?: boolean): boolean;
|
||||
/**
|
||||
* @brief 是否为同一个几何
|
||||
* @param
|
||||
*
|
||||
* @return
|
||||
* -<em>1</em>
|
||||
*/
|
||||
abstract isSameGeom(ele: RenderGeomEle): boolean;
|
||||
get group(): RenderGroup;
|
||||
}
|
||||
76
app/supreium_viewer/package/dist/types/src/cad/view/RenderGroup.d.ts
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
import { Color } from 'three';
|
||||
import { Line2DConfig, Text2DConfig, ICadView, LineConfig, PointConfig, ShapeConfig, TriangleConfig, ClippingMethod } from '../../content';
|
||||
import { RenderElement } from './RenderElement';
|
||||
import { RenderElementItem } from './RenderGeomEle';
|
||||
import { ViewRenderObject } from './ViewObject';
|
||||
import { SupMat4 } from '../types';
|
||||
/**
|
||||
* @brief group对象渲染设置类,包括点、线、面的显示设置
|
||||
*
|
||||
*/
|
||||
export declare class GroupConfig {
|
||||
protected wrappedTriConfig: TriangleConfig;
|
||||
protected wrappedLineConfig: LineConfig;
|
||||
protected wrappedPntConfig: PointConfig;
|
||||
clippingMethod: ClippingMethod;
|
||||
clippingColor: Color;
|
||||
customCfgs: Map<RenderElementItem, ShapeConfig>;
|
||||
textCfg: Text2DConfig;
|
||||
line2DCfg: Line2DConfig;
|
||||
constructor();
|
||||
get lineConfig(): LineConfig;
|
||||
get pntConfig(): PointConfig;
|
||||
get triConfig(): TriangleConfig;
|
||||
get textConfig(): Text2DConfig;
|
||||
}
|
||||
/**
|
||||
* @brief 渲染对象group,用于将一系列相关联的对象组织起来
|
||||
*
|
||||
*/
|
||||
export declare class RenderGroup {
|
||||
readonly eles: RenderElement[];
|
||||
readonly config: GroupConfig;
|
||||
protected wrappedObject: ViewRenderObject | null;
|
||||
constructor(object?: ViewRenderObject | null);
|
||||
get visible(): boolean;
|
||||
set visible(show: boolean);
|
||||
/**
|
||||
* @brief 变换对象
|
||||
* @param matrix 变换矩阵
|
||||
*
|
||||
* @return
|
||||
* -<em>无</em>
|
||||
*/
|
||||
transform(matrix: SupMat4): void;
|
||||
/**
|
||||
* @brief
|
||||
* @param
|
||||
*
|
||||
* @return
|
||||
* -<em>1</em>
|
||||
*/
|
||||
getRenderItem(owner: any): RenderElementItem | undefined;
|
||||
/**
|
||||
* @brief 显示group对象
|
||||
* @param engine 底层显示引擎
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
display(engine: ICadView): boolean;
|
||||
/**
|
||||
* @brief 移除group对象
|
||||
* @param engine 底层显示引擎
|
||||
* @param clearData 是否清除显示数据
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
remove(engine: ICadView, clearData?: boolean): boolean;
|
||||
removeElement(engine: ICadView, ele: RenderElement, clearData?: boolean): boolean;
|
||||
removeByOwner(engine: ICadView, owner: unknown, clearData?: boolean): void;
|
||||
clearData(): void;
|
||||
protected clearElement(ele: RenderElement): void;
|
||||
hilight(cfg: GroupConfig): void;
|
||||
unHilight(): void;
|
||||
}
|
||||
33
app/supreium_viewer/package/dist/types/src/cad/view/RenderLineSegments.d.ts
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
import { BufferAttribute, Float32BufferAttribute } from 'three';
|
||||
import { ICadView } from '../../content';
|
||||
import { RenderEleType } from './RenderEleType';
|
||||
import { RenderGeomEle } from './RenderGeomEle';
|
||||
import { GroupConfig, RenderGroup } from './RenderGroup';
|
||||
/**
|
||||
* @brief 线段链渲染对象
|
||||
*
|
||||
*/
|
||||
export declare class RenderLineSegments extends RenderGeomEle {
|
||||
display(engine: ICadView, config: GroupConfig): boolean;
|
||||
posAttr(): Float32BufferAttribute;
|
||||
type(): RenderEleType;
|
||||
/**
|
||||
* @brief 填充数据
|
||||
* @param nodes 顶点数组,3个为一个顶点
|
||||
* @param index 下标数组,2个为一组,表示一条线段,如果为空时,两个点为一条线段
|
||||
*
|
||||
* @return
|
||||
* -<em>无</em>
|
||||
*/
|
||||
fillData(nodes: number[] | Float32BufferAttribute, index: number[] | undefined, customAttributes?: {
|
||||
name: string;
|
||||
attr: BufferAttribute;
|
||||
attributeSize?: number;
|
||||
}[]): void;
|
||||
copyData(group: RenderGroup): unknown;
|
||||
isSameGeom(ele: RenderGeomEle): boolean;
|
||||
hilight(cfg: GroupConfig): void;
|
||||
unHilight(): void;
|
||||
hilightOwner(cfg: GroupConfig, owner: unknown): void;
|
||||
unHilightOwner(owner: unknown): void;
|
||||
}
|
||||
34
app/supreium_viewer/package/dist/types/src/cad/view/RenderMesh.d.ts
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
import { BufferAttribute, Float32BufferAttribute } from 'three';
|
||||
import { ICadView } from '../../content';
|
||||
import { RenderEleType } from './RenderEleType';
|
||||
import { RenderGeomEle } from './RenderGeomEle';
|
||||
import { GroupConfig, RenderGroup } from './RenderGroup';
|
||||
/**
|
||||
* @brief 面片渲染数据
|
||||
*
|
||||
*/
|
||||
export declare class RenderMesh extends RenderGeomEle {
|
||||
display(engine: ICadView, config: GroupConfig): boolean;
|
||||
posAttr(): Float32BufferAttribute;
|
||||
type(): RenderEleType;
|
||||
/**
|
||||
* @brief 填充数据
|
||||
* @param nodes 顶点数组,三个为一点
|
||||
* @param normals 顶点法向数组,三个为一个方向
|
||||
* @param index 顶点下标数组,三个为一个三角形,当为空时,三个顶点为一个三角形
|
||||
*
|
||||
* @return
|
||||
* -<em>1</em>
|
||||
*/
|
||||
fillData(nodes: number[] | Float32BufferAttribute, normals: number[], index: number[] | undefined, customAttributes?: {
|
||||
name: string;
|
||||
attr: BufferAttribute;
|
||||
attributeSize?: number;
|
||||
}[]): void;
|
||||
copyData(group: RenderGroup): unknown;
|
||||
isSameGeom(ele: RenderGeomEle): boolean;
|
||||
hilight(cfg: GroupConfig): void;
|
||||
unHilight(): void;
|
||||
hilightOwner(cfg: GroupConfig, owner: unknown): void;
|
||||
unHilightOwner(owner: unknown): void;
|
||||
}
|
||||
25
app/supreium_viewer/package/dist/types/src/cad/view/RenderPoints.d.ts
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
import { Float32BufferAttribute } from 'three';
|
||||
import { ICadView } from '../../content';
|
||||
import { RenderEleType } from './RenderEleType';
|
||||
import { GroupConfig, RenderGroup } from './RenderGroup';
|
||||
import { RenderGeomEle } from './RenderGeomEle';
|
||||
export declare class RenderPoints extends RenderGeomEle {
|
||||
display(engine: ICadView, config: GroupConfig): boolean;
|
||||
posAttr(): Float32BufferAttribute;
|
||||
type(): RenderEleType;
|
||||
/**
|
||||
* @brief 填充数据
|
||||
* @param nodes 顶点数组,三个为一点
|
||||
* @param index 顶点下标数组,一个为一个点
|
||||
*
|
||||
* @return
|
||||
* -<em>1</em>
|
||||
*/
|
||||
fillData(nodes: number[] | Float32BufferAttribute, index: number[] | undefined): void;
|
||||
copyData(group: RenderGroup): unknown;
|
||||
isSameGeom(ele: RenderGeomEle): boolean;
|
||||
hilight(cfg: GroupConfig): void;
|
||||
unHilight(): void;
|
||||
hilightOwner(cfg: GroupConfig, owner: unknown): void;
|
||||
unHilightOwner(owner: unknown): void;
|
||||
}
|
||||
50
app/supreium_viewer/package/dist/types/src/cad/view/SelectElement.d.ts
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
import { IHitInfo } from '../../content';
|
||||
import { SelectEleType, SelectMode } from './SelectMode';
|
||||
import { Owner } from './Owner';
|
||||
import { ViewSelectObject } from './ViewObject';
|
||||
import { GroupConfig, RenderGroup } from './RenderGroup';
|
||||
import { RenderElement } from './RenderElement';
|
||||
/**
|
||||
* @brief 拾取对象元素
|
||||
*
|
||||
*/
|
||||
export declare abstract class SelectElement {
|
||||
readonly selectMode: SelectMode;
|
||||
readonly object: ViewSelectObject;
|
||||
readonly owner: Owner;
|
||||
enable: boolean;
|
||||
constructor(mode: number, owner: Owner, object: ViewSelectObject);
|
||||
abstract type(): SelectEleType;
|
||||
/**
|
||||
* @brief 相交信息是否为该对象
|
||||
* @param info 相交信息
|
||||
*
|
||||
* @return
|
||||
* -<em>true 是</em>
|
||||
* -<em>false 不是</em>
|
||||
*/
|
||||
abstract isSelected(info: IHitInfo): boolean;
|
||||
/**
|
||||
* @brief 获取拾取对象的显示内容
|
||||
* @param group 显示内容被填充的对象
|
||||
* @param owner 创建render的owner
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
abstract getSelRender(group: RenderGroup, owner: unknown): boolean;
|
||||
/**
|
||||
* @brief 获取关联的显示元素
|
||||
* @param
|
||||
*
|
||||
* @return
|
||||
* -<em>关联的显示元素数组</em>
|
||||
*/
|
||||
abstract getRelatedRenders(): RenderElement[];
|
||||
/**
|
||||
* @brief 高亮
|
||||
* @param cfg-高亮属性
|
||||
*/
|
||||
abstract hilight(cfg: GroupConfig): boolean;
|
||||
abstract unHiligth(): boolean;
|
||||
}
|
||||
18
app/supreium_viewer/package/dist/types/src/cad/view/SelectGroupEle.d.ts
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
import { IHitInfo } from '../../content';
|
||||
import { RenderElement } from './RenderElement';
|
||||
import { GroupConfig, RenderGroup } from './RenderGroup';
|
||||
import { SelectElement } from './SelectElement';
|
||||
import { SelectEleType } from './SelectMode';
|
||||
/**
|
||||
* @brief 拾取组对象,由一些的拾取子对象构成
|
||||
*
|
||||
*/
|
||||
export declare class SelectGroupEle extends SelectElement {
|
||||
readonly subElements: SelectElement[];
|
||||
isSelected(info: IHitInfo): boolean;
|
||||
getSelRender(group: RenderGroup, owner: unknown): boolean;
|
||||
type(): SelectEleType;
|
||||
getRelatedRenders(): RenderElement[];
|
||||
hilight(cfg: GroupConfig): boolean;
|
||||
unHiligth(): boolean;
|
||||
}
|
||||
74
app/supreium_viewer/package/dist/types/src/cad/view/SelectManager.d.ts
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
import { ICadView, IHitInfo } from '../../content';
|
||||
import { SelectElement } from './SelectElement';
|
||||
import { ViewMode } from './ViewMode';
|
||||
import { ViewSelectObject } from './ViewObject';
|
||||
export type SelectFilter = {
|
||||
func: (ele: SelectElement) => boolean;
|
||||
force: boolean;
|
||||
};
|
||||
/**
|
||||
* @brief 拾取管理器
|
||||
*
|
||||
*/
|
||||
export declare class SelectManager {
|
||||
readonly filters: SelectFilter[];
|
||||
private wrappedSelInfos;
|
||||
private wrappedEngine;
|
||||
private wrappedShapeSelMap;
|
||||
private wrappedHitInfos;
|
||||
/**
|
||||
* @brief 载入拾取对象
|
||||
* @param obj 被载入的拾取对象
|
||||
* @param mode 显示模式
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
loadSelectObj(obj: ViewSelectObject, mode: ViewMode): boolean;
|
||||
/**
|
||||
* @brief 移除拾取对象
|
||||
* @param obj 移除的拾取对象
|
||||
* @param mode 显示模式
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
removeSelectObj(obj: ViewSelectObject, mode: ViewMode): boolean;
|
||||
/**
|
||||
* @brief 点选拾取对象
|
||||
* @param x x坐标,dom元素坐标
|
||||
* @param y y坐标,dom元素坐标
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
select(infos: IHitInfo[]): boolean;
|
||||
/**
|
||||
* @brief 框选拾取对象
|
||||
* @param _min 框选最小点坐标,dom元素坐标
|
||||
* @param _max 框选最大点坐标,dom元素坐标
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
boxSelect(_min: number[], _max: number[]): boolean;
|
||||
/**
|
||||
* @brief 获取拾取对象
|
||||
*
|
||||
* @return
|
||||
* -<em>上次拾取到的所有对象</em>
|
||||
*/
|
||||
getSelectEles(): SelectElement[];
|
||||
/**
|
||||
* @brief 获取拾取点信息
|
||||
* @param 拾取对象
|
||||
*
|
||||
* @return 拾取点信息
|
||||
*/
|
||||
getHitInfo(ele: SelectElement): IHitInfo | undefined;
|
||||
get selTol(): number;
|
||||
set selTol(tol: number);
|
||||
get infos(): IHitInfo[];
|
||||
get engine(): ICadView | null;
|
||||
set engine(engine: ICadView | null);
|
||||
}
|
||||
40
app/supreium_viewer/package/dist/types/src/cad/view/SelectMode.d.ts
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
import { ShapeType } from '../brep/BRepType';
|
||||
/**
|
||||
* @brief 拾取模式
|
||||
*
|
||||
*/
|
||||
export declare enum SelectMode {
|
||||
SM_None = 0,//! 无拾取模式
|
||||
SM_BRepVertex = 1,//! 顶点拾取模式
|
||||
SM_BRepEdge = 2,//! 边拾取模式
|
||||
SM_BRepFace = 3,//! 面拾取模式
|
||||
SM_BRepWire = 4,//! wire拾取模式
|
||||
SM_BRepShell = 5,//! shell拾取模式
|
||||
SM_BRepSolid = 6,//! solid拾取模式
|
||||
SM_BRepCompound = 7,//! compound拾取模式
|
||||
SM_MeshNode = 8,//! 网格节点拾取模式
|
||||
SM_MeshEdge = 9,//! 网格边拾取模式
|
||||
SM_MeshFace = 10,//! 网格面拾取模式
|
||||
SM_MeshElement = 11
|
||||
}
|
||||
/**
|
||||
* @brief 扩展拾取模式
|
||||
*
|
||||
*/
|
||||
export declare enum ExtendSelMode {
|
||||
ESM_Undefined = 0,
|
||||
ESM_MeshSurfNodes = 1,//! 选择特征面网格点
|
||||
ESM_MeshAllNodes = 2,//! 选择所有网格点
|
||||
ESM_MeshSurfFaces = 3,//! 选择特征面网格面
|
||||
ESM_MeshAllFaces = 4,//! 选择所有网格面
|
||||
ESM_MeshCurveEdges = 5
|
||||
}
|
||||
export declare function BRepTypeToSelectType(brepType: ShapeType): number;
|
||||
/**
|
||||
* @brief 拾取元素类型
|
||||
*
|
||||
*/
|
||||
export declare enum SelectEleType {
|
||||
SET_Single = 0,//! 单个元素类型
|
||||
SET_Group = 1
|
||||
}
|
||||
21
app/supreium_viewer/package/dist/types/src/cad/view/SelectSingleEle.d.ts
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
import { IHitInfo } from '../../content';
|
||||
import { RenderElement } from './RenderElement';
|
||||
import { RenderElementItem } from './RenderGeomEle';
|
||||
import { GroupConfig, RenderGroup } from './RenderGroup';
|
||||
import { SelectElement } from './SelectElement';
|
||||
import { SelectEleType } from './SelectMode';
|
||||
import { ViewSelectObject } from './ViewObject';
|
||||
/**
|
||||
* @brief 拾取单元素对象,每个对象与一个显示对象对应
|
||||
*
|
||||
*/
|
||||
export declare class SelectSingleEle extends SelectElement {
|
||||
readonly target: RenderElementItem;
|
||||
constructor(target: RenderElementItem, mode: number, object: ViewSelectObject);
|
||||
isSelected(info: IHitInfo): boolean;
|
||||
getSelRender(group: RenderGroup, o: unknown): boolean;
|
||||
type(): SelectEleType;
|
||||
getRelatedRenders(): RenderElement[];
|
||||
hilight(cfg: GroupConfig): boolean;
|
||||
unHiligth(): boolean;
|
||||
}
|
||||
42
app/supreium_viewer/package/dist/types/src/cad/view/StreamLineVO.d.ts
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
import { Color, Float32BufferAttribute } from 'three';
|
||||
import { StreamLine, StreamLineProp } from '../mesh';
|
||||
import { IBindLegendObj, Legend, LegendUpdateArg } from './Legend';
|
||||
import { ViewMode } from './ViewMode';
|
||||
import { ViewObject } from './ViewObject';
|
||||
import { ViewObjType } from './ViewObjType';
|
||||
interface IPropertyData {
|
||||
attr: Float32BufferAttribute;
|
||||
min: number;
|
||||
max: number;
|
||||
size: number;
|
||||
}
|
||||
/**
|
||||
* @brief 流线对象显示组件
|
||||
*
|
||||
*/
|
||||
export declare class StreamLineVO extends ViewObject implements IBindLegendObj {
|
||||
protected wrappedLegend: Legend | null;
|
||||
protected wrappedGeom: StreamLine;
|
||||
private wrappedRenders;
|
||||
protected wrappedProperties: Map<string, IPropertyData>;
|
||||
protected wrappedCurProp: string;
|
||||
protected wrappedLineColor: Color;
|
||||
constructor(geom: StreamLine);
|
||||
protected onLegendUpdateCB: (arg?: LegendUpdateArg) => void;
|
||||
unbindLegend: (legend: Legend) => void;
|
||||
useLegend: boolean;
|
||||
bindLegend: (legend: Legend) => void;
|
||||
type(): ViewObjType;
|
||||
protected computeSelects(_mode: ViewMode): boolean;
|
||||
protected computeRenders(mode: ViewMode): boolean;
|
||||
attachProperty(data: StreamLineProp): boolean;
|
||||
activeProperty(name: string): boolean;
|
||||
setLineColor(color: number): void;
|
||||
private updateProperty;
|
||||
private legendCB;
|
||||
get legend(): Legend | null;
|
||||
get geom(): StreamLine;
|
||||
get props(): Map<string, IPropertyData>;
|
||||
clearData(): void;
|
||||
}
|
||||
export {};
|
||||
16
app/supreium_viewer/package/dist/types/src/cad/view/TriangulationVO.d.ts
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
import { Triangulation } from '../geom';
|
||||
import { ViewMode } from './ViewMode';
|
||||
import { ViewObject } from './ViewObject';
|
||||
import { ViewObjType } from './ViewObjType';
|
||||
export declare class TriangulationVO extends ViewObject {
|
||||
protected wrappedTriangles: Triangulation;
|
||||
private wrappedRenders;
|
||||
private wrappedPos;
|
||||
constructor(triangles: Triangulation);
|
||||
get triangulation(): Triangulation;
|
||||
set triangulation(triangles: Triangulation);
|
||||
type(): ViewObjType;
|
||||
protected computeSelects(mode: ViewMode): boolean;
|
||||
protected computeRenders(mode: ViewMode): boolean;
|
||||
clearData(): void;
|
||||
}
|
||||
57
app/supreium_viewer/package/dist/types/src/cad/view/VectorGraphVO.d.ts
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
import { Color, Float32BufferAttribute } from 'three';
|
||||
import { VectorData } from '../mesh';
|
||||
import { IBindLegendObj, Legend, LegendUpdateArg } from './Legend';
|
||||
import { ViewMode } from './ViewMode';
|
||||
import { ViewObject } from './ViewObject';
|
||||
import { ViewObjType } from './ViewObjType';
|
||||
interface IPropertyData {
|
||||
attr: Float32BufferAttribute;
|
||||
min: number;
|
||||
max: number;
|
||||
}
|
||||
export interface IArrowCfg {
|
||||
scale: boolean;
|
||||
tailLen: number;
|
||||
tailRad: number;
|
||||
headLen: number;
|
||||
headRad: number;
|
||||
}
|
||||
/**
|
||||
* @brief 矢量图对象显示组件
|
||||
*
|
||||
*/
|
||||
export declare class VectorGraphVO extends ViewObject implements IBindLegendObj {
|
||||
readonly arrowCfg: IArrowCfg;
|
||||
protected wrappedLegend: Legend | null;
|
||||
protected wrappedData: VectorData;
|
||||
private wrappedRenders;
|
||||
protected wrappedProperty: IPropertyData | null;
|
||||
protected wrappedUseProp: boolean;
|
||||
protected wrappedScaled: boolean;
|
||||
protected wrappedOrigin: number;
|
||||
protected wrappedFactor: number;
|
||||
protected wrappedSolidColor: Color;
|
||||
constructor(data: VectorData);
|
||||
protected onLegendUpdateCB: (arg?: LegendUpdateArg) => void;
|
||||
unbindLegend: (legend: Legend) => void;
|
||||
useLegend: boolean;
|
||||
bindLegend: (legend: Legend) => void;
|
||||
type(): ViewObjType;
|
||||
protected computeSelects(_mode: ViewMode): boolean;
|
||||
protected computeRenders(mode: ViewMode): boolean;
|
||||
get useProperty(): boolean;
|
||||
set useProperty(use: boolean);
|
||||
setFaceColor(color: number): void;
|
||||
private updateProperty;
|
||||
get legend(): Legend | null;
|
||||
get data(): VectorData;
|
||||
get factor(): number;
|
||||
set factor(factor: number);
|
||||
get origin(): number;
|
||||
set origin(origin: number);
|
||||
get scaled(): boolean;
|
||||
set scaled(scale: boolean);
|
||||
get prop(): IPropertyData | null;
|
||||
clearData(): void;
|
||||
}
|
||||
export {};
|
||||
239
app/supreium_viewer/package/dist/types/src/cad/view/View.d.ts
vendored
Normal file
@@ -0,0 +1,239 @@
|
||||
import { Vector3 } from 'three';
|
||||
import { LiteEvent } from '../../core';
|
||||
import { ICadView, IHitInfo, IContentManager } from '../../content';
|
||||
import { GroupConfig, RenderGroup } from './RenderGroup';
|
||||
import { SelectElement } from './SelectElement';
|
||||
import { SelectManager } from './SelectManager';
|
||||
import { ExtendSelMode, SelectMode } from './SelectMode';
|
||||
import { ViewMode } from './ViewMode';
|
||||
import { ViewObject } from './ViewObject';
|
||||
import { LegendManager } from './LegendManager';
|
||||
import { NodeBasedMeshVO } from './NodeBasedMeshVO';
|
||||
import { SupColor, SupVec2, SupVector } from '../types';
|
||||
export declare enum enSelectEvent {
|
||||
AddSelect = 0,
|
||||
DelSelect = 1
|
||||
}
|
||||
export interface SelectEventArg {
|
||||
event: enSelectEvent;
|
||||
arg: SelectElement[];
|
||||
}
|
||||
export declare enum ViewOrientation {
|
||||
Top = 0,
|
||||
Bottom = 1,
|
||||
Front = 2,
|
||||
Back = 3,
|
||||
Left = 4,
|
||||
Right = 5,
|
||||
TopFrontLeft = 6
|
||||
}
|
||||
export declare enum RotationMode {
|
||||
Dynamic = 0,
|
||||
XAxis = 1,
|
||||
YAxis = 2,
|
||||
ZAxis = 3,
|
||||
Custom = 4
|
||||
}
|
||||
export declare enum InteractiveMode {
|
||||
Normal = 0,
|
||||
CreateLine = 1
|
||||
}
|
||||
export declare enum InterEventType {
|
||||
SelectStart = 0,
|
||||
SelectEnd = 1
|
||||
}
|
||||
export interface InterEventArg {
|
||||
type: InterEventType;
|
||||
args: unknown;
|
||||
}
|
||||
export interface CreateLineArgs extends InterEventArg {
|
||||
args: SupVector;
|
||||
}
|
||||
/**
|
||||
* @brief 三维视图对象
|
||||
*
|
||||
*/
|
||||
export declare class View {
|
||||
selectMode: SelectMode;
|
||||
selectEvent: LiteEvent<SelectEventArg>;
|
||||
interEvent: LiteEvent<InterEventArg>;
|
||||
readonly legendMgr: LegendManager;
|
||||
extendSelMode: ExtendSelMode;
|
||||
extendSelParam: number[];
|
||||
protected wrappedEngine: (ICadView & IContentManager) | undefined;
|
||||
protected wrappedObjects: ViewObject[];
|
||||
protected wrappedViewMode: ViewMode;
|
||||
protected wrappedSelManager: SelectManager;
|
||||
protected wrappedSelectGroup: RenderGroup;
|
||||
protected wrappedDynSelGroup: RenderGroup;
|
||||
protected wrappedDetectedEle: SelectElement | null;
|
||||
protected wrappedSelectedEles: SelectElement[];
|
||||
private wrappedEnableClipping;
|
||||
private wrappedEnableDynSel;
|
||||
private wrappedInterMode;
|
||||
private wrappedCLPS;
|
||||
private wrappedCLPE;
|
||||
private wrappedCLRender;
|
||||
get dynSelCfg(): GroupConfig;
|
||||
get selConfig(): GroupConfig;
|
||||
constructor();
|
||||
bindEngine(engine: ICadView): void;
|
||||
get enableClipping(): boolean;
|
||||
set enableClipping(value: boolean);
|
||||
get enableDynSel(): boolean;
|
||||
set enableDynSel(enable: boolean);
|
||||
set selectTol(value: number);
|
||||
get selectTol(): number;
|
||||
private fitRange;
|
||||
/**
|
||||
* @brief 适应旋转中心
|
||||
*/
|
||||
fitRotCenter(objs?: ViewObject[]): void;
|
||||
/**
|
||||
* @brief 适合窗口
|
||||
*/
|
||||
fitAll(): void;
|
||||
fitObjects(objs: ViewObject[]): void;
|
||||
private updateCB;
|
||||
/**
|
||||
* @brief 显示对象
|
||||
* @param obj - 待显示对象
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
display(obj: ViewObject): boolean;
|
||||
reDisplay(obj: ViewObject): boolean;
|
||||
/**
|
||||
* @brief 移除对象
|
||||
* @param
|
||||
*
|
||||
* @return
|
||||
* -<em>移除是否成功</em>
|
||||
*/
|
||||
remove(obj: ViewObject): boolean;
|
||||
/**
|
||||
* @brief 移除所有对象
|
||||
*/
|
||||
removeAll(): void;
|
||||
/**
|
||||
* @brief 检测对象
|
||||
* @param x - dom元素的offsetX
|
||||
* @param y - dom元素的offsetY
|
||||
*
|
||||
*/
|
||||
detect(infos: IHitInfo[] | undefined): void;
|
||||
/**
|
||||
* @brief 清除detected对象
|
||||
* @param
|
||||
*
|
||||
* @return
|
||||
* -<em>无</em>
|
||||
*/
|
||||
clearDetected(): void;
|
||||
/**
|
||||
* @brief 拾取对象
|
||||
* @param ele 被拾取的对象
|
||||
*/
|
||||
selectElement(ele: SelectElement): void;
|
||||
/**
|
||||
* @brief 拾取多个对象
|
||||
* @param eles 被拾取的对象数组
|
||||
*/
|
||||
selectElements(eles: SelectElement[]): void;
|
||||
/**
|
||||
* @brief 选中指定网格对象所有节点
|
||||
* @param obj-指定网格对象
|
||||
*/
|
||||
selectAllNodes(obj: NodeBasedMeshVO): void;
|
||||
/**
|
||||
* @brief 获取拾取点坐标
|
||||
* @param ele 拾取的对象
|
||||
*/
|
||||
getHitPoint(ele: SelectElement): Vector3 | undefined;
|
||||
/**
|
||||
* @brief 拾取检测到的对象
|
||||
*
|
||||
* @return
|
||||
* -<em>无</em>
|
||||
*/
|
||||
selectDetected(): void;
|
||||
/**
|
||||
* @brief 移除拾取对象
|
||||
* @param ele 被移除的拾取对象
|
||||
*
|
||||
* @return
|
||||
* -<em>无</em>
|
||||
*/
|
||||
removeSelect(ele: SelectElement): void;
|
||||
private removeSelectByIndex;
|
||||
clearSelect(): void;
|
||||
/**
|
||||
* @brief 拾取对象
|
||||
* @param x - dom元素的offsetX
|
||||
* @param y - dom元素的offsetY
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
select(infos: IHitInfo[]): void;
|
||||
private updateObjViewMode;
|
||||
private updateObject;
|
||||
get viewMode(): ViewMode;
|
||||
set viewMode(mode: ViewMode);
|
||||
get selects(): SelectElement[];
|
||||
get selManager(): SelectManager;
|
||||
viewAt(orient: ViewOrientation): void;
|
||||
lookAt(eye: SupVector, target: SupVector, up: SupVector): void;
|
||||
setBgColor(color: SupColor | SupColor[]): void;
|
||||
activeLegend(): void;
|
||||
deactiveLegend(): void;
|
||||
screenToWorld(sPos: SupVec2): {
|
||||
pos: SupVector;
|
||||
dir: SupVector;
|
||||
};
|
||||
worldToScreen(wPos: SupVector): SupVec2;
|
||||
get engine(): (ICadView & IContentManager) | undefined;
|
||||
get detectedElement(): SelectElement | null;
|
||||
/**
|
||||
* @brief 设置旋转模式
|
||||
* @param mode-旋转模式
|
||||
* @param axis-旋转轴
|
||||
*/
|
||||
setRotMode(mode: RotationMode, axis?: {
|
||||
pos: SupVector;
|
||||
dir: SupVector;
|
||||
} | undefined): void;
|
||||
/**
|
||||
* @brief 使能标尺
|
||||
*/
|
||||
get enableRuler(): boolean;
|
||||
set enableRuler(enable: boolean);
|
||||
/**
|
||||
* @brief 切换2D、3D模式
|
||||
*/
|
||||
set2DMode(enable: boolean): void;
|
||||
/**
|
||||
* @brief 生成label位置
|
||||
*/
|
||||
getLabelTextAnchor(anchor: SupVector, offset?: SupVec2): SupVector;
|
||||
/**
|
||||
* @brief 使能交互模式
|
||||
*/
|
||||
enableInterMode(mode: InteractiveMode): boolean;
|
||||
get interMode(): InteractiveMode;
|
||||
private createLineEvent;
|
||||
get createLineStart(): SupVector | null;
|
||||
get createLineEnd(): SupVector | null;
|
||||
/**
|
||||
* @brief 高亮viewObject对象
|
||||
* @param obj-需要高亮的viewObject对象
|
||||
* @param cfg-高亮配置
|
||||
*
|
||||
* @return 高亮成功与否
|
||||
*/
|
||||
hilightObject(obj: ViewObject, cfg: GroupConfig): boolean;
|
||||
unHilight(obj: ViewObject): boolean;
|
||||
hilightOwner(obj: ViewObject, owner: unknown, cfg: GroupConfig): void;
|
||||
unHilightOwner(obj: ViewObject, owner: unknown): void;
|
||||
}
|
||||
9
app/supreium_viewer/package/dist/types/src/cad/view/ViewMode.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
/**
|
||||
* @brief 显示模式枚举
|
||||
*
|
||||
*/
|
||||
export declare enum ViewMode {
|
||||
WireFrame = 0,//! 线框模式
|
||||
Shaded = 1,//! 面渲染模式
|
||||
WireShaded = 2
|
||||
}
|
||||
21
app/supreium_viewer/package/dist/types/src/cad/view/ViewObjType.d.ts
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
/**
|
||||
* @brief 视图对象类型
|
||||
*
|
||||
*/
|
||||
export declare enum ViewObjType {
|
||||
Invalid = 0,//! 无效类型
|
||||
BRepType = 1,//! BRep对象类型
|
||||
CellMeshType = 2,//! CellMesh对象类型
|
||||
NodeMeshType = 3,//! NodeMesh对象类型
|
||||
VectorGraphType = 4,//! 矢量图对象类型
|
||||
StreamLineType = 5,//! 流线图对象类型
|
||||
TriangulationType = 6,//! 三角化对象类型
|
||||
PlaneType = 7,//! 平面对象
|
||||
PolyGeomType = 8,//! 多边形几何对象类型
|
||||
DatumPointType = 9,// datum point
|
||||
DatumAxisType = 10,// datum axis
|
||||
LengthDim3DType = 11,// 长度尺寸类型
|
||||
AnnoPlaneType = 12,// 平面标识对象
|
||||
AnnoLabelType = 13,// 标签对象
|
||||
CustomType = 1000
|
||||
}
|
||||
137
app/supreium_viewer/package/dist/types/src/cad/view/ViewObject.d.ts
vendored
Normal file
@@ -0,0 +1,137 @@
|
||||
import { LiteEvent } from '../../core';
|
||||
import { ICadView, PointShape, ShapeConfig } from '../../content';
|
||||
import { RenderElementItem } from './RenderGeomEle';
|
||||
import { RenderGroup } from './RenderGroup';
|
||||
import { SelectElement } from './SelectElement';
|
||||
import { SelectMode } from './SelectMode';
|
||||
import { ViewMode } from './ViewMode';
|
||||
import { ViewObjType } from './ViewObjType';
|
||||
import { SupBox, SupMat4 } from '../types';
|
||||
export declare enum UpdateEventType {
|
||||
Redisplay = 0,// 重新显示
|
||||
ViewModeChanged = 1,// 视图模式改变
|
||||
Update = 2
|
||||
}
|
||||
export interface UpdateEventArg {
|
||||
type: UpdateEventType;
|
||||
arg: unknown;
|
||||
}
|
||||
export interface ViewModeChangedArg {
|
||||
object: ViewObject;
|
||||
mode: ViewMode | null;
|
||||
}
|
||||
/**
|
||||
* @brief 显示对象
|
||||
*
|
||||
*/
|
||||
export declare abstract class ViewRenderObject {
|
||||
updateEvent: LiteEvent<UpdateEventArg>;
|
||||
protected wrappedGroup: RenderGroup;
|
||||
protected wrappedBox: SupBox;
|
||||
protected wrappedVisible: boolean;
|
||||
constructor();
|
||||
get visible(): boolean;
|
||||
set visible(show: boolean);
|
||||
/**
|
||||
* @brief 设置面、线、点颜色
|
||||
* @param color 颜色
|
||||
*
|
||||
* @return
|
||||
* -<em>无</em>
|
||||
*/
|
||||
setFaceColor(color: number): void;
|
||||
setLineColor(color: number): void;
|
||||
setLineWidth(width: number): void;
|
||||
setPntColor(color: number): void;
|
||||
setPntSize(size: number): void;
|
||||
setPntShape(shape: PointShape): void;
|
||||
setClippingColor(color: number): void;
|
||||
transform(matrix: SupMat4): void;
|
||||
get boundingBox(): SupBox;
|
||||
protected updateBox(): void;
|
||||
/**
|
||||
* @brief 设置全部透明度
|
||||
*/
|
||||
setAllTransparent(opacity: number): void;
|
||||
/**
|
||||
* @brief 设置透明度
|
||||
*/
|
||||
setTransparent(opacity: number): void;
|
||||
setItemCustomCfg(item: RenderElementItem, cfg: ShapeConfig): void;
|
||||
unSetItemCustomCfg(item: RenderElementItem): void;
|
||||
unSetAllCustomCfg(): void;
|
||||
/**
|
||||
* @brief 计算相应模式下的显示数据
|
||||
* @param mode 显示模式
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
protected abstract computeRenders(mode: ViewMode): boolean;
|
||||
get group(): RenderGroup;
|
||||
}
|
||||
/**
|
||||
* @brief 拾取对象
|
||||
*
|
||||
*/
|
||||
export declare abstract class ViewSelectObject extends ViewRenderObject {
|
||||
protected wrappedSelections: Map<ViewMode, SelectElement[]>;
|
||||
protected wrappedActiveModes: SelectMode[];
|
||||
constructor();
|
||||
/**
|
||||
* @brief 获取拾取对象
|
||||
* @param mode 显示模式
|
||||
*
|
||||
* @return
|
||||
* -<em>该模式下的拾取对象数组</em>
|
||||
*/
|
||||
getSelects(mode: ViewMode): SelectElement[];
|
||||
get activeModes(): SelectMode[];
|
||||
set activeModes(modes: SelectMode[]);
|
||||
/**
|
||||
* @brief 计算相应模式下的拾取数据
|
||||
* @param mode 显示模式
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
protected abstract computeSelects(mode: ViewMode): boolean;
|
||||
}
|
||||
/**
|
||||
* @brief 视图对象接口
|
||||
*
|
||||
*/
|
||||
export declare abstract class ViewObject extends ViewSelectObject {
|
||||
isBind: boolean;
|
||||
protected wrappedViewMode: ViewMode | null;
|
||||
abstract type(): ViewObjType;
|
||||
/**
|
||||
* @brief 显示
|
||||
* @param engine 底层显示引擎
|
||||
* @param mode 显示模式
|
||||
*
|
||||
* @return
|
||||
* -<em>1</em>
|
||||
*/
|
||||
display(engine: ICadView, mode: ViewMode): boolean;
|
||||
/**
|
||||
* @brief 移除显示
|
||||
* @param engine 底层显示引擎
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
remove(engine: ICadView): boolean;
|
||||
/**
|
||||
* @brief 切换显示模式
|
||||
* @param engine 底层显示引擎
|
||||
* @param mode 显示模式
|
||||
*
|
||||
* @return
|
||||
* -<em>是否成功</em>
|
||||
*/
|
||||
onViewModeChanged(engine: ICadView, mode: ViewMode): void;
|
||||
get viewMode(): ViewMode | null;
|
||||
set viewMode(mode: ViewMode | null);
|
||||
clearData(): void;
|
||||
}
|
||||
1
app/supreium_viewer/package/dist/types/src/cad/view/__tests__/BRepViewObject.test.d.ts
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export {};
|
||||
10
app/supreium_viewer/package/dist/types/src/cad/view/__tests__/CellBasedMesh.data.d.ts
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
export declare const MeshData: {
|
||||
file_type: string;
|
||||
dimension: number;
|
||||
range: number[];
|
||||
mesh_levels: {
|
||||
level: number;
|
||||
resolution: number[];
|
||||
cell_idx: number[];
|
||||
}[];
|
||||
};
|
||||
1
app/supreium_viewer/package/dist/types/src/cad/view/__tests__/CellBasedMeshVO.test.d.ts
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export {};
|
||||
6
app/supreium_viewer/package/dist/types/src/cad/view/__tests__/NodeBasedMesh.data.d.ts
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
export declare const MeshData: {
|
||||
file_type: string;
|
||||
description: string;
|
||||
nodes: number[][];
|
||||
elements: number[][];
|
||||
};
|
||||
1
app/supreium_viewer/package/dist/types/src/cad/view/__tests__/NodeBasedMeshVO.test.d.ts
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export {};
|
||||
1
app/supreium_viewer/package/dist/types/src/cad/view/__tests__/PolyGeomVO.test.d.ts
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export {};
|
||||