feat(review): 截屏前最大化绘图区 + 空瓦片过滤覆盖回退路径
新增 MCP 工具 set_drawing_area(mode="max"|"restore"):最大化主窗口 + CLEANSCREENON (隐藏功能区/命令行/面板)。实测绘图区 2110x462 -> 3310x1084(面积 3.68x), restore 精确回位(窗口矩形/最大化态/绘图区尺寸全部还原)。 坑:CLEANSCREENOFF 是异步命令,AutoCAD 会按「进入干净屏幕时的布局」重设窗口几何, 把同步的 SetWindowPlacement 覆盖掉(表现为窗口停在最大化)。解法是插件内 SetTimer 延迟 700ms 再压回;实测窗口在 0.5~1.0s 之间收敛,故调用方等待取 1.5s。 取证层: - 新增 maximized_drawing_area(ctx) 上下文管理器,__main__ 用它包住整个取证循环 (多图框只进出一次);受 DRAWING_AREA_MAXIMIZE 控制,工具缺失/调用失败静默降级, restore 失败不掩盖业务异常。 - 内容过滤统一到规划与回退两条路径,共用同一谓词;过滤后为空则退回原集合。 - 判定改用「实体 bbox」而非「占用格」:格子量化会把跨界内容算进相邻格,反而更粗 (实测实体 bbox 正好压象限边界时 4 个象限全判有内容)。heatmap.occupied_boxes 随之删除。 实测(真实图纸 A0/A1/A2 三图框):截图张数 12/8/4 -> 8/5/4;pytest 296 passed。 新增 verify_drawing_area.py 作为该工具的验收脚本。
This commit is contained in:
1 parent
9c4ab62dc1
commit
1e5bff268a
15 files changed
+657
-50
No files matched your search
@@ -101,6 +101,19 @@ def test_tiling_defaults_are_sane():
|
||||
assert config.HEATMAP_CELL_DIV > 0
|
||||
|
||||
|
||||
def test_drawing_area_constants_have_expected_types():
|
||||
assert isinstance(config.DRAWING_AREA_MAXIMIZE, bool)
|
||||
assert isinstance(config.DRAWING_AREA_ENTER_WAIT, float)
|
||||
assert isinstance(config.DRAWING_AREA_RESTORE_WAIT, float)
|
||||
|
||||
|
||||
def test_drawing_area_defaults_are_sane():
|
||||
# 默认开启绘图区最大化;还原等待须盖过插件内 700ms 的延迟还原(实测 1.0s 才收敛)
|
||||
assert config.DRAWING_AREA_MAXIMIZE is True
|
||||
assert config.DRAWING_AREA_ENTER_WAIT >= 0
|
||||
assert config.DRAWING_AREA_RESTORE_WAIT >= 1.2
|
||||
|
||||
|
||||
def test_credibility_defaults_are_on():
|
||||
# 默认开启,保证默认拿到可信度收益
|
||||
assert config.DETERMINISTIC_CHECKS is True
|
||||
|
||||
Reference in new issue
Block a user