@cardenelabs/cdl 0.65.0 → 0.66.0
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/CHANGELOG.md +45 -1
- package/dist/index.cjs +16 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +16 -2
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +16 -2
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +16 -2
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/layout/edges.ts +60 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,49 @@ CDL (Chainome Diagram Language) の主要変更履歴。
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.66.0] - 2026-09-15
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **段の違う箱を繋ぐ矢印が、間の箱を貫くのを直した** (#867)
|
|
13
|
+
|
|
14
|
+
段の違う箱を横に繋ぐ経路は「横に走る → 縦に折れる → 横に走る」 の L 字を描く。 折れる位置は箱を避けて左右に
|
|
15
|
+
退くが、**退いた後に横の走りが箱を横切るかを一度も見ていなかった**。 退けた分だけ横の走りが伸びるため、
|
|
16
|
+
避けたはずの同じ箱を横切る。
|
|
17
|
+
|
|
18
|
+
段 0 に 検査 (x 40-360) と 記録 (x 1864-2184)、段 1 に背の高い 成形機 (x 648-968) と 塗装機 (x 1256-1576) を
|
|
19
|
+
並べ、成形機から記録へ引いた形。
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
変更前 ... M 968 486 L 1630 486 Q 1644 486, 1644 472 L 1644 150 Q 1644 136, 1658 136 L 1864 136
|
|
23
|
+
変更後 ... M 968 486 L 1174 486 Q 1188 486, 1188 472 L 1188 150 Q 1188 136, 1202 136 L 1864 136
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
変更前は `y = 486` の横の走りが `x = 968` から `1644` まで伸び、その間の 塗装機 (x 1256-1576、y 296-676) を
|
|
27
|
+
横切っていた。 絵の検査の `edge-node-cross` が 1 件出る形。
|
|
28
|
+
|
|
29
|
+
退く向きは「折れる位置を動かす量が少ない側」 だけで決めていた。 この形は右へ 228 と左へ 228 で並び、
|
|
30
|
+
同点を右に倒す規則が塞がる側を選んでいた。
|
|
31
|
+
|
|
32
|
+
直した点は 2 つ。
|
|
33
|
+
|
|
34
|
+
| 直した点 | 変更前 | 変更後 |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| 退く向き | 動かす量が少ない側 | 横の走りが横切らない側を先に見る。 左右で同じ時だけ動かす量が少ない側 |
|
|
37
|
+
| 退く判定の起点 | 縦の走りと説明文の帯だけ | 横の走りが箱を通る形も数える |
|
|
38
|
+
|
|
39
|
+
起点を広げないと、最初の折れる位置で既に横の走りが箱を横切っている形は 1 度も退かない。 繋ぎ元と同じ段に
|
|
40
|
+
箱を置き、折れる位置より手前に来るように並べると出る (実測 = 受付 → 出荷 の矢印が、間の 控え を横切る)。
|
|
41
|
+
|
|
42
|
+
横切るかの判定は箱の矩形そのもので行い、余白を足さない。 絵の検査が箱の矩形で貫通を数えるため、余白を足すと
|
|
43
|
+
「検査は通るのに経路だけ動く」 図が出る。 端がちょうど箱の縁に載る形も通さない = 箱の縁から出る線は必ず縁に
|
|
44
|
+
載るので、閉じた側にすると自分の出入口を障害物と読む。
|
|
45
|
+
|
|
46
|
+
dragon の見本帳 505 枚の辺 472 本を並べ直して突き合わせた結果、**変わった道筋は 0 本**。 横切る箱が無い
|
|
47
|
+
図では折れる位置が 2 つの箱のちょうど中間に残る。
|
|
48
|
+
|
|
49
|
+
dragon の見本帳で合流する矢印が間の部品を貫いた原因 (dragon#2011)。
|
|
50
|
+
|
|
8
51
|
## [0.65.0] - 2026-09-15
|
|
9
52
|
|
|
10
53
|
### Fixed
|
|
@@ -2770,7 +2813,8 @@ Initial OSS release.
|
|
|
2770
2813
|
使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
|
|
2771
2814
|
行き止まりになる。
|
|
2772
2815
|
|
|
2773
|
-
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.
|
|
2816
|
+
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.66.0...HEAD
|
|
2817
|
+
[0.66.0]: https://github.com/cardene777/cdl/compare/v0.65.0...v0.66.0
|
|
2774
2818
|
[0.65.0]: https://github.com/cardene777/cdl/compare/v0.64.1...v0.65.0
|
|
2775
2819
|
[0.64.1]: https://github.com/cardene777/cdl/compare/v0.64.0...v0.64.1
|
|
2776
2820
|
[0.64.0]: https://github.com/cardene777/cdl/compare/v0.63.0...v0.64.0
|
package/dist/index.cjs
CHANGED
|
@@ -18760,6 +18760,10 @@ function verticalCornerDir(from, to) {
|
|
|
18760
18760
|
function cornerRadiusFor(\u534A\u5F84, ...\u8D70\u308A) {
|
|
18761
18761
|
return Math.min(\u534A\u5F84, ...\u8D70\u308A.map((v) => Math.abs(v)));
|
|
18762
18762
|
}
|
|
18763
|
+
function runCrossesBox(\u8D70\u308A, \u7BB1) {
|
|
18764
|
+
if (\u8D70\u308A.y <= \u7BB1.cy - \u7BB1.h / 2 || \u8D70\u308A.y >= \u7BB1.cy + \u7BB1.h / 2) return false;
|
|
18765
|
+
return \u7BB1.cx + \u7BB1.w / 2 > Math.min(\u8D70\u308A.x1, \u8D70\u308A.x2) && \u7BB1.cx - \u7BB1.w / 2 < Math.max(\u8D70\u308A.x1, \u8D70\u308A.x2);
|
|
18766
|
+
}
|
|
18763
18767
|
var VERTICAL_DETOUR_EXIT = 45;
|
|
18764
18768
|
function nearestBoxDistance(anchorX, dir, verticalTop, verticalBottom, boxes) {
|
|
18765
18769
|
let nearest = Infinity;
|
|
@@ -19752,18 +19756,28 @@ function routePath(from, to, fromSide, toSide, obstacles = [], detourSide, _from
|
|
|
19752
19756
|
const labelIntersect = oTop < labelBottom && oBottom > labelTop;
|
|
19753
19757
|
return segIntersect || labelIntersect;
|
|
19754
19758
|
};
|
|
19759
|
+
const \u6A2A\u306E\u8D70\u308A\u304C\u585E\u304C\u308B = (mx) => labelObstacles.some((o) => {
|
|
19760
|
+
if (o.id === from.id || o.id === to.id) return false;
|
|
19761
|
+
return runCrossesBox({ y: A.y, x1: A.x, x2: mx }, o) || runCrossesBox({ y: B.y, x1: mx, x2: B.x }, o);
|
|
19762
|
+
});
|
|
19755
19763
|
let iter = 0;
|
|
19756
19764
|
while (iter < 12) {
|
|
19757
19765
|
const band = labelBand(midX2);
|
|
19758
|
-
const hit = labelObstacles.find((o) => intersects(o, band))
|
|
19766
|
+
const hit = labelObstacles.find((o) => intersects(o, band)) ?? labelObstacles.find(
|
|
19767
|
+
(o) => o.id !== from.id && o.id !== to.id && (runCrossesBox({ y: A.y, x1: A.x, x2: midX2 }, o) || runCrossesBox({ y: B.y, x1: midX2, x2: B.x }, o))
|
|
19768
|
+
);
|
|
19759
19769
|
if (!hit) break;
|
|
19760
19770
|
const hitLeft = hit.cx - hit.w / 2;
|
|
19761
19771
|
const hitRight = hit.cx + hit.w / 2;
|
|
19762
19772
|
const retreatRight = hitRight + labelHalfW + CLEARANCE_NODE_LABEL + 4;
|
|
19763
19773
|
const retreatLeft = hitLeft - labelHalfW - CLEARANCE_NODE_LABEL - 4;
|
|
19774
|
+
const \u53F3\u304C\u585E\u304C\u308B = \u6A2A\u306E\u8D70\u308A\u304C\u585E\u304C\u308B(retreatRight);
|
|
19775
|
+
const \u5DE6\u304C\u585E\u304C\u308B = \u6A2A\u306E\u8D70\u308A\u304C\u585E\u304C\u308B(retreatLeft);
|
|
19764
19776
|
const dRight = Math.abs(retreatRight - midX2);
|
|
19765
19777
|
const dLeft = Math.abs(retreatLeft - midX2);
|
|
19766
|
-
|
|
19778
|
+
const \u6B21 = \u53F3\u304C\u585E\u304C\u308B === \u5DE6\u304C\u585E\u304C\u308B ? dRight <= dLeft ? retreatRight : retreatLeft : \u53F3\u304C\u585E\u304C\u308B ? retreatLeft : retreatRight;
|
|
19779
|
+
if (\u6B21 === midX2) break;
|
|
19780
|
+
midX2 = \u6B21;
|
|
19767
19781
|
iter++;
|
|
19768
19782
|
}
|
|
19769
19783
|
}
|