Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | 2169x 2169x 695x 1474x 1292x 182x 23x 159x 82x 77x 25x 52x 11x 41x 41x 41x 2169x 1189x 1189x 1189x 2366x 2344x 22x 22x 1189x 1187x 1187x 1187x 1187x 2x 2x 2x 2x 2x 2x 24x 24x 24x 24x 78x 78x 78x 78x 32x 32x 32x 32x 478x 478x 478x 478x 478x 32x 32x 24x 6x 13x 6x 18x | import { GeomAbs_Shape, Geom_Curve, OpenCascadeInstance, TopoDS_Compound, TopoDS_Edge, TopoDS_Face, TopoDS_Shape, TopoDS_Shell, TopoDS_Solid, TopoDS_Vertex, TopoDS_Wire } from "../../../bitbybit-dev-occt/bitbybit-dev-occt"; import * as Inputs from "../../api/inputs/inputs"; export class ConverterService { constructor( private readonly occ: OpenCascadeInstance, ) { } getActualTypeOfShape(shape: TopoDS_Shape): TopoDS_Edge | TopoDS_Wire | TopoDS_Vertex | TopoDS_Solid | TopoDS_Shell | TopoDS_Face | TopoDS_Compound { let result = shape; if (shape.ShapeType() === this.occ.TopAbs_ShapeEnum.TopAbs_EDGE) { result = this.occ.TopoDS.Edge_1(shape); } else if (shape.ShapeType() === this.occ.TopAbs_ShapeEnum.TopAbs_WIRE) { result = this.occ.TopoDS.Wire_1(shape); } else if (shape.ShapeType() === this.occ.TopAbs_ShapeEnum.TopAbs_VERTEX) { result = this.occ.TopoDS.Vertex_1(shape); } else if (shape.ShapeType() === this.occ.TopAbs_ShapeEnum.TopAbs_SOLID) { result = this.occ.TopoDS.Solid_1(shape); } else if (shape.ShapeType() === this.occ.TopAbs_ShapeEnum.TopAbs_SHELL) { result = this.occ.TopoDS.Shell_1(shape); } else if (shape.ShapeType() === this.occ.TopAbs_ShapeEnum.TopAbs_FACE) { result = this.occ.TopoDS.Face_1(shape); } else Iif (shape.ShapeType() === this.occ.TopAbs_ShapeEnum.TopAbs_COMPSOLID) { result = this.occ.TopoDS.CompSolid_1(shape); } else if (shape.ShapeType() === this.occ.TopAbs_ShapeEnum.TopAbs_COMPOUND) { result = this.occ.TopoDS.Compound_1(shape); } else E{ result = shape; } return result; } combineEdgesAndWiresIntoAWire(inputs: Inputs.OCCT.ShapesDto<TopoDS_Edge | TopoDS_Wire>): TopoDS_Wire { Iif (inputs.shapes === undefined) { throw (Error(("Shapes are not defined"))); } const makeWire = new this.occ.BRepBuilderAPI_MakeWire_1(); inputs.shapes.forEach((shape: TopoDS_Shape) => { if (shape.ShapeType() === this.occ.TopAbs_ShapeEnum.TopAbs_EDGE) { makeWire.Add_1(shape); } else Eif (shape.ShapeType() === this.occ.TopAbs_ShapeEnum.TopAbs_WIRE) { makeWire.Add_2(shape); } }); if (makeWire.IsDone()) { this.occ.BRepLib.BuildCurves3d_1(makeWire.Wire(), 1.0e-7, this.occ.GeomAbs_Shape.GeomAbs_C1 as GeomAbs_Shape, 14, 0); const wire = makeWire.Wire(); makeWire.delete(); return wire; } else { let errorMessage; const error = makeWire.Error(); makeWire.delete(); Iif (error === this.occ.BRepBuilderAPI_WireError.BRepBuilderAPI_DisconnectedWire) { errorMessage = "Wire is disconnected and can not be constructed"; } else if (error === this.occ.BRepBuilderAPI_WireError.BRepBuilderAPI_EmptyWire) { errorMessage = "Wire is empty and can not be constructed"; } else Eif (error === this.occ.BRepBuilderAPI_WireError.BRepBuilderAPI_NonManifoldWire) { errorMessage = "Wire is non manifold and can not be constructed"; } else if (error === this.occ.BRepBuilderAPI_WireError.BRepBuilderAPI_WireDone) { errorMessage = "Wire is done"; } throw new Error(errorMessage); } } vertexToPoint(inputs: Inputs.OCCT.ShapeDto<TopoDS_Vertex>): Inputs.Base.Point3 { const pt = this.occ.BRep_Tool.Pnt(inputs.shape); const res = [pt.X(), pt.Y(), pt.Z()] as Inputs.Base.Point3; pt.delete(); return res; } getGeomCurveFromEdge(edge: TopoDS_Edge, uMin: number, uMax: number): Geom_Curve { const loc = edge.Location_1(); const crvHandle = this.occ.BRep_Tool.Curve_1(edge, loc, uMin, uMax); const curve = crvHandle.get(); return curve; } makeCompound(inputs: Inputs.OCCT.CompoundShapesDto<TopoDS_Shape>): TopoDS_Compound { const resCompound = new this.occ.TopoDS_Compound(); const builder = new this.occ.BRep_Builder(); builder.MakeCompound(resCompound); inputs.shapes.forEach(shape => { const cp = new this.occ.BRepBuilderAPI_Copy_2(shape, true, false); const s = cp.Shape(); builder.Add(resCompound, s); cp.delete(); s.delete(); }); builder.delete(); return resCompound; } makeCompoundIfNeeded(shapes: TopoDS_Shape[], returnCompound: boolean) { if (returnCompound) { const compound = this.makeCompound({ shapes }); shapes.forEach(w => w.delete()); return compound; } else { return shapes; } } } |