fix: v2.17 3D 建模对齐样板图——门/纱扇/多扇语义修复
- kind 判定收敛: 仅 Slide=推拉; DoubleSash/DoubleKfcSash=对开门按平开(修门渲染成窗) - 纱扇 Screen 同格不再单独渲染(消除 179 处双层玻璃叠放) - 同格多扇沿宽度等分(forceRect): 31337 对开两扇对半+isDoor 合并, 31729 上排 6 滑扇等分 - 2D 图纸补纱扇网格纹理(官方画法) - 验证: 31337/31729 3D 与官方图结构一致, validate3d 0 无效, ui-shots 6 页无报错
This commit is contained in:
@@ -522,6 +522,25 @@ function drawFrame(
|
||||
}
|
||||
ctx.textBaseline = 'alphabetic'
|
||||
|
||||
// 纱扇(Screen): 官方图纸的网格纹理(不生成开合扇)
|
||||
for (const sub of (shape.sm ?? []) as SashShape[]) {
|
||||
if (String(sub.type ?? '') !== 'Screen' || sub.enabled === false) continue
|
||||
const segs = rp.resolveRef?.(sub.polyId?.idx ?? -1, sub.polyId?.pos)
|
||||
if (!segs) continue
|
||||
const bb = bboxOf(regionPoints(segs))
|
||||
const x0 = tx(bb.x0), y0 = ty(bb.y0), x1 = tx(bb.x1), y1 = ty(bb.y1)
|
||||
ctx.save()
|
||||
ctx.beginPath()
|
||||
ctx.rect(x0, y0, x1 - x0, y1 - y0)
|
||||
ctx.clip()
|
||||
ctx.strokeStyle = 'rgba(60,66,72,0.32)'
|
||||
ctx.lineWidth = 0.7
|
||||
const step = Math.max(5, (x1 - x0) / 22)
|
||||
for (let gx = x0; gx < x1; gx += step) { ctx.beginPath(); ctx.moveTo(gx, y0); ctx.lineTo(gx, y1); ctx.stroke() }
|
||||
for (let gy = y0; gy < y1; gy += step) { ctx.beginPath(); ctx.moveTo(x0, gy); ctx.lineTo(x1, gy); ctx.stroke() }
|
||||
ctx.restore()
|
||||
}
|
||||
|
||||
// 悬停格淡高亮(可编辑提示)
|
||||
if (props.editable && hoverRegion && hoverRegion.shapeIdx === shapeIdx
|
||||
&& !(selRegion.value && selRegion.value.shapeIdx === shapeIdx && selRegion.value.ri === hoverRegion.ri)) {
|
||||
|
||||
Reference in New Issue
Block a user