fix: 修复 3D NaN 崩溃/样品图不刷新/画布点选失效
- replayShape 段过滤补 Y 轴有限值校验(此前仅校验 X) - inferSashGlyphs bdRect 增加有限值守卫 - WindoorThreed 逐网格有限值防护 + maxDim 守卫, 杜绝 NaN 网格 - CombineCanvas shapePts 过滤非有限点, 修复包围盒污染导致的点选失效 - 组合画布引入 rev 版本号: 原地变异几何后强制 3D 预览重建 (修复尺寸编辑后样品图不变化)
This commit is contained in:
@@ -109,10 +109,14 @@ const saveName = ref('')
|
||||
const saving = ref(false)
|
||||
const canvasRef = ref()
|
||||
let uidSeq = 1
|
||||
const rev = ref(0)
|
||||
|
||||
const combinedJson = computed(() =>
|
||||
shapes.value.length ? JSON.stringify({ s: { cs: 60, cjs: 100 }, cp: [], sm: shapes.value,
|
||||
epi: [], sbf: [], wlc: '', wall: [], scale: 0, note: [] }) : '')
|
||||
const combinedJson = computed(() => {
|
||||
void rev.value // 画布原地变异几何后通过版本号强制重算(驱动 3D 预览重建)
|
||||
if (!shapes.value.length) return ''
|
||||
return JSON.stringify({ s: { cs: 60, cjs: 100 }, cp: [], sm: shapes.value,
|
||||
epi: [], sbf: [], wlc: '', wall: [], scale: 0, note: [], rev: rev.value })
|
||||
})
|
||||
|
||||
// ---------- 样板库 ----------
|
||||
async function loadLib() {
|
||||
@@ -198,7 +202,7 @@ function syncSelSize() {
|
||||
if (bb) { selSize.w = Math.round(bb.x1 - bb.x0); selSize.h = Math.round(bb.y1 - bb.y0) }
|
||||
}
|
||||
|
||||
function onCanvasChange() { refreshMeta(); syncSelSize() }
|
||||
function onCanvasChange() { refreshMeta(); syncSelSize(); rev.value++ }
|
||||
|
||||
function onSelResize() {
|
||||
if (selSize.w >= 300 && selSize.h >= 300) canvasRef.value?.resizeSelected(selSize.w, selSize.h)
|
||||
|
||||
Reference in New Issue
Block a user