fix: GetInterface 数组版补 dUnit,与下标版统一单位

AecDbEwEquipment::GetInterface(AcArray<AecInterface>&) 里 ptPos 已经
transformBy(xform) 缩放过(米制 0.001),但 dSize1 / dSize2 直接取
pNoze->dVal1,没有乘 dUnit;下标版 GetInterface(int, ...) 是乘了的。
结果同一个接口经两个入口读出来尺寸差 1000 倍,出现"位置按米、尺寸按毫米"。

补 * dUnit。dV / dA 是电压电流(EarThwormDef.h:518),不是长度,不参与换算。

影响面:
- 数组版的 4 处内部调用(getOsnapPoints、subErase、DrawInfArrow、vtAdjust)
  只用 ptPos / vtDir,不受影响
- 外部消费 dSize1 的是 CoreCommand/pcf.cpp:1044 的 pcf_ewEquipment,
  米制图纸导出的 PCF 管径此前大了 1000 倍
- 毫米图纸 dUnit 为 1,行为不变

文档同步:3.7 补结论与影响面,3.12 标记确认不改,5.1 加第 16 项,
5.4 三项按结论更新。
This commit is contained in:
company-desktop-computer committed 2026-10-25 11:58:00 +08:00
1 parent a72b38c4e5
commit d1f4d0b50b
2 files changed
+26 -11

No files matched your search

@@ -3297,8 +3297,10 @@ bool AecDbEwEquipment::GetInterface(AcArray<AecInterface>& arInfs) const
ptGe.transformBy(xform);
inf.ptPos = ptGe;
inf.vtDir = vtDir;
inf.dSize1 = pNoze->dVal1;
inf.dSize2 = pNoze->dVal2;
//ptPos 上面已经按 0.001 缩放过,尺寸也必须一起换算。
//原来只有下标版乘了 dUnit,同一个接口经两个入口读出来差 1000 倍
inf.dSize1 = pNoze->dVal1 * dUnit;
inf.dSize2 = pNoze->dVal2 * dUnit;
if (pNoze->nType == 0 || pNoze->nType == 2)
{