mxcad 1.0.364 → 1.0.365
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mxcad.d.ts +1 -1
- package/dist/mxcad.es.js +44 -39
- package/dist/mxcad.umd.js +1 -1
- package/dist/wasm/2d/mxdrawassembly_min.js +5 -5
- package/dist/wasm/2d/mxdrawassembly_min.wasm +0 -0
- package/dist/wasm/2d-st/mxdrawassembly_min.js +5 -5
- package/dist/wasm/2d-st/mxdrawassembly_minst.wasm +0 -0
- package/package.json +1 -1
package/dist/mxcad.d.ts
CHANGED
|
@@ -2656,7 +2656,7 @@ export declare class MxCADUtilityClass {
|
|
|
2656
2656
|
* @param dX - 坐标点的 X 坐标值
|
|
2657
2657
|
* @param dY - 坐标点的 Y 坐标值
|
|
2658
2658
|
* @param dZ - 坐标点的 Z 坐标值
|
|
2659
|
-
* @param dSearhRange -
|
|
2659
|
+
* @param dSearhRange - 设置选取范围,默认为 -1 表示自适应,或者输入对应的CAD坐标长度
|
|
2660
2660
|
* @param filter - 过滤器,用于过滤查找到的图形对象,默认为 null(表示不进行过滤)
|
|
2661
2661
|
* @returns 返回查找到的图形对象的 ID
|
|
2662
2662
|
* @example
|
package/dist/mxcad.es.js
CHANGED
|
@@ -15080,7 +15080,7 @@ win.McDrawObjectEvent_asciiToUTF8 = function (hexstr) {
|
|
|
15080
15080
|
return MxG2312Obj.decodeFromGb2312Imp(hexstr);
|
|
15081
15081
|
};
|
|
15082
15082
|
|
|
15083
|
-
const version$1 = "1.0.
|
|
15083
|
+
const version$1 = "1.0.364";
|
|
15084
15084
|
|
|
15085
15085
|
var isSharedArrayBuffer = "SharedArrayBuffer" in window;
|
|
15086
15086
|
var isCdn = document.currentScript && /unpkg\.com\/mxcad/.test(document.currentScript.src);
|
|
@@ -22038,6 +22038,8 @@ function calculateDistanceFromPointToLine(pointToCheck, pointA, pointB) {
|
|
|
22038
22038
|
function selectLineSegmentFromPolylineByPoint(ent, selectPt) {
|
|
22039
22039
|
var distanceTolerance = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
22040
22040
|
var num = ent.numVerts();
|
|
22041
|
+
var res = void 0;
|
|
22042
|
+
var minDist = Number.MAX_VALUE;
|
|
22041
22043
|
for (var index = 0; index < ent.numVerts(); index++) {
|
|
22042
22044
|
var pt = ent.getPointAt(index).val;
|
|
22043
22045
|
var nextPt = ent.getPointAt(index + 1).val;
|
|
@@ -22048,8 +22050,10 @@ function selectLineSegmentFromPolylineByPoint(ent, selectPt) {
|
|
|
22048
22050
|
nextPt = ent.getPointAt(0).val;
|
|
22049
22051
|
isClosed = true;
|
|
22050
22052
|
}
|
|
22051
|
-
|
|
22052
|
-
|
|
22053
|
+
var dist = calculateDistanceFromPointToLine(selectPt, pt, nextPt);
|
|
22054
|
+
if (nextPt && dist < minDist) {
|
|
22055
|
+
minDist = dist;
|
|
22056
|
+
res = {
|
|
22053
22057
|
start: pt,
|
|
22054
22058
|
end: nextPt,
|
|
22055
22059
|
startIndex: index,
|
|
@@ -22095,6 +22099,7 @@ function selectLineSegmentFromPolylineByPoint(ent, selectPt) {
|
|
|
22095
22099
|
};
|
|
22096
22100
|
}
|
|
22097
22101
|
}
|
|
22102
|
+
return res;
|
|
22098
22103
|
}
|
|
22099
22104
|
function darkenColor(color, factor) {
|
|
22100
22105
|
var r = color.r;
|
|
@@ -40900,38 +40905,37 @@ function createThickLine(start, end) {
|
|
|
40900
40905
|
return new THREE.Mesh(geometry, material);
|
|
40901
40906
|
}
|
|
40902
40907
|
function calculateChamferDistance(line1, line2, d1, theta) {
|
|
40903
|
-
|
|
40904
|
-
if (
|
|
40905
|
-
|
|
40906
|
-
|
|
40907
|
-
var
|
|
40908
|
-
var
|
|
40909
|
-
|
|
40910
|
-
|
|
40911
|
-
|
|
40908
|
+
var intersects = line1.IntersectWith(line2, McDb.Intersect.kExtendBoth);
|
|
40909
|
+
if (intersects.length() === 0) return false;
|
|
40910
|
+
var V = intersects.at(0);
|
|
40911
|
+
var dir1 = line1.endPoint.clone().sub(line1.startPoint).normalize();
|
|
40912
|
+
var dir2 = line2.endPoint.clone().sub(line2.startPoint).normalize();
|
|
40913
|
+
var vToStart1 = line1.startPoint.clone().sub(V);
|
|
40914
|
+
if (vToStart1.dotProduct(dir1) > 0) dir1 = dir1.negate();
|
|
40915
|
+
var vToStart2 = line2.startPoint.clone().sub(V);
|
|
40916
|
+
if (vToStart2.dotProduct(dir2) > 0) dir2 = dir2.negate();
|
|
40917
|
+
var dot = dir1.dotProduct(dir2);
|
|
40918
|
+
dot = Math.max(-1, Math.min(1, dot));
|
|
40919
|
+
var alpha = Math.acos(dot);
|
|
40920
|
+
var maxTheta = Math.PI - alpha - 1e-6;
|
|
40921
|
+
if (theta <= 1e-6) {
|
|
40922
|
+
console.warn("Theta too small. Must be > 0.");
|
|
40923
|
+
return false;
|
|
40912
40924
|
}
|
|
40913
|
-
|
|
40914
|
-
|
|
40915
|
-
|
|
40925
|
+
if (theta >= Math.PI - alpha) {
|
|
40926
|
+
var maxDeg = (maxTheta * 180 / Math.PI).toFixed(2);
|
|
40927
|
+
var givenDeg = (theta * 180 / Math.PI).toFixed(2);
|
|
40928
|
+
console.warn("Invalid theta: ".concat(givenDeg, "\xB0. Maximum allowed: ").concat(maxDeg, "\xB0 (since line angle = ").concat((alpha * 180 / Math.PI).toFixed(2), "\xB0)."));
|
|
40929
|
+
return false;
|
|
40916
40930
|
}
|
|
40917
|
-
var
|
|
40918
|
-
|
|
40919
|
-
|
|
40931
|
+
var sinTheta = Math.sin(theta);
|
|
40932
|
+
var sinAlphaPlusTheta = Math.sin(alpha + theta);
|
|
40933
|
+
if (Math.abs(sinAlphaPlusTheta) < 1e-12) {
|
|
40934
|
+
return false;
|
|
40920
40935
|
}
|
|
40936
|
+
var d2 = d1 * (sinTheta / sinAlphaPlusTheta);
|
|
40921
40937
|
return d2;
|
|
40922
40938
|
}
|
|
40923
|
-
function getDirectionVector(line) {
|
|
40924
|
-
var dx = line.endPoint.x - line.startPoint.x;
|
|
40925
|
-
var dy = line.endPoint.y - line.startPoint.y;
|
|
40926
|
-
var len = Math.hypot(dx, dy);
|
|
40927
|
-
if (len < 1e-12) throw new Error("Line points are identical");
|
|
40928
|
-
return [dx / len, dy / len];
|
|
40929
|
-
}
|
|
40930
|
-
function calculateAngleBetweenVectors(v1, v2) {
|
|
40931
|
-
var dot = v1[0] * v2[0] + v1[1] * v2[1];
|
|
40932
|
-
var clampedDot = Math.max(-1, Math.min(1, dot));
|
|
40933
|
-
return Math.acos(clampedDot);
|
|
40934
|
-
}
|
|
40935
40939
|
var getPointInfo = function getPointInfo(pl, index) {
|
|
40936
40940
|
var bulge = pl.getBulgeAt(index);
|
|
40937
40941
|
var point = pl.getPointAt(index).val;
|
|
@@ -42408,10 +42412,10 @@ var onKeyup = function onKeyup(e) {
|
|
|
42408
42412
|
window.addEventListener("keydown", onKeydown);
|
|
42409
42413
|
window.addEventListener("keyup", onKeyup);
|
|
42410
42414
|
var mxChamferStorrage = createReactiveStorage({
|
|
42411
|
-
length:
|
|
42415
|
+
length: 10,
|
|
42412
42416
|
angle: 0,
|
|
42413
|
-
dist:
|
|
42414
|
-
dist1:
|
|
42417
|
+
dist: 10,
|
|
42418
|
+
dist1: 10,
|
|
42415
42419
|
isAngleChamfer: false,
|
|
42416
42420
|
isPruning: true,
|
|
42417
42421
|
isMultiple: false
|
|
@@ -42434,7 +42438,7 @@ function _Mx_Chamfer() {
|
|
|
42434
42438
|
isAngleChamfer = mxChamferStorrage.isAngleChamfer;
|
|
42435
42439
|
isPruning = mxChamferStorrage.isPruning;
|
|
42436
42440
|
isMultiple = mxChamferStorrage.isMultiple;
|
|
42437
|
-
MxFun.acutPrintf("\n(".concat(isPruning ? "\u4FEE\u526A" : "\u4E0D\u4FEE\u526A", "\u6A21\u5F0F) \u5F53\u524D").concat(isAngleChamfer ? "\u5012\u89D2\u957F\u5EA6 = " + chamferDist.toFixed(4) + ", \u89D2\u5EA6 = " +
|
|
42441
|
+
MxFun.acutPrintf("\n(".concat(isPruning ? "\u4FEE\u526A" : "\u4E0D\u4FEE\u526A", "\u6A21\u5F0F) \u5F53\u524D").concat(isAngleChamfer ? "\u5012\u89D2\u957F\u5EA6 = " + chamferDist.toFixed(4) + ", \u89D2\u5EA6 = " + THREE.MathUtils.radToDeg(chamferAngle).toFixed(2) : "\u5012\u89D2\u8DDD\u79BB1 = " + chamferDist.toFixed(4) + ", \u8DDD\u79BB2 = " + chamferDist1.toFixed(4), "\n"));
|
|
42438
42442
|
getChamferDists = /*#__PURE__*/function () {
|
|
42439
42443
|
var _ref3 = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee11() {
|
|
42440
42444
|
var getDist, dist2, dist1;
|
|
@@ -42505,7 +42509,7 @@ function _Mx_Chamfer() {
|
|
|
42505
42509
|
case 9:
|
|
42506
42510
|
mxChamferStorrage.length = chamferLength = length;
|
|
42507
42511
|
getAngle = new MxCADUiPrAngle();
|
|
42508
|
-
getAngle.setMessage("\u6307\u5B9A\u7B2C\u4E00\u6761\u76F4\u7EBF\u7684\u5012\u89D2\u89D2\u5EA6<".concat(
|
|
42512
|
+
getAngle.setMessage("\u6307\u5B9A\u7B2C\u4E00\u6761\u76F4\u7EBF\u7684\u5012\u89D2\u89D2\u5EA6<".concat(THREE.MathUtils.radToDeg(chamferAngle).toFixed(2), "\xB0>"));
|
|
42509
42513
|
getAngle.setKeyWords("");
|
|
42510
42514
|
getDist.clearLastInputPoint();
|
|
42511
42515
|
_context15.next = 16;
|
|
@@ -42532,15 +42536,15 @@ function _Mx_Chamfer() {
|
|
|
42532
42536
|
};
|
|
42533
42537
|
}();
|
|
42534
42538
|
_loop4 = /*#__PURE__*/regenerator.mark(function _loop4() {
|
|
42535
|
-
var
|
|
42539
|
+
var filter, getEnt, objId, _loop5, _ret5, getKey, key, _getKey2, _key2, pt1, lineEnt, filter1, drawSelectLine, selectLineInfo, isChamferLengthWarningShow, showWarning, exit, calculateAndApplyChamferBetweenTwoLines, oLineId, oLine, line, pt2, _line, _oLine, iPoints, dist1, dist2, _ref7, line1, line2, apply, is;
|
|
42536
42540
|
return regenerator.wrap(function _loop4$(_context17) {
|
|
42537
42541
|
while (1) switch (_context17.prev = _context17.next) {
|
|
42538
42542
|
case 0:
|
|
42539
|
-
getEnt = new MxCADUiPrEntity();
|
|
42540
|
-
getEnt.setDynamicInputType(DynamicInputType.kNoInput);
|
|
42541
42543
|
filter = new MxCADResbuf();
|
|
42542
42544
|
filter.AddMcDbEntityTypes("LINE,LWPOLYLINE");
|
|
42545
|
+
getEnt = new MxCADUiPrEntity();
|
|
42543
42546
|
getEnt.setFilter(filter);
|
|
42547
|
+
getEnt.setDynamicInputType(DynamicInputType.kNoInput);
|
|
42544
42548
|
getEnt.setMessage("\u9009\u62E9\u4E00\u6761\u76F4\u7EBF");
|
|
42545
42549
|
getEnt.setKeyWords("[\u653E\u5F03(U)/\u591A\u6BB5\u7EBF(P)/\u8DDD\u79BB(D)/\u89D2\u5EA6(A)/\u4FEE\u526A(T)/\u65B9\u5F0F(E)/\u591A\u4E2A(M)]");
|
|
42546
42550
|
getEnt.setUserDraw(function (pt, pw) {
|
|
@@ -43215,6 +43219,7 @@ function _Mx_Chamfer() {
|
|
|
43215
43219
|
return is;
|
|
43216
43220
|
};
|
|
43217
43221
|
if (isAngleChamfer) {
|
|
43222
|
+
chamferDist2 = chamferLength;
|
|
43218
43223
|
var val = calculateChamferDistance(line, oLine, chamferLength, chamferAngle);
|
|
43219
43224
|
if (val) {
|
|
43220
43225
|
chamferDist12 = val;
|
|
@@ -43855,7 +43860,7 @@ function _Mx_Fillet() {
|
|
|
43855
43860
|
return regenerator.wrap(function _callee15$(_context22) {
|
|
43856
43861
|
while (1) switch (_context22.prev = _context22.next) {
|
|
43857
43862
|
case 0:
|
|
43858
|
-
radius = Number(localStorage.getItem("Mx_Fillet_radius")) ||
|
|
43863
|
+
radius = Number(localStorage.getItem("Mx_Fillet_radius")) || 10;
|
|
43859
43864
|
isPruning = localStorage.getItem("Mx_Fillet_isPruning") === "false" ? false : true;
|
|
43860
43865
|
isMultiple = false;
|
|
43861
43866
|
MxFun.acutPrintf("\n\u5F53\u524D\u8BBE\u7F6E: \u6A21\u5F0F = ".concat(isPruning ? "\u4FEE\u526A" : "\u4E0D\u4FEE\u526A", ", \u534A\u5F84 = ").concat(radius.toFixed(4)));
|