@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
61 lines (56 loc) • 2.22 kB
text/typescript
import {NodeParamsConfig} from '../utils/params/ParamsConfig';
import {TypedSopNode} from './_Base';
import {
CadGeometryType,
cadGeometryTypeFromShape,
TopoDS_Shape,
Geom2d_Curve,
} from '../../../core/geometry/modules/cad/CadCommon';
import {CadObject} from '../../../core/geometry/modules/cad/CadObject';
import {CoreGroup} from '../../../core/geometry/Group';
import {CoreObjectType} from '../../../core/geometry/ObjectContent';
import {CadLoaderSync} from '../../../core/geometry/modules/cad/CadLoaderSync';
import {cadProcessError} from '../../../core/geometry/modules/cad/CadExceptionHandler';
import {ModuleName} from '../../poly/registers/modules/Common';
export class CADSopNode<K extends NodeParamsConfig> extends TypedSopNode<K> {
override dataType(): string {
return CoreObjectType.CAD;
}
override requiredModules() {
return [ModuleName.CAD];
}
setCADGeom2dCurve(curve: Geom2d_Curve) {
const objects = [new CadObject(curve, CadGeometryType.CURVE_2D)];
this._setContainerCadObjects(objects);
}
setCADShape(shape: TopoDS_Shape) {
const oc = CadLoaderSync.oc();
const type = cadGeometryTypeFromShape(oc, shape) || CadGeometryType.VERTEX;
const objects = [new CadObject(shape, type)];
this._setContainerCadObjects(objects);
}
setCADShapes(shapes: TopoDS_Shape[]) {
const oc = CadLoaderSync.oc();
const objects = shapes.map(
(shape, i) => new CadObject(shape, cadGeometryTypeFromShape(oc, shape) || CadGeometryType.VERTEX)
);
this._setContainerCadObjects(objects);
}
setCADObjects(cadObjects: CadObject<CadGeometryType>[]) {
this._setContainerCadObjects(cadObjects);
}
setCADObject(cadObject: CadObject<CadGeometryType>) {
this._setContainerCadObjects([cadObject]);
}
protected _setContainerCadObjects(objects: CadObject<CadGeometryType>[] /*, message: MESSAGE*/) {
const coreGroup = this.containerController.container().coreContent() || new CoreGroup();
coreGroup.setAllObjects(objects);
this._setContainer(coreGroup);
}
// error processing
override processError(e: unknown) {
return cadProcessError(e);
}
}
export type BaseCADSopNodeType = CADSopNode<NodeParamsConfig>;
export class BaseCADSopNodeClass extends CADSopNode<NodeParamsConfig> {}