diff --git a/api.esm.js b/api.esm.js index 4aa067c..3c0d01d 100644 --- a/api.esm.js +++ b/api.esm.js @@ -1,4 +1,4 @@ -import { Vector3, LineDashedMaterial, Vector2, MeshBasicMaterial, LineBasicMaterial, DoubleSide, ShaderMaterial, Color, Matrix4, Box3, Object3D, BufferGeometry, Shape as Shape$1, ShapeGeometry, BufferAttribute, EllipseCurve, ExtrudeGeometry, Mesh, Plane as Plane$1, Line3, Line as Line$1, MathUtils, Geometry, Face3, Path, LineSegments, InstancedInterleavedBuffer, InterleavedBufferAttribute, CylinderBufferGeometry, Float32BufferAttribute, ShapeUtils, CatmullRomCurve3, BoxBufferGeometry, BoxGeometry } from 'three'; +import { Box3, BoxBufferGeometry, BoxGeometry, BufferAttribute, BufferGeometry, CatmullRomCurve3, Color, CylinderBufferGeometry, DoubleSide, EllipseCurve, ExtrudeGeometry, Face3, Float32BufferAttribute, Geometry, InstancedInterleavedBuffer, InterleavedBufferAttribute, Line as Line$1, Line3, LineBasicMaterial, LineDashedMaterial, LineSegments, MathUtils, Matrix4, Mesh, MeshBasicMaterial, Object3D, Path, Plane as Plane$1, ShaderMaterial, Shape as Shape$1, ShapeGeometry, ShapeUtils, Vector2, Vector3 } from 'three'; import { Line2 } from 'three/examples/jsm/lines/Line2'; import { LineGeometry } from 'three/examples/jsm/lines/LineGeometry'; import { LineMaterial } from 'three/examples/jsm/lines/LineMaterial'; @@ -2824,21 +2824,38 @@ var BufferGeometryUtils; BufferGeometryUtils.MergeBufferAttributes = MergeBufferAttributes; })(BufferGeometryUtils || (BufferGeometryUtils = {})); +let tempArc; class Shape2 extends Shape$1 { - getPoints(divisions = 12) + getPoints(divisions = 12, optimizeArc = true) { - divisions = divisions || 12; let points = [], last; for (let i = 0, curves = this.curves; i < curves.length; i++) { let curve = curves[i]; + let resolution = divisions; //@ts-ignore - let resolution = (curve && curve.isEllipseCurve) ? clamp(curve.getLength() / 20, divisions * 2, 60) + if (curve && curve.isEllipseCurve) { + if (optimizeArc) { + if (!tempArc) + tempArc = new Arc; + tempArc.IsClockWise = curve.aClockwise; + tempArc.StartAngle = curve.aStartAngle; + tempArc.EndAngle = curve.aEndAngle; + tempArc.Radius = Math.abs(curve.xRadius); + //根据圆弧的角度,来确定绘制个数 + let count = Math.max(2, Math.abs(Math.ceil((tempArc.AllAngle) / Math.PI)) * divisions); + resolution = clamp(Math.ceil(tempArc.Length / 5), count, 360); + } + else + resolution = divisions * 2; + } + else { //@ts-ignore - : (curve && (curve.isLineCurve || curve.isLineCurve3)) ? 1 + resolution = (curve && (curve.isLineCurve || curve.isLineCurve3)) ? 1 //@ts-ignore : (curve && curve.isSplineCurve) ? divisions * curve.points.length : divisions; + } let pts = curve.getPoints(resolution); for (let j = 0; j < pts.length; j++) { let point = pts[j]; @@ -20715,5 +20732,5 @@ function ProjectBoard(knifBoard, projectBoard) //用于翻转绘制出来的槽 const OverturnMatrix = new Matrix4().makeBasis(YAxis, ZAxis, XAxis); -export { Circle, ContourTreeNode, CurveTapeShape, DepthType, ExtrudeBuildConfig, ExtrudeGeometryBuilder, ExtrudeSolid, FastMeshGeometry, Groove, Polyline, TempPolyline }; +export { Circle, ContourTreeNode, CurveTapeShape, DepthType, ExtrudeBuildConfig, ExtrudeGeometryBuilder, ExtrudeSolid, FastMeshGeometry, Groove, Polyline, TempPolyline, Shape2 }; //# sourceMappingURL=api.esm.js.map diff --git a/package.json b/package.json index 41e5015..ac9579c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "webcad_ue4_api", - "version": "0.2.1", + "version": "0.2.2", "description": "", "main": "api.esm.js", "module": "api.esm.js", diff --git a/types/ueapi.d.ts b/types/ueapi.d.ts index 45a42c4..de4cab7 100644 --- a/types/ueapi.d.ts +++ b/types/ueapi.d.ts @@ -1,5 +1,6 @@ export * from "./DatabaseServices/Entity/Circle"; export * from "./DatabaseServices/Entity/Extrude"; export * from "./DatabaseServices/Entity/Polyline"; +export * from "./DatabaseServices/Shape2"; export * from "./Geometry/ExtrudeEdgeGeometry2"; -//# sourceMappingURL=ueapi.d.ts.map \ No newline at end of file +//# sourceMappingURL=ueapi.d.ts.map